diff options
Diffstat (limited to 'drivers/net/ethernet/broadcom/bnx2x/bnx2x.h')
| -rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x.h | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h index 0c338026ce01..97b3d32a98bd 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h | |||
| @@ -246,8 +246,37 @@ enum { | |||
| 246 | BNX2X_MAX_CNIC_ETH_CL_ID_IDX, | 246 | BNX2X_MAX_CNIC_ETH_CL_ID_IDX, |
| 247 | }; | 247 | }; |
| 248 | 248 | ||
| 249 | #define BNX2X_CNIC_START_ETH_CID(bp) (BNX2X_NUM_NON_CNIC_QUEUES(bp) *\ | 249 | /* use a value high enough to be above all the PFs, which has least significant |
| 250 | * nibble as 8, so when cnic needs to come up with a CID for UIO to use to | ||
| 251 | * calculate doorbell address according to old doorbell configuration scheme | ||
| 252 | * (db_msg_sz 1 << 7 * cid + 0x40 DPM offset) it can come up with a valid number | ||
| 253 | * We must avoid coming up with cid 8 for iscsi since according to this method | ||
| 254 | * the designated UIO cid will come out 0 and it has a special handling for that | ||
| 255 | * case which doesn't suit us. Therefore will will cieling to closes cid which | ||
| 256 | * has least signigifcant nibble 8 and if it is 8 we will move forward to 0x18. | ||
| 257 | */ | ||
| 258 | |||
| 259 | #define BNX2X_1st_NON_L2_ETH_CID(bp) (BNX2X_NUM_NON_CNIC_QUEUES(bp) * \ | ||
| 250 | (bp)->max_cos) | 260 | (bp)->max_cos) |
| 261 | /* amount of cids traversed by UIO's DPM addition to doorbell */ | ||
| 262 | #define UIO_DPM 8 | ||
| 263 | /* roundup to DPM offset */ | ||
| 264 | #define UIO_ROUNDUP(bp) (roundup(BNX2X_1st_NON_L2_ETH_CID(bp), \ | ||
| 265 | UIO_DPM)) | ||
| 266 | /* offset to nearest value which has lsb nibble matching DPM */ | ||
| 267 | #define UIO_CID_OFFSET(bp) ((UIO_ROUNDUP(bp) + UIO_DPM) % \ | ||
| 268 | (UIO_DPM * 2)) | ||
| 269 | /* add offset to rounded-up cid to get a value which could be used with UIO */ | ||
| 270 | #define UIO_DPM_ALIGN(bp) (UIO_ROUNDUP(bp) + UIO_CID_OFFSET(bp)) | ||
| 271 | /* but wait - avoid UIO special case for cid 0 */ | ||
| 272 | #define UIO_DPM_CID0_OFFSET(bp) ((UIO_DPM * 2) * \ | ||
| 273 | (UIO_DPM_ALIGN(bp) == UIO_DPM)) | ||
| 274 | /* Properly DPM aligned CID dajusted to cid 0 secal case */ | ||
| 275 | #define BNX2X_CNIC_START_ETH_CID(bp) (UIO_DPM_ALIGN(bp) + \ | ||
| 276 | (UIO_DPM_CID0_OFFSET(bp))) | ||
| 277 | /* how many cids were wasted - need this value for cid allocation */ | ||
| 278 | #define UIO_CID_PAD(bp) (BNX2X_CNIC_START_ETH_CID(bp) - \ | ||
| 279 | BNX2X_1st_NON_L2_ETH_CID(bp)) | ||
| 251 | /* iSCSI L2 */ | 280 | /* iSCSI L2 */ |
| 252 | #define BNX2X_ISCSI_ETH_CID(bp) (BNX2X_CNIC_START_ETH_CID(bp)) | 281 | #define BNX2X_ISCSI_ETH_CID(bp) (BNX2X_CNIC_START_ETH_CID(bp)) |
| 253 | /* FCoE L2 */ | 282 | /* FCoE L2 */ |
| @@ -1542,7 +1571,6 @@ struct bnx2x { | |||
| 1542 | */ | 1571 | */ |
| 1543 | bool fcoe_init; | 1572 | bool fcoe_init; |
| 1544 | 1573 | ||
| 1545 | int pm_cap; | ||
| 1546 | int mrrs; | 1574 | int mrrs; |
| 1547 | 1575 | ||
| 1548 | struct delayed_work sp_task; | 1576 | struct delayed_work sp_task; |
| @@ -1681,10 +1709,11 @@ struct bnx2x { | |||
| 1681 | * Maximum CID count that might be required by the bnx2x: | 1709 | * Maximum CID count that might be required by the bnx2x: |
| 1682 | * Max RSS * Max_Tx_Multi_Cos + FCoE + iSCSI | 1710 | * Max RSS * Max_Tx_Multi_Cos + FCoE + iSCSI |
| 1683 | */ | 1711 | */ |
| 1712 | |||
| 1684 | #define BNX2X_L2_CID_COUNT(bp) (BNX2X_NUM_ETH_QUEUES(bp) * BNX2X_MULTI_TX_COS \ | 1713 | #define BNX2X_L2_CID_COUNT(bp) (BNX2X_NUM_ETH_QUEUES(bp) * BNX2X_MULTI_TX_COS \ |
| 1685 | + 2 * CNIC_SUPPORT(bp)) | 1714 | + CNIC_SUPPORT(bp) * (2 + UIO_CID_PAD(bp))) |
| 1686 | #define BNX2X_L2_MAX_CID(bp) (BNX2X_MAX_RSS_COUNT(bp) * BNX2X_MULTI_TX_COS \ | 1715 | #define BNX2X_L2_MAX_CID(bp) (BNX2X_MAX_RSS_COUNT(bp) * BNX2X_MULTI_TX_COS \ |
| 1687 | + 2 * CNIC_SUPPORT(bp)) | 1716 | + CNIC_SUPPORT(bp) * (2 + UIO_CID_PAD(bp))) |
| 1688 | #define L2_ILT_LINES(bp) (DIV_ROUND_UP(BNX2X_L2_CID_COUNT(bp),\ | 1717 | #define L2_ILT_LINES(bp) (DIV_ROUND_UP(BNX2X_L2_CID_COUNT(bp),\ |
| 1689 | ILT_PAGE_CIDS)) | 1718 | ILT_PAGE_CIDS)) |
| 1690 | 1719 | ||
