37#include <sys/endian.h>
41#include <sys/malloc.h>
42#include <sys/kernel.h>
43#include <machine/bus.h>
44#include <net/ethernet.h>
46#if _BYTE_ORDER == _LITTLE_ENDIAN
50#ifndef __LITTLE_ENDIAN
51#define __LITTLE_ENDIAN
75#ifndef __bool_true_false_are_defined
81#define ETH_ALEN ETHER_ADDR_LEN
83#define ECORE_SWCID_SHIFT 17
84#define ECORE_SWCID_MASK ((0x1 << ECORE_SWCID_SHIFT) - 1)
86#define ECORE_MC_HASH_SIZE 8
87#define ECORE_MC_HASH_OFFSET(sc, i) \
88 (BAR_TSTRORM_INTMEM + \
89 TSTORM_APPROXIMATE_MATCH_MULTICAST_FILTERING_OFFSET(FUNC_ID(sc)) + i*4)
91#define ECORE_MAX_MULTICAST 64
92#define ECORE_MAX_EMUL_MULTI 1
94#define IRO sc->iro_array
97#define ECORE_MUTEX_INIT(_mutex) \
98 mtx_init(_mutex, "ecore_lock", "ECORE Lock", MTX_DEF)
99#define ECORE_MUTEX_LOCK(_mutex) mtx_lock(_mutex)
100#define ECORE_MUTEX_UNLOCK(_mutex) mtx_unlock(_mutex)
103#define ECORE_SPIN_LOCK_INIT(_spin, _sc) \
104 mtx_init(_spin, "ecore_lock", "ECORE Lock", MTX_DEF)
105#define ECORE_SPIN_LOCK_BH(_spin) mtx_lock(_spin)
106#define ECORE_SPIN_UNLOCK_BH(_spin) mtx_unlock(_spin)
108#define ECORE_SMP_MB_AFTER_CLEAR_BIT() mb()
109#define ECORE_SMP_MB_BEFORE_CLEAR_BIT() mb()
110#define ECORE_SMP_MB() mb()
111#define ECORE_SMP_RMB() rmb()
112#define ECORE_SMP_WMB() wmb()
113#define ECORE_MMIOWB() wmb()
115#define ECORE_SET_BIT_NA(bit, var) bit_set(var, bit)
116#define ECORE_CLEAR_BIT_NA(bit, var) bit_clear(var, bit)
117#define ECORE_TEST_BIT(bit, var) bxe_test_bit(bit, var)
118#define ECORE_SET_BIT(bit, var) bxe_set_bit(bit, var)
119#define ECORE_CLEAR_BIT(bit, var) bxe_clear_bit(bit, var)
120#define ECORE_TEST_AND_CLEAR_BIT(bit, var) bxe_test_and_clear_bit(bit, var)
122#define ECORE_ATOMIC_READ(a) atomic_load_acq_int((volatile int *)a)
123#define ECORE_ATOMIC_SET(a, v) atomic_store_rel_int((volatile int *)a, v)
124#define ECORE_ATOMIC_CMPXCHG(a, o, n) bxe_cmpxchg((volatile int *)a, o, n)
126#define ECORE_RET_PENDING(pending_bit, pending) \
127 (ECORE_TEST_BIT(pending_bit, pending) ? ECORE_PENDING : ECORE_SUCCESS)
129#define ECORE_SET_FLAG(value, mask, flag) \
131 (value) &= ~(mask); \
132 (value) |= ((flag) << (mask##_SHIFT)); \
135#define ECORE_GET_FLAG(value, mask) \
136 (((value) &= (mask)) >> (mask##_SHIFT))
138#define ECORE_MIGHT_SLEEP()
140#define ECORE_FCOE_CID(sc) ((sc)->fp[FCOE_IDX(sc)].cl_id)
142#define ECORE_MEMCMP(_a, _b, _s) memcmp(_a, _b, _s)
143#define ECORE_MEMCPY(_a, _b, _s) memcpy(_a, _b, _s)
144#define ECORE_MEMSET(_a, _c, _s) memset(_a, _c, _s)
146#define ECORE_CPU_TO_LE16(x) htole16(x)
147#define ECORE_CPU_TO_LE32(x) htole32(x)
149#define ECORE_WAIT(_s, _t) DELAY(1000)
150#define ECORE_MSLEEP(_t) DELAY((_t) * 1000)
152#define ECORE_LIKELY(x) __predict_true(x)
153#define ECORE_UNLIKELY(x) __predict_false(x)
155#define ECORE_ZALLOC(_size, _flags, _sc) \
156 malloc(_size, M_TEMP, (M_NOWAIT | M_ZERO))
158#define ECORE_CALLOC(_len, _size, _flags, _sc) \
159 mallocarray(_len, _size, M_TEMP, (M_NOWAIT | M_ZERO))
161#define ECORE_FREE(_s, _buf, _size) free(_buf, M_TEMP)
163#define SC_ILT(sc) ((sc)->ilt)
164#define ILOG2(x) bxe_ilog2(x)
166#define ECORE_ILT_ZALLOC(x, y, size) \
168 x = malloc(sizeof(struct bxe_dma), M_DEVBUF, (M_NOWAIT | M_ZERO)); \
170 if (bxe_dma_alloc((struct bxe_softc *)sc, \
171 size, (struct bxe_dma *)x, \
172 "ECORE_ILT") != 0) { \
177 *y = ((struct bxe_dma *)x)->paddr; \
182#define ECORE_ILT_FREE(x, y, size) \
185 bxe_dma_free((struct bxe_softc *)sc, x); \
192#define ECORE_IS_VALID_ETHER_ADDR(_mac) TRUE
194#define ECORE_IS_MF_SD_MODE IS_MF_SD_MODE
195#define ECORE_IS_MF_SI_MODE IS_MF_SI_MODE
196#define ECORE_IS_MF_AFEX_MODE IS_MF_AFEX_MODE
198#define ECORE_SET_CTX_VALIDATION bxe_set_ctx_validation
200#define ECORE_UPDATE_COALESCE_SB_INDEX bxe_update_coalesce_sb_index
202#define ECORE_ALIGN(x, a) ((((x) + (a) - 1) / (a)) * (a))
204#define ECORE_REG_WR_DMAE_LEN REG_WR_DMAE_LEN
206#define ECORE_PATH_ID SC_PATH
207#define ECORE_PORT_ID SC_PORT
208#define ECORE_FUNC_ID SC_FUNC
209#define ECORE_ABS_FUNC_ID SC_ABS_FUNC
211uint32_t
calc_crc32(uint8_t *crc32_packet, uint32_t crc32_length,
212 uint32_t crc32_seed, uint8_t complement);
213static inline uint32_t
216 uint32_t packet_buf[2] = {0};
217 memcpy(((uint8_t *)(&packet_buf[0]))+2, &mac[0], 2);
218 memcpy(&packet_buf[1], &mac[2], 4);
219 return bswap32(
calc_crc32((uint8_t *)packet_buf, 8, seed, 0));
222#define ecore_sp_post(_sc, _a, _b, _c, _d) \
223 bxe_sp_post(_sc, _a, _b, U64_HI(_c), U64_LO(_c), _d)
225#ifdef ECORE_STOP_ON_ERROR
227#define ECORE_DBG_BREAK_IF(exp) \
229 if (__predict_false(exp)) { \
236 panic("BUG (%s:%d)", __FILE__, __LINE__); \
239#define ECORE_BUG_ON(exp) \
241 if (__predict_true(exp)) { \
242 panic("BUG_ON (%s:%d)", __FILE__, __LINE__); \
250#define BXE_DEBUG_ECORE_DBG_BREAK_IF 0x01
251#define BXE_DEBUG_ECORE_BUG 0x02
252#define BXE_DEBUG_ECORE_BUG_ON 0x04
254#define ECORE_DBG_BREAK_IF(exp) \
255 if (bxe_debug & BXE_DEBUG_ECORE_DBG_BREAK_IF) \
256 printf("%s (%s,%d)\n", __FUNCTION__, __FILE__, __LINE__);
258#define ECORE_BUG(exp) \
259 if (bxe_debug & BXE_DEBUG_ECORE_BUG) \
260 printf("%s (%s,%d)\n", __FUNCTION__, __FILE__, __LINE__);
262#define ECORE_BUG_ON(exp) \
263 if (bxe_debug & BXE_DEBUG_ECORE_BUG_ON) \
264 printf("%s (%s,%d)\n", __FUNCTION__, __FILE__, __LINE__);
269#define ECORE_ERR(str, ...) \
270 BLOGE(sc, "ECORE: " str, ##__VA_ARGS__)
272#define DBG_SP 0x00000004
274#define ECORE_MSG(sc, m, ...) \
275 BLOGD(sc, DBG_SP, "ECORE: " m, ##__VA_ARGS__)
289#define ECORE_LIST_INIT(_list) \
291 (_list)->head = NULL; \
292 (_list)->tail = NULL; \
297#define ECORE_LIST_IS_LAST(_elem, _list) \
298 (_elem == (_list)->tail)
301#define ECORE_LIST_IS_EMPTY(_list) \
305#define ECORE_LIST_FIRST_ENTRY(_list, cast, _link) \
306 (cast *)((_list)->head)
309#define ECORE_LIST_NEXT(_elem, _link, cast) \
310 (cast *)((&((_elem)->_link))->next)
313#define ECORE_LIST_PUSH_HEAD(_elem, _list) \
315 (_elem)->prev = (ecore_list_entry_t *)0; \
316 (_elem)->next = (_list)->head; \
317 if ((_list)->tail == (ecore_list_entry_t *)0) { \
318 (_list)->tail = (_elem); \
320 (_list)->head->prev = (_elem); \
322 (_list)->head = (_elem); \
327#define ECORE_LIST_PUSH_TAIL(_elem, _list) \
329 (_elem)->next = (ecore_list_entry_t *)0; \
330 (_elem)->prev = (_list)->tail; \
331 if ((_list)->tail) { \
332 (_list)->tail->next = (_elem); \
334 (_list)->head = (_elem); \
336 (_list)->tail = (_elem); \
341#define ECORE_LIST_SPLICE_INIT(_list1, _list2) \
343 (_list1)->tail->next = (_list2)->head; \
344 if ((_list2)->head) { \
345 (_list2)->head->prev = (_list1)->tail; \
347 (_list2)->tail = (_list1)->tail; \
349 (_list2)->head = (_list1)->head; \
350 (_list2)->cnt += (_list1)->cnt; \
351 (_list1)->head = NULL; \
352 (_list1)->tail = NULL; \
357#define ECORE_LIST_REMOVE_ENTRY(_elem, _list) \
359 if ((_list)->head == (_elem)) { \
360 if ((_list)->head) { \
361 (_list)->head = (_list)->head->next; \
362 if ((_list)->head) { \
363 (_list)->head->prev = (ecore_list_entry_t *)0; \
365 (_list)->tail = (ecore_list_entry_t *)0; \
369 } else if ((_list)->tail == (_elem)) { \
370 if ((_list)->tail) { \
371 (_list)->tail = (_list)->tail->prev; \
372 if ((_list)->tail) { \
373 (_list)->tail->next = (ecore_list_entry_t *)0; \
375 (_list)->head = (ecore_list_entry_t *)0; \
380 (_elem)->prev->next = (_elem)->next; \
381 (_elem)->next->prev = (_elem)->prev; \
387#define ECORE_LIST_FOR_EACH_ENTRY(pos, _list, _link, cast) \
388 for (pos = ECORE_LIST_FIRST_ENTRY(_list, cast, _link); \
390 pos = ECORE_LIST_NEXT(pos, _link, cast))
393#define ECORE_LIST_FOR_EACH_ENTRY_SAFE(pos, n, _list, _link, cast) \
394 for (pos = ECORE_LIST_FIRST_ENTRY(_list, cast, _lint), \
395 n = (pos) ? ECORE_LIST_NEXT(pos, _link, cast) : NULL; \
398 n = (pos) ? ECORE_LIST_NEXT(pos, _link, cast) : NULL)
404#define BIT_VEC64_ELEM_SZ 64
405#define BIT_VEC64_ELEM_SHIFT 6
406#define BIT_VEC64_ELEM_MASK ((uint64_t)BIT_VEC64_ELEM_SZ - 1)
408#define __BIT_VEC64_SET_BIT(el, bit) \
410 el = ((el) | ((uint64_t)0x1 << (bit))); \
413#define __BIT_VEC64_CLEAR_BIT(el, bit) \
415 el = ((el) & (~((uint64_t)0x1 << (bit)))); \
418#define BIT_VEC64_SET_BIT(vec64, idx) \
419 __BIT_VEC64_SET_BIT((vec64)[(idx) >> BIT_VEC64_ELEM_SHIFT], \
420 (idx) & BIT_VEC64_ELEM_MASK)
422#define BIT_VEC64_CLEAR_BIT(vec64, idx) \
423 __BIT_VEC64_CLEAR_BIT((vec64)[(idx) >> BIT_VEC64_ELEM_SHIFT], \
424 (idx) & BIT_VEC64_ELEM_MASK)
426#define BIT_VEC64_TEST_BIT(vec64, idx) \
427 (((vec64)[(idx) >> BIT_VEC64_ELEM_SHIFT] >> \
428 ((idx) & BIT_VEC64_ELEM_MASK)) & 0x1)
434#define BIT_VEC64_ONES_MASK(idx) \
435 (((uint64_t)0x1 << (((idx) & BIT_VEC64_ELEM_MASK) + 1)) - 1)
436#define BIT_VEC64_ELEM_ONE_MASK ((uint64_t)(~0))
445 ((uint8_t *)fw_hi)[0] = mac[1];
446 ((uint8_t *)fw_hi)[1] = mac[0];
447 ((uint8_t *)fw_mid)[0] = mac[3];
448 ((uint8_t *)fw_mid)[1] = mac[2];
449 ((uint8_t *)fw_lo)[0] = mac[5];
450 ((uint8_t *)fw_lo)[1] = mac[4];
647 unsigned long *ramrod_flags);
732#define ECORE_VLAN_MAC_CMP_MASK (1 << ECORE_UC_LIST_MAC | \
733 1 << ECORE_ETH_MAC | \
734 1 << ECORE_ISCSI_ETH_MAC | \
735 1 << ECORE_NETQ_ETH_MAC)
736#define ECORE_VLAN_MAC_CMP_FLAGS(flags) \
737 ((flags) & ECORE_VLAN_MAC_CMP_MASK)
789 uint8_t stride, uint8_t
size);
857 unsigned long *vlan_mac_flags,
858 unsigned long *ramrod_flags);
898 unsigned long *ramrod_flags);
915 bool add,
unsigned char *dev_addr,
int index);
1010 #define ECORE_MCAST_BINS_NUM 256
1011 #define ECORE_MCAST_VEC_SZ (ECORE_MCAST_BINS_NUM / 64)
1062 int start_bin,
int *rdata_idx);
1123#define ECORE_POOL_VEC_SIZE (MAX_MAC_CREDIT_E2 / 64)
1322#define ECORE_PRIMARY_CID_INDEX 0
1323#define ECORE_MULTI_TX_COS_E1X 3
1324#define ECORE_MULTI_TX_COS_E2_E3A0 2
1325#define ECORE_MULTI_TX_COS_E3B0 3
1326#define ECORE_MULTI_TX_COS 3
1327#define MAC_PAD (ECORE_ALIGN(ETH_ALEN, sizeof(uint32_t)) - ETH_ALEN)
1331#define FW_DMAE_CMD_ID 6
1342 unsigned long flags;
1854 uint8_t cid_cnt, uint8_t func_id,
void *rdata,
1866 uint8_t cl_id, uint32_t cid, uint8_t func_id,
void *rdata,
1873 uint8_t cl_id, uint32_t cid, uint8_t func_id,
void *rdata,
1880 uint8_t cl_id, uint32_t cid, uint8_t func_id,
void *rdata,
1888 uint8_t cl_id, uint32_t cid, uint8_t func_id,
void *rdata,
1930 uint8_t mcast_cl_id, uint32_t mcast_cid, uint8_t func_id,
1932 int state,
unsigned long *pstate,
1967 int base,
int credit);
1972 uint8_t cl_id, uint32_t cid, uint8_t func_id, uint8_t engine_id,
1974 int state,
unsigned long *pstate,
1993 uint8_t *ind_table);
1995#define PF_MAC_CREDIT_E2(sc, func_num) \
1996 ((MAX_MAC_CREDIT_E2 - GET_NUM_VFS_PER_PATH(sc) * VF_MAC_CREDIT_CNT) / \
1997 func_num + GET_NUM_VFS_PER_PF(sc) * VF_MAC_CREDIT_CNT)
1999#define PF_VLAN_CREDIT_E2(sc, func_num) \
2000 ((MAX_MAC_CREDIT_E2 - GET_NUM_VFS_PER_PATH(sc) * VF_VLAN_CREDIT_CNT) / \
2001 func_num + GET_NUM_VFS_PER_PF(sc) * VF_VLAN_CREDIT_CNT)
#define T_ETH_INDIRECTION_TABLE_SIZE
#define MAX_TRAFFIC_TYPES
#define MAX_VLAN_PRIORITIES
#define NIG_REG_LLH1_FUNC_MEM_SIZE
struct _ecore_list_entry_t ecore_list_entry_t
@ ECORE_LLH_CAM_MAX_PF_LINE
@ ECORE_LLH_CAM_ISCSI_ETH_LINE
@ ECORE_DONT_CONSUME_CAM_CREDIT
@ ECORE_DONT_CONSUME_CAM_CREDIT_DEST
int ecore_config_rx_mode(struct bxe_softc *sc, struct ecore_rx_mode_ramrod_params *p)
uint32_t calc_crc32(uint8_t *crc32_packet, uint32_t crc32_length, uint32_t crc32_seed, uint8_t complement)
void ecore_init_queue_obj(struct bxe_softc *sc, struct ecore_queue_sp_obj *obj, uint8_t cl_id, uint32_t *cids, uint8_t cid_cnt, uint8_t func_id, void *rdata, ecore_dma_addr_t rdata_mapping, unsigned long type)
void ecore_init_rss_config_obj(struct bxe_softc *sc, struct ecore_rss_config_obj *rss_obj, uint8_t cl_id, uint32_t cid, uint8_t func_id, uint8_t engine_id, void *rdata, ecore_dma_addr_t rdata_mapping, int state, unsigned long *pstate, ecore_obj_type type)
@ ECORE_F_UPDATE_VLAN_FORCE_PRIO_CHNG
@ ECORE_F_UPDATE_TUNNEL_INNER_RSS
@ ECORE_F_UPDATE_TUNNEL_INNER_CLSS_VXLAN
@ ECORE_F_UPDATE_TX_SWITCH_SUSPEND_CHNG
@ ECORE_F_UPDATE_SD_VLAN_TAG_CHNG
@ ECORE_F_UPDATE_TUNNEL_INNER_CLSS_L2GRE
@ ECORE_F_UPDATE_TUNNEL_CFG_CHNG
@ ECORE_F_UPDATE_VLAN_FORCE_PRIO_FLAG
@ ECORE_F_UPDATE_TX_SWITCH_SUSPEND
@ ECORE_F_UPDATE_SD_VLAN_ETH_TYPE_CHNG
@ ECORE_F_UPDATE_TUNNEL_INNER_CLSS_L2GENEVE
void ecore_init_vxlan_fltr_obj(struct bxe_softc *sc, struct ecore_vlan_mac_obj *vlan_mac_obj, uint8_t cl_id, uint32_t cid, uint8_t func_id, void *rdata, ecore_dma_addr_t rdata_mapping, int state, unsigned long *pstate, ecore_obj_type type, struct ecore_credit_pool_obj *macs_pool, struct ecore_credit_pool_obj *vlans_pool)
int ecore_config_vlan_mac(struct bxe_softc *sc, struct ecore_vlan_mac_ramrod_params *p)
static uint32_t ECORE_CRC32_LE(uint32_t seed, uint8_t *mac, uint32_t len)
@ ECORE_Q_CMD_SETUP_TX_ONLY
@ ECORE_Q_LOGICAL_STATE_STOPPED
@ ECORE_Q_LOGICAL_STATE_ACTIVE
void ecore_get_rss_ind_table(struct ecore_rss_config_obj *rss_obj, uint8_t *ind_table)
void ecore_init_mac_obj(struct bxe_softc *sc, struct ecore_vlan_mac_obj *mac_obj, uint8_t cl_id, uint32_t cid, uint8_t func_id, void *rdata, ecore_dma_addr_t rdata_mapping, int state, unsigned long *pstate, ecore_obj_type type, struct ecore_credit_pool_obj *macs_pool)
@ ECORE_Q_FLG_SILENT_VLAN_REM
@ ECORE_Q_FLG_PCSUM_ON_PKT
@ ECORE_Q_FLG_TUN_INC_INNER_IP_ID
@ ECORE_Q_FLG_FORCE_DEFAULT_PRI
@ ECORE_Q_FLG_LEADING_RSS
@ ECORE_Q_FLG_REFUSE_OUTBAND_VLAN
bus_addr_t ecore_dma_addr_t
int ecore_vlan_mac_move(struct bxe_softc *sc, struct ecore_vlan_mac_ramrod_params *p, struct ecore_vlan_mac_obj *dest_o)
@ ECORE_RX_MODE_ISCSI_ETH
static void ecore_set_fw_mac_addr(uint16_t *fw_hi, uint16_t *fw_mid, uint16_t *fw_lo, uint8_t *mac)
@ ECORE_ACCEPT_ALL_MULTICAST
@ ECORE_ACCEPT_ALL_UNICAST
int ecore_get_q_logical_state(struct bxe_softc *sc, struct ecore_queue_sp_obj *obj)
void ecore_init_vlan_mac_obj(struct bxe_softc *sc, struct ecore_vlan_mac_obj *vlan_mac_obj, uint8_t cl_id, uint32_t cid, uint8_t func_id, void *rdata, ecore_dma_addr_t rdata_mapping, int state, unsigned long *pstate, ecore_obj_type type, struct ecore_credit_pool_obj *macs_pool, struct ecore_credit_pool_obj *vlans_pool)
@ ECORE_F_CMD_SET_TIMESYNC
@ ECORE_F_CMD_AFEX_VIFLISTS
@ ECORE_F_CMD_SWITCH_UPDATE
@ ECORE_F_CMD_AFEX_UPDATE
void ecore_vlan_mac_h_read_unlock(struct bxe_softc *sc, struct ecore_vlan_mac_obj *o)
struct ecore_exeq_elem *(* exe_q_get)(struct ecore_exe_queue_obj *o, struct ecore_exeq_elem *elem)
struct mtx ECORE_MUTEX_SPIN
int ecore_func_state_change(struct bxe_softc *sc, struct ecore_func_state_params *params)
int(* exe_q_execute)(struct bxe_softc *sc, union ecore_qable_obj *o, ecore_list_t *exe_chunk, unsigned long *ramrod_flags)
struct ecore_list_t ecore_list_t
#define ECORE_MCAST_VEC_SZ
void ecore_set_mac_in_nig(struct bxe_softc *sc, bool add, unsigned char *dev_addr, int index)
@ ECORE_RSS_TUNN_INNER_HDRS
@ ECORE_RSS_MODE_DISABLED
void ecore_init_vlan_credit_pool(struct bxe_softc *sc, struct ecore_credit_pool_obj *p, uint8_t func_id, uint8_t func_num)
void ecore_init_mac_credit_pool(struct bxe_softc *sc, struct ecore_credit_pool_obj *p, uint8_t func_id, uint8_t func_num)
void ecore_init_rx_mode_obj(struct bxe_softc *sc, struct ecore_rx_mode_obj *o)
volatile int ecore_atomic_t
@ ECORE_FILTER_FCOE_ETH_START_SCHED
@ ECORE_FILTER_RSS_CONF_PENDING
@ ECORE_FILTER_VXLAN_PENDING
@ ECORE_FILTER_ISCSI_ETH_STOP_SCHED
@ ECORE_AFEX_PENDING_VIFSET_MCP_ACK
@ ECORE_FILTER_BYPASS_MAC_PENDING
@ ECORE_FILTER_MCAST_PENDING
@ ECORE_AFEX_FCOE_Q_UPDATE_PENDING
@ ECORE_FILTER_RX_MODE_PENDING
@ ECORE_FILTER_FCOE_ETH_STOP_SCHED
@ ECORE_FILTER_BYPASS_RSS_CONF_PENDING
@ ECORE_FILTER_RX_MODE_SCHED
@ ECORE_FILTER_VLAN_MAC_PENDING
@ ECORE_FILTER_MAC_PENDING
@ ECORE_FILTER_VLAN_PENDING
@ ECORE_FILTER_BYPASS_RX_MODE_PENDING
@ ECORE_FILTER_ISCSI_ETH_START_SCHED
@ ECORE_FILTER_MCAST_SCHED
void ecore_vlan_mac_h_write_unlock(struct bxe_softc *sc, struct ecore_vlan_mac_obj *o)
@ ECORE_Q_UPDATE_IN_VLAN_REM
@ ECORE_Q_UPDATE_DEF_VLAN_EN_CHNG
@ ECORE_Q_UPDATE_PTP_PKTS_CHNG
@ ECORE_Q_UPDATE_OUT_VLAN_REM
@ ECORE_Q_UPDATE_ANTI_SPOOF_CHNG
@ ECORE_Q_UPDATE_ACTIVATE
@ ECORE_Q_UPDATE_ACTIVATE_CHNG
@ ECORE_Q_UPDATE_ANTI_SPOOF
@ ECORE_Q_UPDATE_OUT_VLAN_REM_CHNG
@ ECORE_Q_UPDATE_IN_VLAN_REM_CHNG
@ ECORE_Q_UPDATE_DEF_VLAN_EN
@ ECORE_Q_UPDATE_SILENT_VLAN_REM_CHNG
@ ECORE_Q_UPDATE_PTP_PKTS
@ ECORE_Q_UPDATE_TX_SWITCHING
@ ECORE_Q_UPDATE_TX_SWITCHING_CHNG
@ ECORE_Q_UPDATE_SILENT_VLAN_REM
#define ECORE_POOL_VEC_SIZE
int ecore_queue_state_change(struct bxe_softc *sc, struct ecore_queue_state_params *params)
@ ECORE_MCAST_CMD_RESTORE
int ecore_vlan_mac_h_read_lock(struct bxe_softc *sc, struct ecore_vlan_mac_obj *o)
@ ECORE_F_STATE_INITIALIZED
@ ECORE_F_STATE_TX_STOPPED
int(* exe_q_validate)(struct bxe_softc *sc, union ecore_qable_obj *o, struct ecore_exeq_elem *elem)
void ecore_init_vlan_obj(struct bxe_softc *sc, struct ecore_vlan_mac_obj *vlan_obj, uint8_t cl_id, uint32_t cid, uint8_t func_id, void *rdata, ecore_dma_addr_t rdata_mapping, int state, unsigned long *pstate, ecore_obj_type type, struct ecore_credit_pool_obj *vlans_pool)
@ ECORE_Q_STATE_MULTI_COS
@ ECORE_Q_STATE_INITIALIZED
@ ECORE_Q_STATE_TERMINATED
@ ECORE_Q_STATE_MCOS_TERMINATED
int(* exe_q_optimize)(struct bxe_softc *sc, union ecore_qable_obj *o, struct ecore_exeq_elem *elem)
void ecore_init_credit_pool(struct ecore_credit_pool_obj *p, int base, int credit)
int(* exe_q_remove)(struct bxe_softc *sc, union ecore_qable_obj *o, struct ecore_exeq_elem *elem)
#define ECORE_MULTI_TX_COS
void ecore_init_mcast_obj(struct bxe_softc *sc, struct ecore_mcast_obj *mcast_obj, uint8_t mcast_cl_id, uint32_t mcast_cid, uint8_t func_id, uint8_t engine_id, void *rdata, ecore_dma_addr_t rdata_mapping, int state, unsigned long *pstate, ecore_obj_type type)
enum ecore_func_state ecore_func_get_state(struct bxe_softc *sc, struct ecore_func_sp_obj *o)
int ecore_vlan_mac_h_write_lock(struct bxe_softc *sc, struct ecore_vlan_mac_obj *o)
void ecore_init_func_obj(struct bxe_softc *sc, struct ecore_func_sp_obj *obj, void *rdata, ecore_dma_addr_t rdata_mapping, void *afex_rdata, ecore_dma_addr_t afex_rdata_mapping, struct ecore_func_sp_drv_ops *drv_iface)
int ecore_config_rss(struct bxe_softc *sc, struct ecore_config_rss_params *p)
int ecore_config_mcast(struct bxe_softc *sc, struct ecore_mcast_ramrod_params *p, enum ecore_mcast_cmd cmd)
struct _ecore_list_entry_t * next
struct _ecore_list_entry_t * prev
bool(* put_entry)(struct ecore_credit_pool_obj *o, int entry)
uint64_t pool_mirror[ECORE_POOL_VEC_SIZE]
int(* check)(struct ecore_credit_pool_obj *o)
bool(* get)(struct ecore_credit_pool_obj *o, int cnt)
bool(* get_entry)(struct ecore_credit_pool_obj *o, int *entry)
bool(* put)(struct ecore_credit_pool_obj *o, int cnt)
union ecore_qable_obj * owner
ecore_list_t pending_comp
union ecore_exe_queue_cmd_data cmd_data
uint8_t allowed_priorities
uint16_t afex_default_vlan
uint8_t afex_vif_list_command
uint8_t drift_adjust_value
uint8_t add_sub_drift_adjust_value
uint32_t drift_adjust_period
void(* reset_hw_cmn)(struct bxe_softc *sc)
int(* init_hw_cmn_chip)(struct bxe_softc *sc)
int(* init_hw_port)(struct bxe_softc *sc)
void(* release_fw)(struct bxe_softc *sc)
int(* init_hw_func)(struct bxe_softc *sc)
int(* init_hw_cmn)(struct bxe_softc *sc)
void(* reset_hw_func)(struct bxe_softc *sc)
void(* gunzip_end)(struct bxe_softc *sc)
void(* reset_hw_port)(struct bxe_softc *sc)
int(* init_fw)(struct bxe_softc *sc)
int(* gunzip_init)(struct bxe_softc *sc)
int(* complete_cmd)(struct bxe_softc *sc, struct ecore_func_sp_obj *o, enum ecore_func_cmd cmd)
ecore_dma_addr_t afex_rdata_mapping
struct ecore_func_sp_drv_ops * drv
int(* send_cmd)(struct bxe_softc *sc, struct ecore_func_state_params *params)
ECORE_MUTEX one_pending_mutex
ecore_dma_addr_t rdata_mapping
enum ecore_func_state state next_state
int(* check_transition)(struct bxe_softc *sc, struct ecore_func_sp_obj *o, struct ecore_func_state_params *params)
int(* wait_comp)(struct bxe_softc *sc, struct ecore_func_sp_obj *o, enum ecore_func_cmd cmd)
uint16_t class_fail_ethtype
uint8_t sd_vlan_force_pri_val
uint16_t sd_vlan_eth_type
uint8_t c2s_pri[MAX_VLAN_PRIORITIES]
uint8_t sd_vlan_force_pri
uint8_t inner_clss_l2geneve
struct ecore_func_afex_viflists_params afex_viflists
struct ecore_func_set_timesync_params set_timesync
struct ecore_func_hw_init_params hw_init
unsigned long ramrod_flags
struct ecore_func_hw_reset_params hw_reset
struct ecore_func_start_params start
union ecore_func_state_params::@45 params
struct ecore_func_sp_obj * f_obj
struct ecore_func_tx_start_params tx_start
struct ecore_func_afex_update_params afex_update
struct ecore_func_switch_update_params switch_update
uint8_t dcb_outer_pri[MAX_TRAFFIC_TYPES]
struct priority_cos traffic_type_to_priority_cos[MAX_TRAFFIC_TYPES]
ecore_list_entry_t * tail
ecore_list_entry_t * head
ecore_list_t pending_cmds_head
struct ecore_mcast_obj::@39::@41 exact_match
uint64_t vec[ECORE_MCAST_VEC_SZ]
void(* clear_sched)(struct ecore_mcast_obj *o)
bool(* check_pending)(struct ecore_mcast_obj *o)
void(* set_one_rule)(struct bxe_softc *sc, struct ecore_mcast_obj *o, int idx, union ecore_mcast_config_data *cfg_data, enum ecore_mcast_cmd cmd)
bool(* check_sched)(struct ecore_mcast_obj *o)
int(* validate)(struct bxe_softc *sc, struct ecore_mcast_ramrod_params *p, enum ecore_mcast_cmd cmd)
int(* wait_comp)(struct bxe_softc *sc, struct ecore_mcast_obj *o)
struct ecore_mcast_obj::@39::@40 aprox_match
int(* get_registry_size)(struct ecore_mcast_obj *o)
union ecore_mcast_obj::@39 registry
void(* set_registry_size)(struct ecore_mcast_obj *o, int n)
int(* config_mcast)(struct bxe_softc *sc, struct ecore_mcast_ramrod_params *p, enum ecore_mcast_cmd cmd)
void(* set_sched)(struct ecore_mcast_obj *o)
int(* hdl_restore)(struct bxe_softc *sc, struct ecore_mcast_obj *o, int start_bin, int *rdata_idx)
void(* revert)(struct bxe_softc *sc, struct ecore_mcast_ramrod_params *p, int old_num_bins)
int(* enqueue_cmd)(struct bxe_softc *sc, struct ecore_mcast_obj *o, struct ecore_mcast_ramrod_params *p, enum ecore_mcast_cmd cmd)
unsigned long ramrod_flags
struct ecore_mcast_obj * mcast_obj
struct ecore_queue_init_params::@43 rx
struct eth_context * cxts[ECORE_MULTI_TX_COS]
struct ecore_queue_init_params::@42 tx
struct ecore_txq_setup_params txq_params
struct ecore_general_setup_params gen_params
struct rxq_pause_params pause_params
struct ecore_rxq_setup_params rxq_params
struct ecore_txq_setup_params txq_params
struct ecore_general_setup_params gen_params
ecore_dma_addr_t rdata_mapping
int(* check_transition)(struct bxe_softc *sc, struct ecore_queue_sp_obj *o, struct ecore_queue_state_params *params)
int(* set_pending)(struct ecore_queue_sp_obj *o, struct ecore_queue_state_params *params)
int(* wait_comp)(struct bxe_softc *sc, struct ecore_queue_sp_obj *o, enum ecore_queue_cmd cmd)
int(* complete_cmd)(struct bxe_softc *sc, struct ecore_queue_sp_obj *o, enum ecore_queue_cmd)
enum ecore_q_state state next_state
int(* send_cmd)(struct bxe_softc *sc, struct ecore_queue_state_params *params)
uint32_t cids[ECORE_MULTI_TX_COS]
struct ecore_queue_setup_tx_only_params tx_only
struct ecore_queue_cfc_del_params cfc_del
struct ecore_queue_terminate_params terminate
struct ecore_queue_update_tpa_params update_tpa
struct ecore_queue_sp_obj * q_obj
unsigned long ramrod_flags
struct ecore_queue_init_params init
struct ecore_queue_setup_params setup
union ecore_queue_state_params::@44 params
struct ecore_queue_update_params update
uint16_t silent_removal_value
uint16_t silent_removal_mask
unsigned long update_flags
uint16_t sge_pause_thr_high
uint16_t sge_pause_thr_low
uint8_t complete_on_both_clients
void(* set_pending)(struct ecore_raw_obj *o)
int(* wait_comp)(struct bxe_softc *sc, struct ecore_raw_obj *o)
void(* clear_pending)(struct ecore_raw_obj *o)
bool(* check_pending)(struct ecore_raw_obj *o)
ecore_dma_addr_t rdata_mapping
int(* config_rx_mode)(struct bxe_softc *sc, struct ecore_rx_mode_ramrod_params *p)
int(* wait_comp)(struct bxe_softc *sc, struct ecore_rx_mode_ramrod_params *p)
unsigned long ramrod_flags
ecore_dma_addr_t rdata_mapping
struct ecore_rx_mode_obj * rx_mode_obj
unsigned long tx_accept_flags
unsigned long rx_mode_flags
unsigned long rx_accept_flags
uint16_t silent_removal_value
uint16_t silent_removal_mask
ecore_dma_addr_t dscr_map
ecore_dma_addr_t rcq_np_map
ecore_dma_addr_t dscr_map
uint8_t tss_leading_cl_id
struct ecore_vlan_mac_obj * target_obj
union ecore_classification_ramrod_data u
unsigned long vlan_mac_flags
enum ecore_vlan_mac_cmd cmd
struct ecore_credit_pool_obj * macs_pool
bool(* get_credit)(struct ecore_vlan_mac_obj *o)
void(* set_one_rule)(struct bxe_softc *sc, struct ecore_vlan_mac_obj *o, struct ecore_exeq_elem *elem, int rule_idx, int cam_offset)
int(* complete)(struct bxe_softc *sc, struct ecore_vlan_mac_obj *o, union event_ring_elem *cqe, unsigned long *ramrod_flags)
int(* restore)(struct bxe_softc *sc, struct ecore_vlan_mac_ramrod_params *p, struct ecore_vlan_mac_registry_elem **ppos)
struct ecore_credit_pool_obj * vlans_pool
bool(* check_move)(struct bxe_softc *sc, struct ecore_vlan_mac_obj *src_o, struct ecore_vlan_mac_obj *dst_o, union ecore_classification_ramrod_data *data)
int(* get_n_elements)(struct bxe_softc *sc, struct ecore_vlan_mac_obj *o, int n, uint8_t *base, uint8_t stride, uint8_t size)
int(* delete_all)(struct bxe_softc *sc, struct ecore_vlan_mac_obj *o, unsigned long *vlan_mac_flags, unsigned long *ramrod_flags)
bool(* put_credit)(struct ecore_vlan_mac_obj *o)
bool(* get_cam_offset)(struct ecore_vlan_mac_obj *o, int *offset)
struct ecore_exe_queue_obj exe_queue
int(* wait)(struct bxe_softc *sc, struct ecore_vlan_mac_obj *o)
bool(* put_cam_offset)(struct ecore_vlan_mac_obj *o, int offset)
unsigned long saved_ramrod_flags
int(* check_add)(struct bxe_softc *sc, struct ecore_vlan_mac_obj *o, union ecore_classification_ramrod_data *data)
unsigned long ramrod_flags
struct ecore_vlan_mac_obj * vlan_mac_obj
struct ecore_vlan_mac_data user_req
union ecore_classification_ramrod_data u
unsigned long vlan_mac_flags
uint8_t innermac[ETH_ALEN]
struct ecore_vlan_ramrod_data vlan
struct ecore_mac_ramrod_data mac
struct ecore_vxlan_fltr_ramrod_data vxlan_fltr
struct ecore_vlan_mac_ramrod_data vlan_mac
struct ecore_exe_queue_cmd_data::@38 mcast
struct ecore_vlan_mac_data vlan_mac
union event_ring_elem * elem
struct ecore_vlan_mac_obj vlan_mac