Re: [PATCH net-next] rocker: Explicitly mark learned FDB entries as offloaded
From: Vladimir Oltean <vladimir.oltean@nxp.com>
Date: 2022-10-31 09:08:29
On Mon, Oct 31, 2022 at 10:32:04AM +0200, Ido Schimmel wrote:
quoted hunk ↗ jump to hunk
On Mon, Oct 31, 2022 at 09:59:22AM +0200, Ido Schimmel wrote:quoted
diff --git a/drivers/net/ethernet/rocker/rocker_ofdpa.c b/drivers/net/ethernet/rocker/rocker_ofdpa.c index 58cf7cc54f40..f5880d0053da 100644 --- a/drivers/net/ethernet/rocker/rocker_ofdpa.c +++ b/drivers/net/ethernet/rocker/rocker_ofdpa.c@@ -1828,12 +1828,14 @@ static void ofdpa_port_fdb_learn_work(struct work_struct *work) info.vid = lw->vid; rtnl_lock(); - if (learned && removing) + if (learned && removing) { call_switchdev_notifiers(SWITCHDEV_FDB_DEL_TO_BRIDGE, lw->ofdpa_port->dev, &info.info, NULL); - else if (learned && !removing) + } else if (learned && !removing) { + info.offloaded = true; call_switchdev_notifiers(SWITCHDEV_FDB_ADD_TO_BRIDGE, lw->ofdpa_port->dev, &info.info, NULL); + } rtnl_unlock(); kfree(work);Looking at it again, this is better:diff --git a/drivers/net/ethernet/rocker/rocker_ofdpa.c b/drivers/net/ethernet/rocker/rocker_ofdpa.c index 58cf7cc54f40..4d17ae18ea61 100644 --- a/drivers/net/ethernet/rocker/rocker_ofdpa.c +++ b/drivers/net/ethernet/rocker/rocker_ofdpa.c@@ -1826,6 +1826,7 @@ static void ofdpa_port_fdb_learn_work(struct work_struct *work) info.addr = lw->addr; info.vid = lw->vid; + info.offloaded = learned && !removing; rtnl_lock(); if (learned && removing)Will send another version tomorrow assuming no other comments.
It may also be an opportunity to not take rtnl_lock() if (!learned), and this will in turn simplify the condition to just "info.offloaded = !removing"? Actually this elimination of useless work should be done at the level of ofdpa_port_fdb_learn(), if "flags" does not contain OFDPA_OP_FLAG_LEARNED.