mirror of https://gitee.com/openkylin/linux.git
rtlwifi: Fix large packet issue
An RX buffer is set to 9100 bytes to receive 8K AMSDU; however, an skb of this size fails in the kernel. Signed-off-by: Chaoming Li <chaoming_li@realsil.com.cn> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
172128468f
commit
5c4bc1ce91
|
@ -612,10 +612,22 @@ static void _rtl_pci_rx_interrupt(struct ieee80211_hw *hw)
|
|||
num_rx_inperiod++;
|
||||
}
|
||||
|
||||
if (unlikely(!rtl_action_proc(hw, skb, false)))
|
||||
if (unlikely(!rtl_action_proc(hw, skb,
|
||||
false))) {
|
||||
dev_kfree_skb_any(skb);
|
||||
else
|
||||
ieee80211_rx_irqsafe(hw, skb);
|
||||
} else {
|
||||
struct sk_buff *uskb = NULL;
|
||||
u8 *pdata;
|
||||
uskb = dev_alloc_skb(skb->len + 128);
|
||||
memcpy(IEEE80211_SKB_RXCB(uskb),
|
||||
&rx_status,
|
||||
sizeof(rx_status));
|
||||
pdata = (u8 *)skb_put(uskb, skb->len);
|
||||
memcpy(pdata, skb->data, skb->len);
|
||||
dev_kfree_skb_any(skb);
|
||||
|
||||
ieee80211_rx_irqsafe(hw, uskb);
|
||||
}
|
||||
} else {
|
||||
dev_kfree_skb_any(skb);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue