diff options
author | Michael Chan <mchan@broadcom.com> | 2009-12-02 16:15:35 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-12-03 04:57:19 +0100 |
commit | c7596b79feb3d15bea64007254f77233bda811f4 (patch) | |
tree | a427ba9f3b555e2feaae8a00441e16b34a8826b2 | |
parent | netxen: fix failure cases for fw hang recovery (diff) | |
download | linux-c7596b79feb3d15bea64007254f77233bda811f4.tar.xz linux-c7596b79feb3d15bea64007254f77233bda811f4.zip |
cnic: Fix ring I/O address for bnx2x devices.
Old code was initializing the ring producers using an incorrect I/O
address.
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: Benjamin Li <benli@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/cnic.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/net/cnic.c b/drivers/net/cnic.c index ee7eb9ee77e2..10c5cc356305 100644 --- a/drivers/net/cnic.c +++ b/drivers/net/cnic.c @@ -4131,22 +4131,20 @@ static void cnic_init_rings(struct cnic_dev *dev) cnic_init_bnx2_rx_ring(dev); } else if (test_bit(CNIC_F_BNX2X_CLASS, &dev->flags)) { struct cnic_local *cp = dev->cnic_priv; - struct cnic_eth_dev *ethdev = cp->ethdev; u32 cli = BNX2X_ISCSI_CL_ID(CNIC_E1HVN(cp)); union l5cm_specific_data l5_data; struct ustorm_eth_rx_producers rx_prods = {0}; - void __iomem *doorbell; - int i; + u32 off, i; rx_prods.bd_prod = 0; rx_prods.cqe_prod = BNX2X_MAX_RCQ_DESC_CNT; barrier(); - doorbell = ethdev->io_base2 + BAR_USTRORM_INTMEM + + off = BAR_USTRORM_INTMEM + USTORM_RX_PRODS_OFFSET(CNIC_PORT(cp), cli); for (i = 0; i < sizeof(struct ustorm_eth_rx_producers) / 4; i++) - writel(((u32 *) &rx_prods)[i], doorbell + i * 4); + CNIC_WR(dev, off + i * 4, ((u32 *) &rx_prods)[i]); cnic_init_bnx2x_tx_ring(dev); cnic_init_bnx2x_rx_ring(dev); |