Message ID | 20230415170551.3939607-5-vladimir.oltean@nxp.com (mailing list archive) |
---|---|
State | Accepted |
Commit | bddd96dd80777ec178770a953fdbb310feec29b4 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Ocelot/Felix driver support for preemptible traffic classes | expand |
Context | Check | Description |
---|---|---|
netdev/series_format | success | Posting correctly formatted |
netdev/tree_selection | success | Clearly marked for net-next |
netdev/fixes_present | success | Fixes tag not required for -next series |
netdev/header_inline | success | No static functions without inline keyword in header files |
netdev/build_32bit | success | Errors and warnings before: 18 this patch: 18 |
netdev/cc_maintainers | success | CCed 9 of 9 maintainers |
netdev/build_clang | success | Errors and warnings before: 18 this patch: 18 |
netdev/verify_signedoff | success | Signed-off-by tag matches author and committer |
netdev/deprecated_api | success | None detected |
netdev/check_selftest | success | No net selftest shell script |
netdev/verify_fixes | success | No Fixes tag |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 18 this patch: 18 |
netdev/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 7 lines checked |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/source_inline | success | Was 0 now: 0 |
On 4/15/2023 10:05 AM, Vladimir Oltean wrote: > ocelot_mm_update_port_status() updates mm->verify_status, but when the > verification state of a port changes, an IRQ isn't emitted, but rather, > only when the verification state reaches one of the final states (like > DISABLED, FAILED, SUCCEEDED) - things that would affect mm->tx_active, > which is what the IRQ *is* actually emitted for. > > That is to say, user space may miss reports of an intermediary MAC Merge > verification state (like from INITIAL to VERIFYING), unless there was an > IRQ notifying the driver of the change in mm->tx_active as well. > > This is not a huge deal, but for reliable reporting to user space, let's > call ocelot_mm_update_port_status() synchronously from > ocelot_port_get_mm(), which makes user space see the current MM status. > > Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
On Sat, Apr 15, 2023 at 08:05:48PM +0300, Vladimir Oltean wrote: > ocelot_mm_update_port_status() updates mm->verify_status, but when the > verification state of a port changes, an IRQ isn't emitted, but rather, > only when the verification state reaches one of the final states (like > DISABLED, FAILED, SUCCEEDED) - things that would affect mm->tx_active, > which is what the IRQ *is* actually emitted for. > > That is to say, user space may miss reports of an intermediary MAC Merge > verification state (like from INITIAL to VERIFYING), unless there was an > IRQ notifying the driver of the change in mm->tx_active as well. > > This is not a huge deal, but for reliable reporting to user space, let's > call ocelot_mm_update_port_status() synchronously from > ocelot_port_get_mm(), which makes user space see the current MM status. > > Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Reviewed-by: Simon Horman <simon.horman@corigine.com>
diff --git a/drivers/net/ethernet/mscc/ocelot_mm.c b/drivers/net/ethernet/mscc/ocelot_mm.c index ce6429d46814..3e458f72f645 100644 --- a/drivers/net/ethernet/mscc/ocelot_mm.c +++ b/drivers/net/ethernet/mscc/ocelot_mm.c @@ -205,6 +205,7 @@ int ocelot_port_get_mm(struct ocelot *ocelot, int port, state->tx_min_frag_size = ethtool_mm_frag_size_add_to_min(add_frag_size); state->rx_min_frag_size = ETH_ZLEN; + ocelot_mm_update_port_status(ocelot, port); state->verify_status = mm->verify_status; state->tx_active = mm->tx_active;
ocelot_mm_update_port_status() updates mm->verify_status, but when the verification state of a port changes, an IRQ isn't emitted, but rather, only when the verification state reaches one of the final states (like DISABLED, FAILED, SUCCEEDED) - things that would affect mm->tx_active, which is what the IRQ *is* actually emitted for. That is to say, user space may miss reports of an intermediary MAC Merge verification state (like from INITIAL to VERIFYING), unless there was an IRQ notifying the driver of the change in mm->tx_active as well. This is not a huge deal, but for reliable reporting to user space, let's call ocelot_mm_update_port_status() synchronously from ocelot_port_get_mm(), which makes user space see the current MM status. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> --- Diff: patch is new. drivers/net/ethernet/mscc/ocelot_mm.c | 1 + 1 file changed, 1 insertion(+)