netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jay Vosburgh <fubar@us.ibm.com>
To: Stephen Hemminger <shemminger@vyatta.com>
Cc: David Miller <davem@davemloft.net>,
	dada1@cosmosbay.com, zbr@ioremap.net, ilpo.jarvinen@helsinki.fi,
	rjw@sisk.pl, mingo@elte.hu, s0mbre@tservice.net.ru,
	a.p.zijlstra@chello.nl, linux-kernel@vger.kernel.org,
	netdev@vger.kernel.org, efault@gmx.de, akpm@linux-foundation.org
Subject: Re: [tbench regression fixes]: digging out smelly deadmen.
Date: Fri, 31 Oct 2008 17:16:33 -0700	[thread overview]
Message-ID: <22495.1225498593@death.nxdomain.ibm.com> (raw)
In-Reply-To: <20081031165620.7322b0e5@extreme>

Stephen Hemminger <shemminger@vyatta.com> wrote:

>On Fri, 31 Oct 2008 16:51:44 -0700 (PDT)
>David Miller <davem@davemloft.net> wrote:
[...]
>> However, I do like Stephen's suggestion that maybe we can get rid of
>> this ->last_rx thing by encapsulating the logic completely in the
>> bonding driver.
>
>Since bonding driver doesn't actually see the rx packets, that isn't
>really possible.  But it would be possible to change last_rx from a variable
>to an function pointer, so that device's could apply other logic to derive
>the last value.  One example would be to keep it per cpu and then take the
>maximum.

	I suspect it could also be tucked away in skb_bond_should_drop,
which is called both by the standard input path and the VLAN accelerated
path to see if the packet should be tossed (e.g., it arrived on an
inactive bonding slave).

	Since last_rx is part of struct net_device, I don't think any
additional bonding internals knowledge would be needed.  It could be
arranged to only update last_rx for devices that are actually bonding
slaves.

	Just off the top of my head (haven't tested this), something
like this:

diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index c8bcb59..ed1e58f 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1743,22 +1743,24 @@ static inline int skb_bond_should_drop(struct sk_buff *skb)
 	struct net_device *dev = skb->dev;
 	struct net_device *master = dev->master;
 
-	if (master &&
-	    (dev->priv_flags & IFF_SLAVE_INACTIVE)) {
-		if ((dev->priv_flags & IFF_SLAVE_NEEDARP) &&
-		    skb->protocol == __constant_htons(ETH_P_ARP))
-			return 0;
-
-		if (master->priv_flags & IFF_MASTER_ALB) {
-			if (skb->pkt_type != PACKET_BROADCAST &&
-			    skb->pkt_type != PACKET_MULTICAST)
+	if (master) {
+		dev->last_rx = jiffies;
+		if (dev->priv_flags & IFF_SLAVE_INACTIVE)) {
+			if ((dev->priv_flags & IFF_SLAVE_NEEDARP) &&
+			    skb->protocol == __constant_htons(ETH_P_ARP))
 				return 0;
-		}
-		if (master->priv_flags & IFF_MASTER_8023AD &&
-		    skb->protocol == __constant_htons(ETH_P_SLOW))
-			return 0;
 
-		return 1;
+			if (master->priv_flags & IFF_MASTER_ALB) {
+				if (skb->pkt_type != PACKET_BROADCAST &&
+				    skb->pkt_type != PACKET_MULTICAST)
+					return 0;
+			}
+			if (master->priv_flags & IFF_MASTER_8023AD &&
+			    skb->protocol == __constant_htons(ETH_P_SLOW))
+				return 0;
+
+			return 1;
+		}
 	}
 	return 0;
 }


	That doesn't move the storage out of struct net_device, but it
does stop the updates for devices that aren't bonding slaves.  It could
probably be refined further to only update when the ARP monitor is
running (the gizmo that uses last_rx).

	-J

---
	-Jay Vosburgh, IBM Linux Technology Center, fubar@us.ibm.com

  reply	other threads:[~2008-11-01  0:16 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-09 23:17 [tbench regression fixes]: digging out smelly deadmen Evgeniy Polyakov
2008-10-10  5:40 ` Peter Zijlstra
2008-10-10  8:09 ` Evgeniy Polyakov
2008-10-10  9:15   ` Ingo Molnar
2008-10-10 11:31     ` Evgeniy Polyakov
2008-10-10 11:40       ` Ingo Molnar
2008-10-10 13:25         ` Evgeniy Polyakov
2008-10-10 11:42       ` Ingo Molnar
2008-10-10 11:55         ` Evgeniy Polyakov
2008-10-10 11:57           ` Ingo Molnar
2008-10-24 22:25             ` Rafael J. Wysocki
2008-10-24 23:31               ` David Miller
2008-10-25  4:05                 ` Mike Galbraith
2008-10-25  5:15                   ` David Miller
2008-10-25  5:53                     ` Mike Galbraith
2008-10-25 11:13                 ` Rafael J. Wysocki
2008-10-26  3:55                   ` David Miller
2008-10-26 11:33                     ` Rafael J. Wysocki
2008-10-25  3:37               ` Mike Galbraith
2008-10-25  5:16                 ` David Miller
2008-10-25  5:58                   ` Mike Galbraith
2008-10-25  6:53                     ` Mike Galbraith
2008-10-25  7:24                       ` David Miller
2008-10-25  7:52                         ` Mike Galbraith
2008-10-25 23:10                         ` Jiri Kosina
2008-10-26  8:46                           ` Mike Galbraith
2008-10-26  9:00                             ` Peter Zijlstra
2008-10-26  9:11                               ` Andrew Morton
2008-10-26  9:27                                 ` Evgeniy Polyakov
2008-10-26  9:34                                   ` Andrew Morton
2008-10-26 10:05                                     ` Evgeniy Polyakov
2008-10-27  2:34                                       ` David Miller
2008-10-27  9:30                                         ` Ingo Molnar
2008-10-27  9:57                                           ` David Miller
2008-10-26 10:23                                 ` Mike Galbraith
2008-10-26 19:03                                 ` Jiri Kosina
2008-10-27  9:29                                   ` Mike Galbraith
2008-10-27 10:42                                   ` Jiri Kosina
2008-10-27 11:27                                     ` Ingo Molnar
2008-10-27 11:33                                       ` Alan Cox
2008-10-27 12:06                                         ` Mike Galbraith
2008-10-27 13:42                                           ` Jiri Kosina
2008-10-27 14:17                                             ` Mike Galbraith
2008-10-27 18:33                                         ` Ingo Molnar
2008-10-27 19:39                                           ` Evgeniy Polyakov
2008-10-27 19:48                                             ` David Miller
2008-10-28 10:24                                               ` Mike Galbraith
2008-10-28 10:37                                                 ` Ingo Molnar
2008-10-28 10:57                                                   ` Mike Galbraith
2008-10-28 11:02                                                     ` Ingo Molnar
2008-10-28 14:00                                                     ` Mike Galbraith
2008-10-28 15:22                                                       ` Mike Galbraith
2008-10-29  9:14                                                   ` Evgeniy Polyakov
2008-10-29  9:50                                                     ` Evgeniy Polyakov
2008-11-01 12:51                                                       ` Paolo Ciarrocchi
2008-10-29  9:59                                           ` Nick Piggin
2008-10-26  9:15                               ` Mike Galbraith
2008-10-25  7:19                     ` David Miller
2008-10-25  7:33                       ` Mike Galbraith
2008-10-27 17:26                         ` Rick Jones
2008-10-27 19:11                           ` Mike Galbraith
2008-10-27 19:18                             ` Rick Jones
2008-10-27 19:44                               ` Mike Galbraith
2008-10-26 11:29               ` Evgeniy Polyakov
2008-10-26 12:23                 ` Evgeniy Polyakov
2008-10-30 18:15                   ` Stephen Hemminger
2008-10-30 18:40                     ` Evgeniy Polyakov
2008-10-30 18:43                     ` Eric Dumazet
2008-10-30 18:56                       ` Eric Dumazet
2008-10-30 19:01                     ` Ilpo Järvinen
2008-10-31  7:52                       ` David Miller
2008-10-31  9:40                         ` Ilpo Järvinen
2008-10-31  9:51                           ` David Miller
2008-10-31 10:42                             ` Ilpo Järvinen
2008-10-31 10:45                             ` Eric Dumazet
2008-10-31 11:01                               ` Ilpo Järvinen
2008-10-31 11:10                                 ` Eric Dumazet
2008-10-31 11:15                                   ` Ilpo Järvinen
2008-10-31 19:57                               ` Stephen Hemminger
2008-10-31 20:10                                 ` Evgeniy Polyakov
2008-10-31 21:03                                   ` Eric Dumazet
2008-10-31 21:18                                     ` Evgeniy Polyakov
2008-10-31 23:51                                     ` David Miller
2008-10-31 23:56                                       ` Stephen Hemminger
2008-11-01  0:16                                         ` Jay Vosburgh [this message]
2008-11-02  4:40                                           ` David Miller
2008-11-04  2:13                                             ` [PATCH net-next-2.6] bonding, net: Move last_rx update into bonding recv logic Jay Vosburgh
2008-11-04  2:17                                               ` David Miller
2008-10-10 10:13 ` [tbench regression fixes]: digging out smelly deadmen Mike Galbraith
2008-10-11 13:13   ` Evgeniy Polyakov
2008-10-11 14:39     ` Peter Zijlstra
2008-10-11 18:13       ` Mike Galbraith
2008-10-12  6:02         ` Mike Galbraith
2008-10-12  6:33           ` Mike Galbraith

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=22495.1225498593@death.nxdomain.ibm.com \
    --to=fubar@us.ibm.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@linux-foundation.org \
    --cc=dada1@cosmosbay.com \
    --cc=davem@davemloft.net \
    --cc=efault@gmx.de \
    --cc=ilpo.jarvinen@helsinki.fi \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=netdev@vger.kernel.org \
    --cc=rjw@sisk.pl \
    --cc=s0mbre@tservice.net.ru \
    --cc=shemminger@vyatta.com \
    --cc=zbr@ioremap.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).