remarkable-linux/net/core
David S. Miller 2205369a31 vlan: Fix header ops passthru when doing TX VLAN offload.
When the vlan code detects that the real device can do TX VLAN offloads
in hardware, it tries to arrange for the real device's header_ops to
be invoked directly.

But it does so illegally, by simply hooking the real device's
header_ops up to the VLAN device.

This doesn't work because we will end up invoking a set of header_ops
routines which expect a device type which matches the real device, but
will see a VLAN device instead.

Fix this by providing a pass-thru set of header_ops which will arrange
to pass the proper real device instead.

To facilitate this add a dev_rebuild_header().  There are
implementations which provide a ->cache and ->create but not a
->rebuild (f.e. PLIP).  So we need a helper function just like
dev_hard_header() to avoid crashes.

Use this helper in the one existing place where the
header_ops->rebuild was being invoked, the neighbour code.

With lots of help from Florian Westphal.

Signed-off-by: David S. Miller <davem@davemloft.net>
2013-12-31 16:23:35 -05:00
..
datagram.c net, datagram: fix the incorrect comment in zerocopy_sg_from_iovec() 2013-10-29 00:19:04 -04:00
dev.c net: allow netdev_all_upper_get_next_dev_rcu with rtnl lock held 2013-12-17 21:19:08 -08:00
dev_addr_lists.c net, mc: fix the incorrect comments in two mc-related functions 2013-10-29 00:19:05 -04:00
dev_ioctl.c net: fix kernel deadlock with interface rename and netdev name retrieval. 2013-06-26 13:42:54 -07:00
drop_monitor.c net: drop_monitor: fix the value of maxattr 2013-12-09 21:10:38 -05:00
dst.c net: pass info struct via netdevice notifier 2013-05-28 13:11:01 -07:00
ethtool.c net: Add layer 2 hardware acceleration operations for macvlan devices 2013-11-07 19:11:41 -05:00
fib_rules.c net: Fix "ip rule delete table 256" 2013-11-08 14:53:10 -05:00
filter.c net: fix unsafe set_memory_rw from softirq 2013-10-07 15:16:45 -04:00
flow.c net: delete __cpuinit usage from all net files 2013-07-14 19:36:58 -04:00
flow_dissector.c net: flow_dissector: small optimizations in IPv4 dissect 2013-11-08 13:30:02 -05:00
gen_estimator.c net_sched: add 64bit rate estimators 2013-06-11 02:51:03 -07:00
gen_stats.c net_sched: add 64bit rate estimators 2013-06-11 02:51:03 -07:00
iovec.c net: rework recvmsg handler msg_name and msg_namelen logic 2013-11-20 21:52:30 -05:00
link_watch.c net: make all team port device link events urgent 2013-06-13 02:31:41 -07:00
Makefile
neighbour.c vlan: Fix header ops passthru when doing TX VLAN offload. 2013-12-31 16:23:35 -05:00
net-procfs.c rps: selective flow shedding during softnet overflow 2013-05-20 13:48:04 -07:00
net-sysfs.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-11-13 17:40:34 +09:00
net-sysfs.h
net-traces.c
net_namespace.c userns: Kill nsown_capable it makes the wrong thing easy 2013-08-30 23:44:11 -07:00
netevent.c
netpoll.c netpoll: fix rx_hook() interface by passing the skb 2013-10-25 19:26:58 -04:00
netprio_cgroup.c cgroup: netprio: remove unnecessary task_netprioidx 2013-10-08 16:27:34 -04:00
pktgen.c {pktgen, xfrm} Update IPv4 header total len and checksum after tranformation 2013-12-01 20:33:52 -05:00
request_sock.c
rtnetlink.c net: fix rtnl notification in atomic context 2013-10-25 19:03:45 -04:00
scm.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2013-09-07 14:35:32 -07:00
secure_seq.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-10-23 16:49:34 -04:00
skbuff.c net: clear local_df when passing skb between namespaces 2013-12-05 23:42:38 -05:00
sock.c net: unix: allow set_peek_off to fail 2013-12-10 21:45:15 -05:00
sock_diag.c sock_diag: fix filter code sent to userspace 2013-06-10 22:23:32 -07:00
stream.c net: add sk_stream_is_writeable() helper 2013-07-24 17:54:48 -07:00
sysctl_net_core.c qdisc: allow setting default queuing discipline 2013-08-31 00:32:32 -04:00
timestamping.c
user_dma.c
utils.c net: make net_get_random_once irq safe 2013-10-25 19:03:39 -04:00