Vladimir Oltean
2022-Mar-24 14:27 UTC
[Bridge] [PATCH v2 net-next 2/4] net: switchdev: add support for offloading of fdb locked flag
On Thu, Mar 24, 2022 at 12:23:39PM +0100, Hans Schultz wrote:> On tor, mar 24, 2022 at 13:09, Vladimir Oltean <olteanv at gmail.com> wrote: > > On Thu, Mar 24, 2022 at 11:32:08AM +0100, Hans Schultz wrote: > >> On ons, mar 23, 2022 at 16:43, Vladimir Oltean <olteanv at gmail.com> wrote: > >> > On Wed, Mar 23, 2022 at 01:49:32PM +0100, Hans Schultz wrote: > >> >> >> Does someone have an idea why there at this point is no option to add a > >> >> >> dynamic fdb entry? > >> >> >> > >> >> >> The fdb added entries here do not age out, while the ATU entries do > >> >> >> (after 5 min), resulting in unsynced ATU vs fdb. > >> >> > > >> >> > I think the expectation is to use br_fdb_external_learn_del() if the > >> >> > externally learned entry expires. The bridge should not age by itself > >> >> > FDB entries learned externally. > >> >> > > >> >> > >> >> It seems to me that something is missing then? > >> >> My tests using trafgen that I gave a report on to Lunn generated massive > >> >> amounts of fdb entries, but after a while the ATU was clean and the fdb > >> >> was still full of random entries... > >> > > >> > I'm no longer sure where you are, sorry.. > >> > I think we discussed that you need to enable ATU age interrupts in order > >> > to keep the ATU in sync with the bridge FDB? Which means either to > >> > delete the locked FDB entries from the bridge when they age out in the > >> > ATU, or to keep refreshing locked ATU entries. > >> > So it seems that you're doing neither of those 2 things if you end up > >> > with bridge FDB entries which are no longer in the ATU. > >> > >> Any idea why G2 offset 5 ATUAgeIntEn (bit 10) is set? There is no define > >> for it, so I assume it is something default? > > > > No idea, but I can confirm that the out-of-reset value I see for > > MV88E6XXX_G2_SWITCH_MGMT on 6190 and 6390 is 0x400. It's best not to > > rely on any reset defaults though. > > I see no age out interrupts, even though the ports Age Out Int is on > (PAV bit 14) on the locked port, and the ATU entries do age out (HoldAt1 > is off). Any idea why that can be? > > I combination with this I think it would be nice to have an ability to > set the AgeOut time even though it is not per port but global.Sorry, I just don't know. Looking at the documentation for IntOnAgeOut, I see it says that for an ATU entry to trigger an age out interrupt, the port it's associated with must have IntOnAgeOut set. But your locked ATU entries aren't associated with any port, they have DPV=0, right? So will they never trigger any age out interrupt according to this? I'm not clear.
Hans Schultz
2022-Mar-25 07:50 UTC
[Bridge] [PATCH v2 net-next 2/4] net: switchdev: add support for offloading of fdb locked flag
On tor, mar 24, 2022 at 16:27, Vladimir Oltean <olteanv at gmail.com> wrote:> On Thu, Mar 24, 2022 at 12:23:39PM +0100, Hans Schultz wrote: >> On tor, mar 24, 2022 at 13:09, Vladimir Oltean <olteanv at gmail.com> wrote: >> > On Thu, Mar 24, 2022 at 11:32:08AM +0100, Hans Schultz wrote: >> >> On ons, mar 23, 2022 at 16:43, Vladimir Oltean <olteanv at gmail.com> wrote: >> >> > On Wed, Mar 23, 2022 at 01:49:32PM +0100, Hans Schultz wrote: >> >> >> >> Does someone have an idea why there at this point is no option to add a >> >> >> >> dynamic fdb entry? >> >> >> >> >> >> >> >> The fdb added entries here do not age out, while the ATU entries do >> >> >> >> (after 5 min), resulting in unsynced ATU vs fdb. >> >> >> > >> >> >> > I think the expectation is to use br_fdb_external_learn_del() if the >> >> >> > externally learned entry expires. The bridge should not age by itself >> >> >> > FDB entries learned externally. >> >> >> > >> >> >> >> >> >> It seems to me that something is missing then? >> >> >> My tests using trafgen that I gave a report on to Lunn generated massive >> >> >> amounts of fdb entries, but after a while the ATU was clean and the fdb >> >> >> was still full of random entries... >> >> > >> >> > I'm no longer sure where you are, sorry.. >> >> > I think we discussed that you need to enable ATU age interrupts in order >> >> > to keep the ATU in sync with the bridge FDB? Which means either to >> >> > delete the locked FDB entries from the bridge when they age out in the >> >> > ATU, or to keep refreshing locked ATU entries. >> >> > So it seems that you're doing neither of those 2 things if you end up >> >> > with bridge FDB entries which are no longer in the ATU. >> >> >> >> Any idea why G2 offset 5 ATUAgeIntEn (bit 10) is set? There is no define >> >> for it, so I assume it is something default? >> > >> > No idea, but I can confirm that the out-of-reset value I see for >> > MV88E6XXX_G2_SWITCH_MGMT on 6190 and 6390 is 0x400. It's best not to >> > rely on any reset defaults though. >> >> I see no age out interrupts, even though the ports Age Out Int is on >> (PAV bit 14) on the locked port, and the ATU entries do age out (HoldAt1 >> is off). Any idea why that can be? >> >> I combination with this I think it would be nice to have an ability to >> set the AgeOut time even though it is not per port but global. > > Sorry, I just don't know. Looking at the documentation for IntOnAgeOut, > I see it says that for an ATU entry to trigger an age out interrupt, the > port it's associated with must have IntOnAgeOut set. > But your locked ATU entries aren't associated with any port, they have > DPV=0, right? So will they never trigger any age out interrupt according > to this? I'm not clear.I think that's absolutely right. That leaves two options. Either "port 10" if it has IntOnAgeOut setting, or the reason why I wrote my comments in this part of the code, that it should be able to add a dynamic entry in the bridge module from the driver.
Hans Schultz
2022-Mar-25 09:24 UTC
[Bridge] [PATCH v2 net-next 2/4] net: switchdev: add support for offloading of fdb locked flag
On tor, mar 24, 2022 at 16:27, Vladimir Oltean <olteanv at gmail.com> wrote:> On Thu, Mar 24, 2022 at 12:23:39PM +0100, Hans Schultz wrote: >> On tor, mar 24, 2022 at 13:09, Vladimir Oltean <olteanv at gmail.com> wrote: >> > On Thu, Mar 24, 2022 at 11:32:08AM +0100, Hans Schultz wrote: >> >> On ons, mar 23, 2022 at 16:43, Vladimir Oltean <olteanv at gmail.com> wrote: >> >> > On Wed, Mar 23, 2022 at 01:49:32PM +0100, Hans Schultz wrote: >> >> >> >> Does someone have an idea why there at this point is no option to add a >> >> >> >> dynamic fdb entry? >> >> >> >> >> >> >> >> The fdb added entries here do not age out, while the ATU entries do >> >> >> >> (after 5 min), resulting in unsynced ATU vs fdb. >> >> >> > >> >> >> > I think the expectation is to use br_fdb_external_learn_del() if the >> >> >> > externally learned entry expires. The bridge should not age by itself >> >> >> > FDB entries learned externally. >> >> >> > >> >> >> >> >> >> It seems to me that something is missing then? >> >> >> My tests using trafgen that I gave a report on to Lunn generated massive >> >> >> amounts of fdb entries, but after a while the ATU was clean and the fdb >> >> >> was still full of random entries... >> >> > >> >> > I'm no longer sure where you are, sorry.. >> >> > I think we discussed that you need to enable ATU age interrupts in order >> >> > to keep the ATU in sync with the bridge FDB? Which means either to >> >> > delete the locked FDB entries from the bridge when they age out in the >> >> > ATU, or to keep refreshing locked ATU entries. >> >> > So it seems that you're doing neither of those 2 things if you end up >> >> > with bridge FDB entries which are no longer in the ATU. >> >> >> >> Any idea why G2 offset 5 ATUAgeIntEn (bit 10) is set? There is no define >> >> for it, so I assume it is something default? >> > >> > No idea, but I can confirm that the out-of-reset value I see for >> > MV88E6XXX_G2_SWITCH_MGMT on 6190 and 6390 is 0x400. It's best not to >> > rely on any reset defaults though. >> >> I see no age out interrupts, even though the ports Age Out Int is on >> (PAV bit 14) on the locked port, and the ATU entries do age out (HoldAt1 >> is off). Any idea why that can be? >> >> I combination with this I think it would be nice to have an ability to >> set the AgeOut time even though it is not per port but global. > > Sorry, I just don't know. Looking at the documentation for IntOnAgeOut, > I see it says that for an ATU entry to trigger an age out interrupt, the > port it's associated with must have IntOnAgeOut set. > But your locked ATU entries aren't associated with any port, they have > DPV=0, right? So will they never trigger any age out interrupt according > to this? I'm not clear.If it could be possible to add a dynamic entry to the bridge module from the driver, that would be a solution, and since in the ATU in this case ages out entries learned, I don't see why __br_fdb_add() insists that an external learned entry must be permanent?