• Helmut Schaa's avatar
    net: fix tx queue selection for bridged devices implementing select_queue · deabc772
    Helmut Schaa authored
    When a net device is implementing the select_queue callback and is part of
    a bridge, frames coming from the bridge already have a tx queue associated
    to the socket (introduced in commit a4ee3ce3,
    "net: Use sk_tx_queue_mapping for connected sockets"). The call to
    sk_tx_queue_get will then return the tx queue used by the bridge instead
    of calling the select_queue callback.
    
    In case of mac80211 this broke QoS which is implemented by using the
    select_queue callback. Furthermore it introduced problems with rt2x00
    because frames with the same TID and RA sometimes appeared on different
    tx queues which the hw cannot handle correctly.
    
    Fix this by always calling select_queue first if it is available and only
    afterwards use the socket tx queue mapping.
    Signed-off-by: default avatarHelmut Schaa <helmut.schaa@googlemail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    deabc772
dev.c 147 KB