Bug 16183

Summary: sch_teql no longer works post 2.6.30
Product: Networking Reporter: Tom Hughes (tom)
Component: IPV4Assignee: Stephen Hemminger (stephen)
Status: RESOLVED CODE_FIX    
Severity: normal CC: akpm, alan
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.31 through 2.6.34 Subsystem:
Regression: Yes Bisected commit-id:
Attachments: Patch to fix sch_teql

Description Tom Hughes 2010-06-11 15:56:40 UTC
Created attachment 26729 [details]
Patch to fix sch_teql

The sch_teql module, which can be used to load balance over a set of underlying interfaces, stopped working after 2.6.30 and has been broken in all kernels since then.

The problem is that the transmit routine relies on being able to access the destination address in the skb in order to do ARP resolution once it has decided which underlying interface it is going to transmit through.

In 2.6.31 the IFF_XMIT_DST_RELEASE flag was introduced, and set by default for all interfaces, which causes the destination address to be release before the transmit routine for the interface is called.

The solution (implemented in the attached patch) is to clear that flag for teql interfaces.
Comment 1 Andrew Morton 2010-06-14 21:56:53 UTC
Please don't send patches via bugzilla - it causes lots of problems with
our usual patch management and review processes.

Please send this patch via email as per Documentation/SubmittingPatches. 
Suitable recipients may be found via scripts/get_maintainer.pl.  Please
also cc myself on the email.

Thanks.
Comment 2 Tom Hughes 2010-06-16 08:27:38 UTC
Email sent as requested.