aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorPadmanabh Ratnakar <padmanabh.ratnakar@emulex.com>2011-11-15 21:02:23 -0500
committerDavid S. Miller <davem@davemloft.net>2011-11-16 18:07:09 -0500
commit293c4a7d9b95d0beeb5df03c14bd35bc21f9e6f2 (patch)
treee19cf91704d70562bf0471e4deda270b2f6afae3 /drivers
parent9ca36f7db29a1e4bde58fa7cf98b542c032b7180 (diff)
be2net: Fix TX queue create for Lancer
Lancer uses V1 version of TXQ create. This command needs interface id for TX queue creation. Rearrange code such that tx queue create is after interface create. As TXQ create is now called after MCC ring create use MCC instead of MBOX. Signed-off-by: Padmanabh Ratnakar <padmanabh.ratnakar@emulex.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/ethernet/emulex/benet/be_cmds.c15
-rw-r--r--drivers/net/ethernet/emulex/benet/be_main.c12
2 files changed, 18 insertions, 9 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c
index ad3eef0beea0..d35a214a2766 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.c
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.c
@@ -916,10 +916,14 @@ int be_cmd_txq_create(struct be_adapter *adapter,
916 void *ctxt; 916 void *ctxt;
917 int status; 917 int status;
918 918
919 if (mutex_lock_interruptible(&adapter->mbox_lock)) 919 spin_lock_bh(&adapter->mcc_lock);
920 return -1; 920
921 wrb = wrb_from_mccq(adapter);
922 if (!wrb) {
923 status = -EBUSY;
924 goto err;
925 }
921 926
922 wrb = wrb_from_mbox(adapter);
923 req = embedded_payload(wrb); 927 req = embedded_payload(wrb);
924 ctxt = &req->context; 928 ctxt = &req->context;
925 929
@@ -945,14 +949,15 @@ int be_cmd_txq_create(struct be_adapter *adapter,
945 949
946 be_cmd_page_addrs_prepare(req->pages, ARRAY_SIZE(req->pages), q_mem); 950 be_cmd_page_addrs_prepare(req->pages, ARRAY_SIZE(req->pages), q_mem);
947 951
948 status = be_mbox_notify_wait(adapter); 952 status = be_mcc_notify_wait(adapter);
949 if (!status) { 953 if (!status) {
950 struct be_cmd_resp_eth_tx_create *resp = embedded_payload(wrb); 954 struct be_cmd_resp_eth_tx_create *resp = embedded_payload(wrb);
951 txq->id = le16_to_cpu(resp->cid); 955 txq->id = le16_to_cpu(resp->cid);
952 txq->created = true; 956 txq->created = true;
953 } 957 }
954 958
955 mutex_unlock(&adapter->mbox_lock); 959err:
960 spin_unlock_bh(&adapter->mcc_lock);
956 961
957 return status; 962 return status;
958} 963}
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index ce20d64d1f95..c982b5151548 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -1689,9 +1689,6 @@ static int be_tx_queues_create(struct be_adapter *adapter)
1689 if (be_queue_alloc(adapter, q, TX_Q_LEN, 1689 if (be_queue_alloc(adapter, q, TX_Q_LEN,
1690 sizeof(struct be_eth_wrb))) 1690 sizeof(struct be_eth_wrb)))
1691 goto err; 1691 goto err;
1692
1693 if (be_cmd_txq_create(adapter, q, cq))
1694 goto err;
1695 } 1692 }
1696 return 0; 1693 return 0;
1697 1694
@@ -2572,8 +2569,9 @@ static int be_setup(struct be_adapter *adapter)
2572 struct net_device *netdev = adapter->netdev; 2569 struct net_device *netdev = adapter->netdev;
2573 u32 cap_flags, en_flags; 2570 u32 cap_flags, en_flags;
2574 u32 tx_fc, rx_fc; 2571 u32 tx_fc, rx_fc;
2575 int status; 2572 int status, i;
2576 u8 mac[ETH_ALEN]; 2573 u8 mac[ETH_ALEN];
2574 struct be_tx_obj *txo;
2577 2575
2578 be_setup_init(adapter); 2576 be_setup_init(adapter);
2579 2577
@@ -2613,6 +2611,12 @@ static int be_setup(struct be_adapter *adapter)
2613 if (status != 0) 2611 if (status != 0)
2614 goto err; 2612 goto err;
2615 2613
2614 for_all_tx_queues(adapter, txo, i) {
2615 status = be_cmd_txq_create(adapter, &txo->q, &txo->cq);
2616 if (status)
2617 goto err;
2618 }
2619
2616 /* For BEx, the VF's permanent mac queried from card is incorrect. 2620 /* For BEx, the VF's permanent mac queried from card is incorrect.
2617 * Query the mac configued by the PF using if_handle 2621 * Query the mac configued by the PF using if_handle
2618 */ 2622 */