aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/broadcom/bnx2x/bnx2x.h')
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x.h166
1 files changed, 97 insertions, 69 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
index 7de82418497..52f33b8c41e 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h
@@ -23,8 +23,8 @@
23 * (you will need to reboot afterwards) */ 23 * (you will need to reboot afterwards) */
24/* #define BNX2X_STOP_ON_ERROR */ 24/* #define BNX2X_STOP_ON_ERROR */
25 25
26#define DRV_MODULE_VERSION "1.72.50-0" 26#define DRV_MODULE_VERSION "1.72.51-0"
27#define DRV_MODULE_RELDATE "2012/04/23" 27#define DRV_MODULE_RELDATE "2012/06/18"
28#define BNX2X_BC_VER 0x040200 28#define BNX2X_BC_VER 0x040200
29 29
30#if defined(CONFIG_DCB) 30#if defined(CONFIG_DCB)
@@ -51,6 +51,7 @@
51 51
52#include "bnx2x_reg.h" 52#include "bnx2x_reg.h"
53#include "bnx2x_fw_defs.h" 53#include "bnx2x_fw_defs.h"
54#include "bnx2x_mfw_req.h"
54#include "bnx2x_hsi.h" 55#include "bnx2x_hsi.h"
55#include "bnx2x_link.h" 56#include "bnx2x_link.h"
56#include "bnx2x_sp.h" 57#include "bnx2x_sp.h"
@@ -248,13 +249,12 @@ enum {
248 BNX2X_MAX_CNIC_ETH_CL_ID_IDX, 249 BNX2X_MAX_CNIC_ETH_CL_ID_IDX,
249}; 250};
250 251
251#define BNX2X_CNIC_START_ETH_CID 48 252#define BNX2X_CNIC_START_ETH_CID(bp) (BNX2X_NUM_NON_CNIC_QUEUES(bp) *\
252enum { 253 (bp)->max_cos)
253 /* iSCSI L2 */ 254 /* iSCSI L2 */
254 BNX2X_ISCSI_ETH_CID = BNX2X_CNIC_START_ETH_CID, 255#define BNX2X_ISCSI_ETH_CID(bp) (BNX2X_CNIC_START_ETH_CID(bp))
255 /* FCoE L2 */ 256 /* FCoE L2 */
256 BNX2X_FCOE_ETH_CID, 257#define BNX2X_FCOE_ETH_CID(bp) (BNX2X_CNIC_START_ETH_CID(bp) + 1)
257};
258 258
259/** Additional rings budgeting */ 259/** Additional rings budgeting */
260#ifdef BCM_CNIC 260#ifdef BCM_CNIC
@@ -276,29 +276,30 @@ enum {
276#define FIRST_TX_ONLY_COS_INDEX 1 276#define FIRST_TX_ONLY_COS_INDEX 1
277#define FIRST_TX_COS_INDEX 0 277#define FIRST_TX_COS_INDEX 0
278 278
279/* defines for decodeing the fastpath index and the cos index out of the
280 * transmission queue index
281 */
282#define MAX_TXQS_PER_COS FP_SB_MAX_E1x
283
284#define TXQ_TO_FP(txq_index) ((txq_index) % MAX_TXQS_PER_COS)
285#define TXQ_TO_COS(txq_index) ((txq_index) / MAX_TXQS_PER_COS)
286
287/* rules for calculating the cids of tx-only connections */ 279/* rules for calculating the cids of tx-only connections */
288#define CID_TO_FP(cid) ((cid) % MAX_TXQS_PER_COS) 280#define CID_TO_FP(cid, bp) ((cid) % BNX2X_NUM_NON_CNIC_QUEUES(bp))
289#define CID_COS_TO_TX_ONLY_CID(cid, cos) (cid + cos * MAX_TXQS_PER_COS) 281#define CID_COS_TO_TX_ONLY_CID(cid, cos, bp) \
282 (cid + cos * BNX2X_NUM_NON_CNIC_QUEUES(bp))
290 283
291/* fp index inside class of service range */ 284/* fp index inside class of service range */
292#define FP_COS_TO_TXQ(fp, cos) ((fp)->index + cos * MAX_TXQS_PER_COS) 285#define FP_COS_TO_TXQ(fp, cos, bp) \
293 286 ((fp)->index + cos * BNX2X_NUM_NON_CNIC_QUEUES(bp))
294/* 287
295 * 0..15 eth cos0 288/* Indexes for transmission queues array:
296 * 16..31 eth cos1 if applicable 289 * txdata for RSS i CoS j is at location i + (j * num of RSS)
297 * 32..47 eth cos2 If applicable 290 * txdata for FCoE (if exist) is at location max cos * num of RSS
298 * fcoe queue follows eth queues (16, 32, 48 depending on cos) 291 * txdata for FWD (if exist) is one location after FCoE
292 * txdata for OOO (if exist) is one location after FWD
299 */ 293 */
300#define MAX_ETH_TXQ_IDX(bp) (MAX_TXQS_PER_COS * (bp)->max_cos) 294enum {
301#define FCOE_TXQ_IDX(bp) (MAX_ETH_TXQ_IDX(bp)) 295 FCOE_TXQ_IDX_OFFSET,
296 FWD_TXQ_IDX_OFFSET,
297 OOO_TXQ_IDX_OFFSET,
298};
299#define MAX_ETH_TXQ_IDX(bp) (BNX2X_NUM_NON_CNIC_QUEUES(bp) * (bp)->max_cos)
300#ifdef BCM_CNIC
301#define FCOE_TXQ_IDX(bp) (MAX_ETH_TXQ_IDX(bp) + FCOE_TXQ_IDX_OFFSET)
302#endif
302 303
303/* fast path */ 304/* fast path */
304/* 305/*
@@ -453,6 +454,7 @@ struct bnx2x_agg_info {
453 u16 vlan_tag; 454 u16 vlan_tag;
454 u16 len_on_bd; 455 u16 len_on_bd;
455 u32 rxhash; 456 u32 rxhash;
457 bool l4_rxhash;
456 u16 gro_size; 458 u16 gro_size;
457 u16 full_page; 459 u16 full_page;
458}; 460};
@@ -481,6 +483,8 @@ struct bnx2x_fp_txdata {
481 __le16 *tx_cons_sb; 483 __le16 *tx_cons_sb;
482 484
483 int txq_index; 485 int txq_index;
486 struct bnx2x_fastpath *parent_fp;
487 int tx_ring_size;
484}; 488};
485 489
486enum bnx2x_tpa_mode_t { 490enum bnx2x_tpa_mode_t {
@@ -507,7 +511,7 @@ struct bnx2x_fastpath {
507 enum bnx2x_tpa_mode_t mode; 511 enum bnx2x_tpa_mode_t mode;
508 512
509 u8 max_cos; /* actual number of active tx coses */ 513 u8 max_cos; /* actual number of active tx coses */
510 struct bnx2x_fp_txdata txdata[BNX2X_MULTI_TX_COS]; 514 struct bnx2x_fp_txdata *txdata_ptr[BNX2X_MULTI_TX_COS];
511 515
512 struct sw_rx_bd *rx_buf_ring; /* BDs mappings ring */ 516 struct sw_rx_bd *rx_buf_ring; /* BDs mappings ring */
513 struct sw_rx_page *rx_page_ring; /* SGE pages mappings ring */ 517 struct sw_rx_page *rx_page_ring; /* SGE pages mappings ring */
@@ -547,51 +551,45 @@ struct bnx2x_fastpath {
547 rx_calls; 551 rx_calls;
548 552
549 /* TPA related */ 553 /* TPA related */
550 struct bnx2x_agg_info tpa_info[ETH_MAX_AGGREGATION_QUEUES_E1H_E2]; 554 struct bnx2x_agg_info *tpa_info;
551 u8 disable_tpa; 555 u8 disable_tpa;
552#ifdef BNX2X_STOP_ON_ERROR 556#ifdef BNX2X_STOP_ON_ERROR
553 u64 tpa_queue_used; 557 u64 tpa_queue_used;
554#endif 558#endif
555
556 struct tstorm_per_queue_stats old_tclient;
557 struct ustorm_per_queue_stats old_uclient;
558 struct xstorm_per_queue_stats old_xclient;
559 struct bnx2x_eth_q_stats eth_q_stats;
560 struct bnx2x_eth_q_stats_old eth_q_stats_old;
561
562 /* The size is calculated using the following: 559 /* The size is calculated using the following:
563 sizeof name field from netdev structure + 560 sizeof name field from netdev structure +
564 4 ('-Xx-' string) + 561 4 ('-Xx-' string) +
565 4 (for the digits and to make it DWORD aligned) */ 562 4 (for the digits and to make it DWORD aligned) */
566#define FP_NAME_SIZE (sizeof(((struct net_device *)0)->name) + 8) 563#define FP_NAME_SIZE (sizeof(((struct net_device *)0)->name) + 8)
567 char name[FP_NAME_SIZE]; 564 char name[FP_NAME_SIZE];
568
569 /* MACs object */
570 struct bnx2x_vlan_mac_obj mac_obj;
571
572 /* Queue State object */
573 struct bnx2x_queue_sp_obj q_obj;
574
575}; 565};
576 566
577#define bnx2x_fp(bp, nr, var) (bp->fp[nr].var) 567#define bnx2x_fp(bp, nr, var) ((bp)->fp[(nr)].var)
568#define bnx2x_sp_obj(bp, fp) ((bp)->sp_objs[(fp)->index])
569#define bnx2x_fp_stats(bp, fp) (&((bp)->fp_stats[(fp)->index]))
570#define bnx2x_fp_qstats(bp, fp) (&((bp)->fp_stats[(fp)->index].eth_q_stats))
578 571
579/* Use 2500 as a mini-jumbo MTU for FCoE */ 572/* Use 2500 as a mini-jumbo MTU for FCoE */
580#define BNX2X_FCOE_MINI_JUMBO_MTU 2500 573#define BNX2X_FCOE_MINI_JUMBO_MTU 2500
581 574
582/* FCoE L2 `fastpath' entry is right after the eth entries */ 575#define FCOE_IDX_OFFSET 0
583#define FCOE_IDX BNX2X_NUM_ETH_QUEUES(bp) 576
584#define bnx2x_fcoe_fp(bp) (&bp->fp[FCOE_IDX]) 577#define FCOE_IDX(bp) (BNX2X_NUM_NON_CNIC_QUEUES(bp) + \
585#define bnx2x_fcoe(bp, var) (bnx2x_fcoe_fp(bp)->var) 578 FCOE_IDX_OFFSET)
586#define bnx2x_fcoe_tx(bp, var) (bnx2x_fcoe_fp(bp)-> \ 579#define bnx2x_fcoe_fp(bp) (&bp->fp[FCOE_IDX(bp)])
587 txdata[FIRST_TX_COS_INDEX].var) 580#define bnx2x_fcoe(bp, var) (bnx2x_fcoe_fp(bp)->var)
581#define bnx2x_fcoe_inner_sp_obj(bp) (&bp->sp_objs[FCOE_IDX(bp)])
582#define bnx2x_fcoe_sp_obj(bp, var) (bnx2x_fcoe_inner_sp_obj(bp)->var)
583#define bnx2x_fcoe_tx(bp, var) (bnx2x_fcoe_fp(bp)-> \
584 txdata_ptr[FIRST_TX_COS_INDEX] \
585 ->var)
588 586
589 587
590#define IS_ETH_FP(fp) (fp->index < \ 588#define IS_ETH_FP(fp) (fp->index < \
591 BNX2X_NUM_ETH_QUEUES(fp->bp)) 589 BNX2X_NUM_ETH_QUEUES(fp->bp))
592#ifdef BCM_CNIC 590#ifdef BCM_CNIC
593#define IS_FCOE_FP(fp) (fp->index == FCOE_IDX) 591#define IS_FCOE_FP(fp) (fp->index == FCOE_IDX(fp->bp))
594#define IS_FCOE_IDX(idx) ((idx) == FCOE_IDX) 592#define IS_FCOE_IDX(idx) ((idx) == FCOE_IDX(bp))
595#else 593#else
596#define IS_FCOE_FP(fp) false 594#define IS_FCOE_FP(fp) false
597#define IS_FCOE_IDX(idx) false 595#define IS_FCOE_IDX(idx) false
@@ -978,8 +976,8 @@ union cdu_context {
978}; 976};
979 977
980/* CDU host DB constants */ 978/* CDU host DB constants */
981#define CDU_ILT_PAGE_SZ_HW 3 979#define CDU_ILT_PAGE_SZ_HW 2
982#define CDU_ILT_PAGE_SZ (8192 << CDU_ILT_PAGE_SZ_HW) /* 64K */ 980#define CDU_ILT_PAGE_SZ (8192 << CDU_ILT_PAGE_SZ_HW) /* 32K */
983#define ILT_PAGE_CIDS (CDU_ILT_PAGE_SZ / sizeof(union cdu_context)) 981#define ILT_PAGE_CIDS (CDU_ILT_PAGE_SZ / sizeof(union cdu_context))
984 982
985#ifdef BCM_CNIC 983#ifdef BCM_CNIC
@@ -1182,11 +1180,31 @@ struct bnx2x_prev_path_list {
1182 struct list_head list; 1180 struct list_head list;
1183}; 1181};
1184 1182
1183struct bnx2x_sp_objs {
1184 /* MACs object */
1185 struct bnx2x_vlan_mac_obj mac_obj;
1186
1187 /* Queue State object */
1188 struct bnx2x_queue_sp_obj q_obj;
1189};
1190
1191struct bnx2x_fp_stats {
1192 struct tstorm_per_queue_stats old_tclient;
1193 struct ustorm_per_queue_stats old_uclient;
1194 struct xstorm_per_queue_stats old_xclient;
1195 struct bnx2x_eth_q_stats eth_q_stats;
1196 struct bnx2x_eth_q_stats_old eth_q_stats_old;
1197};
1198
1185struct bnx2x { 1199struct bnx2x {
1186 /* Fields used in the tx and intr/napi performance paths 1200 /* Fields used in the tx and intr/napi performance paths
1187 * are grouped together in the beginning of the structure 1201 * are grouped together in the beginning of the structure
1188 */ 1202 */
1189 struct bnx2x_fastpath *fp; 1203 struct bnx2x_fastpath *fp;
1204 struct bnx2x_sp_objs *sp_objs;
1205 struct bnx2x_fp_stats *fp_stats;
1206 struct bnx2x_fp_txdata *bnx2x_txq;
1207 int bnx2x_txq_size;
1190 void __iomem *regview; 1208 void __iomem *regview;
1191 void __iomem *doorbells; 1209 void __iomem *doorbells;
1192 u16 db_size; 1210 u16 db_size;
@@ -1301,7 +1319,9 @@ struct bnx2x {
1301#define NO_ISCSI_FLAG (1 << 14) 1319#define NO_ISCSI_FLAG (1 << 14)
1302#define NO_FCOE_FLAG (1 << 15) 1320#define NO_FCOE_FLAG (1 << 15)
1303#define BC_SUPPORTS_PFC_STATS (1 << 17) 1321#define BC_SUPPORTS_PFC_STATS (1 << 17)
1322#define BC_SUPPORTS_FCOE_FEATURES (1 << 19)
1304#define USING_SINGLE_MSIX_FLAG (1 << 20) 1323#define USING_SINGLE_MSIX_FLAG (1 << 20)
1324#define BC_SUPPORTS_DCBX_MSG_NON_PMF (1 << 21)
1305 1325
1306#define NO_ISCSI(bp) ((bp)->flags & NO_ISCSI_FLAG) 1326#define NO_ISCSI(bp) ((bp)->flags & NO_ISCSI_FLAG)
1307#define NO_ISCSI_OOO(bp) ((bp)->flags & NO_ISCSI_OOO_FLAG) 1327#define NO_ISCSI_OOO(bp) ((bp)->flags & NO_ISCSI_OOO_FLAG)
@@ -1377,6 +1397,7 @@ struct bnx2x {
1377#define BNX2X_MAX_COS 3 1397#define BNX2X_MAX_COS 3
1378#define BNX2X_MAX_TX_COS 2 1398#define BNX2X_MAX_TX_COS 2
1379 int num_queues; 1399 int num_queues;
1400 int num_napi_queues;
1380 int disable_tpa; 1401 int disable_tpa;
1381 1402
1382 u32 rx_mode; 1403 u32 rx_mode;
@@ -1389,6 +1410,7 @@ struct bnx2x {
1389 u8 igu_dsb_id; 1410 u8 igu_dsb_id;
1390 u8 igu_base_sb; 1411 u8 igu_base_sb;
1391 u8 igu_sb_cnt; 1412 u8 igu_sb_cnt;
1413
1392 dma_addr_t def_status_blk_mapping; 1414 dma_addr_t def_status_blk_mapping;
1393 1415
1394 struct bnx2x_slowpath *slowpath; 1416 struct bnx2x_slowpath *slowpath;
@@ -1420,7 +1442,11 @@ struct bnx2x {
1420 dma_addr_t fw_stats_data_mapping; 1442 dma_addr_t fw_stats_data_mapping;
1421 int fw_stats_data_sz; 1443 int fw_stats_data_sz;
1422 1444
1423 struct hw_context context; 1445 /* For max 196 cids (64*3 + non-eth), 32KB ILT page size and 1KB
1446 * context size we need 8 ILT entries.
1447 */
1448#define ILT_MAX_L2_LINES 8
1449 struct hw_context context[ILT_MAX_L2_LINES];
1424 1450
1425 struct bnx2x_ilt *ilt; 1451 struct bnx2x_ilt *ilt;
1426#define BP_ILT(bp) ((bp)->ilt) 1452#define BP_ILT(bp) ((bp)->ilt)
@@ -1433,13 +1459,14 @@ struct bnx2x {
1433 1459
1434/* 1460/*
1435 * Maximum CID count that might be required by the bnx2x: 1461 * Maximum CID count that might be required by the bnx2x:
1436 * Max Tss * Max_Tx_Multi_Cos + CNIC L2 Clients (FCoE and iSCSI related) 1462 * Max RSS * Max_Tx_Multi_Cos + FCoE + iSCSI
1437 */ 1463 */
1438#define BNX2X_L2_CID_COUNT(bp) (MAX_TXQS_PER_COS * BNX2X_MULTI_TX_COS +\ 1464#define BNX2X_L2_CID_COUNT(bp) (BNX2X_NUM_ETH_QUEUES(bp) * BNX2X_MULTI_TX_COS \
1439 NON_ETH_CONTEXT_USE + CNIC_PRESENT) 1465 + NON_ETH_CONTEXT_USE + CNIC_PRESENT)
1466#define BNX2X_L2_MAX_CID(bp) (BNX2X_MAX_RSS_COUNT(bp) * BNX2X_MULTI_TX_COS \
1467 + NON_ETH_CONTEXT_USE + CNIC_PRESENT)
1440#define L2_ILT_LINES(bp) (DIV_ROUND_UP(BNX2X_L2_CID_COUNT(bp),\ 1468#define L2_ILT_LINES(bp) (DIV_ROUND_UP(BNX2X_L2_CID_COUNT(bp),\
1441 ILT_PAGE_CIDS)) 1469 ILT_PAGE_CIDS))
1442#define BNX2X_DB_SIZE(bp) (BNX2X_L2_CID_COUNT(bp) * (1 << BNX2X_DB_SHIFT))
1443 1470
1444 int qm_cid_count; 1471 int qm_cid_count;
1445 1472
@@ -1598,6 +1625,8 @@ struct bnx2x {
1598extern int num_queues; 1625extern int num_queues;
1599#define BNX2X_NUM_QUEUES(bp) (bp->num_queues) 1626#define BNX2X_NUM_QUEUES(bp) (bp->num_queues)
1600#define BNX2X_NUM_ETH_QUEUES(bp) (BNX2X_NUM_QUEUES(bp) - NON_ETH_CONTEXT_USE) 1627#define BNX2X_NUM_ETH_QUEUES(bp) (BNX2X_NUM_QUEUES(bp) - NON_ETH_CONTEXT_USE)
1628#define BNX2X_NUM_NON_CNIC_QUEUES(bp) (BNX2X_NUM_QUEUES(bp) - \
1629 NON_ETH_CONTEXT_USE)
1601#define BNX2X_NUM_RX_QUEUES(bp) BNX2X_NUM_QUEUES(bp) 1630#define BNX2X_NUM_RX_QUEUES(bp) BNX2X_NUM_QUEUES(bp)
1602 1631
1603#define is_multi(bp) (BNX2X_NUM_QUEUES(bp) > 1) 1632#define is_multi(bp) (BNX2X_NUM_QUEUES(bp) > 1)
@@ -1656,6 +1685,9 @@ struct bnx2x_func_init_params {
1656 continue; \ 1685 continue; \
1657 else 1686 else
1658 1687
1688#define for_each_napi_rx_queue(bp, var) \
1689 for ((var) = 0; (var) < bp->num_napi_queues; (var)++)
1690
1659/* Skip OOO FP */ 1691/* Skip OOO FP */
1660#define for_each_tx_queue(bp, var) \ 1692#define for_each_tx_queue(bp, var) \
1661 for ((var) = 0; (var) < BNX2X_NUM_QUEUES(bp); (var)++) \ 1693 for ((var) = 0; (var) < BNX2X_NUM_QUEUES(bp); (var)++) \
@@ -1709,15 +1741,6 @@ int bnx2x_set_mac_one(struct bnx2x *bp, u8 *mac,
1709 struct bnx2x_vlan_mac_obj *obj, bool set, 1741 struct bnx2x_vlan_mac_obj *obj, bool set,
1710 int mac_type, unsigned long *ramrod_flags); 1742 int mac_type, unsigned long *ramrod_flags);
1711/** 1743/**
1712 * Deletes all MACs configured for the specific MAC object.
1713 *
1714 * @param bp Function driver instance
1715 * @param mac_obj MAC object to cleanup
1716 *
1717 * @return zero if all MACs were cleaned
1718 */
1719
1720/**
1721 * bnx2x_del_all_macs - delete all MACs configured for the specific MAC object 1744 * bnx2x_del_all_macs - delete all MACs configured for the specific MAC object
1722 * 1745 *
1723 * @bp: driver handle 1746 * @bp: driver handle
@@ -1817,6 +1840,7 @@ static inline u32 reg_poll(struct bnx2x *bp, u32 reg, u32 expected, int ms,
1817#define LOAD_NORMAL 0 1840#define LOAD_NORMAL 0
1818#define LOAD_OPEN 1 1841#define LOAD_OPEN 1
1819#define LOAD_DIAG 2 1842#define LOAD_DIAG 2
1843#define LOAD_LOOPBACK_EXT 3
1820#define UNLOAD_NORMAL 0 1844#define UNLOAD_NORMAL 0
1821#define UNLOAD_CLOSE 1 1845#define UNLOAD_CLOSE 1
1822#define UNLOAD_RECOVERY 2 1846#define UNLOAD_RECOVERY 2
@@ -1899,13 +1923,17 @@ static inline u32 reg_poll(struct bnx2x *bp, u32 reg, u32 expected, int ms,
1899#define PCICFG_LINK_SPEED 0xf0000 1923#define PCICFG_LINK_SPEED 0xf0000
1900#define PCICFG_LINK_SPEED_SHIFT 16 1924#define PCICFG_LINK_SPEED_SHIFT 16
1901 1925
1902 1926#define BNX2X_NUM_TESTS_SF 7
1903#define BNX2X_NUM_TESTS 7 1927#define BNX2X_NUM_TESTS_MF 3
1928#define BNX2X_NUM_TESTS(bp) (IS_MF(bp) ? BNX2X_NUM_TESTS_MF : \
1929 BNX2X_NUM_TESTS_SF)
1904 1930
1905#define BNX2X_PHY_LOOPBACK 0 1931#define BNX2X_PHY_LOOPBACK 0
1906#define BNX2X_MAC_LOOPBACK 1 1932#define BNX2X_MAC_LOOPBACK 1
1933#define BNX2X_EXT_LOOPBACK 2
1907#define BNX2X_PHY_LOOPBACK_FAILED 1 1934#define BNX2X_PHY_LOOPBACK_FAILED 1
1908#define BNX2X_MAC_LOOPBACK_FAILED 2 1935#define BNX2X_MAC_LOOPBACK_FAILED 2
1936#define BNX2X_EXT_LOOPBACK_FAILED 3
1909#define BNX2X_LOOPBACK_FAILED (BNX2X_MAC_LOOPBACK_FAILED | \ 1937#define BNX2X_LOOPBACK_FAILED (BNX2X_MAC_LOOPBACK_FAILED | \
1910 BNX2X_PHY_LOOPBACK_FAILED) 1938 BNX2X_PHY_LOOPBACK_FAILED)
1911 1939