On Sun, Mar 09, 2025 at 06:46:44AM -0400, Faizal Rahim wrote: > This patch implements the "ethtool --set-mm" callback to trigger the > frame preemption verification handshake. > > Uses the MAC Merge Software Verification (mmsv) mechanism in ethtool > to perform the verification handshake for igc. > The structure fpe.mmsv is set by mmsv in ethtool and should remain > read-only for the driver. > > Other mmsv callbacks: > a) configure_tx() -> not used yet at this point > - igc lacks registers to configure FPE in the transmit direction, so > this API is not utilized for now. When igc supports preemptible queue, > driver will use this API to manage its configuration. > > b) configure_pmac() -> not used > - this callback dynamically controls pmac_enabled at runtime. For > example, mmsv calls configure_pmac() and disables pmac_enabled when > the link partner goes down, even if the user previously enabled it. > The intention is to save power but it is not feasible in igc > because it causes an endless adapter reset loop: > > 1) Board A and Board B complete the verification handshake. Tx mode > register for both boards are in TSN mode. > 2) Board B link goes down. > > On Board A: > 3) mmsv calls configure_pmac() with pmac_enabled = false. > 4) configure_pmac() in igc updates a new field based on pmac_enabled. > Driver uses this field in igc_tsn_new_flags() to indicate that the > user enabled/disabled FPE. > 5) configure_pmac() in igc calls igc_tsn_offload_apply() to check > whether an adapter reset is needed. Calls existing logic in > igc_tsn_will_tx_mode_change() and igc_tsn_new_flags(). > 6) Since pmac_enabled is now disabled and no other TSN feature is > active, igc_tsn_will_tx_mode_change() evaluates to true because Tx > mode will switch from TSN to Legacy. > 7) Driver resets the adapter. > 8) Registers are set, and Tx mode switches to Legacy. > 9) When link partner is up, steps 3–8 repeat, but this time with > pmac_enabled = true, reactivating TSN. > igc_tsn_will_tx_mode_change() evaluates to true again, since Tx > mode will switch from Legacy to TSN. > 10) Driver resets the adapter. > 11) Adapter reset completes, registers are set, and Tx mode switches to > TSN. > > On Board B: > 12) Adapter reset on Board A at step 10 causes it to detect its link > partner as down. > 13) Repeats steps 3–8. > 14) Once reset adapter on Board A is completed at step 11, it detects > its link partner as up. > 15) Repeats steps 9–11. > > - this cycle repeats indefinitely. To avoid this issue, igc only uses > mmsv.pmac_enabled to track whether FPE is enabled or disabled. > > Co-developed-by: Vinicius Costa Gomes <vinicius.gomes@xxxxxxxxx> > Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@xxxxxxxxx> > Co-developed-by: Choong Yong Liang <yong.liang.choong@xxxxxxxxxxxxxxx> > Signed-off-by: Choong Yong Liang <yong.liang.choong@xxxxxxxxxxxxxxx> > Co-developed-by: Chwee-Lin Choong <chwee.lin.choong@xxxxxxxxx> > Signed-off-by: Chwee-Lin Choong <chwee.lin.choong@xxxxxxxxx> > Signed-off-by: Faizal Rahim <faizal.abdul.rahim@xxxxxxxxxxxxxxx> > --- Reviewed-by: Vladimir Oltean <vladimir.oltean@xxxxxxx>