summaryrefslogtreecommitdiff
path: root/drivers/net/cnic.c
diff options
context:
space:
mode:
authorMichael Chan <mchan@broadcom.com>2009-12-10 18:40:58 +0300
committerDavid S. Miller <davem@davemloft.net>2009-12-12 02:07:55 +0300
commit4e9c4fd3e7e022c7a5b8bb7cd06bf914b202cfea (patch)
tree73b54f1aafb6a6da9e6cbb3483105d578bd55a81 /drivers/net/cnic.c
parent1bcdc32cf4d94442eba79599ce8438ea0b8f78b5 (diff)
downloadlinux-4e9c4fd3e7e022c7a5b8bb7cd06bf914b202cfea.tar.xz
cnic: Zero out status block and Event Queue indices.
To prevent stale indices from causing spurious events when restarting the bnx2x devices. Signed-off-by: Michael Chan <mchan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/cnic.c')
-rw-r--r--drivers/net/cnic.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/cnic.c b/drivers/net/cnic.c
index a2c33289326a..4332b3a2fafb 100644
--- a/drivers/net/cnic.c
+++ b/drivers/net/cnic.c
@@ -1104,6 +1104,8 @@ static int cnic_alloc_bnx2x_resc(struct cnic_dev *dev)
cp->bnx2x_status_blk = cp->status_blk;
cp->bnx2x_def_status_blk = cp->ethdev->irq_arr[1].status_blk;
+ memset(cp->bnx2x_status_blk, 0, sizeof(struct host_status_block));
+
cp->l2_rx_ring_size = 15;
ret = cnic_alloc_l2_rings(dev, 4);
@@ -4295,6 +4297,9 @@ static void cnic_stop_bnx2x_hw(struct cnic_dev *dev)
offsetof(struct cstorm_status_block_c,
index_values[HC_INDEX_C_ISCSI_EQ_CONS]),
0);
+ CNIC_WR(dev, BAR_CSTRORM_INTMEM +
+ CSTORM_ISCSI_EQ_CONS_OFFSET(cp->func, 0), 0);
+ CNIC_WR16(dev, cp->kcq_io_addr, 0);
cnic_free_resc(dev);
}