diff options
author | Furong Xu <0x1207@gmail.com> | 2024-09-06 17:30:08 +0300 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2024-09-11 02:42:11 +0300 |
commit | 8d43e99a5a03ae8307b2d588ec080308f35ebc9e (patch) | |
tree | 5483e40cb8c6282abf7dba12ae2dd0f5488ef5a8 /fs/freevxfs | |
parent | 59dd7fc932e54083b0e7d3e1f4ddf6ba3a158b0e (diff) | |
download | linux-8d43e99a5a03ae8307b2d588ec080308f35ebc9e.tar.xz |
net: stmmac: refactor FPE verification process
Drop driver defined stmmac_fpe_state, and switch to common
ethtool_mm_verify_status for local TX verification status.
Local side and remote side verification processes are completely
independent. There is no reason at all to keep a local state and
a remote state.
Add a spinlock to avoid races among ISR, timer, link update
and register configuration.
This patch is based on Vladimir Oltean's proposal.
Vladimir Oltean says:
====================
In the INITIAL state, the timer sends MPACKET_VERIFY. Eventually the
stmmac_fpe_event_status() IRQ fires and advances the state to VERIFYING,
then rearms the timer after verify_time ms. If a subsequent IRQ comes in
and modifies the state to SUCCEEDED after getting MPACKET_RESPONSE, the
timer sees this. It must enable the EFPE bit now. Otherwise, it
decrements the verify_limit counter and tries again. Eventually it
moves the status to FAILED, from which the IRQ cannot move it anywhere
else, except for another stmmac_fpe_apply() call.
====================
Co-developed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: Furong Xu <0x1207@gmail.com>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Link: https://patch.msgid.link/151f86c8428eba967039718c6bf90a7d841e703b.1725631883.git.0x1207@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'fs/freevxfs')
0 files changed, 0 insertions, 0 deletions