From patchwork Mon Apr 13 14:41:01 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Herbert Xu X-Patchwork-Id: 25907 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 8B704DE15C for ; Tue, 14 Apr 2009 00:41:15 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752100AbZDMOlK (ORCPT ); Mon, 13 Apr 2009 10:41:10 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751997AbZDMOlI (ORCPT ); Mon, 13 Apr 2009 10:41:08 -0400 Received: from rhun.apana.org.au ([64.62.148.172]:58418 "EHLO arnor.apana.org.au" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751567AbZDMOlI (ORCPT ); Mon, 13 Apr 2009 10:41:08 -0400 Received: from gondolin.me.apana.org.au ([192.168.0.6]) by arnor.apana.org.au with esmtp (Exim 4.63 #1 (Debian)) id 1LtNLL-0001kQ-J0; Tue, 14 Apr 2009 00:41:03 +1000 Received: from herbert by gondolin.me.apana.org.au with local (Exim 4.69) (envelope-from ) id 1LtNLK-0004a7-02; Mon, 13 Apr 2009 22:41:02 +0800 Date: Mon, 13 Apr 2009 22:41:01 +0800 From: Herbert Xu To: "David S. Miller" , netdev@vger.kernel.org Subject: gro: Normalise skb before bypassing GRO on netpoll VLAN path Message-ID: <20090413144101.GA17575@gondor.apana.org.au> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Hi: gro: Normalise skb before bypassing GRO on netpoll VLAN path When we detect netpoll RX on the GRO VLAN path we bail out and call the normal VLAN receive handler. However, the packet needs to be normalised by calling eth_type_trans since that's what the normal path expects (normally the GRO path does the fixup). This patch adds the necessary call to vlan_gro_frags. Signed-off-by: Herbert Xu Thanks, diff --git a/net/8021q/vlan_core.c b/net/8021q/vlan_core.c index 654e45f..c67fe6f 100644 --- a/net/8021q/vlan_core.c +++ b/net/8021q/vlan_core.c @@ -121,8 +121,10 @@ int vlan_gro_frags(struct napi_struct *napi, struct vlan_group *grp, if (!skb) return NET_RX_DROP; - if (netpoll_rx_on(skb)) + if (netpoll_rx_on(skb)) { + skb->protocol = eth_type_trans(skb, skb->dev); return vlan_hwaccel_receive_skb(skb, grp, vlan_tci); + } return napi_frags_finish(napi, skb, vlan_gro_common(napi, grp, vlan_tci, skb));