]> git.baikalelectronics.ru Git - kernel.git/commit
net: fix tx queue selection for bridged devices implementing select_queue
authorHelmut Schaa <helmut.schaa@googlemail.com>
Fri, 3 Sep 2010 02:39:56 +0000 (02:39 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 7 Sep 2010 20:57:20 +0000 (13:57 -0700)
commit47a054a39f9e99484b2a47b40a2507b89024e22e
tree5289c7ac29a882f8999239327c13224bf2bf0f20
parentd32dc1df58e6310ea36c5580ccac0961d5ef57d1
net: fix tx queue selection for bridged devices implementing select_queue

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 a69d10ae70f37dc104e9d1d990f287122bdbf096,
"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: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c