From 3e78c14ad873dec2034e0fd17da746babe3f5d77 Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Mon, 6 Sep 2010 18:46:39 +0000 Subject: [PATCH] --- yaml --- r: 214347 b: refs/heads/master c: 2edae08e5b75269855fef3c74fe4292c066e7c33 h: refs/heads/master i: 214345: 51cf8a0d622309df7ab82f055b3ee95ee3373754 214343: 8cc4100e67bb40ef966e534c67494a1487a706b2 v: v3 --- [refs] | 2 +- trunk/drivers/net/r8169.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 2e7b5417be00..7b73f867a8be 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c936335e7ac24d1751543e2007a89e3eb649cc2a +refs/heads/master: 2edae08e5b75269855fef3c74fe4292c066e7c33 diff --git a/trunk/drivers/net/r8169.c b/trunk/drivers/net/r8169.c index 56a11e29af0b..54900332f12d 100644 --- a/trunk/drivers/net/r8169.c +++ b/trunk/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 (likely(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); }