diff options
Diffstat (limited to 'drivers/net/wireless/intel/iwlegacy/3945-mac.c')
| -rw-r--r-- | drivers/net/wireless/intel/iwlegacy/3945-mac.c | 23 | 
1 files changed, 13 insertions, 10 deletions
diff --git a/drivers/net/wireless/intel/iwlegacy/3945-mac.c b/drivers/net/wireless/intel/iwlegacy/3945-mac.c index 7352d5b2095f..9eaf5ec133f9 100644 --- a/drivers/net/wireless/intel/iwlegacy/3945-mac.c +++ b/drivers/net/wireless/intel/iwlegacy/3945-mac.c @@ -1202,8 +1202,6 @@ il3945_rx_handle(struct il_priv *il)  		D_RX("r = %d, i = %d\n", r, i);  	while (i != r) { -		int len; -  		rxb = rxq->queue[i];  		/* If an RXB doesn't have a Rx queue slot associated with it, @@ -1217,10 +1215,6 @@ il3945_rx_handle(struct il_priv *il)  			       PAGE_SIZE << il->hw_params.rx_page_order,  			       DMA_FROM_DEVICE);  		pkt = rxb_addr(rxb); - -		len = le32_to_cpu(pkt->len_n_flags) & IL_RX_FRAME_SIZE_MSK; -		len += sizeof(u32);	/* account for status word */ -  		reclaim = il_need_reclaim(il, pkt);  		/* Based on type of command response or notification, @@ -3378,10 +3372,12 @@ static DEVICE_ATTR(dump_errors, 0200, NULL, il3945_dump_error_log);   *   *****************************************************************************/ -static void +static int  il3945_setup_deferred_work(struct il_priv *il)  {  	il->workqueue = create_singlethread_workqueue(DRV_NAME); +	if (!il->workqueue) +		return -ENOMEM;  	init_waitqueue_head(&il->wait_command_queue); @@ -3398,6 +3394,8 @@ il3945_setup_deferred_work(struct il_priv *il)  	timer_setup(&il->watchdog, il_bg_watchdog, 0);  	tasklet_setup(&il->irq_tasklet, il3945_irq_tasklet); + +	return 0;  }  static void @@ -3435,6 +3433,7 @@ static const struct attribute_group il3945_attribute_group = {  static struct ieee80211_ops il3945_mac_ops __ro_after_init = {  	.tx = il3945_mac_tx, +	.wake_tx_queue = ieee80211_handle_wake_tx_queue,  	.start = il3945_mac_start,  	.stop = il3945_mac_stop,  	.add_interface = il_mac_add_interface, @@ -3717,7 +3716,10 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)  	}  	il_set_rxon_channel(il, &il->bands[NL80211_BAND_2GHZ].channels[5]); -	il3945_setup_deferred_work(il); +	err = il3945_setup_deferred_work(il); +	if (err) +		goto out_remove_sysfs; +  	il3945_setup_handlers(il);  	il_power_initialize(il); @@ -3729,7 +3731,7 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)  	err = il3945_setup_mac(il);  	if (err) -		goto out_remove_sysfs; +		goto out_destroy_workqueue;  	il_dbgfs_register(il, DRV_NAME); @@ -3738,9 +3740,10 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)  	return 0; -out_remove_sysfs: +out_destroy_workqueue:  	destroy_workqueue(il->workqueue);  	il->workqueue = NULL; +out_remove_sysfs:  	sysfs_remove_group(&pdev->dev.kobj, &il3945_attribute_group);  out_release_irq:  	free_irq(il->pci_dev->irq, il);  |