mbox series

[v2,net,0/3] Fixes for Felix DSA driver calculation of tc-taprio guard bands

Message ID 20220905170125.1269498-1-vladimir.oltean@nxp.com (mailing list archive)
Headers show
Series Fixes for Felix DSA driver calculation of tc-taprio guard bands | expand

Message

Vladimir Oltean Sept. 5, 2022, 5:01 p.m. UTC
This series fixes some bugs which are not quite new, but date from v5.13
when static guard bands were enabled by Michael Walle to prevent
tc-taprio overruns.

The investigation started when Xiaoliang asked privately what is the
expected max SDU for a traffic class when its minimum gate interval is
10 us. The answer, as it turns out, is not an L1 size of 1250 octets,
but 1245 octets, since otherwise, the switch will not consider frames
for egress scheduling, because the static guard band is exactly as large
as the time interval. The switch needs a minimum of 33 ns outside of the
guard band to consider a frame for scheduling, and the reduction of the
max SDU by 5 provides exactly for that.

The fix for that (patch 1/3) is relatively small, but during testing, it
became apparent that cut-through forwarding prevents oversized frame
dropping from working properly. This is solved through the larger patch
2/3. Finally, patch 3/3 fixes one more tc-taprio locking problem found
through code inspection.

Vladimir Oltean (3):
  net: dsa: felix: tc-taprio intervals smaller than MTU should send at
    least one packet
  net: dsa: felix: disable cut-through forwarding for frames oversized
    for tc-taprio
  net: dsa: felix: access QSYS_TAG_CONFIG under tas_lock in
    vsc9959_sched_speed_set

 drivers/net/dsa/ocelot/felix_vsc9959.c | 161 +++++++++++++++++--------
 1 file changed, 112 insertions(+), 49 deletions(-)

Comments

patchwork-bot+netdevbpf@kernel.org Sept. 7, 2022, 1 p.m. UTC | #1
Hello:

This series was applied to netdev/net.git (master)
by David S. Miller <davem@davemloft.net>:

On Mon,  5 Sep 2022 20:01:22 +0300 you wrote:
> This series fixes some bugs which are not quite new, but date from v5.13
> when static guard bands were enabled by Michael Walle to prevent
> tc-taprio overruns.
> 
> The investigation started when Xiaoliang asked privately what is the
> expected max SDU for a traffic class when its minimum gate interval is
> 10 us. The answer, as it turns out, is not an L1 size of 1250 octets,
> but 1245 octets, since otherwise, the switch will not consider frames
> for egress scheduling, because the static guard band is exactly as large
> as the time interval. The switch needs a minimum of 33 ns outside of the
> guard band to consider a frame for scheduling, and the reduction of the
> max SDU by 5 provides exactly for that.
> 
> [...]

Here is the summary with links:
  - [v2,net,1/3] net: dsa: felix: tc-taprio intervals smaller than MTU should send at least one packet
    https://git.kernel.org/netdev/net/c/11afdc6526de
  - [v2,net,2/3] net: dsa: felix: disable cut-through forwarding for frames oversized for tc-taprio
    https://git.kernel.org/netdev/net/c/843794bbdef8
  - [v2,net,3/3] net: dsa: felix: access QSYS_TAG_CONFIG under tas_lock in vsc9959_sched_speed_set
    https://git.kernel.org/netdev/net/c/a4bb481aeb9d

You are awesome, thank you!