bnx2x.h (fc915c8b930c3114f2a838f7e2cd8789ad6fedc3) bnx2x.h (2e499d3cc13365a87815266dda59904dcb8c8d6c)
1/* bnx2x.h: Broadcom Everest network driver.
2 *
3 * Copyright (c) 2007-2012 Broadcom Corporation
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation.
8 *

--- 9 unchanged lines hidden (view full) ---

18#include <linux/types.h>
19
20/* compilation time flags */
21
22/* define this to make the driver freeze on error to allow getting debug info
23 * (you will need to reboot afterwards) */
24/* #define BNX2X_STOP_ON_ERROR */
25
1/* bnx2x.h: Broadcom Everest network driver.
2 *
3 * Copyright (c) 2007-2012 Broadcom Corporation
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation.
8 *

--- 9 unchanged lines hidden (view full) ---

18#include <linux/types.h>
19
20/* compilation time flags */
21
22/* define this to make the driver freeze on error to allow getting debug info
23 * (you will need to reboot afterwards) */
24/* #define BNX2X_STOP_ON_ERROR */
25
26#define DRV_MODULE_VERSION "1.72.50-0"
27#define DRV_MODULE_RELDATE "2012/04/23"
26#define DRV_MODULE_VERSION "1.72.51-0"
27#define DRV_MODULE_RELDATE "2012/06/18"
28#define BNX2X_BC_VER 0x040200
29
30#if defined(CONFIG_DCB)
31#define BCM_DCBNL
32#endif
33
34
35#include "bnx2x_hsi.h"

--- 10 unchanged lines hidden (view full) ---

46#define BNX2X_MIN_MSIX_VEC_CNT 2
47#define BNX2X_MSIX_VEC_FP_START 1
48#endif
49
50#include <linux/mdio.h>
51
52#include "bnx2x_reg.h"
53#include "bnx2x_fw_defs.h"
28#define BNX2X_BC_VER 0x040200
29
30#if defined(CONFIG_DCB)
31#define BCM_DCBNL
32#endif
33
34
35#include "bnx2x_hsi.h"

--- 10 unchanged lines hidden (view full) ---

46#define BNX2X_MIN_MSIX_VEC_CNT 2
47#define BNX2X_MSIX_VEC_FP_START 1
48#endif
49
50#include <linux/mdio.h>
51
52#include "bnx2x_reg.h"
53#include "bnx2x_fw_defs.h"
54#include "bnx2x_mfw_req.h"
54#include "bnx2x_hsi.h"
55#include "bnx2x_link.h"
56#include "bnx2x_sp.h"
57#include "bnx2x_dcb.h"
58#include "bnx2x_stats.h"
59
60/* error/debug prints */
61

--- 181 unchanged lines hidden (view full) ---

243 *
244 */
245enum {
246 BNX2X_ISCSI_ETH_CL_ID_IDX,
247 BNX2X_FCOE_ETH_CL_ID_IDX,
248 BNX2X_MAX_CNIC_ETH_CL_ID_IDX,
249};
250
55#include "bnx2x_hsi.h"
56#include "bnx2x_link.h"
57#include "bnx2x_sp.h"
58#include "bnx2x_dcb.h"
59#include "bnx2x_stats.h"
60
61/* error/debug prints */
62

--- 181 unchanged lines hidden (view full) ---

244 *
245 */
246enum {
247 BNX2X_ISCSI_ETH_CL_ID_IDX,
248 BNX2X_FCOE_ETH_CL_ID_IDX,
249 BNX2X_MAX_CNIC_ETH_CL_ID_IDX,
250};
251
251#define BNX2X_CNIC_START_ETH_CID 48
252enum {
252#define BNX2X_CNIC_START_ETH_CID(bp) (BNX2X_NUM_NON_CNIC_QUEUES(bp) *\
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};
257#define BNX2X_FCOE_ETH_CID(bp) (BNX2X_CNIC_START_ETH_CID(bp) + 1)
258
259/** Additional rings budgeting */
260#ifdef BCM_CNIC
261#define CNIC_PRESENT 1
262#define FCOE_PRESENT 1
263#else
264#define CNIC_PRESENT 0
265#define FCOE_PRESENT 0

--- 5 unchanged lines hidden (view full) ---

271
272#define SM_RX_ID 0
273#define SM_TX_ID 1
274
275/* defines for multiple tx priority indices */
276#define FIRST_TX_ONLY_COS_INDEX 1
277#define FIRST_TX_COS_INDEX 0
278
258
259/** Additional rings budgeting */
260#ifdef BCM_CNIC
261#define CNIC_PRESENT 1
262#define FCOE_PRESENT 1
263#else
264#define CNIC_PRESENT 0
265#define FCOE_PRESENT 0

--- 5 unchanged lines hidden (view full) ---

271
272#define SM_RX_ID 0
273#define SM_TX_ID 1
274
275/* defines for multiple tx priority indices */
276#define FIRST_TX_ONLY_COS_INDEX 1
277#define FIRST_TX_COS_INDEX 0
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)
289#define CID_COS_TO_TX_ONLY_CID(cid, cos) (cid + cos * MAX_TXQS_PER_COS)
280#define CID_TO_FP(cid, bp) ((cid) % BNX2X_NUM_NON_CNIC_QUEUES(bp))
281#define CID_COS_TO_TX_ONLY_CID(cid, cos, bp) \
282 (cid + cos * BNX2X_NUM_NON_CNIC_QUEUES(bp))
290
291/* fp index inside class of service range */
283
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) \
286 ((fp)->index + cos * BNX2X_NUM_NON_CNIC_QUEUES(bp))
293
287
294/*
295 * 0..15 eth cos0
296 * 16..31 eth cos1 if applicable
297 * 32..47 eth cos2 If applicable
298 * fcoe queue follows eth queues (16, 32, 48 depending on cos)
288/* Indexes for transmission queues array:
289 * txdata for RSS i CoS j is at location i + (j * num of RSS)
290 * txdata for FCoE (if exist) is at location max cos * num of RSS
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)
301#define FCOE_TXQ_IDX(bp) (MAX_ETH_TXQ_IDX(bp))
294enum {
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/* fast path */
304/*
305 * This driver uses new build_skb() API :
306 * RX ring buffer contains pointer to kmalloc() data only,
307 * skb are built only after Hardware filled the frame.
308 */
309struct sw_rx_bd {

--- 166 unchanged lines hidden (view full) ---

476 u16 tx_bd_prod;
477 u16 tx_bd_cons;
478
479 unsigned long tx_pkt;
480
481 __le16 *tx_cons_sb;
482
483 int txq_index;
303
304/* fast path */
305/*
306 * This driver uses new build_skb() API :
307 * RX ring buffer contains pointer to kmalloc() data only,
308 * skb are built only after Hardware filled the frame.
309 */
310struct sw_rx_bd {

--- 166 unchanged lines hidden (view full) ---

477 u16 tx_bd_prod;
478 u16 tx_bd_cons;
479
480 unsigned long tx_pkt;
481
482 __le16 *tx_cons_sb;
483
484 int txq_index;
485 struct bnx2x_fastpath *parent_fp;
486 int tx_ring_size;
484};
485
486enum bnx2x_tpa_mode_t {
487 TPA_MODE_LRO,
488 TPA_MODE_GRO
489};
490
491struct bnx2x_fastpath {

--- 10 unchanged lines hidden (view full) ---

502
503 u32 rx_buf_size;
504
505 dma_addr_t status_blk_mapping;
506
507 enum bnx2x_tpa_mode_t mode;
508
509 u8 max_cos; /* actual number of active tx coses */
487};
488
489enum bnx2x_tpa_mode_t {
490 TPA_MODE_LRO,
491 TPA_MODE_GRO
492};
493
494struct bnx2x_fastpath {

--- 10 unchanged lines hidden (view full) ---

505
506 u32 rx_buf_size;
507
508 dma_addr_t status_blk_mapping;
509
510 enum bnx2x_tpa_mode_t mode;
511
512 u8 max_cos; /* actual number of active tx coses */
510 struct bnx2x_fp_txdata txdata[BNX2X_MULTI_TX_COS];
513 struct bnx2x_fp_txdata *txdata_ptr[BNX2X_MULTI_TX_COS];
511
512 struct sw_rx_bd *rx_buf_ring; /* BDs mappings ring */
513 struct sw_rx_page *rx_page_ring; /* SGE pages mappings ring */
514
515 struct eth_rx_bd *rx_desc_ring;
516 dma_addr_t rx_desc_mapping;
517
518 union eth_rx_cqe *rx_comp_ring;

--- 23 unchanged lines hidden (view full) ---

542 u16 rx_sge_prod;
543 /* The last maximal completed SGE */
544 u16 last_max_sge;
545 __le16 *rx_cons_sb;
546 unsigned long rx_pkt,
547 rx_calls;
548
549 /* TPA related */
514
515 struct sw_rx_bd *rx_buf_ring; /* BDs mappings ring */
516 struct sw_rx_page *rx_page_ring; /* SGE pages mappings ring */
517
518 struct eth_rx_bd *rx_desc_ring;
519 dma_addr_t rx_desc_mapping;
520
521 union eth_rx_cqe *rx_comp_ring;

--- 23 unchanged lines hidden (view full) ---

545 u16 rx_sge_prod;
546 /* The last maximal completed SGE */
547 u16 last_max_sge;
548 __le16 *rx_cons_sb;
549 unsigned long rx_pkt,
550 rx_calls;
551
552 /* TPA related */
550 struct bnx2x_agg_info tpa_info[ETH_MAX_AGGREGATION_QUEUES_E1H_E2];
553 struct bnx2x_agg_info *tpa_info;
551 u8 disable_tpa;
552#ifdef BNX2X_STOP_ON_ERROR
553 u64 tpa_queue_used;
554#endif
554 u8 disable_tpa;
555#ifdef BNX2X_STOP_ON_ERROR
556 u64 tpa_queue_used;
557#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:
563 sizeof name field from netdev structure +
564 4 ('-Xx-' string) +
565 4 (for the digits and to make it DWORD aligned) */
566#define FP_NAME_SIZE (sizeof(((struct net_device *)0)->name) + 8)
567 char name[FP_NAME_SIZE];
558 /* The size is calculated using the following:
559 sizeof name field from netdev structure +
560 4 ('-Xx-' string) +
561 4 (for the digits and to make it DWORD aligned) */
562#define FP_NAME_SIZE (sizeof(((struct net_device *)0)->name) + 8)
563 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};
576
564};
565
577#define bnx2x_fp(bp, nr, var) (bp->fp[nr].var)
566#define bnx2x_fp(bp, nr, var) ((bp)->fp[(nr)].var)
567#define bnx2x_sp_obj(bp, fp) ((bp)->sp_objs[(fp)->index])
568#define bnx2x_fp_stats(bp, fp) (&((bp)->fp_stats[(fp)->index]))
569#define bnx2x_fp_qstats(bp, fp) (&((bp)->fp_stats[(fp)->index].eth_q_stats))
578
579/* Use 2500 as a mini-jumbo MTU for FCoE */
580#define BNX2X_FCOE_MINI_JUMBO_MTU 2500
581
570
571/* Use 2500 as a mini-jumbo MTU for FCoE */
572#define BNX2X_FCOE_MINI_JUMBO_MTU 2500
573
582/* FCoE L2 `fastpath' entry is right after the eth entries */
583#define FCOE_IDX BNX2X_NUM_ETH_QUEUES(bp)
584#define bnx2x_fcoe_fp(bp) (&bp->fp[FCOE_IDX])
585#define bnx2x_fcoe(bp, var) (bnx2x_fcoe_fp(bp)->var)
586#define bnx2x_fcoe_tx(bp, var) (bnx2x_fcoe_fp(bp)-> \
587 txdata[FIRST_TX_COS_INDEX].var)
574#define FCOE_IDX_OFFSET 0
588
575
576#define FCOE_IDX(bp) (BNX2X_NUM_NON_CNIC_QUEUES(bp) + \
577 FCOE_IDX_OFFSET)
578#define bnx2x_fcoe_fp(bp) (&bp->fp[FCOE_IDX(bp)])
579#define bnx2x_fcoe(bp, var) (bnx2x_fcoe_fp(bp)->var)
580#define bnx2x_fcoe_inner_sp_obj(bp) (&bp->sp_objs[FCOE_IDX(bp)])
581#define bnx2x_fcoe_sp_obj(bp, var) (bnx2x_fcoe_inner_sp_obj(bp)->var)
582#define bnx2x_fcoe_tx(bp, var) (bnx2x_fcoe_fp(bp)-> \
583 txdata_ptr[FIRST_TX_COS_INDEX] \
584 ->var)
589
585
586
590#define IS_ETH_FP(fp) (fp->index < \
591 BNX2X_NUM_ETH_QUEUES(fp->bp))
592#ifdef BCM_CNIC
587#define IS_ETH_FP(fp) (fp->index < \
588 BNX2X_NUM_ETH_QUEUES(fp->bp))
589#ifdef BCM_CNIC
593#define IS_FCOE_FP(fp) (fp->index == FCOE_IDX)
594#define IS_FCOE_IDX(idx) ((idx) == FCOE_IDX)
590#define IS_FCOE_FP(fp) (fp->index == FCOE_IDX(fp->bp))
591#define IS_FCOE_IDX(idx) ((idx) == FCOE_IDX(bp))
595#else
596#define IS_FCOE_FP(fp) false
597#define IS_FCOE_IDX(idx) false
598#endif
599
600
601/* MC hsi */
602#define MAX_FETCH_BD 13 /* HW max BDs per packet */

--- 370 unchanged lines hidden (view full) ---

973#define FP_SB_MAX_E2 HC_SB_MAX_SB_E2
974
975union cdu_context {
976 struct eth_context eth;
977 char pad[1024];
978};
979
980/* CDU host DB constants */
592#else
593#define IS_FCOE_FP(fp) false
594#define IS_FCOE_IDX(idx) false
595#endif
596
597
598/* MC hsi */
599#define MAX_FETCH_BD 13 /* HW max BDs per packet */

--- 370 unchanged lines hidden (view full) ---

970#define FP_SB_MAX_E2 HC_SB_MAX_SB_E2
971
972union cdu_context {
973 struct eth_context eth;
974 char pad[1024];
975};
976
977/* CDU host DB constants */
981#define CDU_ILT_PAGE_SZ_HW 3
982#define CDU_ILT_PAGE_SZ (8192 << CDU_ILT_PAGE_SZ_HW) /* 64K */
978#define CDU_ILT_PAGE_SZ_HW 2
979#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))
984
985#ifdef BCM_CNIC
986#define CNIC_ISCSI_CID_MAX 256
987#define CNIC_FCOE_CID_MAX 2048
988#define CNIC_CID_MAX (CNIC_ISCSI_CID_MAX + CNIC_FCOE_CID_MAX)
989#define CNIC_ILT_LINES DIV_ROUND_UP(CNIC_CID_MAX, ILT_PAGE_CIDS)
990#endif

--- 186 unchanged lines hidden (view full) ---

1177
1178struct bnx2x_prev_path_list {
1179 u8 bus;
1180 u8 slot;
1181 u8 path;
1182 struct list_head list;
1183};
1184
980#define ILT_PAGE_CIDS (CDU_ILT_PAGE_SZ / sizeof(union cdu_context))
981
982#ifdef BCM_CNIC
983#define CNIC_ISCSI_CID_MAX 256
984#define CNIC_FCOE_CID_MAX 2048
985#define CNIC_CID_MAX (CNIC_ISCSI_CID_MAX + CNIC_FCOE_CID_MAX)
986#define CNIC_ILT_LINES DIV_ROUND_UP(CNIC_CID_MAX, ILT_PAGE_CIDS)
987#endif

--- 186 unchanged lines hidden (view full) ---

1174
1175struct bnx2x_prev_path_list {
1176 u8 bus;
1177 u8 slot;
1178 u8 path;
1179 struct list_head list;
1180};
1181
1182struct bnx2x_sp_objs {
1183 /* MACs object */
1184 struct bnx2x_vlan_mac_obj mac_obj;
1185
1186 /* Queue State object */
1187 struct bnx2x_queue_sp_obj q_obj;
1188};
1189
1190struct bnx2x_fp_stats {
1191 struct tstorm_per_queue_stats old_tclient;
1192 struct ustorm_per_queue_stats old_uclient;
1193 struct xstorm_per_queue_stats old_xclient;
1194 struct bnx2x_eth_q_stats eth_q_stats;
1195 struct bnx2x_eth_q_stats_old eth_q_stats_old;
1196};
1197
1185struct bnx2x {
1186 /* Fields used in the tx and intr/napi performance paths
1187 * are grouped together in the beginning of the structure
1188 */
1189 struct bnx2x_fastpath *fp;
1198struct bnx2x {
1199 /* Fields used in the tx and intr/napi performance paths
1200 * are grouped together in the beginning of the structure
1201 */
1202 struct bnx2x_fastpath *fp;
1203 struct bnx2x_sp_objs *sp_objs;
1204 struct bnx2x_fp_stats *fp_stats;
1205 struct bnx2x_fp_txdata *bnx2x_txq;
1206 int bnx2x_txq_size;
1190 void __iomem *regview;
1191 void __iomem *doorbells;
1192 u16 db_size;
1193
1194 u8 pf_num; /* absolute PF number */
1195 u8 pfid; /* per-path PF number */
1196 int base_fw_ndsb; /**/
1197#define BP_PATH(bp) (CHIP_IS_E1x(bp) ? 0 : (bp->pf_num & 1))

--- 98 unchanged lines hidden (view full) ---

1296#define BP_NOMCP(bp) (bp->flags & NO_MCP_FLAG)
1297#define GRO_ENABLE_FLAG (1 << 10)
1298#define MF_FUNC_DIS (1 << 11)
1299#define OWN_CNIC_IRQ (1 << 12)
1300#define NO_ISCSI_OOO_FLAG (1 << 13)
1301#define NO_ISCSI_FLAG (1 << 14)
1302#define NO_FCOE_FLAG (1 << 15)
1303#define BC_SUPPORTS_PFC_STATS (1 << 17)
1207 void __iomem *regview;
1208 void __iomem *doorbells;
1209 u16 db_size;
1210
1211 u8 pf_num; /* absolute PF number */
1212 u8 pfid; /* per-path PF number */
1213 int base_fw_ndsb; /**/
1214#define BP_PATH(bp) (CHIP_IS_E1x(bp) ? 0 : (bp->pf_num & 1))

--- 98 unchanged lines hidden (view full) ---

1313#define BP_NOMCP(bp) (bp->flags & NO_MCP_FLAG)
1314#define GRO_ENABLE_FLAG (1 << 10)
1315#define MF_FUNC_DIS (1 << 11)
1316#define OWN_CNIC_IRQ (1 << 12)
1317#define NO_ISCSI_OOO_FLAG (1 << 13)
1318#define NO_ISCSI_FLAG (1 << 14)
1319#define NO_FCOE_FLAG (1 << 15)
1320#define BC_SUPPORTS_PFC_STATS (1 << 17)
1321#define BC_SUPPORTS_FCOE_FEATURES (1 << 19)
1304#define USING_SINGLE_MSIX_FLAG (1 << 20)
1322#define USING_SINGLE_MSIX_FLAG (1 << 20)
1323#define BC_SUPPORTS_DCBX_MSG_NON_PMF (1 << 21)
1305
1306#define NO_ISCSI(bp) ((bp)->flags & NO_ISCSI_FLAG)
1307#define NO_ISCSI_OOO(bp) ((bp)->flags & NO_ISCSI_OOO_FLAG)
1308#define NO_FCOE(bp) ((bp)->flags & NO_FCOE_FLAG)
1309
1310 int pm_cap;
1311 int mrrs;
1312

--- 59 unchanged lines hidden (view full) ---

1372#define BNX2X_STATE_DIAG 0xe000
1373#define BNX2X_STATE_ERROR 0xf000
1374
1375#define BNX2X_MAX_PRIORITY 8
1376#define BNX2X_MAX_ENTRIES_PER_PRI 16
1377#define BNX2X_MAX_COS 3
1378#define BNX2X_MAX_TX_COS 2
1379 int num_queues;
1324
1325#define NO_ISCSI(bp) ((bp)->flags & NO_ISCSI_FLAG)
1326#define NO_ISCSI_OOO(bp) ((bp)->flags & NO_ISCSI_OOO_FLAG)
1327#define NO_FCOE(bp) ((bp)->flags & NO_FCOE_FLAG)
1328
1329 int pm_cap;
1330 int mrrs;
1331

--- 59 unchanged lines hidden (view full) ---

1391#define BNX2X_STATE_DIAG 0xe000
1392#define BNX2X_STATE_ERROR 0xf000
1393
1394#define BNX2X_MAX_PRIORITY 8
1395#define BNX2X_MAX_ENTRIES_PER_PRI 16
1396#define BNX2X_MAX_COS 3
1397#define BNX2X_MAX_TX_COS 2
1398 int num_queues;
1399 int num_napi_queues;
1380 int disable_tpa;
1381
1382 u32 rx_mode;
1383#define BNX2X_RX_MODE_NONE 0
1384#define BNX2X_RX_MODE_NORMAL 1
1385#define BNX2X_RX_MODE_ALLMULTI 2
1386#define BNX2X_RX_MODE_PROMISC 3
1387#define BNX2X_MAX_MULTICAST 64
1388
1389 u8 igu_dsb_id;
1390 u8 igu_base_sb;
1391 u8 igu_sb_cnt;
1400 int disable_tpa;
1401
1402 u32 rx_mode;
1403#define BNX2X_RX_MODE_NONE 0
1404#define BNX2X_RX_MODE_NORMAL 1
1405#define BNX2X_RX_MODE_ALLMULTI 2
1406#define BNX2X_RX_MODE_PROMISC 3
1407#define BNX2X_MAX_MULTICAST 64
1408
1409 u8 igu_dsb_id;
1410 u8 igu_base_sb;
1411 u8 igu_sb_cnt;
1412
1392 dma_addr_t def_status_blk_mapping;
1393
1394 struct bnx2x_slowpath *slowpath;
1395 dma_addr_t slowpath_mapping;
1396
1397 /* Total number of FW statistics requests */
1398 u8 fw_stats_num;
1399

--- 15 unchanged lines hidden (view full) ---

1415 /*
1416 * FW statistics data shortcut (points at the begining of
1417 * fw_stats buffer + fw_stats_req_sz).
1418 */
1419 struct bnx2x_fw_stats_data *fw_stats_data;
1420 dma_addr_t fw_stats_data_mapping;
1421 int fw_stats_data_sz;
1422
1413 dma_addr_t def_status_blk_mapping;
1414
1415 struct bnx2x_slowpath *slowpath;
1416 dma_addr_t slowpath_mapping;
1417
1418 /* Total number of FW statistics requests */
1419 u8 fw_stats_num;
1420

--- 15 unchanged lines hidden (view full) ---

1436 /*
1437 * FW statistics data shortcut (points at the begining of
1438 * fw_stats buffer + fw_stats_req_sz).
1439 */
1440 struct bnx2x_fw_stats_data *fw_stats_data;
1441 dma_addr_t fw_stats_data_mapping;
1442 int fw_stats_data_sz;
1443
1423 struct hw_context context;
1444 /* For max 196 cids (64*3 + non-eth), 32KB ILT page size and 1KB
1445 * context size we need 8 ILT entries.
1446 */
1447#define ILT_MAX_L2_LINES 8
1448 struct hw_context context[ILT_MAX_L2_LINES];
1424
1425 struct bnx2x_ilt *ilt;
1426#define BP_ILT(bp) ((bp)->ilt)
1427#define ILT_MAX_LINES 256
1428/*
1429 * Maximum supported number of RSS queues: number of IGU SBs minus one that goes
1430 * to CNIC.
1431 */
1432#define BNX2X_MAX_RSS_COUNT(bp) ((bp)->igu_sb_cnt - CNIC_PRESENT)
1433
1434/*
1435 * Maximum CID count that might be required by the bnx2x:
1449
1450 struct bnx2x_ilt *ilt;
1451#define BP_ILT(bp) ((bp)->ilt)
1452#define ILT_MAX_LINES 256
1453/*
1454 * Maximum supported number of RSS queues: number of IGU SBs minus one that goes
1455 * to CNIC.
1456 */
1457#define BNX2X_MAX_RSS_COUNT(bp) ((bp)->igu_sb_cnt - CNIC_PRESENT)
1458
1459/*
1460 * Maximum CID count that might be required by the bnx2x:
1436 * Max Tss * Max_Tx_Multi_Cos + CNIC L2 Clients (FCoE and iSCSI related)
1461 * Max RSS * Max_Tx_Multi_Cos + FCoE + iSCSI
1437 */
1462 */
1438#define BNX2X_L2_CID_COUNT(bp) (MAX_TXQS_PER_COS * BNX2X_MULTI_TX_COS +\
1439 NON_ETH_CONTEXT_USE + CNIC_PRESENT)
1463#define BNX2X_L2_CID_COUNT(bp) (BNX2X_NUM_ETH_QUEUES(bp) * BNX2X_MULTI_TX_COS \
1464 + NON_ETH_CONTEXT_USE + CNIC_PRESENT)
1465#define BNX2X_L2_MAX_CID(bp) (BNX2X_MAX_RSS_COUNT(bp) * BNX2X_MULTI_TX_COS \
1466 + NON_ETH_CONTEXT_USE + CNIC_PRESENT)
1440#define L2_ILT_LINES(bp) (DIV_ROUND_UP(BNX2X_L2_CID_COUNT(bp),\
1441 ILT_PAGE_CIDS))
1467#define L2_ILT_LINES(bp) (DIV_ROUND_UP(BNX2X_L2_CID_COUNT(bp),\
1468 ILT_PAGE_CIDS))
1442#define BNX2X_DB_SIZE(bp) (BNX2X_L2_CID_COUNT(bp) * (1 << BNX2X_DB_SHIFT))
1443
1444 int qm_cid_count;
1445
1446 int dropless_fc;
1447
1448#ifdef BCM_CNIC
1449 u32 cnic_flags;
1450#define BNX2X_CNIC_FLAG_MAC_SET 1

--- 142 unchanged lines hidden (view full) ---

1593 /* priority to cos mapping */
1594 u8 prio_to_cos[8];
1595};
1596
1597/* Tx queues may be less or equal to Rx queues */
1598extern int num_queues;
1599#define BNX2X_NUM_QUEUES(bp) (bp->num_queues)
1600#define BNX2X_NUM_ETH_QUEUES(bp) (BNX2X_NUM_QUEUES(bp) - NON_ETH_CONTEXT_USE)
1469
1470 int qm_cid_count;
1471
1472 int dropless_fc;
1473
1474#ifdef BCM_CNIC
1475 u32 cnic_flags;
1476#define BNX2X_CNIC_FLAG_MAC_SET 1

--- 142 unchanged lines hidden (view full) ---

1619 /* priority to cos mapping */
1620 u8 prio_to_cos[8];
1621};
1622
1623/* Tx queues may be less or equal to Rx queues */
1624extern int num_queues;
1625#define BNX2X_NUM_QUEUES(bp) (bp->num_queues)
1626#define BNX2X_NUM_ETH_QUEUES(bp) (BNX2X_NUM_QUEUES(bp) - NON_ETH_CONTEXT_USE)
1627#define BNX2X_NUM_NON_CNIC_QUEUES(bp) (BNX2X_NUM_QUEUES(bp) - \
1628 NON_ETH_CONTEXT_USE)
1601#define BNX2X_NUM_RX_QUEUES(bp) BNX2X_NUM_QUEUES(bp)
1602
1603#define is_multi(bp) (BNX2X_NUM_QUEUES(bp) > 1)
1604
1605#define BNX2X_MAX_QUEUES(bp) BNX2X_MAX_RSS_COUNT(bp)
1606/* #define is_eth_multi(bp) (BNX2X_NUM_ETH_QUEUES(bp) > 1) */
1607
1608#define RSS_IPV4_CAP_MASK \

--- 42 unchanged lines hidden (view full) ---

1651
1652/* Skip forwarding FP */
1653#define for_each_rx_queue(bp, var) \
1654 for ((var) = 0; (var) < BNX2X_NUM_QUEUES(bp); (var)++) \
1655 if (skip_rx_queue(bp, var)) \
1656 continue; \
1657 else
1658
1629#define BNX2X_NUM_RX_QUEUES(bp) BNX2X_NUM_QUEUES(bp)
1630
1631#define is_multi(bp) (BNX2X_NUM_QUEUES(bp) > 1)
1632
1633#define BNX2X_MAX_QUEUES(bp) BNX2X_MAX_RSS_COUNT(bp)
1634/* #define is_eth_multi(bp) (BNX2X_NUM_ETH_QUEUES(bp) > 1) */
1635
1636#define RSS_IPV4_CAP_MASK \

--- 42 unchanged lines hidden (view full) ---

1679
1680/* Skip forwarding FP */
1681#define for_each_rx_queue(bp, var) \
1682 for ((var) = 0; (var) < BNX2X_NUM_QUEUES(bp); (var)++) \
1683 if (skip_rx_queue(bp, var)) \
1684 continue; \
1685 else
1686
1687#define for_each_napi_rx_queue(bp, var) \
1688 for ((var) = 0; (var) < bp->num_napi_queues; (var)++)
1689
1659/* Skip OOO FP */
1660#define for_each_tx_queue(bp, var) \
1661 for ((var) = 0; (var) < BNX2X_NUM_QUEUES(bp); (var)++) \
1662 if (skip_tx_queue(bp, var)) \
1663 continue; \
1664 else
1665
1666#define for_each_nondefault_queue(bp, var) \

--- 145 unchanged lines hidden (view full) ---

1812 */
1813#define ONCHIP_ADDR1(x) ((u32)(((u64)x >> 12) & 0xFFFFFFFF))
1814#define ONCHIP_ADDR2(x) ((u32)((1 << 20) | ((u64)x >> 44)))
1815
1816/* load/unload mode */
1817#define LOAD_NORMAL 0
1818#define LOAD_OPEN 1
1819#define LOAD_DIAG 2
1690/* Skip OOO FP */
1691#define for_each_tx_queue(bp, var) \
1692 for ((var) = 0; (var) < BNX2X_NUM_QUEUES(bp); (var)++) \
1693 if (skip_tx_queue(bp, var)) \
1694 continue; \
1695 else
1696
1697#define for_each_nondefault_queue(bp, var) \

--- 145 unchanged lines hidden (view full) ---

1843 */
1844#define ONCHIP_ADDR1(x) ((u32)(((u64)x >> 12) & 0xFFFFFFFF))
1845#define ONCHIP_ADDR2(x) ((u32)((1 << 20) | ((u64)x >> 44)))
1846
1847/* load/unload mode */
1848#define LOAD_NORMAL 0
1849#define LOAD_OPEN 1
1850#define LOAD_DIAG 2
1851#define LOAD_LOOPBACK_EXT 3
1820#define UNLOAD_NORMAL 0
1821#define UNLOAD_CLOSE 1
1822#define UNLOAD_RECOVERY 2
1823
1824
1825/* DMAE command defines */
1826#define DMAE_TIMEOUT -1
1827#define DMAE_PCI_ERROR -2 /* E2 and onward */

--- 66 unchanged lines hidden (view full) ---

1894 E1HVN_MAX)
1895
1896/* PCIE link and speed */
1897#define PCICFG_LINK_WIDTH 0x1f00000
1898#define PCICFG_LINK_WIDTH_SHIFT 20
1899#define PCICFG_LINK_SPEED 0xf0000
1900#define PCICFG_LINK_SPEED_SHIFT 16
1901
1852#define UNLOAD_NORMAL 0
1853#define UNLOAD_CLOSE 1
1854#define UNLOAD_RECOVERY 2
1855
1856
1857/* DMAE command defines */
1858#define DMAE_TIMEOUT -1
1859#define DMAE_PCI_ERROR -2 /* E2 and onward */

--- 66 unchanged lines hidden (view full) ---

1926 E1HVN_MAX)
1927
1928/* PCIE link and speed */
1929#define PCICFG_LINK_WIDTH 0x1f00000
1930#define PCICFG_LINK_WIDTH_SHIFT 20
1931#define PCICFG_LINK_SPEED 0xf0000
1932#define PCICFG_LINK_SPEED_SHIFT 16
1933
1934#define BNX2X_NUM_TESTS_SF 7
1935#define BNX2X_NUM_TESTS_MF 3
1936#define BNX2X_NUM_TESTS(bp) (IS_MF(bp) ? BNX2X_NUM_TESTS_MF : \
1937 BNX2X_NUM_TESTS_SF)
1902
1938
1903#define BNX2X_NUM_TESTS 7
1904
1905#define BNX2X_PHY_LOOPBACK 0
1906#define BNX2X_MAC_LOOPBACK 1
1939#define BNX2X_PHY_LOOPBACK 0
1940#define BNX2X_MAC_LOOPBACK 1
1941#define BNX2X_EXT_LOOPBACK 2
1907#define BNX2X_PHY_LOOPBACK_FAILED 1
1908#define BNX2X_MAC_LOOPBACK_FAILED 2
1942#define BNX2X_PHY_LOOPBACK_FAILED 1
1943#define BNX2X_MAC_LOOPBACK_FAILED 2
1944#define BNX2X_EXT_LOOPBACK_FAILED 3
1909#define BNX2X_LOOPBACK_FAILED (BNX2X_MAC_LOOPBACK_FAILED | \
1910 BNX2X_PHY_LOOPBACK_FAILED)
1911
1912
1913#define STROM_ASSERT_ARRAY_SIZE 50
1914
1915
1916/* must be used on a CID before placing it on a HW ring */

--- 240 unchanged lines hidden ---
1945#define BNX2X_LOOPBACK_FAILED (BNX2X_MAC_LOOPBACK_FAILED | \
1946 BNX2X_PHY_LOOPBACK_FAILED)
1947
1948
1949#define STROM_ASSERT_ARRAY_SIZE 50
1950
1951
1952/* must be used on a CID before placing it on a HW ring */

--- 240 unchanged lines hidden ---