diff options
author | David S. Miller <davem@davemloft.net> | 2021-08-26 10:26:06 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-08-26 10:26:06 +0100 |
commit | a423cbe0f21353ac1e63aad037fd5ccf446440bc (patch) | |
tree | d98deb58c1ac2c755165b8348eb0af614a43dd09 | |
parent | 43fed4d48d325e0a61dc2638a84da972fbb1087b (diff) | |
parent | b7658ed35a5f5900f0f658e375f366513f3eb781 (diff) | |
download | lwn-a423cbe0f21353ac1e63aad037fd5ccf446440bc.tar.gz lwn-a423cbe0f21353ac1e63aad037fd5ccf446440bc.zip |
Merge branch 'dsa-hellcreek-fixes'
Kurt Kanzenbach says:
====================
net: dsa: hellcreek: 802.1Qbv Fixes
while using TAPRIO offloading on the Hirschmann hellcreek switch, I've noticed
two issues in the current implementation:
1. The gate control list is incorrectly programmed
2. The admin base time is not set properly
Fix it.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/dsa/hirschmann/hellcreek.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/dsa/hirschmann/hellcreek.c b/drivers/net/dsa/hirschmann/hellcreek.c index 5c54ae1be62c..7062db6a083c 100644 --- a/drivers/net/dsa/hirschmann/hellcreek.c +++ b/drivers/net/dsa/hirschmann/hellcreek.c @@ -1472,9 +1472,6 @@ static void hellcreek_setup_gcl(struct hellcreek *hellcreek, int port, u16 data; u8 gates; - cur++; - next++; - if (i == schedule->num_entries) gates = initial->gate_mask ^ cur->gate_mask; @@ -1503,6 +1500,9 @@ static void hellcreek_setup_gcl(struct hellcreek *hellcreek, int port, (initial->gate_mask << TR_GCLCMD_INIT_GATE_STATES_SHIFT); hellcreek_write(hellcreek, data, TR_GCLCMD); + + cur++; + next++; } } @@ -1550,7 +1550,7 @@ static bool hellcreek_schedule_startable(struct hellcreek *hellcreek, int port) /* Calculate difference to admin base time */ base_time_ns = ktime_to_ns(hellcreek_port->current_schedule->base_time); - return base_time_ns - current_ns < (s64)8 * NSEC_PER_SEC; + return base_time_ns - current_ns < (s64)4 * NSEC_PER_SEC; } static void hellcreek_start_schedule(struct hellcreek *hellcreek, int port) |