From patchwork Sat Jan 8 18:41:21 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jarek Poplawski X-Patchwork-Id: 77978 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.180.67]) by ozlabs.org (Postfix) with ESMTP id C7F92B6EF1 for ; Sun, 9 Jan 2011 05:42:04 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751685Ab1AHSl3 (ORCPT ); Sat, 8 Jan 2011 13:41:29 -0500 Received: from mail-bw0-f46.google.com ([209.85.214.46]:63408 "EHLO mail-bw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751045Ab1AHSl1 (ORCPT ); Sat, 8 Jan 2011 13:41:27 -0500 Received: by bwz15 with SMTP id 15so18155459bwz.19 for ; Sat, 08 Jan 2011 10:41:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:cc:subject:references:in-reply-to :content-type; bh=a20ys5I+n2L5aCROAPhLKNsI2eErP88RSSgWsERE7FM=; b=kIKl+c8NQMQ8tXZJdjOuUm+X0R61Mh/QY4DNgO+gnYpHzzeiniCSRuYD0L/R1ymEKr IGnVrU0D0UuYNgIWe3DKPAgDsHYJcpCOeUVpt9sA3KK0IQGEeu8cAB5cIh3cxFeOv+Pl h95Hs7OvUAHxQV/0TAHtKPlJi/pYnHAZaL8rU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type; b=VDbvr1Fx68ftTAyqMhSE/mpUU6JXwuK4BfdHhJoXYTdJV8C0q90QwyV6Qp6kBolRJb C+2HQq0x2RR4fInq8Rp7otnx+4AH5vx6p3EJnlHN7HE9F6sqtH8kAsZhLmpG86gQiegA 8T/nosxNCAJ48CN+BGukldCG4KSTPDHzRPpu8= Received: by 10.204.58.13 with SMTP id e13mr1038698bkh.148.1294512086116; Sat, 08 Jan 2011 10:41:26 -0800 (PST) Received: from [79.162.191.10] (public81674.xdsl.centertel.pl [79.162.191.10]) by mx.google.com with ESMTPS id q18sm14836511bka.15.2011.01.08.10.41.23 (version=SSLv3 cipher=RC4-MD5); Sat, 08 Jan 2011 10:41:25 -0800 (PST) Message-ID: <4D28AFD1.3020808@gmail.com> Date: Sat, 08 Jan 2011 19:41:21 +0100 From: Jarek Poplawski User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.13) Gecko/20100916 SeaMonkey/2.0.8 MIME-Version: 1.0 To: Iain Paton CC: Michael Chan , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: Re: 2.6.37 vlans on bnx2 not functional, panic with tcpdump References: <4D2634DE.2060907@gmail.com> <1294357941.21580.2.camel@HP1> <1294361206.21580.7.camel@HP1> <1294422653.14051.11.camel@HP1> <4D2754F9.8050707@gmail.com> In-Reply-To: <4D2754F9.8050707@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Iain Paton wrote: ... > So you can consider any bnx2 cause for this closed. I'll get back to the > list if I can come up with any more useful info. Hi Iain, If it's not a problem, please try if the attached debugging patch (not tested) can change anything. Thanks, Jarek P. diff --git a/net/core/dev.c b/net/core/dev.c index 0dd54a6..9244373 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2720,6 +2720,17 @@ static inline int deliver_skb(struct sk_buff *skb, return pt_prev->func(skb, skb->dev, pt_prev, orig_dev); } +static inline int deliver_skb_clone(struct sk_buff *skb, + struct packet_type *pt_prev, + struct net_device *orig_dev) +{ + struct sk_buff *nskb = skb_clone(skb, GFP_ATOMIC); + + if (!nskb) + return 0; + return pt_prev->func(nskb, nskb->dev, pt_prev, orig_dev); +} + #if (defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE)) && \ (defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE)) /* This hook is defined here for ATM LANE */ @@ -2950,7 +2961,7 @@ static int __netif_receive_skb(struct sk_buff *skb) if (ptype->dev == null_or_orig || ptype->dev == skb->dev || ptype->dev == orig_dev) { if (pt_prev) - ret = deliver_skb(skb, pt_prev, orig_dev); + ret = deliver_skb_clone(skb, pt_prev, orig_dev); pt_prev = ptype; } } @@ -2976,7 +2987,7 @@ ncls: if (vlan_tx_tag_present(skb)) { if (pt_prev) { - ret = deliver_skb(skb, pt_prev, orig_dev); + ret = deliver_skb_clone(skb, pt_prev, orig_dev); pt_prev = NULL; } if (vlan_hwaccel_do_receive(&skb)) {