mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 20:54:10 +08:00
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>
This commit is contained in:
parent
fc5d1829f9
commit
906e86b22d
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user