diff options
Diffstat (limited to 'main/linux-grsec/r8169-add-gro-support.patch')
-rw-r--r-- | main/linux-grsec/r8169-add-gro-support.patch | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/main/linux-grsec/r8169-add-gro-support.patch b/main/linux-grsec/r8169-add-gro-support.patch new file mode 100644 index 000000000..d8ca8d3ad --- /dev/null +++ b/main/linux-grsec/r8169-add-gro-support.patch @@ -0,0 +1,52 @@ +- Use napi_gro_receive() and vlan_gro_receive() +- Enable GRO by default + +Tested on a RTL8111/8168 adapter + +Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> +CC: Francois Romieu <romieu@fr.zoreil.com> +--- + drivers/net/r8169.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c +index 56a11e2..ddff42b 100644 +--- a/drivers/net/r8169.c ++++ b/drivers/net/r8169.c +@@ -1076,7 +1076,12 @@ static int rtl8169_rx_vlan_skb(struct rtl8169_private *tp, struct RxDesc *desc, + int ret; + + if (vlgrp && (opts2 & RxVlanTag)) { +- __vlan_hwaccel_rx(skb, vlgrp, swab16(opts2 & 0xffff), polling); ++ u16 vtag = swab16(opts2 & 0xffff); ++ ++ if (polling) ++ vlan_gro_receive(&tp->napi, vlgrp, vtag, skb); ++ else ++ __vlan_hwaccel_rx(skb, vlgrp, vtag, polling); + ret = 0; + } else + ret = -1; +@@ -3186,6 +3191,7 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) + #ifdef CONFIG_R8169_VLAN + dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX; + #endif ++ dev->features |= NETIF_F_GRO; + + tp->intr_mask = 0xffff; + tp->align = cfg->align; +@@ -4561,7 +4567,7 @@ static int rtl8169_rx_interrupt(struct net_device *dev, + + if (rtl8169_rx_vlan_skb(tp, desc, skb, polling) < 0) { + if (likely(polling)) +- netif_receive_skb(skb); ++ napi_gro_receive(&tp->napi, skb); + else + netif_rx(skb); + } + + +-- +To unsubscribe from this list: send the line "unsubscribe netdev" in +the body of a message to majordomo@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html
\ No newline at end of file |