From: Eric Dumazet <eric.dumazet@xxxxxxxxx> Date: Fri, 15 Jan 2010 07:57:56 +0100 > Le 15/01/2010 07:39, Changli Gao a écrit : >> The code bellow is from my ifb-mq.patch >> #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) >> case __constant_htons(ETH_P_IPV6): >> process_ipv6: >> if (unlikely(!pskb_may_pull(skb, sizeof(struct ipv6hdr)))) >> goto process_other; >> addr1 = ipv6_hdr(skb)->saddr.s6_addr32[3]; >> addr2 = ipv6_hdr(skb)->daddr.s6_addr32[3]; >> ihl = ipv6_skip_exthdr(skb, sizeof(struct ipv6hdr), &ip_proto); >> if (unlikely(ihl < 0)) >> goto process_other_trans; >> break; >> #endif >> >> > > Thanks Changli ! Actually, no thanks. Have you actually taken a look at ipv6_skip_exthdr()? Do that, then tell me that you want the extra function call, plus all of the processing and data touching that that function does, just to handle the case that there "might" be ipv6 extension headers there. It is the exception rather than the rule, and I think it's just assume we have a real protocol header next. And that's what skb_tx_hash() used to do too before we started using the recorded RX queue and socket hash values. Nobody cared and nobody complained. Guess why? Because in practice it doesn't matter. -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html