Skip to content

Commit 906e86b

Browse files
Aaron Sierrajonmason
authored andcommitted
ntb_netdev: Simplify remove with client device drvdata
Replace the elaborate private structure global linked-list used in ntb_netdev_probe() and ntb_netdev_remove() by stashing our private data in the NTB transport client device. Signed-off-by: Aaron Sierra <asierra@xes-inc.com> Reviewed-by: Logan Gunthorpe <logang@deltatee.com> Signed-off-by: Jon Mason <jdmason@kudzu.us>
1 parent fc5d182 commit 906e86b

File tree

1 file changed

+3
-25
lines changed

1 file changed

+3
-25
lines changed

drivers/net/ntb_netdev.c

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ static unsigned int tx_start = 10;
7171
static unsigned int tx_stop = 5;
7272

7373
struct ntb_netdev {
74-
struct list_head list;
7574
struct pci_dev *pdev;
7675
struct net_device *ndev;
7776
struct ntb_transport_qp *qp;
@@ -81,8 +80,6 @@ struct ntb_netdev {
8180
#define NTB_TX_TIMEOUT_MS 1000
8281
#define NTB_RXQ_SIZE 100
8382

84-
static LIST_HEAD(dev_list);
85-
8683
static void ntb_netdev_event_handler(void *data, int link_is_up)
8784
{
8885
struct net_device *ndev = data;
@@ -452,7 +449,7 @@ static int ntb_netdev_probe(struct device *client_dev)
452449
if (rc)
453450
goto err1;
454451

455-
list_add(&dev->list, &dev_list);
452+
dev_set_drvdata(client_dev, ndev);
456453
dev_info(&pdev->dev, "%s created\n", ndev->name);
457454
return 0;
458455

@@ -465,27 +462,8 @@ static int ntb_netdev_probe(struct device *client_dev)
465462

466463
static void ntb_netdev_remove(struct device *client_dev)
467464
{
468-
struct ntb_dev *ntb;
469-
struct net_device *ndev;
470-
struct pci_dev *pdev;
471-
struct ntb_netdev *dev;
472-
bool found = false;
473-
474-
ntb = dev_ntb(client_dev->parent);
475-
pdev = ntb->pdev;
476-
477-
list_for_each_entry(dev, &dev_list, list) {
478-
if (dev->pdev == pdev) {
479-
found = true;
480-
break;
481-
}
482-
}
483-
if (!found)
484-
return;
485-
486-
list_del(&dev->list);
487-
488-
ndev = dev->ndev;
465+
struct net_device *ndev = dev_get_drvdata(client_dev);
466+
struct ntb_netdev *dev = netdev_priv(ndev);
489467

490468
unregister_netdev(ndev);
491469
ntb_transport_free_queue(dev->qp);

0 commit comments

Comments
 (0)