aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhu Yi <yi.zhu@intel.com>2009-11-06 17:52:45 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-11-11 15:23:41 -0500
commita3b6bd5bf23c5cd95389e24121da02d2330eaf21 (patch)
tree0f5664317960b5a44621aa7b10acd1d8e92b7c09
parentcf7ff8dfe64c8ca8a71b4fcbac357a3476ed1888 (diff)
iwlwifi: allocate 128 bytes linear buffer for rx skb
Allocate 128 bytes linear buffer for rx skb. The first 64 bytes is reserved for mac80211 usage (for radiotap header expansion, etc). The frame header starts from the second 64 bytes. Cc: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: Zhu Yi <yi.zhu@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-3945.c3
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-rx.c3
2 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c
index 09a7bd2c0be4..26a1134f84a2 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945.c
@@ -564,7 +564,7 @@ static void iwl3945_pass_packet_to_mac80211(struct iwl_priv *priv,
564 return; 564 return;
565 } 565 }
566 566
567 skb = alloc_skb(IWL_LINK_HDR_MAX, GFP_ATOMIC); 567 skb = alloc_skb(IWL_LINK_HDR_MAX * 2, GFP_ATOMIC);
568 if (!skb) { 568 if (!skb) {
569 IWL_ERR(priv, "alloc_skb failed\n"); 569 IWL_ERR(priv, "alloc_skb failed\n");
570 return; 570 return;
@@ -575,6 +575,7 @@ static void iwl3945_pass_packet_to_mac80211(struct iwl_priv *priv,
575 (struct ieee80211_hdr *)rxb_addr(rxb), 575 (struct ieee80211_hdr *)rxb_addr(rxb),
576 le32_to_cpu(rx_end->status), stats); 576 le32_to_cpu(rx_end->status), stats);
577 577
578 skb_reserve(skb, IWL_LINK_HDR_MAX);
578 skb_add_rx_frag(skb, 0, rxb->page, 579 skb_add_rx_frag(skb, 0, rxb->page,
579 (void *)rx_hdr->payload - (void *)pkt, len); 580 (void *)rx_hdr->payload - (void *)pkt, len);
580 581
diff --git a/drivers/net/wireless/iwlwifi/iwl-rx.c b/drivers/net/wireless/iwlwifi/iwl-rx.c
index e5339c9ad13e..d2dc7cceb5f2 100644
--- a/drivers/net/wireless/iwlwifi/iwl-rx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-rx.c
@@ -937,12 +937,13 @@ static void iwl_pass_packet_to_mac80211(struct iwl_priv *priv,
937 iwl_set_decrypted_flag(priv, hdr, ampdu_status, stats)) 937 iwl_set_decrypted_flag(priv, hdr, ampdu_status, stats))
938 return; 938 return;
939 939
940 skb = alloc_skb(IWL_LINK_HDR_MAX, GFP_ATOMIC); 940 skb = alloc_skb(IWL_LINK_HDR_MAX * 2, GFP_ATOMIC);
941 if (!skb) { 941 if (!skb) {
942 IWL_ERR(priv, "alloc_skb failed\n"); 942 IWL_ERR(priv, "alloc_skb failed\n");
943 return; 943 return;
944 } 944 }
945 945
946 skb_reserve(skb, IWL_LINK_HDR_MAX);
946 skb_add_rx_frag(skb, 0, rxb->page, (void *)hdr - rxb_addr(rxb), len); 947 skb_add_rx_frag(skb, 0, rxb->page, (void *)hdr - rxb_addr(rxb), len);
947 948
948 /* mac80211 currently doesn't support paged SKB. Convert it to 949 /* mac80211 currently doesn't support paged SKB. Convert it to