On Mon, 30 Nov 2009, Simon Horman wrote:
> > The problem exists because IPVS does not
> > disable LRO, it must be done under RTNL and IPVS never runs
> > in this context. And LRO is not supported for forwarding:
> > http://marc.info/?l=linux-netdev&m=121389887114416&w=2
> > IPVS does not call ip_forward for DR method, that
> > is why you do not need forwarding and the LRO warning
> > does not occur before hitting the GSO code. ip_forward
> > just drops LRO packets:
> > if (skb_warn_if_lro(skb))
> > goto drop;
> Hi Julian,
> do you have any thoughts on how the code might be improved
> to handle this case a bit better?
> Perhaps something along the lines of the
> code for LRO in ip_forward?
If you want to disable LRO in IPVS
net/ipv4/devinet.c:inet_forward_change() is an example what
should be done in process context if you want to disable
LRO for all existing devices. Then call skb_warn_if_lro
near or in IP_VS_XMIT and also before calling ip_local_out().
May be LRO can be disabled when the first virtual or
may be real service is added to allow LRO to work if IPVS
is just compiled.
Julian Anastasov <ja@xxxxxx>
Please read the documentation before posting - it's available at:
LinuxVirtualServer.org mailing list - lvs-users@xxxxxxxxxxxxxxxxxxxxxx
Send requests to lvs-users-request@xxxxxxxxxxxxxxxxxxxxxx
or go to http://lists.graemef.net/mailman/listinfo/lvs-users