netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* GSO and IPv4 forwarding
@ 2010-10-26 20:02 Kevin Wilson
  2010-10-26 20:15 ` Eric Dumazet
  2010-10-26 20:19 ` David Miller
  0 siblings, 2 replies; 6+ messages in thread
From: Kevin Wilson @ 2010-10-26 20:02 UTC (permalink / raw)
  To: netdev

Hi,
When we set a netdevice to support forwarding, we disable LRO.
This is done because we don't want to forward an SKB which has been
processed by LRO.

This is done in inet_forward_change() in net/ipv4/devinet.c:
We call dev_disable_lro(dev) in this method, when setting forwarding
for the device.
As a result, in ip_forward(), the packet will be dropped. (because
skb_warn_if_lro(), called by this method,  returns TRUE)

My question is:
dev_disable_lro(dev) disable the LRO feature (NETIF_F_LRO) of the
device. But suppose I have a device where GRO is enabled (and LRO is
not). And let's say I set forwarding on this device.

it seems to me that is such case, calling dev_disable_lro(dev)  in
net_forward_change() to disable the LRO feature of the device (which
is already disabled) is not enough, and in such case , GRO packets,
which want to be forwarded,  will **not** be dropped in ip_forward().
(since kb_warn_if_lro() will return false in this case)

Is it so ? I am ready to send a patch fixing it, but I am a newbie in
kernel, so I want to ask first.

rgs,
Kevin

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2010-10-26 20:52 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-26 20:02 GSO and IPv4 forwarding Kevin Wilson
2010-10-26 20:15 ` Eric Dumazet
2010-10-26 20:26   ` Kevin Wilson
2010-10-26 20:43     ` Eric Dumazet
2010-10-26 20:52     ` Stephen Hemminger
2010-10-26 20:19 ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).