aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/cnic.c
diff options
context:
space:
mode:
authorMichael Chan <mchan@broadcom.com>2010-12-23 02:42:59 -0500
committerDavid S. Miller <davem@davemloft.net>2010-12-23 14:44:30 -0500
commit5159fdc1e6cb4000f482faebeeba0be91611276d (patch)
tree7d4c0258320231a4eab9b349df1eb146ce7277a4 /drivers/net/cnic.c
parent939b82e5bde56a98c72eccde2e3a88d32bffad4a (diff)
cnic: Use proper client and connection IDs on iSCSI ring
Use the IDs specified by the bnx2x driver when initializing the ring. We don't have to make code changes when these IDs change in the future. 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.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/drivers/net/cnic.c b/drivers/net/cnic.c
index 9f80fb40380a..9bd133d3a5aa 100644
--- a/drivers/net/cnic.c
+++ b/drivers/net/cnic.c
@@ -4119,7 +4119,7 @@ static void cnic_init_bnx2x_tx_ring(struct cnic_dev *dev,
4119 struct host_sp_status_block *sb = cp->bnx2x_def_status_blk; 4119 struct host_sp_status_block *sb = cp->bnx2x_def_status_blk;
4120 int port = CNIC_PORT(cp); 4120 int port = CNIC_PORT(cp);
4121 int i; 4121 int i;
4122 int cli = BNX2X_ISCSI_CL_ID(CNIC_E1HVN(cp)); 4122 u32 cli = cp->ethdev->iscsi_l2_client_id;
4123 u32 val; 4123 u32 val;
4124 4124
4125 memset(txbd, 0, BCM_PAGE_SIZE); 4125 memset(txbd, 0, BCM_PAGE_SIZE);
@@ -4180,7 +4180,7 @@ static void cnic_init_bnx2x_rx_ring(struct cnic_dev *dev,
4180 struct host_sp_status_block *sb = cp->bnx2x_def_status_blk; 4180 struct host_sp_status_block *sb = cp->bnx2x_def_status_blk;
4181 int i; 4181 int i;
4182 int port = CNIC_PORT(cp); 4182 int port = CNIC_PORT(cp);
4183 int cli = BNX2X_ISCSI_CL_ID(CNIC_E1HVN(cp)); 4183 u32 cli = cp->ethdev->iscsi_l2_client_id;
4184 int cl_qzone_id = BNX2X_CL_QZONE_ID(cp, cli); 4184 int cl_qzone_id = BNX2X_CL_QZONE_ID(cp, cli);
4185 u32 val; 4185 u32 val;
4186 dma_addr_t ring_map = udev->l2_ring_map; 4186 dma_addr_t ring_map = udev->l2_ring_map;
@@ -4244,6 +4244,7 @@ static void cnic_init_bnx2x_rx_ring(struct cnic_dev *dev,
4244 4244
4245 cp->rx_cons_ptr = 4245 cp->rx_cons_ptr =
4246 &sb->sp_sb.index_values[HC_SP_INDEX_ETH_ISCSI_RX_CQ_CONS]; 4246 &sb->sp_sb.index_values[HC_SP_INDEX_ETH_ISCSI_RX_CQ_CONS];
4247 cp->rx_cons = *cp->rx_cons_ptr;
4247} 4248}
4248 4249
4249static void cnic_get_bnx2x_iscsi_info(struct cnic_dev *dev) 4250static void cnic_get_bnx2x_iscsi_info(struct cnic_dev *dev)
@@ -4437,7 +4438,8 @@ static void cnic_init_rings(struct cnic_dev *dev)
4437 cnic_init_bnx2_rx_ring(dev); 4438 cnic_init_bnx2_rx_ring(dev);
4438 set_bit(CNIC_LCL_FL_RINGS_INITED, &cp->cnic_local_flags); 4439 set_bit(CNIC_LCL_FL_RINGS_INITED, &cp->cnic_local_flags);
4439 } else if (test_bit(CNIC_F_BNX2X_CLASS, &dev->flags)) { 4440 } else if (test_bit(CNIC_F_BNX2X_CLASS, &dev->flags)) {
4440 u32 cli = BNX2X_ISCSI_CL_ID(CNIC_E1HVN(cp)); 4441 u32 cli = cp->ethdev->iscsi_l2_client_id;
4442 u32 cid = cp->ethdev->iscsi_l2_cid;
4441 u32 cl_qzone_id, type; 4443 u32 cl_qzone_id, type;
4442 struct client_init_ramrod_data *data; 4444 struct client_init_ramrod_data *data;
4443 union l5cm_specific_data l5_data; 4445 union l5cm_specific_data l5_data;
@@ -4478,7 +4480,7 @@ static void cnic_init_rings(struct cnic_dev *dev)
4478 set_bit(CNIC_LCL_FL_RINGS_INITED, &cp->cnic_local_flags); 4480 set_bit(CNIC_LCL_FL_RINGS_INITED, &cp->cnic_local_flags);
4479 4481
4480 cnic_submit_kwqe_16(dev, RAMROD_CMD_ID_ETH_CLIENT_SETUP, 4482 cnic_submit_kwqe_16(dev, RAMROD_CMD_ID_ETH_CLIENT_SETUP,
4481 BNX2X_ISCSI_L2_CID, type, &l5_data); 4483 cid, type, &l5_data);
4482 4484
4483 i = 0; 4485 i = 0;
4484 while (test_bit(CNIC_LCL_FL_L2_WAIT, &cp->cnic_local_flags) && 4486 while (test_bit(CNIC_LCL_FL_L2_WAIT, &cp->cnic_local_flags) &&
@@ -4489,7 +4491,7 @@ static void cnic_init_rings(struct cnic_dev *dev)
4489 netdev_err(dev->netdev, 4491 netdev_err(dev->netdev,
4490 "iSCSI CLIENT_SETUP did not complete\n"); 4492 "iSCSI CLIENT_SETUP did not complete\n");
4491 cnic_spq_completion(dev, DRV_CTL_RET_L2_SPQ_CREDIT_CMD, 1); 4493 cnic_spq_completion(dev, DRV_CTL_RET_L2_SPQ_CREDIT_CMD, 1);
4492 cnic_ring_ctl(dev, BNX2X_ISCSI_L2_CID, cli, 1); 4494 cnic_ring_ctl(dev, cid, cli, 1);
4493 } 4495 }
4494} 4496}
4495 4497
@@ -4504,19 +4506,20 @@ static void cnic_shutdown_rings(struct cnic_dev *dev)
4504 cnic_shutdown_bnx2_rx_ring(dev); 4506 cnic_shutdown_bnx2_rx_ring(dev);
4505 } else if (test_bit(CNIC_F_BNX2X_CLASS, &dev->flags)) { 4507 } else if (test_bit(CNIC_F_BNX2X_CLASS, &dev->flags)) {
4506 struct cnic_local *cp = dev->cnic_priv; 4508 struct cnic_local *cp = dev->cnic_priv;
4507 u32 cli = BNX2X_ISCSI_CL_ID(CNIC_E1HVN(cp)); 4509 u32 cli = cp->ethdev->iscsi_l2_client_id;
4510 u32 cid = cp->ethdev->iscsi_l2_cid;
4508 union l5cm_specific_data l5_data; 4511 union l5cm_specific_data l5_data;
4509 int i; 4512 int i;
4510 u32 type; 4513 u32 type;
4511 4514
4512 cnic_ring_ctl(dev, BNX2X_ISCSI_L2_CID, cli, 0); 4515 cnic_ring_ctl(dev, cid, cli, 0);
4513 4516
4514 set_bit(CNIC_LCL_FL_L2_WAIT, &cp->cnic_local_flags); 4517 set_bit(CNIC_LCL_FL_L2_WAIT, &cp->cnic_local_flags);
4515 4518
4516 l5_data.phy_address.lo = cli; 4519 l5_data.phy_address.lo = cli;
4517 l5_data.phy_address.hi = 0; 4520 l5_data.phy_address.hi = 0;
4518 cnic_submit_kwqe_16(dev, RAMROD_CMD_ID_ETH_HALT, 4521 cnic_submit_kwqe_16(dev, RAMROD_CMD_ID_ETH_HALT,
4519 BNX2X_ISCSI_L2_CID, ETH_CONNECTION_TYPE, &l5_data); 4522 cid, ETH_CONNECTION_TYPE, &l5_data);
4520 i = 0; 4523 i = 0;
4521 while (test_bit(CNIC_LCL_FL_L2_WAIT, &cp->cnic_local_flags) && 4524 while (test_bit(CNIC_LCL_FL_L2_WAIT, &cp->cnic_local_flags) &&
4522 ++i < 10) 4525 ++i < 10)
@@ -4533,7 +4536,7 @@ static void cnic_shutdown_rings(struct cnic_dev *dev)
4533 type |= ((cp->pfid << SPE_HDR_FUNCTION_ID_SHIFT) & 4536 type |= ((cp->pfid << SPE_HDR_FUNCTION_ID_SHIFT) &
4534 SPE_HDR_FUNCTION_ID); 4537 SPE_HDR_FUNCTION_ID);
4535 cnic_submit_kwqe_16(dev, RAMROD_CMD_ID_COMMON_CFC_DEL, 4538 cnic_submit_kwqe_16(dev, RAMROD_CMD_ID_COMMON_CFC_DEL,
4536 BNX2X_ISCSI_L2_CID, type, &l5_data); 4539 cid, type, &l5_data);
4537 msleep(10); 4540 msleep(10);
4538 } 4541 }
4539 clear_bit(CNIC_LCL_FL_RINGS_INITED, &cp->cnic_local_flags); 4542 clear_bit(CNIC_LCL_FL_RINGS_INITED, &cp->cnic_local_flags);