hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/net/ntb_netdev.c
....@@ -71,7 +71,6 @@
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;
....@@ -80,8 +79,6 @@
8079
8180 #define NTB_TX_TIMEOUT_MS 1000
8281 #define NTB_RXQ_SIZE 100
83
-
84
-static LIST_HEAD(dev_list);
8582
8683 static void ntb_netdev_event_handler(void *data, int link_is_up)
8784 {
....@@ -140,7 +137,7 @@
140137 enqueue_again:
141138 rc = ntb_transport_rx_enqueue(qp, skb, skb->data, ndev->mtu + ETH_HLEN);
142139 if (rc) {
143
- dev_kfree_skb(skb);
140
+ dev_kfree_skb_any(skb);
144141 ndev->stats.rx_errors++;
145142 ndev->stats.rx_fifo_errors++;
146143 }
....@@ -195,7 +192,7 @@
195192 ndev->stats.tx_aborted_errors++;
196193 }
197194
198
- dev_kfree_skb(skb);
195
+ dev_kfree_skb_any(skb);
199196
200197 if (ntb_transport_tx_free_entry(dev->qp) >= tx_start) {
201198 /* Make sure anybody stopping the queue after this sees the new
....@@ -452,7 +449,7 @@
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 @@
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);
....@@ -506,7 +484,14 @@
506484 rc = ntb_transport_register_client_dev(KBUILD_MODNAME);
507485 if (rc)
508486 return rc;
509
- return ntb_transport_register_client(&ntb_netdev_client);
487
+
488
+ rc = ntb_transport_register_client(&ntb_netdev_client);
489
+ if (rc) {
490
+ ntb_transport_unregister_client_dev(KBUILD_MODNAME);
491
+ return rc;
492
+ }
493
+
494
+ return 0;
510495 }
511496 module_init(ntb_netdev_init_module);
512497