Thread (21 messages) 21 messages, 7 authors, 2010-01-28

Re: [PATCH v5] rps: Receive Packet Steering

From: Changli Gao <hidden>
Date: 2010-01-15 06:39:13
Also in: netfilter-devel

On Fri, Jan 15, 2010 at 2:19 PM, Eric Dumazet [off-list ref] wrote:
Le 15/01/2010 03:22, Changli Gao a écrit :
quoted
On Fri, Jan 15, 2010 at 5:56 AM, Tom Herbert [off-list ref] wrote:
quoted
+
+       if (skb->rxhash)
+               goto got_hash; /* Skip hash computation on packet header */
+
+       switch (skb->protocol) {
+       case __constant_htons(ETH_P_IP):
+               if (!pskb_may_pull(skb, sizeof(*ip)))
+                       goto done;
+
+               ip = (struct iphdr *) skb->data;
+               ip_proto = ip->protocol;
+               addr1 = ip->saddr;
+               addr2 = ip->daddr;
+               ihl = ip->ihl;
+               break;
+       case __constant_htons(ETH_P_IPV6):
+               if (!pskb_may_pull(skb, sizeof(*ip6)))
+                       goto done;
+
+               ip6 = (struct ipv6hdr *) skb->data;
+               ip_proto = ip6->nexthdr;
This code can't work, when there are extra headers. ipv6_skip_exthdr()
can be used to get the l4 header.
Could you give exact code please ?
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


-- 
Regards,
Changli Gao(xiaosuo@gmail.com)
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help