aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/broadcom/cnic.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/broadcom/cnic.c')
-rw-r--r--drivers/net/ethernet/broadcom/cnic.c19
1 files changed, 19 insertions, 0 deletions
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);