]> git.baikalelectronics.ru Git - kernel.git/commit
net: systemport: Fixed queue mapping in internal ring map
authorFlorian Fainelli <f.fainelli@gmail.com>
Thu, 16 Jan 2020 21:08:58 +0000 (13:08 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 17 Jan 2020 12:31:14 +0000 (13:31 +0100)
commitb73be092d6d4c0d4586fddc8a5c3bbb519f6c459
tree2c80e8ef968fd652c005b9df0fa0a9cf1abcfde9
parent0eb35a2d5e6ceff0e71343e865c9eb49790fbc48
net: systemport: Fixed queue mapping in internal ring map

We would not be transmitting using the correct SYSTEMPORT transmit queue
during ndo_select_queue() which looks up the internal TX ring map
because while establishing the mapping we would be off by 4, so for
instance, when we populate switch port mappings we would be doing:

switch port 0, queue 0 -> ring index #0
switch port 0, queue 1 -> ring index #1
...
switch port 0, queue 3 -> ring index #3
switch port 1, queue 0 -> ring index #8 (4 + 4 * 1)
...

instead of using ring index #4. This would cause our ndo_select_queue()
to use the fallback queue mechanism which would pick up an incorrect
ring for that switch port. Fix this by using the correct switch queue
number instead of SYSTEMPORT queue number.

Fixes: e3f78751c97b ("net: systemport: Simplify queue mapping logic")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bcmsysport.c