linux/drivers/net/wireless/iwlwifi
Zhu Yi f1bc4ac61f iwlwifi: use GFP_KERNEL to allocate Rx SKB memory
Previously we allocate Rx SKB with GFP_ATOMIC flag. This is because we need
to hold a spinlock to protect the two rx_used and rx_free lists operation
in the rxq.

	spin_lock();
	...
	element = rxq->rx_used.next;
	element->skb = alloc_skb(..., GFP_ATOMIC);
	list_del(element);
	list_add_tail(&element->list, &rxq->rx_free);
	...
	spin_unlock();

After spliting the rx_used delete and rx_free insert into two operations,
we don't require the skb allocation in an atomic context any more (the
function itself is scheduled in a workqueue).

	spin_lock();
	...
	element = rxq->rx_used.next;
	list_del(element);
	...
	spin_unlock();
	...
	element->skb = alloc_skb(..., GFP_KERNEL);
	...
	spin_lock()
	...
	list_add_tail(&element->list, &rxq->rx_free);
	...
	spin_unlock();

This patch should fix the "iwlagn: Can not allocate SKB buffers" warning
we see recently.

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Acked-by: Tomas Winkler <tomas.winkler@intel.com>
Cc: stable@kernel.org
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-12-19 15:23:41 -05:00
..
iwl3945-base.c iwlwifi: use type uint for module param debug 2008-12-19 15:23:36 -05:00
iwl-3945-commands.h iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-3945-core.h iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-3945-debug.h iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-3945-hw.h iwlwifi: use iwl_poll_direct_bit in EEPROM reading 2008-12-12 14:45:33 -05:00
iwl-3945-io.h iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-3945-led.c iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-3945-led.h iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-3945-rs.c iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-3945-rs.h iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-3945.c iwlwifi: remove a parameter (dest) from *_fill_beacon_frame() methods. 2008-12-19 15:23:29 -05:00
iwl-3945.h iwlwifi: cleanup iwl-dev.h 2008-12-19 15:23:32 -05:00
iwl-4965-hw.h iwlwifi: remove unused clip_groups priv member 2008-12-12 14:45:37 -05:00
iwl-4965.c iwlwifi: remove useless goto 2008-12-19 15:23:38 -05:00
iwl-5000-hw.h iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-5000.c iwlwifi: remove useless goto 2008-12-19 15:23:38 -05:00
iwl-agn-hcmd-check.c iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-agn-rs.c iwlagn: fix agn rate scaling 2008-12-19 15:23:10 -05:00
iwl-agn-rs.h iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-agn.c iwlwifi: use GFP_KERNEL to allocate Rx SKB memory 2008-12-19 15:23:41 -05:00
iwl-calib.c iwlwifi: cleanup iwl-dev.h 2008-12-19 15:23:32 -05:00
iwl-calib.h iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-commands.h iwlwifi: cleanup iwl-dev.h 2008-12-19 15:23:32 -05:00
iwl-core.c iwlwifi: add contact email to MODULE_AUTHOR 2008-12-12 14:45:43 -05:00
iwl-core.h iwlwifi: use type uint for module param debug 2008-12-19 15:23:36 -05:00
iwl-csr.h iwlwifi: use iwl_poll_direct_bit in EEPROM reading 2008-12-12 14:45:33 -05:00
iwl-debug.h iwlwifi: update comments on the debug interface 2008-12-19 15:23:35 -05:00
iwl-debugfs.c iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-dev.h iwlwifi: cleanup iwl-dev.h 2008-12-19 15:23:32 -05:00
iwl-eeprom.c iwlwifi: use iwl_poll_direct_bit in EEPROM reading 2008-12-12 14:45:33 -05:00
iwl-eeprom.h iwlwifi: use iwl_poll_direct_bit in EEPROM reading 2008-12-12 14:45:33 -05:00
iwl-fh.h iwlifi: remove twice defined SINGLE_FRAME RX FH MASK 2008-12-12 14:01:49 -05:00
iwl-hcmd.c iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-helpers.h iwlwifi: remove includes of iwl-helpers.h where not needed 2008-12-12 14:45:39 -05:00
iwl-io.h iwlwifi: use meaningful vars in _iwl_poll_bit() 2008-12-19 15:23:39 -05:00
iwl-led.c iwlwifi: add line feed to printk 2008-12-19 15:23:33 -05:00
iwl-led.h iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-power.c iwlwifi: remove includes of iwl-helpers.h where not needed 2008-12-12 14:45:39 -05:00
iwl-power.h iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-prph.h iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-rfkill.c iwlwifi: remove includes of iwl-helpers.h where not needed 2008-12-12 14:45:39 -05:00
iwl-rfkill.h iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-rx.c iwlwifi: use GFP_KERNEL to allocate Rx SKB memory 2008-12-19 15:23:41 -05:00
iwl-scan.c iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-spectrum.c iwlwifi: remove 4965 from common uCode API structures 2008-12-12 14:45:41 -05:00
iwl-spectrum.h iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-sta.c iwlwifi: remove includes of iwl-helpers.h where not needed 2008-12-12 14:45:39 -05:00
iwl-sta.h iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
iwl-tx.c iwlwifi: change email contact information 2008-12-12 14:01:46 -05:00
Kconfig wireless: consolidate on a single escape_essid implementation 2008-10-31 19:00:46 -04:00
Makefile iwlwifi: move host command check function into separate file 2008-12-05 09:35:51 -05:00