]> git.proxmox.com Git - mirror_ubuntu-eoan-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)
committerKhalid Elmously <khalid.elmously@canonical.com>
Fri, 14 Feb 2020 06:00:53 +0000 (01:00 -0500)
commit666f166785dcb78a4b792c38e2a4d5881866cb39
tree8a2b5c4c0eebbb1861d0e803561610abbe492b41
parent4a4278cf6f9469ca8cd6b38e946077940688e9e4
net: systemport: Fixed queue mapping in internal ring map

BugLink: https://bugs.launchpad.net/bugs/1862429
[ Upstream commit 5a9ef19454cd5daec8041bc7c3c11deb7456d9a0 ]

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: 25c440704661 ("net: systemport: Simplify queue mapping logic")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
drivers/net/ethernet/broadcom/bcmsysport.c