From: John Fastabend <john.r.fastabend@intel.com>
To: mst@redhat.com, sri@us.ibm.com
Cc: shemminger@vyatta.com, davem@davemloft.net,
bhutchings@solarflare.com, hadi@cyberus.ca,
jeffrey.t.kirsher@intel.com, netdev@vger.kernel.org,
gregory.v.rose@intel.com, krkumar2@in.ibm.com
Subject: Re: [net-next PATCH v2 8/8] macvlan: add FDB bridge ops and macvlan flags
Date: Thu, 12 Apr 2012 01:09:38 -0700 [thread overview]
Message-ID: <4F868DC2.5050301@intel.com> (raw)
In-Reply-To: <20120412065754.3112.31357.stgit@jf-dev1-dcblab>
On 4/11/2012 11:57 PM, John Fastabend wrote:
> This adds FDB bridge ops to the macvlan device passthru mode.
> Additionally a flags field was added and a NOPROMISC bit to
> allow users to use passthru mode without the driver calling
> dev_set_promiscuity(). The flags field is a u16 placed in a
> 4 byte hole (consuming 2 bytes) of the macvlan_dev struct.
>
> We want to do this so that the macvlan driver or stack
> above the macvlan driver does not have to process every
> packet. For the use case where we know all the MAC addresses
> of the endstations above us this works well.
>
> This patch is a result of Roopa Prabhu's work. Follow up
> patches are needed for VEPA and VEB macvlan modes.
>
> v2: Change from distinct nopromisc mode to a flags field to
> configure this. This avoids the tendency to add a new
> mode every time we need some slightly different behavior.
>
> CC: Roopa Prabhu <roprabhu@cisco.com>
> CC: Michael S. Tsirkin <mst@redhat.com>
> Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
> ---
>
oops this introduces an error in dev_set_promiscuity and I missed
adding flags to macvlan_fill_info() and the change routine
macvlan_changelink(). As it stands the flags can only be set at
creation time and can not be queried. I'll submit a v3 with this
fixup in the morning.
I suspect the addition below should be good enough. might try
to clean up the changelink logic a bit first.
---
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index df782c0..65c6d26 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -350,7 +350,7 @@ static int macvlan_stop(struct net_device *dev)
if (vlan->port->passthru) {
if (!(vlan->flags & MACVLAN_FLAG_NOPROMISC))
- dev_set_promiscuity(lowerdev, 1);
+ dev_set_promiscuity(lowerdev, -1);
goto hash_del;
}
@@ -808,6 +808,19 @@ static int macvlan_changelink(struct net_device *dev,
struct macvlan_dev *vlan = netdev_priv(dev);
if (data && data[IFLA_MACVLAN_MODE])
vlan->mode = nla_get_u32(data[IFLA_MACVLAN_MODE]);
+ if (data && data[IFLA_MACVLAN_FLAGS]) {
+ __u16 flags = nla_get_u16(data[IFLA_MACVLAN_FLAGS]);
+
+ flags &= MACVLAN_FLAG_NOPROMISC;
+
+ if ((flags ^ vlan->flags) && (flags & MACVLAN_FLAG_NOPROMISC))
+ dev_set_promiscuity(vlan->lowerdev, -1);
+ else if ((flags ^ vlan->flags) &&
+ !(flags & MACVLAN_FLAG_NOPROMISC))
+ dev_set_promiscuity(vlan->lowerdev, 1);
+
+ vlan->flags = flags;
+ }
return 0;
}
@@ -823,6 +836,8 @@ static int macvlan_fill_info(struct sk_buff *skb,
if (nla_put_u32(skb, IFLA_MACVLAN_MODE, vlan->mode))
goto nla_put_failure;
+ if (nla_put_u16(skb, IFLA_MACVLAN_FLAGS, vlan->flags))
+ goto nla_put_failure;
return 0;
nla_put_failure:
[root@jf-dev1-dcblab net-n
prev parent reply other threads:[~2012-04-12 8:09 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-12 6:57 [net-next PATCH v2 0/8] Managing the forwarding database(FDB) John Fastabend
2012-04-12 6:57 ` [net-next PATCH v2 1/8] net: add generic PF_BRIDGE:RTM_ FDB hooks John Fastabend
2012-04-12 6:57 ` [net-next PATCH v2 2/8] net: addr_list: add exclusive dev_uc_add and dev_mc_add John Fastabend
2012-04-12 6:57 ` [net-next PATCH v2 3/8] net: add fdb generic dump routine John Fastabend
2012-04-12 6:57 ` [net-next PATCH v2 4/8] net: rtnetlink notify events for FDB NTF_SELF adds and deletes John Fastabend
2012-04-12 6:57 ` [net-next PATCH v2 5/8] ixgbe: enable FDB netdevice ops John Fastabend
2012-04-12 6:57 ` [net-next PATCH v2 6/8] ixgbe: allow RAR table to be updated in promisc mode John Fastabend
2012-04-12 6:57 ` [net-next PATCH v2 7/8] ixgbe: UTA table incorrectly programmed John Fastabend
2012-04-12 6:57 ` [net-next PATCH v2 8/8] macvlan: add FDB bridge ops and macvlan flags John Fastabend
2012-04-12 8:09 ` John Fastabend [this message]
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=4F868DC2.5050301@intel.com \
--to=john.r.fastabend@intel.com \
--cc=bhutchings@solarflare.com \
--cc=davem@davemloft.net \
--cc=gregory.v.rose@intel.com \
--cc=hadi@cyberus.ca \
--cc=jeffrey.t.kirsher@intel.com \
--cc=krkumar2@in.ibm.com \
--cc=mst@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=shemminger@vyatta.com \
--cc=sri@us.ibm.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.