diff options
Diffstat (limited to 'drivers/net/wireless/ath/wil6210/netdev.c')
| -rw-r--r-- | drivers/net/wireless/ath/wil6210/netdev.c | 21 | 
1 files changed, 15 insertions, 6 deletions
| diff --git a/drivers/net/wireless/ath/wil6210/netdev.c b/drivers/net/wireless/ath/wil6210/netdev.c index ee7d7e9c2718..d5d364683c0e 100644 --- a/drivers/net/wireless/ath/wil6210/netdev.c +++ b/drivers/net/wireless/ath/wil6210/netdev.c @@ -453,16 +453,21 @@ int wil_if_add(struct wil6210_priv *wil)  		return rc;  	} -	init_dummy_netdev(&wil->napi_ndev); +	wil->napi_ndev = alloc_netdev_dummy(0); +	if (!wil->napi_ndev) { +		wil_err(wil, "failed to allocate dummy netdev"); +		rc = -ENOMEM; +		goto out_wiphy; +	}  	if (wil->use_enhanced_dma_hw) { -		netif_napi_add(&wil->napi_ndev, &wil->napi_rx, +		netif_napi_add(wil->napi_ndev, &wil->napi_rx,  			       wil6210_netdev_poll_rx_edma); -		netif_napi_add_tx(&wil->napi_ndev, +		netif_napi_add_tx(wil->napi_ndev,  				  &wil->napi_tx, wil6210_netdev_poll_tx_edma);  	} else { -		netif_napi_add(&wil->napi_ndev, &wil->napi_rx, +		netif_napi_add(wil->napi_ndev, &wil->napi_rx,  			       wil6210_netdev_poll_rx); -		netif_napi_add_tx(&wil->napi_ndev, +		netif_napi_add_tx(wil->napi_ndev,  				  &wil->napi_tx, wil6210_netdev_poll_tx);  	} @@ -474,10 +479,12 @@ int wil_if_add(struct wil6210_priv *wil)  	wiphy_unlock(wiphy);  	rtnl_unlock();  	if (rc < 0) -		goto out_wiphy; +		goto free_dummy;  	return 0; +free_dummy: +	free_netdev(wil->napi_ndev);  out_wiphy:  	wiphy_unregister(wiphy);  	return rc; @@ -554,5 +561,7 @@ void wil_if_remove(struct wil6210_priv *wil)  	netif_napi_del(&wil->napi_tx);  	netif_napi_del(&wil->napi_rx); +	free_netdev(wil->napi_ndev); +  	wiphy_unregister(wiphy);  } |