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
..
9p
Nothing really exciting: some groundwork for changing virtio endian, and
2013-11-15 13:28:47 +09:00
802
mrp: add periodictimer to allow retries when packets get lost
2013-09-23 16:53:52 -04:00
8021q
vlan: Fix header ops passthru when doing TX VLAN offload.
2013-12-31 16:23:35 -05:00
appletalk
net: rework recvmsg handler msg_name and msg_namelen logic
2013-11-20 21:52:30 -05:00
atm
net: rework recvmsg handler msg_name and msg_namelen logic
2013-11-20 21:52:30 -05:00
ax25
net: rework recvmsg handler msg_name and msg_namelen logic
2013-11-20 21:52:30 -05:00
batman-adv
batman-adv: fix vlan header access
2013-12-28 14:48:40 +01:00
bluetooth
Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth
2013-12-18 13:46:08 -05:00
bridge
bridge: use spin_lock_bh() in br_multicast_set_hash_max
2014-01-06 16:39:47 -05:00
caif
net: rework recvmsg handler msg_name and msg_namelen logic
2013-11-20 21:52:30 -05:00
can
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2013-11-15 16:47:22 -08:00
ceph
net: 8021q/bluetooth/bridge/can/ceph: Remove extern from function prototypes
2013-10-19 19:12:11 -04:00
core
net: core: explicitly select a txq before doing l2 forwarding
2014-01-10 13:23:08 -05:00
dcb
dccp
dccp: catch failed request_module call in dccp_probe init
2013-12-19 19:25:50 -05:00
decnet
netfilter: pass hook ops to hookfn
2013-10-14 11:29:31 +02:00
dns_resolver
net: strict_strtoul is obsolete, use kstrtoul instead
2013-07-12 16:09:14 -07:00
dsa
net: dsa: inherit addr_assign_type along with dev_addr
2013-09-03 20:57:49 -04:00
ethernet
ethernet: use likely() for common Ethernet encap
2013-09-30 21:52:53 -07:00
hsr
net/hsr: Support iproute print_opt ('ip -details ...')
2013-11-30 12:48:14 -05:00
ieee802154
net: 6lowpan: fix lowpan_header_create non-compression memcpy call
2014-01-05 20:25:24 -05:00
ipv4
ipv4: fix tunneled VM traffic over hw VXLAN/GRE GSO NIC
2014-01-02 19:06:47 -05:00
ipv6
ipv6: add link-local, sit and loopback address with INFINITY_LIFE_TIME
2014-01-09 23:07:47 -05:00
ipx
net: rework recvmsg handler msg_name and msg_namelen logic
2013-11-20 21:52:30 -05:00
irda
net: rework recvmsg handler msg_name and msg_namelen logic
2013-11-20 21:52:30 -05:00
iucv
net: rework recvmsg handler msg_name and msg_namelen logic
2013-11-20 21:52:30 -05:00
key
net: rework recvmsg handler msg_name and msg_namelen logic
2013-11-20 21:52:30 -05:00
l2tp
ipv6: do not erase dst address with flow label destination
2013-12-10 22:51:00 -05:00
lapb
net/lapb: re-send packets on timeout
2013-09-23 16:52:45 -04:00
llc
net: llc: fix use after free in llc_ui_recvmsg
2014-01-02 19:31:09 -05:00
mac80211
net: core: explicitly select a txq before doing l2 forwarding
2014-01-10 13:23:08 -05:00
mac802154
6lowpan: set and use mac_len for mac header length
2013-10-30 17:18:46 -04:00
mpls
ipip: add GSO/TSO support
2013-10-19 19:36:19 -04:00
netfilter
netfilter: only warn once on wrong seqadj usage
2014-01-06 14:23:17 +01:00
netlabel
genetlink: only pass array to genl_register_family_with_ops()
2013-11-19 16:39:05 -05:00
netlink
genetlink/pmcraid: use proper genetlink multicast API
2013-11-28 18:26:30 -05:00
netrom
net: rework recvmsg handler msg_name and msg_namelen logic
2013-11-20 21:52:30 -05:00
nfc
NFC: Fix target mode p2p link establishment
2014-01-04 03:31:32 +01:00
openvswitch
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-11-19 15:50:47 -08:00
packet
packet: fix send path when running with proto == 0
2013-12-09 20:09:20 -05:00
phonet
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-11-19 15:50:47 -08:00
rds
rds: prevent dereference of a NULL device
2013-12-27 12:33:58 -05:00
rfkill
net: rfkill: gpio: add ACPI support
2013-10-28 15:05:25 +01:00
rose
net: rose: restore old recvmsg behavior
2013-12-29 22:33:17 -05:00
rxrpc
net: rework recvmsg handler msg_name and msg_namelen logic
2013-11-20 21:52:30 -05:00
sched
net: core: explicitly select a txq before doing l2 forwarding
2014-01-10 13:23:08 -05:00
sctp
sctp: Remove outqueue empty state
2014-01-02 17:22:48 -05:00
sunrpc
NFS client bugfixes
2013-12-05 13:05:48 -08:00
tipc
tipc: correctly unlink packets from deferred packet queue
2014-01-07 16:15:24 -05:00
unix
net: unix: allow bind to fail on mutex lock
2013-12-17 15:04:42 -05:00
vmw_vsock
net: rework recvmsg handler msg_name and msg_namelen logic
2013-11-20 21:52:30 -05:00
wimax
wimax: remove dead code
2013-11-21 13:09:42 -05:00
wireless
radiotap: fix bitmap-end-finding buffer overrun
2013-12-16 12:06:43 +01:00
x25
net: rework recvmsg handler msg_name and msg_namelen logic
2013-11-20 21:52:30 -05:00
xfrm
net: move pskb_put() to core code
2013-11-07 19:28:58 -05:00
compat.c
net: clamp ->msg_namelen instead of returning an error
2013-11-29 16:12:52 -05:00
Kconfig
kernel: remove CONFIG_USE_GENERIC_SMP_HELPERS cleanly
2013-11-21 16:42:27 -08:00
Makefile
net/hsr: Add support for the High-availability Seamless Redundancy protocol (HSRv0)
2013-11-03 23:20:14 -05:00
nonet.c
socket.c
net: clamp ->msg_namelen instead of returning an error
2013-11-29 16:12:52 -05:00
sysctl_net.c
net: Update the sysctl permissions handler to test effective uid/gid
2013-10-07 15:57:56 -04:00