> -----Original Message----- > From: David Miller [mailto:davem@xxxxxxxxxxxxx] > Sent: Friday, August 22, 2014 12:31 AM > To: Haiyang Zhang > Cc: netdev@xxxxxxxxxxxxxxx; KY Srinivasan; olaf@xxxxxxxxx; > jasowang@xxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; driverdev- > devel@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [PATCH net-next] hyperv: Add handling of IP header with > option field in netvsc_set_hash() > > From: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx> > 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. I have submitted a revised patch with the suggested changes. Thanks, - Haiyang _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel