From: Zhu Yi Date: Wed, 17 Dec 2008 08:52:33 +0000 (+0800) Subject: iwlwifi: use GFP_KERNEL to allocate Rx SKB memory X-Git-Tag: v2.6.29-rc1~581^2~105^2~16 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f1bc4ac61f2c08515afd80c6dc3962aa6d0b138b;p=pandora-kernel.git 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 Acked-by: Tomas Winkler Cc: stable@kernel.org Signed-off-by: John W. Linville --- Reading git-diff-tree failed