diff options
Diffstat (limited to 'drivers/net/ethernet/broadcom/bnx2x/bnx2x.h')
-rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x.h | 166 |
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) *\ |
252 | enum { | 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) | 294 | enum { |
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 | ||
486 | enum bnx2x_tpa_mode_t { | 490 | enum 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 | ||
1183 | struct 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 | |||
1191 | struct 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 | |||
1185 | struct bnx2x { | 1199 | struct 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 { | |||
1598 | extern int num_queues; | 1625 | extern 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 | ||