]>
Commit | Line | Data |
---|---|---|
9f95a23c TL |
1 | /* SPDX-License-Identifier: BSD-3-Clause |
2 | * Copyright(c) 2014-2018 Broadcom | |
3 | * All rights reserved. | |
7c673cae FG |
4 | */ |
5 | ||
6 | #ifndef _BNXT_HWRM_H_ | |
7 | #define _BNXT_HWRM_H_ | |
8 | ||
9 | #include <inttypes.h> | |
10 | #include <stdbool.h> | |
11 | ||
12 | struct bnxt; | |
13 | struct bnxt_filter_info; | |
14 | struct bnxt_cp_ring_info; | |
15 | ||
16 | #define HWRM_SEQ_ID_INVALID -1U | |
9f95a23c TL |
17 | /* Convert Bit field location to value */ |
18 | #define ASYNC_CMPL_EVENT_ID_LINK_STATUS_CHANGE \ | |
19 | (1 << HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_STATUS_CHANGE) | |
20 | #define ASYNC_CMPL_EVENT_ID_PORT_CONN_NOT_ALLOWED \ | |
21 | (1 << HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PORT_CONN_NOT_ALLOWED) | |
22 | #define ASYNC_CMPL_EVENT_ID_LINK_SPEED_CFG_CHANGE \ | |
23 | (1 << HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_CHANGE) | |
24 | #define ASYNC_CMPL_EVENT_ID_PF_DRVR_UNLOAD \ | |
25 | (1 << (HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PF_DRVR_UNLOAD - 32)) | |
26 | #define ASYNC_CMPL_EVENT_ID_VF_CFG_CHANGE \ | |
27 | (1 << (HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_CFG_CHANGE - 32)) | |
28 | ||
29 | #define HWRM_QUEUE_SERVICE_PROFILE_LOSSY \ | |
30 | HWRM_QUEUE_QPORTCFG_OUTPUT_QUEUE_ID0_SERVICE_PROFILE_LOSSY | |
31 | ||
32 | #define HWRM_FUNC_RESOURCE_QCAPS_OUTPUT_VF_RESV_STRATEGY_MINIMAL_STATIC \ | |
33 | HWRM_FUNC_RESOURCE_QCAPS_OUTPUT_VF_RESERVATION_STRATEGY_MINIMAL_STATIC | |
34 | ||
35 | #define HWRM_SPEC_CODE_1_8_4 0x10804 | |
36 | #define HWRM_SPEC_CODE_1_9_0 0x10900 | |
37 | #define HWRM_SPEC_CODE_1_9_2 0x10902 | |
7c673cae FG |
38 | |
39 | int bnxt_hwrm_cfa_l2_clear_rx_mask(struct bnxt *bp, | |
40 | struct bnxt_vnic_info *vnic); | |
9f95a23c TL |
41 | int bnxt_hwrm_cfa_l2_set_rx_mask(struct bnxt *bp, struct bnxt_vnic_info *vnic, |
42 | uint16_t vlan_count, | |
43 | struct bnxt_vlan_table_entry *vlan_table); | |
44 | int bnxt_hwrm_cfa_vlan_antispoof_cfg(struct bnxt *bp, uint16_t fid, | |
45 | uint16_t vlan_count, | |
46 | struct bnxt_vlan_antispoof_table_entry *vlan_table); | |
47 | int bnxt_hwrm_clear_l2_filter(struct bnxt *bp, | |
7c673cae | 48 | struct bnxt_filter_info *filter); |
9f95a23c TL |
49 | int bnxt_hwrm_set_l2_filter(struct bnxt *bp, |
50 | uint16_t dst_id, | |
7c673cae | 51 | struct bnxt_filter_info *filter); |
9f95a23c TL |
52 | int bnxt_hwrm_exec_fwd_resp(struct bnxt *bp, uint16_t target_id, |
53 | void *encaped, size_t ec_size); | |
54 | int bnxt_hwrm_reject_fwd_resp(struct bnxt *bp, uint16_t target_id, | |
55 | void *encaped, size_t ec_size); | |
7c673cae | 56 | |
9f95a23c TL |
57 | int bnxt_hwrm_func_buf_rgtr(struct bnxt *bp); |
58 | int bnxt_hwrm_func_buf_unrgtr(struct bnxt *bp); | |
59 | int bnxt_hwrm_func_driver_register(struct bnxt *bp); | |
7c673cae FG |
60 | int bnxt_hwrm_func_qcaps(struct bnxt *bp); |
61 | int bnxt_hwrm_func_reset(struct bnxt *bp); | |
62 | int bnxt_hwrm_func_driver_unregister(struct bnxt *bp, uint32_t flags); | |
9f95a23c TL |
63 | int bnxt_hwrm_func_qstats(struct bnxt *bp, uint16_t fid, |
64 | struct rte_eth_stats *stats); | |
65 | int bnxt_hwrm_func_qstats_tx_drop(struct bnxt *bp, uint16_t fid, | |
66 | uint64_t *dropped); | |
67 | int bnxt_hwrm_func_clr_stats(struct bnxt *bp, uint16_t fid); | |
68 | int bnxt_hwrm_func_cfg_def_cp(struct bnxt *bp); | |
69 | int bnxt_hwrm_vf_func_cfg_def_cp(struct bnxt *bp); | |
7c673cae FG |
70 | |
71 | int bnxt_hwrm_queue_qportcfg(struct bnxt *bp); | |
72 | ||
9f95a23c | 73 | int bnxt_hwrm_set_async_event_cr(struct bnxt *bp); |
7c673cae FG |
74 | int bnxt_hwrm_ring_alloc(struct bnxt *bp, |
75 | struct bnxt_ring *ring, | |
76 | uint32_t ring_type, uint32_t map_index, | |
9f95a23c | 77 | uint32_t stats_ctx_id, uint32_t cmpl_ring_id); |
7c673cae FG |
78 | int bnxt_hwrm_ring_free(struct bnxt *bp, |
79 | struct bnxt_ring *ring, uint32_t ring_type); | |
80 | int bnxt_hwrm_ring_grp_alloc(struct bnxt *bp, unsigned int idx); | |
81 | int bnxt_hwrm_ring_grp_free(struct bnxt *bp, unsigned int idx); | |
82 | ||
83 | int bnxt_hwrm_stat_clear(struct bnxt *bp, struct bnxt_cp_ring_info *cpr); | |
84 | int bnxt_hwrm_stat_ctx_alloc(struct bnxt *bp, | |
85 | struct bnxt_cp_ring_info *cpr, unsigned int idx); | |
86 | int bnxt_hwrm_stat_ctx_free(struct bnxt *bp, | |
87 | struct bnxt_cp_ring_info *cpr, unsigned int idx); | |
9f95a23c TL |
88 | int bnxt_hwrm_ctx_qstats(struct bnxt *bp, uint32_t cid, int idx, |
89 | struct rte_eth_stats *stats, uint8_t rx); | |
7c673cae FG |
90 | |
91 | int bnxt_hwrm_ver_get(struct bnxt *bp); | |
92 | ||
93 | int bnxt_hwrm_vnic_alloc(struct bnxt *bp, struct bnxt_vnic_info *vnic); | |
94 | int bnxt_hwrm_vnic_cfg(struct bnxt *bp, struct bnxt_vnic_info *vnic); | |
9f95a23c TL |
95 | int bnxt_hwrm_vnic_qcfg(struct bnxt *bp, struct bnxt_vnic_info *vnic, |
96 | int16_t fw_vf_id); | |
7c673cae FG |
97 | int bnxt_hwrm_vnic_ctx_alloc(struct bnxt *bp, struct bnxt_vnic_info *vnic); |
98 | int bnxt_hwrm_vnic_ctx_free(struct bnxt *bp, struct bnxt_vnic_info *vnic); | |
99 | int bnxt_hwrm_vnic_free(struct bnxt *bp, struct bnxt_vnic_info *vnic); | |
100 | int bnxt_hwrm_vnic_rss_cfg(struct bnxt *bp, | |
101 | struct bnxt_vnic_info *vnic); | |
9f95a23c TL |
102 | int bnxt_hwrm_vnic_plcmode_cfg(struct bnxt *bp, |
103 | struct bnxt_vnic_info *vnic); | |
104 | int bnxt_hwrm_vnic_tpa_cfg(struct bnxt *bp, | |
105 | struct bnxt_vnic_info *vnic, bool enable); | |
7c673cae FG |
106 | |
107 | int bnxt_alloc_all_hwrm_stat_ctxs(struct bnxt *bp); | |
108 | int bnxt_clear_all_hwrm_stat_ctxs(struct bnxt *bp); | |
109 | int bnxt_free_all_hwrm_stat_ctxs(struct bnxt *bp); | |
110 | int bnxt_free_all_hwrm_rings(struct bnxt *bp); | |
111 | int bnxt_free_all_hwrm_ring_grps(struct bnxt *bp); | |
112 | int bnxt_alloc_all_hwrm_ring_grps(struct bnxt *bp); | |
113 | int bnxt_set_hwrm_vnic_filters(struct bnxt *bp, struct bnxt_vnic_info *vnic); | |
114 | int bnxt_clear_hwrm_vnic_filters(struct bnxt *bp, struct bnxt_vnic_info *vnic); | |
115 | void bnxt_free_all_hwrm_resources(struct bnxt *bp); | |
116 | void bnxt_free_hwrm_resources(struct bnxt *bp); | |
9f95a23c | 117 | void bnxt_free_hwrm_rx_ring(struct bnxt *bp, int queue_index); |
7c673cae FG |
118 | int bnxt_alloc_hwrm_resources(struct bnxt *bp); |
119 | int bnxt_get_hwrm_link_config(struct bnxt *bp, struct rte_eth_link *link); | |
120 | int bnxt_set_hwrm_link_config(struct bnxt *bp, bool link_up); | |
121 | int bnxt_hwrm_func_qcfg(struct bnxt *bp); | |
9f95a23c TL |
122 | int bnxt_hwrm_func_resc_qcaps(struct bnxt *bp); |
123 | int bnxt_hwrm_func_reserve_vf_resc(struct bnxt *bp, bool test); | |
124 | int bnxt_hwrm_allocate_pf_only(struct bnxt *bp); | |
125 | int bnxt_hwrm_allocate_vfs(struct bnxt *bp, int num_vfs); | |
126 | int bnxt_hwrm_func_vf_mac(struct bnxt *bp, uint16_t vf, | |
127 | const uint8_t *mac_addr); | |
128 | int bnxt_hwrm_pf_evb_mode(struct bnxt *bp); | |
129 | int bnxt_hwrm_func_bw_cfg(struct bnxt *bp, uint16_t vf, | |
130 | uint16_t max_bw, uint16_t enables); | |
131 | int bnxt_hwrm_set_vf_vlan(struct bnxt *bp, int vf); | |
132 | int bnxt_hwrm_func_qcfg_vf_default_mac(struct bnxt *bp, uint16_t vf, | |
133 | struct ether_addr *mac); | |
134 | int bnxt_hwrm_func_qcfg_current_vf_vlan(struct bnxt *bp, int vf); | |
135 | int bnxt_hwrm_tunnel_dst_port_alloc(struct bnxt *bp, uint16_t port, | |
136 | uint8_t tunnel_type); | |
137 | int bnxt_hwrm_tunnel_dst_port_free(struct bnxt *bp, uint16_t port, | |
138 | uint8_t tunnel_type); | |
139 | void bnxt_free_tunnel_ports(struct bnxt *bp); | |
140 | int bnxt_hwrm_set_default_vlan(struct bnxt *bp, int vf, uint8_t is_vf); | |
141 | int bnxt_hwrm_port_qstats(struct bnxt *bp); | |
142 | int bnxt_hwrm_port_clr_stats(struct bnxt *bp); | |
143 | int bnxt_hwrm_port_led_cfg(struct bnxt *bp, bool led_on); | |
144 | int bnxt_hwrm_port_led_qcaps(struct bnxt *bp); | |
145 | int bnxt_hwrm_func_cfg_vf_set_flags(struct bnxt *bp, uint16_t vf, | |
146 | uint32_t flags); | |
147 | void vf_vnic_set_rxmask_cb(struct bnxt_vnic_info *vnic, void *flagp); | |
148 | int bnxt_set_rx_mask_no_vlan(struct bnxt *bp, struct bnxt_vnic_info *vnic); | |
149 | int bnxt_vf_vnic_count(struct bnxt *bp, uint16_t vf); | |
150 | int bnxt_hwrm_func_vf_vnic_query_and_config(struct bnxt *bp, uint16_t vf, | |
151 | void (*vnic_cb)(struct bnxt_vnic_info *, void *), void *cbdata, | |
152 | int (*hwrm_cb)(struct bnxt *bp, struct bnxt_vnic_info *vnic)); | |
153 | int bnxt_hwrm_func_cfg_vf_set_vlan_anti_spoof(struct bnxt *bp, uint16_t vf, | |
154 | bool on); | |
155 | int bnxt_hwrm_func_qcfg_vf_dflt_vnic_id(struct bnxt *bp, int vf); | |
156 | int bnxt_hwrm_set_em_filter(struct bnxt *bp, uint16_t dst_id, | |
157 | struct bnxt_filter_info *filter); | |
158 | int bnxt_hwrm_clear_em_filter(struct bnxt *bp, struct bnxt_filter_info *filter); | |
7c673cae | 159 | |
9f95a23c TL |
160 | int bnxt_hwrm_set_ntuple_filter(struct bnxt *bp, uint16_t dst_id, |
161 | struct bnxt_filter_info *filter); | |
162 | int bnxt_hwrm_clear_ntuple_filter(struct bnxt *bp, | |
163 | struct bnxt_filter_info *filter); | |
164 | int bnxt_get_nvram_directory(struct bnxt *bp, uint32_t len, uint8_t *data); | |
165 | int bnxt_hwrm_nvm_get_dir_info(struct bnxt *bp, uint32_t *entries, | |
166 | uint32_t *length); | |
167 | int bnxt_hwrm_get_nvram_item(struct bnxt *bp, uint32_t index, | |
168 | uint32_t offset, uint32_t length, | |
169 | uint8_t *data); | |
170 | int bnxt_hwrm_erase_nvram_directory(struct bnxt *bp, uint8_t index); | |
171 | int bnxt_hwrm_flash_nvram(struct bnxt *bp, uint16_t dir_type, | |
172 | uint16_t dir_ordinal, uint16_t dir_ext, | |
173 | uint16_t dir_attr, const uint8_t *data, | |
174 | size_t data_len); | |
175 | int bnxt_hwrm_ptp_cfg(struct bnxt *bp); | |
176 | int bnxt_vnic_rss_configure(struct bnxt *bp, | |
177 | struct bnxt_vnic_info *vnic); | |
178 | int bnxt_hwrm_set_ring_coal(struct bnxt *bp, | |
179 | struct bnxt_coal *coal, uint16_t ring_id); | |
180 | int bnxt_hwrm_check_vf_rings(struct bnxt *bp); | |
181 | int bnxt_hwrm_ext_port_qstats(struct bnxt *bp); | |
7c673cae | 182 | #endif |