Files
linux/include/linux
David S. Miller c726095ec7 vlan: Fix header ops passthru when doing TX VLAN offload.
[ Upstream commit 2205369a31 ]

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-01-15 15:28:49 -08:00
..
2013-05-17 14:31:05 -04:00
2013-07-25 14:07:23 -07:00
2013-12-04 10:56:22 -08:00
2013-05-07 19:46:02 -07:00
2013-03-23 16:11:31 -07:00
2013-03-22 15:18:18 -07:00
2013-12-08 07:29:27 -08:00
2013-05-01 16:36:22 +05:30
2013-03-28 10:10:25 -06:00
2013-07-28 16:30:11 -07:00
2013-05-07 18:38:27 -07:00
2013-04-29 18:28:40 -07:00
2013-10-13 16:08:28 -07:00
2013-07-28 16:30:05 -07:00
2013-04-30 17:04:06 -07:00
2013-04-01 11:04:50 -07:00
2014-01-09 12:24:23 -08:00
2013-04-30 17:04:00 -07:00
2013-10-13 16:08:35 -07:00
2013-07-21 18:21:29 -07:00
2014-01-15 15:28:47 -08:00
2013-05-04 14:47:26 -04:00
2013-04-29 15:54:28 -07:00
2013-05-28 11:05:08 +02:00
2013-04-29 15:54:28 -07:00
2013-04-12 10:26:23 +02:00
2013-04-09 14:13:29 -04:00
2013-03-29 15:31:30 -04:00
2013-04-30 15:50:12 +05:30
2013-08-20 08:43:02 -07:00
2013-03-21 11:47:51 -04:00
2013-03-20 12:10:38 -04:00
2013-03-28 11:10:22 -07:00
2013-07-28 16:29:55 -07:00
2013-04-29 15:54:37 -07:00