From: Florian Fainelli <f.fainelli@gmail.com>
To: Scott Feldman <sfeldma@gmail.com>
Cc: Jiri Pirko <jiri@resnulli.us>, Netdev <netdev@vger.kernel.org>,
"David S. Miller" <davem@davemloft.net>,
"nhorman@tuxdriver.com" <nhorman@tuxdriver.com>,
Andy Gospodarek <andy@greyhouse.net>, Thomas Graf <tgraf@suug.ch>,
"dborkman@redhat.com" <dborkman@redhat.com>,
"ogerlitz@mellanox.com" <ogerlitz@mellanox.com>,
"jesse@nicira.com" <jesse@nicira.com>,
"pshelar@nicira.com" <pshelar@nicira.com>,
"azhou@nicira.com" <azhou@nicira.com>,
"ben@decadent.org.uk" <ben@decadent.org.uk>,
"stephen@networkplumber.org" <stephen@networkplumber.org>,
"Kirsher, Jeffrey T" <jeffrey.t.kirsher@intel.com>,
"vyasevic@redhat.com" <vyasevic@redhat.com>,
Cong Wang <xiyou.wangcong@gmail.com>,
"Fastabend, John R" <john.r.fastabend@intel.com>,
Eric Dumazet <edumazet@google.com>,
Jamal Hadi Salim <jhs@mojatatu.com>,
Roopa Prabhu <roopa@cumulusnetworks.com>,
John Linville <linville@tuxdriver.com
Subject: Re: [patch net-next v3 09/17] bridge: add API to notify bridge driver of learned FBD on offloaded device
Date: Tue, 25 Nov 2014 18:34:07 -0800 [thread overview]
Message-ID: <54753C1F.1080109@gmail.com> (raw)
In-Reply-To: <CAE4R7bBQnxKh7y+ViB-s-7b7Ro=gTQLavUTcNLA1u=3UJHa1Rg@mail.gmail.com>
On 25/11/14 18:03, Scott Feldman wrote:
> On Tue, Nov 25, 2014 at 12:44 PM, Florian Fainelli <f.fainelli@gmail.com> wrote:
>> On 25/11/14 02:28, Jiri Pirko wrote:
>>> From: Scott Feldman <sfeldma@gmail.com>
>>>
>>> When the swdev device learns a new mac/vlan on a port, it sends some async
>>> notification to the driver and the driver installs an FDB in the device.
>>> To give a holistic system view, the learned mac/vlan should be reflected
>>> in the bridge's FBD table, so the user, using normal iproute2 cmds, can view
>>> what is currently learned by the device. This API on the bridge driver gives
>>> a way for the swdev driver to install an FBD entry in the bridge FBD table.
>>> (And remove one).
>>>
>>> This is equivalent to the device running these cmds:
>>>
>>> bridge fdb [add|del] <mac> dev <dev> vid <vlan id> master
>>>
>>> This patch needs some extra eyeballs for review, in paricular around the
>>> locking and contexts.
>>>
>>> Signed-off-by: Scott Feldman <sfeldma@gmail.com>
>>> Signed-off-by: Jiri Pirko <jiri@resnulli.us>
>>> ---
>>
>> [snip]
>>
>>> + head = &br->hash[br_mac_hash(addr, vid)];
>>> + fdb = fdb_find(head, addr, vid);
>>> + if (!fdb) {
>>> + fdb = fdb_create(head, p, addr, vid);
>>> + if (!fdb) {
>>> + err = -ENOMEM;
>>> + goto err_unlock;
>>> + }
>>> + fdb->added_by_external_learn = 1;
>>> + fdb_notify(br, fdb, RTM_NEWNEIGH);
>>> + } else if (fdb->added_by_external_learn) {
>>> + /* Refresh entry */
>>> + fdb->updated = fdb->used = jiffies;
>>> + } else if (!fdb->added_by_user) {
>>> + /* Take over SW learned entry */
>>> + fdb->added_by_external_learn = 1;
>>> + fdb->updated = jiffies;
>>> + fdb_notify(br, fdb, RTM_NEWNEIGH);
>>> + }
>>
>> Is there any case where this fdb entry gets re-used and is no longer
>> added by an external learning? Should we clear this flag somewhere?
>
> Once the FDB entry is marked "added_by_external_learn" it stays marked
> as such until removed by aging cleanup process (or flushed due to
> interface down, etc). If aged out (and now deleted), the FDB entry
> may come back either by SW learn or by HW learn. If SW learn comes
> first, and then HW learn, HW learn will override and mark the existing
> FDB entry "added_by_external_learn". So there is take-over by HW but
> no give-back to SW. And there is no explicit clearing of the mark
> short of deleting the FDB entry. The mark is mostly for letting
> user's know which FDB entries where learned by HW and synced to the
> bridge's FDB.
Thanks, makes sense now. This is probably obvious in this context, but
maybe it would not hurt to come up with a documentation that describe
the offload API, FDB entry lifetime and HW/SW ownership etc...
>
>> [snip]
>>
>>> +EXPORT_SYMBOL(br_fdb_external_learn_del);
>>> diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
>>> index 4f577c4..02cd63b 100644
>>> --- a/net/bridge/br_private.h
>>> +++ b/net/bridge/br_private.h
>>> @@ -101,6 +101,7 @@ struct net_bridge_fdb_entry
>>> unsigned char is_local;
>>> unsigned char is_static;
>>> unsigned char added_by_user;
>>> + unsigned char added_by_external_learn;
>>
>> Pheww, we could be saving some memory footprint here by using different
>> types here ;)
>> --
>> Florian
next prev parent reply other threads:[~2014-11-26 2:34 UTC|newest]
Thread overview: 152+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-25 10:28 [patch net-next v3 00/17] introduce rocker switch driver with hardware accelerated datapath api - phase 1: bridge fdb offload Jiri Pirko
2014-11-25 10:28 ` [patch net-next v3 01/17] bridge: rename fdb_*_hw to fdb_*_hw_addr to avoid confusion Jiri Pirko
2014-11-25 15:03 ` Andy Gospodarek
2014-11-25 15:26 ` Jamal Hadi Salim
2014-11-25 22:11 ` Thomas Graf
2014-11-25 22:33 ` Florian Fainelli
2014-11-25 10:28 ` [patch net-next v3 02/17] net: make vid as a parameter for ndo_fdb_add/ndo_fdb_del Jiri Pirko
2014-11-25 15:13 ` Andy Gospodarek
2014-11-25 15:18 ` Jiri Pirko
2014-11-25 15:43 ` John Fastabend
2014-11-25 16:38 ` Jiri Pirko
2014-12-09 11:57 ` Or Gerlitz
2014-11-25 15:38 ` Jamal Hadi Salim
2014-11-25 16:01 ` John Fastabend
2014-11-25 16:18 ` Jamal Hadi Salim
2014-11-25 16:30 ` John Fastabend
2014-11-25 16:50 ` Jamal Hadi Salim
2014-11-26 1:44 ` Simon Horman
2014-11-26 2:36 ` Scott Feldman
2014-11-26 3:19 ` Jamal Hadi Salim
2014-11-26 3:59 ` Scott Feldman
2014-11-26 11:28 ` Jamal Hadi Salim
2014-11-26 11:40 ` Jiri Pirko
2014-11-26 11:54 ` Jamal Hadi Salim
2014-11-26 12:06 ` Jamal Hadi Salim
2014-11-27 6:50 ` Scott Feldman
2014-11-27 12:14 ` Jamal Hadi Salim
2014-11-27 20:59 ` Scott Feldman
2014-11-27 21:55 ` Jiri Pirko
2014-11-28 12:57 ` Jamal Hadi Salim
2014-11-28 10:14 ` Roopa Prabhu
2014-11-28 10:33 ` Scott Feldman
2014-11-25 16:19 ` Roopa Prabhu
2014-11-25 16:33 ` John Fastabend
2014-11-25 16:57 ` Jamal Hadi Salim
2014-11-25 16:43 ` Jiri Pirko
2014-11-25 18:53 ` Samudrala, Sridhar
2014-11-25 20:40 ` Jiri Pirko
2014-11-25 22:14 ` Thomas Graf
2014-11-25 22:39 ` Florian Fainelli
2014-11-25 23:11 ` Thomas Graf
2014-11-26 7:54 ` Jiri Pirko
2014-11-25 10:28 ` [patch net-next v3 03/17] net: rename netdev_phys_port_id to more generic name Jiri Pirko
2014-11-25 15:15 ` Andy Gospodarek
2014-11-25 15:44 ` Jamal Hadi Salim
2014-11-25 10:28 ` [patch net-next v3 04/17] net: introduce generic switch devices support Jiri Pirko
2014-11-25 15:02 ` Andy Gospodarek
2014-11-25 15:51 ` Jamal Hadi Salim
2014-11-25 16:49 ` Jiri Pirko
2014-11-25 17:08 ` Jamal Hadi Salim
2014-11-25 21:54 ` Thomas Graf
2014-11-26 3:33 ` Jamal Hadi Salim
2014-11-26 4:18 ` Scott Feldman
2014-11-26 11:36 ` Jamal Hadi Salim
2014-11-26 16:08 ` Thomas Graf
2014-11-26 17:09 ` Jamal Hadi Salim
2014-11-26 17:59 ` Jiri Pirko
2014-11-26 21:50 ` Thomas Graf
2014-11-26 23:32 ` Jamal Hadi Salim
2014-11-27 13:03 ` Thomas Graf
2014-11-27 13:32 ` Jamal Hadi Salim
2014-11-27 13:50 ` Jiri Pirko
2014-11-28 13:13 ` Jamal Hadi Salim
2014-11-27 5:58 ` Scott Feldman
2014-11-27 12:46 ` Jamal Hadi Salim
2014-11-27 3:13 ` Simon Horman
2014-11-27 12:35 ` Jamal Hadi Salim
2014-11-25 16:07 ` Roopa Prabhu
2014-11-25 16:50 ` Jiri Pirko
2014-11-25 10:28 ` [patch net-next v3 05/17] rtnl: expose physical switch id for particular device Jiri Pirko
2014-11-25 15:16 ` Andy Gospodarek
2014-11-25 10:28 ` [patch net-next v3 06/17] net-sysfs: " Jiri Pirko
2014-11-25 15:28 ` Andy Gospodarek
2014-11-25 15:53 ` Jamal Hadi Salim
2014-11-25 22:27 ` Florian Fainelli
2014-11-25 10:28 ` [patch net-next v3 07/17] rocker: introduce rocker switch driver Jiri Pirko
2014-11-25 15:57 ` Jamal Hadi Salim
2014-11-25 16:57 ` Jiri Pirko
2014-11-25 17:10 ` David Miller
2014-11-25 17:15 ` Jiri Pirko
2014-11-25 17:15 ` Jamal Hadi Salim
2014-11-25 17:51 ` Andy Gospodarek
2014-11-25 16:13 ` David Laight
2014-11-25 19:19 ` Scott Feldman
2014-11-25 21:57 ` tgraf
2014-11-25 10:28 ` [patch net-next v3 08/17] bridge: call netdev_sw_port_stp_update when bridge port STP status changes Jiri Pirko
2014-11-25 15:58 ` Andy Gospodarek
2014-11-25 16:53 ` Jiri Pirko
2014-11-25 22:18 ` Thomas Graf
2014-11-25 22:20 ` Florian Fainelli
2014-11-25 22:48 ` Roopa Prabhu
2014-11-26 1:35 ` Scott Feldman
2014-11-28 10:05 ` Roopa Prabhu
2014-11-28 10:51 ` Scott Feldman
2014-11-28 13:17 ` Jamal Hadi Salim
2014-11-28 13:27 ` Jiri Pirko
2014-11-28 16:23 ` Roopa Prabhu
2014-11-25 10:28 ` [patch net-next v3 09/17] bridge: add API to notify bridge driver of learned FBD on offloaded device Jiri Pirko
2014-11-25 16:01 ` Jamal Hadi Salim
2014-11-25 16:38 ` Andy Gospodarek
2014-11-25 22:36 ` Thomas Graf
2014-11-26 1:48 ` Scott Feldman
2014-11-26 10:26 ` Jiri Pirko
2014-11-25 22:44 ` Florian Fainelli
2014-11-26 2:03 ` Scott Feldman
2014-11-26 2:34 ` Florian Fainelli [this message]
2014-11-26 2:40 ` Scott Feldman
2014-11-26 8:16 ` Jiri Pirko
2014-11-26 3:22 ` Jamal Hadi Salim
2014-11-25 10:28 ` [patch net-next v3 10/17] rocker: implement rocker ofdpa flow table manipulation Jiri Pirko
2014-11-25 16:03 ` Jamal Hadi Salim
2014-11-25 10:28 ` [patch net-next v3 11/17] rocker: implement L2 bridge offloading Jiri Pirko
2014-11-25 16:04 ` Jamal Hadi Salim
2014-11-25 17:11 ` David Miller
2014-11-25 10:28 ` [patch net-next v3 12/17] rocker: implement ndo_fdb_dump Jiri Pirko
2014-11-25 16:04 ` Jamal Hadi Salim
2014-11-25 10:28 ` [patch net-next v3 13/17] bridge: move private brport flags to if_bridge.h so port drivers can use flags Jiri Pirko
2014-11-25 16:01 ` Andy Gospodarek
2014-11-25 16:05 ` Jamal Hadi Salim
2014-11-25 22:20 ` Florian Fainelli
2014-11-25 22:48 ` Thomas Graf
2014-11-26 12:12 ` Jiri Pirko
2014-11-25 10:28 ` [patch net-next v3 14/17] bridge: add new brport flag LEARNING_SYNC Jiri Pirko
2014-11-25 16:05 ` Roopa Prabhu
2014-11-25 16:06 ` Jamal Hadi Salim
2014-11-25 16:40 ` Andy Gospodarek
2014-11-25 10:28 ` [patch net-next v3 15/17] bridge: add new hwmode swdev Jiri Pirko
2014-11-25 16:03 ` Roopa Prabhu
2014-11-25 16:17 ` Andy Gospodarek
2014-11-25 22:56 ` Thomas Graf
2014-11-25 16:07 ` Jamal Hadi Salim
2014-11-25 23:00 ` Thomas Graf
2014-11-25 10:28 ` [patch net-next v3 16/17] bridge: add brport flags to dflt bridge_getlink Jiri Pirko
2014-11-25 16:08 ` Jamal Hadi Salim
2014-11-25 17:02 ` Scott Feldman
2014-11-25 17:48 ` Andy Gospodarek
2014-11-25 22:07 ` Thomas Graf
2014-11-26 9:25 ` Jiri Pirko
2014-11-26 10:48 ` Thomas Graf
2014-11-25 10:28 ` [patch net-next v3 17/17] rocker: add ndo_bridge_setlnk/getlink support for learning policy Jiri Pirko
2014-11-25 16:09 ` Jamal Hadi Salim
2014-11-25 18:55 ` Scott Feldman
2014-11-25 19:00 ` Jamal Hadi Salim
2014-11-25 20:42 ` Jiri Pirko
2014-11-26 11:07 ` Thomas Graf
2014-11-26 11:27 ` Jiri Pirko
2014-11-26 11:30 ` Thomas Graf
2014-11-26 11:42 ` Jiri Pirko
-- strict thread matches above, loose matches on Subject: below --
2014-11-26 7:37 [patch net-next v3 09/17] bridge: add API to notify bridge driver of learned FBD on offloaded device Arad, Ronen
2014-11-27 7:03 ` Scott Feldman
2014-11-27 7:37 ` Arad, Ronen
2014-11-27 19:36 ` John Fastabend
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=54753C1F.1080109@gmail.com \
--to=f.fainelli@gmail.com \
--cc=andy@greyhouse.net \
--cc=azhou@nicira.com \
--cc=ben@decadent.org.uk \
--cc=davem@davemloft.net \
--cc=dborkman@redhat.com \
--cc=edumazet@google.com \
--cc=jeffrey.t.kirsher@intel.com \
--cc=jesse@nicira.com \
--cc=jhs@mojatatu.com \
--cc=jiri@resnulli.us \
--cc=john.r.fastabend@intel.com \
--cc=linville@tuxdriver.com \
--cc=netdev@vger.kernel.org \
--cc=nhorman@tuxdriver.com \
--cc=ogerlitz@mellanox.com \
--cc=pshelar@nicira.com \
--cc=roopa@cumulusnetworks.com \
--cc=sfeldma@gmail.com \
--cc=stephen@networkplumber.org \
--cc=tgraf@suug.ch \
--cc=vyasevic@redhat.com \
--cc=xiyou.wangcong@gmail.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 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).