]> err.no Git - linux-2.6/commitdiff
net/core: Allow receive on active slaves.
authorJoe Eykholt <jre@nuovasystems.com>
Thu, 3 Jul 2008 01:22:02 +0000 (18:22 -0700)
committerJeff Garzik <jgarzik@redhat.com>
Thu, 7 Aug 2008 08:00:01 +0000 (04:00 -0400)
If a packet_type specifies an active slave to bonding and not just any
interface, allow it to receive frames that came in on that interface.

Signed-off-by: Joe Eykholt <jre@nuovasystems.com>
Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
net/core/dev.c

index dab97c7cf27589862d64598aab02241d28f35ece..600bb23c4c2e3743239dc571c459fe3a5e8b19d5 100644 (file)
@@ -2210,7 +2210,8 @@ int netif_receive_skb(struct sk_buff *skb)
 #endif
 
        list_for_each_entry_rcu(ptype, &ptype_all, list) {
-               if (ptype->dev == null_or_orig || ptype->dev == skb->dev) {
+               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);
                        pt_prev = ptype;
@@ -2235,7 +2236,8 @@ ncls:
        list_for_each_entry_rcu(ptype,
                        &ptype_base[ntohs(type) & PTYPE_HASH_MASK], list) {
                if (ptype->type == type &&
-                   (ptype->dev == null_or_orig || ptype->dev == skb->dev)) {
+                   (ptype->dev == null_or_orig || ptype->dev == skb->dev ||
+                    ptype->dev == orig_dev)) {
                        if (pt_prev)
                                ret = deliver_skb(skb, pt_prev, orig_dev);
                        pt_prev = ptype;