|
@@ -71,7 +71,6 @@ static unsigned int tx_start = 10;
|
|
|
static unsigned int tx_stop = 5;
|
|
|
|
|
|
struct ntb_netdev {
|
|
|
- struct list_head list;
|
|
|
struct pci_dev *pdev;
|
|
|
struct net_device *ndev;
|
|
|
struct ntb_transport_qp *qp;
|
|
@@ -81,8 +80,6 @@ struct ntb_netdev {
|
|
|
#define NTB_TX_TIMEOUT_MS 1000
|
|
|
#define NTB_RXQ_SIZE 100
|
|
|
|
|
|
-static LIST_HEAD(dev_list);
|
|
|
-
|
|
|
static void ntb_netdev_event_handler(void *data, int link_is_up)
|
|
|
{
|
|
|
struct net_device *ndev = data;
|
|
@@ -452,7 +449,7 @@ static int ntb_netdev_probe(struct device *client_dev)
|
|
|
if (rc)
|
|
|
goto err1;
|
|
|
|
|
|
- list_add(&dev->list, &dev_list);
|
|
|
+ dev_set_drvdata(client_dev, ndev);
|
|
|
dev_info(&pdev->dev, "%s created\n", ndev->name);
|
|
|
return 0;
|
|
|
|
|
@@ -465,27 +462,8 @@ err:
|
|
|
|
|
|
static void ntb_netdev_remove(struct device *client_dev)
|
|
|
{
|
|
|
- struct ntb_dev *ntb;
|
|
|
- struct net_device *ndev;
|
|
|
- struct pci_dev *pdev;
|
|
|
- struct ntb_netdev *dev;
|
|
|
- bool found = false;
|
|
|
-
|
|
|
- ntb = dev_ntb(client_dev->parent);
|
|
|
- pdev = ntb->pdev;
|
|
|
-
|
|
|
- list_for_each_entry(dev, &dev_list, list) {
|
|
|
- if (dev->pdev == pdev) {
|
|
|
- found = true;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (!found)
|
|
|
- return;
|
|
|
-
|
|
|
- list_del(&dev->list);
|
|
|
-
|
|
|
- ndev = dev->ndev;
|
|
|
+ struct net_device *ndev = dev_get_drvdata(client_dev);
|
|
|
+ struct ntb_netdev *dev = netdev_priv(ndev);
|
|
|
|
|
|
unregister_netdev(ndev);
|
|
|
ntb_transport_free_queue(dev->qp);
|