From: Haiyang Zhang <haiya...@microsoft.com> Date: Tue, 19 Aug 2014 20:53:55 +0000
> @@ -200,12 +202,18 @@ static bool netvsc_set_hash(u32 *hash, struct sk_buff > *skb) > iphdr = ip_hdr(skb); > > if (iphdr->version == 4) { > - if (iphdr->protocol == IPPROTO_TCP) > + data = (u8 *)&iphdr->saddr; > + if (iphdr->protocol == IPPROTO_TCP) { > data_len = 12; > - else > + if (iphdr->ihl > 5) { > + memcpy(dbuf, &iphdr->saddr, 8); > + memcpy(&dbuf[8], &tcp_hdr(skb)->source, 4); This is rediculous. Make hash_comp() take a void pointer for the buffer. Then your code is simply: be32 dbuf[2]; dbuf[1] = iph->saddr; dbuf[2] = iph->daddr; dbuf[3] = *(be32 *)tcph->source; *hash = comp_hash(netvsc_hash_key, HASH_KEYLEN, dbuf, 12); No special cases for IP options or any garbage like that. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/