Message ID | 1521798910-31957-1-git-send-email-ganeshgr@chelsio.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | [net-next] cxgb4: Setup FW queues before registering netdev | expand |
From: Ganesh Goudar <ganeshgr@chelsio.com> Date: Fri, 23 Mar 2018 15:25:10 +0530 > From: Arjun Vynipadath <arjun@chelsio.com> > > When NetworkManager is enabled, there are chances that interface up > is called even before probe completes. This means we have not yet > allocated the FW sge queues, hence rest of ingress queue allocation > wont be proper. Fix this by calling setup_fw_sge_queues() before > register_netdev(). > > Fixes: 0fbc81b3ad51 ('chcr/cxgb4i/cxgbit/RDMA/cxgb4: Allocate resources dynamically for all cxgb4 ULD's') > Signed-off-by: Arjun Vynipadath <arjun@chelsio.com> > Signed-off-by: Casey Leedom <leedom@chelsio.com> > Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com> Applied, thank you.
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c index c4e0e47..8f733ee 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c @@ -841,8 +841,6 @@ static int setup_fw_sge_queues(struct adapter *adap) err = t4_sge_alloc_rxq(adap, &s->fw_evtq, true, adap->port[0], adap->msi_idx, NULL, fwevtq_handler, NULL, -1); - if (err) - t4_free_sge_resources(adap); return err; } @@ -5750,6 +5748,13 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent) if (err) goto out_free_dev; + err = setup_fw_sge_queues(adapter); + if (err) { + dev_err(adapter->pdev_dev, + "FW sge queue allocation failed, err %d", err); + goto out_free_dev; + } + /* * The card is now ready to go. If any errors occur during device * registration we do not fail the whole card but rather proceed only @@ -5798,10 +5803,10 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent) cxgb4_ptp_init(adapter); print_adapter_info(adapter); - setup_fw_sge_queues(adapter); return 0; out_free_dev: + t4_free_sge_resources(adapter); free_some_resources(adapter); if (adapter->flags & USING_MSIX) free_msix_info(adapter);