Jason Wang
f663dd9aaf
net: core: explicitly select a txq before doing l2 forwarding
...
Currently, the tx queue were selected implicitly in ndo_dfwd_start_xmit(). The
will cause several issues:
- NETIF_F_LLTX were removed for macvlan, so txq lock were done for macvlan
instead of lower device which misses the necessary txq synchronization for
lower device such as txq stopping or frozen required by dev watchdog or
control path.
- dev_hard_start_xmit() was called with NULL txq which bypasses the net device
watchdog.
- dev_hard_start_xmit() does not check txq everywhere which will lead a crash
when tso is disabled for lower device.
Fix this by explicitly introducing a new param for .ndo_select_queue() for just
selecting queues in the case of l2 forwarding offload. netdev_pick_tx() was also
extended to accept this parameter and dev_queue_xmit_accel() was used to do l2
forwarding transmission.
With this fixes, NETIF_F_LLTX could be preserved for macvlan and there's no need
to check txq against NULL in dev_hard_start_xmit(). Also there's no need to keep
a dedicated ndo_dfwd_start_xmit() and we can just reuse the code of
dev_queue_xmit() to do the transmission.
In the future, it was also required for macvtap l2 forwarding support since it
provides a necessary synchronization method.
Cc: John Fastabend <john.r.fastabend@intel.com>
Cc: Neil Horman <nhorman@tuxdriver.com>
Cc: e1000-devel@lists.sourceforge.net
Signed-off-by: Jason Wang <jasowang@redhat.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: John Fastabend <john.r.fastabend@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-01-10 13:23:08 -05:00
..
aes_ccm.c
mac80211: port CCMP to cryptoapi's CCM driver
2013-10-11 15:38:20 +02:00
aes_ccm.h
mac80211: port CCMP to cryptoapi's CCM driver
2013-10-11 15:38:20 +02:00
aes_cmac.c
mac80211: include export.h in aes_cmac
2012-11-07 18:01:54 +01:00
aes_cmac.h
mac80211: fix CMAC races
2011-07-08 11:11:20 -04:00
agg-rx.c
mac80211: improve aggregation debug messages
2013-01-18 21:55:15 +01:00
agg-tx.c
mac80211: fix aggregation state with current drivers
2013-01-24 15:43:51 +01:00
cfg.c
mac80211: fix the mesh channel switch support
2013-11-25 16:50:13 +01:00
cfg.h
chan.c
mac80211: implement STA CSA for drivers using channel contexts
2013-10-02 18:18:23 +02:00
debug.h
mac80211: process the CSA frame for mesh accordingly
2013-10-28 15:05:28 +01:00
debugfs.c
mac80211: fix some snprintf misuses
2013-10-01 12:16:51 +02:00
debugfs.h
mac80211: use __printf attribute in debugfs
2012-10-18 09:01:57 +02:00
debugfs_key.c
mac80211: move sdata debugfs dir to vif
2013-03-18 20:10:04 +01:00
debugfs_key.h
mac80211: support separate default keys
2010-12-13 15:23:29 -05:00
debugfs_netdev.c
mac80211: implement SMPS for AP
2013-10-28 15:05:11 +01:00
debugfs_netdev.h
debugfs_sta.c
mac80211: add debugfs for driver-buffered TID bitmap
2013-08-01 15:08:24 +02:00
debugfs_sta.h
driver-ops.h
mac80211: add explicit IBSS driver operations
2013-10-01 12:17:45 +02:00
event.c
ht.c
mac80211: implement SMPS for AP
2013-10-28 15:05:11 +01:00
ibss.c
mac80211: check csa wiphy flag in ibss before switching
2013-12-02 11:54:13 +01:00
ieee80211_i.h
mac80211: fix the mesh channel switch support
2013-11-25 16:50:13 +01:00
iface.c
net: core: explicitly select a txq before doing l2 forwarding
2014-01-10 13:23:08 -05:00
Kconfig
mac80211: process the CSA frame for mesh accordingly
2013-10-28 15:05:28 +01:00
key.c
mac80211: use ERR_CAST()
2013-09-26 13:21:38 +02:00
key.h
mac80211: port CCMP to cryptoapi's CCM driver
2013-10-11 15:38:20 +02:00
led.c
mac80211: use oneshot blink API for LED triggers
2013-08-01 10:48:49 +02:00
led.h
mac80211: use oneshot blink API for LED triggers
2013-08-01 10:48:49 +02:00
main.c
mac80211: set hw initial idle state
2013-11-25 16:56:54 +01:00
Makefile
mac80211: mesh power save basics
2013-02-04 18:57:47 +01:00
mesh.c
mac80211: fix the mesh channel switch support
2013-11-25 16:50:13 +01:00
mesh.h
mac80211: update mesh beacon on workqueue
2013-06-18 15:57:27 +02:00
mesh_hwmp.c
mac80211: parse VHT channel switch IEs
2013-04-16 15:29:45 +02:00
mesh_pathtbl.c
mac80211: return new mpath from mesh_path_add()
2013-04-08 09:16:59 +02:00
mesh_plink.c
mac80211: fixes for mesh powersave logic
2013-10-28 15:05:26 +01:00
mesh_ps.c
mac80211: fixes for mesh powersave logic
2013-10-28 15:05:26 +01:00
mesh_sync.c
mac80211: clean up mesh code
2013-02-15 15:46:37 +01:00
michael.c
michael.h
mlme.c
mac80211: fix connection polling
2013-11-25 16:50:14 +01:00
offchannel.c
mac80211: Run deferred scan if last roc_list item is not started
2013-09-30 12:36:56 +02:00
pm.c
mac80211: fix monitor interface suspend crash regression
2013-07-23 14:02:08 +02:00
rate.c
mac80211: respect rate mask in TX
2013-10-15 15:16:29 +02:00
rate.h
net: misc: Remove extern from function prototypes
2013-10-19 19:12:11 -04:00
rc80211_minstrel.c
mac80211: add fixed_rate management to minstrel rc
2013-09-26 13:27:12 +02:00
rc80211_minstrel.h
mac80211/minstrel: use the new rate control API
2013-04-22 16:16:41 +02:00
rc80211_minstrel_debugfs.c
mac80211: cosmetics for minstrel_debugfs
2013-04-17 17:08:23 +02:00
rc80211_minstrel_ht.c
mac80211: use capped prob when computing throughputs
2013-11-25 16:56:17 +01:00
rc80211_minstrel_ht.h
mac80211/minstrel_ht: use the new rate control API
2013-04-22 16:16:41 +02:00
rc80211_minstrel_ht_debugfs.c
mac80211/minstrel_ht: add support for using CCK rates
2013-02-13 10:56:33 +01:00
rc80211_pid.h
Fix common misspellings
2011-03-31 11:26:23 -03:00
rc80211_pid_algo.c
mac80211/rc80211: add chandef to rate initialization
2013-07-16 09:58:02 +03:00
rc80211_pid_debugfs.c
mac80211: fix some snprintf misuses
2013-10-01 12:16:51 +02:00
rx.c
mac80211: don't attempt to reorder multicast frames
2013-11-25 16:50:12 +01:00
scan.c
mac80211: fix scheduled scan rtnl deadlock
2013-11-25 16:50:04 +01:00
spectmgmt.c
mac80211: fix the mesh channel switch support
2013-11-25 16:50:13 +01:00
sta_info.c
mac80211: implement SMPS for AP
2013-10-28 15:05:11 +01:00
sta_info.h
mac80211: implement SMPS for AP
2013-10-28 15:05:11 +01:00
status.c
Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
2013-11-05 15:49:02 -05:00
tkip.c
mac80211: use just spin_lock() in ieee80211_get_tkip_p2k()
2013-05-16 22:38:06 +02:00
tkip.h
mac80211: fix TKIP races, make API easier to use
2011-07-08 11:11:19 -04:00
trace.c
mac80211: trace debug messages
2012-06-24 11:33:18 +02:00
trace.h
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem
2013-10-17 14:02:07 -04:00
tx.c
mac80211: move "bufferable MMPDU" check to fix AP mode scan
2013-12-16 21:44:05 +01:00
util.c
mac80211: fix the mesh channel switch support
2013-11-25 16:50:13 +01:00
vht.c
ieee80211: fix vht cap definitions
2013-10-01 12:17:08 +02:00
wep.c
wireless: move crypto constants to ieee80211.h
2013-05-16 22:39:41 +02:00
wep.h
mac80211: move RX WEP weak IV counting
2012-03-13 14:54:16 -04:00
wme.c
mac80211: mesh power save basics
2013-02-04 18:57:47 +01:00
wme.h
mac80211: save wmm_acm per sdata
2012-06-20 17:35:22 +02:00
wpa.c
mac80211: port CCMP to cryptoapi's CCM driver
2013-10-11 15:38:20 +02:00
wpa.h
mac80211: fix tx->skb NULL pointer dereference
2012-01-16 15:01:16 -05:00