mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-20 11:13:58 +08:00
p54usb: Fix to prevent SKB memory allocation errors with 4K page size
On x86_64 architecture with 4K page size and SLUB debugging enabled, stress testing on p54usb has resulted in skb allocation failures of O(1) and extreme page fragmentation. Reducing rx_mtu fixes this problem by reducing the size of all receive skb allocations to be of O(0). This change does not impact performance in any way. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
d1b29405bd
commit
51fb80fefe
@ -138,6 +138,7 @@ int p54_parse_firmware(struct ieee80211_hw *dev, const struct firmware *fw)
|
||||
u8 *fw_version = NULL;
|
||||
size_t len;
|
||||
int i;
|
||||
int maxlen;
|
||||
|
||||
if (priv->rx_start)
|
||||
return 0;
|
||||
@ -195,6 +196,16 @@ int p54_parse_firmware(struct ieee80211_hw *dev, const struct firmware *fw)
|
||||
else
|
||||
priv->rx_mtu = (size_t)
|
||||
0x620 - priv->tx_hdr_len;
|
||||
maxlen = priv->tx_hdr_len + /* USB devices */
|
||||
sizeof(struct p54_rx_data) +
|
||||
4 + /* rx alignment */
|
||||
IEEE80211_MAX_FRAG_THRESHOLD;
|
||||
if (priv->rx_mtu > maxlen && PAGE_SIZE == 4096) {
|
||||
printk(KERN_INFO "p54: rx_mtu reduced from %d "
|
||||
"to %d\n", priv->rx_mtu,
|
||||
maxlen);
|
||||
priv->rx_mtu = maxlen;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BR_CODE_EXPOSED_IF:
|
||||
|
Loading…
Reference in New Issue
Block a user