aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_fw_defs.h5
-rw-r--r--drivers/net/ethernet/broadcom/cnic.c19
2 files changed, 24 insertions, 0 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_fw_defs.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_fw_defs.h
index 620fe939ecfd..60a83ad10370 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_fw_defs.h
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_fw_defs.h
@@ -23,6 +23,11 @@
23 (IRO[159].base + ((funcId) * IRO[159].m1)) 23 (IRO[159].base + ((funcId) * IRO[159].m1))
24#define CSTORM_FUNC_EN_OFFSET(funcId) \ 24#define CSTORM_FUNC_EN_OFFSET(funcId) \
25 (IRO[149].base + ((funcId) * IRO[149].m1)) 25 (IRO[149].base + ((funcId) * IRO[149].m1))
26#define CSTORM_HC_SYNC_LINE_INDEX_E1X_OFFSET(hcIndex, sbId) \
27 (IRO[139].base + ((hcIndex) * IRO[139].m1) + ((sbId) * IRO[139].m2))
28#define CSTORM_HC_SYNC_LINE_INDEX_E2_OFFSET(hcIndex, sbId) \
29 (IRO[138].base + (((hcIndex)>>2) * IRO[138].m1) + (((hcIndex)&3) \
30 * IRO[138].m2) + ((sbId) * IRO[138].m3))
26#define CSTORM_IGU_MODE_OFFSET (IRO[157].base) 31#define CSTORM_IGU_MODE_OFFSET (IRO[157].base)
27#define CSTORM_ISCSI_CQ_SIZE_OFFSET(pfId) \ 32#define CSTORM_ISCSI_CQ_SIZE_OFFSET(pfId) \
28 (IRO[316].base + ((pfId) * IRO[316].m1)) 33 (IRO[316].base + ((pfId) * IRO[316].m1))
diff --git a/drivers/net/ethernet/broadcom/cnic.c b/drivers/net/ethernet/broadcom/cnic.c
index 3b825f422090..5437e2aa97b5 100644
--- a/drivers/net/ethernet/broadcom/cnic.c
+++ b/drivers/net/ethernet/broadcom/cnic.c
@@ -5344,8 +5344,27 @@ static void cnic_stop_bnx2_hw(struct cnic_dev *dev)
5344static void cnic_stop_bnx2x_hw(struct cnic_dev *dev) 5344static void cnic_stop_bnx2x_hw(struct cnic_dev *dev)
5345{ 5345{
5346 struct cnic_local *cp = dev->cnic_priv; 5346 struct cnic_local *cp = dev->cnic_priv;
5347 u32 hc_index = HC_INDEX_ISCSI_EQ_CONS;
5348 u32 sb_id = cp->status_blk_num;
5349 u32 idx_off, syn_off;
5347 5350
5348 cnic_free_irq(dev); 5351 cnic_free_irq(dev);
5352
5353 if (BNX2X_CHIP_IS_E2_PLUS(cp->chip_id)) {
5354 idx_off = offsetof(struct hc_status_block_e2, index_values) +
5355 (hc_index * sizeof(u16));
5356
5357 syn_off = CSTORM_HC_SYNC_LINE_INDEX_E2_OFFSET(hc_index, sb_id);
5358 } else {
5359 idx_off = offsetof(struct hc_status_block_e1x, index_values) +
5360 (hc_index * sizeof(u16));
5361
5362 syn_off = CSTORM_HC_SYNC_LINE_INDEX_E1X_OFFSET(hc_index, sb_id);
5363 }
5364 CNIC_WR16(dev, BAR_CSTRORM_INTMEM + syn_off, 0);
5365 CNIC_WR16(dev, BAR_CSTRORM_INTMEM + CSTORM_STATUS_BLOCK_OFFSET(sb_id) +
5366 idx_off, 0);
5367
5349 *cp->kcq1.hw_prod_idx_ptr = 0; 5368 *cp->kcq1.hw_prod_idx_ptr = 0;
5350 CNIC_WR(dev, BAR_CSTRORM_INTMEM + 5369 CNIC_WR(dev, BAR_CSTRORM_INTMEM +
5351 CSTORM_ISCSI_EQ_CONS_OFFSET(cp->pfid, 0), 0); 5370 CSTORM_ISCSI_EQ_CONS_OFFSET(cp->pfid, 0), 0);