Bug 16183
Summary: | sch_teql no longer works post 2.6.30 | ||
---|---|---|---|
Product: | Networking | Reporter: | Tom Hughes (tom) |
Component: | IPV4 | Assignee: | 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 |
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. Email sent as requested. |
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.