[PATCH net-next v10 0/7] net: stmmac: FPE via ethtool + tc

Furong Xu
2024-09-06T14:30:38Z

Move the Frame Preemption(FPE) over to the new standard API which uses
ethtool-mm/tc-mqprio/tc-taprio.

Changes in v10:
1. fixed a stacktrace caused by timer_shutdown_sync()
on an uninitialized timer
2. ignore FPE_EVENT_RRSP events if we are not in the
ETHTOOL_MM_VERIFY_STATUS_VERIFYING state

Changes in v9:
1. drop redundant netif_device_present() since ethnl_ops_begin()
has its own netif_device_present() call
2. open-code some variables of struct ethtool_mm_state directly
in struct stmmac_fpe_cfg
3. convert timer_delete_sync() to timer_shutdown_sync(), thus the
timer will not be rearmed again
4. fixed variable declarations in the middle of the scope

Changes in v8:
1. use timer_delete_sync() instead of deprecated del_timer_sync()
2. check netif_running() to guarantee synchronization rules between
mod_timer() and timer_delete_sync()
3. split up stmmac_tc_ops of dwmac4, dwmac4+ and dwxgmac to give user
more descriptive error message
4. fix wrong indentation about switch-case
5. delete more unbalanced logs

Changes in v7:
1. code style fixes and clean up warnings reported by
patchwork netdev checks, no functional change intended

Changes in v6:
1. new FPE verification process based on Vladimir Oltean's proposal
2. embed ethtool_mm_state into stmmac_fpe_cfg
3. convert some bit ops to u32_replace_bits
4. register name and function name update to be more descriptive
5. split up stmmac_tc_ops of dwmac4+ and dwxgmac, they have different
implementations about mqprio
6. some code style fixes

Changes in v5:
1. fix typo in commit message
2. drop FPE capability check in tc-mqprio/tc-taprio

Changes in v4:
1. reorder FPE-related declarations and definitions into clean groups
2. move mm_lock to stmmac_fpe_cfg.lock
3. protect user configurations across NIC up/down
4. block stmmac_set_mm() when fpe_task is in progress to finish
5. convert to ethtool_dev_mm_supported() to check FPE capability in
tc-mqprio/tc-taprio
6. silence FPE workqueue start/stop logs

Changes in v3:
1. avoid races among ISR, workqueue, link update and
register configuration.
2. update FPE verification retry logic, so it retries
and fails as expected.

Changes in v2:
1. refactor FPE verification process
2. suspend/resume and kselftest-ethtool_mm, all test cases passed
3. handle TC:TXQ remapping for DWMAC CORE4+

Furong Xu (7):
net: stmmac: move stmmac_fpe_cfg to stmmac_priv data
net: stmmac: drop stmmac_fpe_handshake
net: stmmac: refactor FPE verification process
net: stmmac: configure FPE via ethtool-mm
net: stmmac: support fp parameter of tc-mqprio
net: stmmac: support fp parameter of tc-taprio
net: stmmac: silence FPE kernel logs

.../net/ethernet/stmicro/stmmac/dwmac4_core.c | 10 +-
drivers/net/ethernet/stmicro/stmmac/dwmac5.c | 96 +++++-
drivers/net/ethernet/stmicro/stmmac/dwmac5.h | 12 +-
.../ethernet/stmicro/stmmac/dwxgmac2_core.c | 9 +-
drivers/net/ethernet/stmicro/stmmac/hwif.c | 6 +-
drivers/net/ethernet/stmicro/stmmac/hwif.h | 22 +-
drivers/net/ethernet/stmicro/stmmac/stmmac.h | 35 ++-
.../ethernet/stmicro/stmmac/stmmac_ethtool.c | 96 ++++++
.../net/ethernet/stmicro/stmmac/stmmac_main.c | 273 ++++++++----------
.../net/ethernet/stmicro/stmmac/stmmac_tc.c | 153 +++++++---
include/linux/stmmac.h | 28 --
11 files changed, 497 insertions(+), 243 deletions(-)

--
2.34.1