• Florian Fainelli's avatar
    net: systemport: Fixed queue mapping in internal ring map · 5a9ef194
    Florian Fainelli authored
    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: 25c44070 ("net: systemport: Simplify queue mapping logic")
    Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    5a9ef194
bcmsysport.c 73.4 KB