From: Haiyang Zhang <haiyangz@microsoft.com>
To: davem@davemloft.net, netdev@vger.kernel.org
Cc: haiyangz@microsoft.com, kys@microsoft.com, olaf@aepfle.de,
jasowang@redhat.com, linux-kernel@vger.kernel.org,
driverdev-devel@linuxdriverproject.org
Subject: [PATCH net-next] hyperv: Add handling of IP header with option field in netvsc_set_hash()
Date: Tue, 19 Aug 2014 20:53:55 +0000 [thread overview]
Message-ID: <1408481635-29639-1-git-send-email-haiyangz@microsoft.com> (raw)
In case that the IP header has optional field at the end, this patch will
get the port numbers after that field, and compute the hash.
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
---
drivers/net/hyperv/netvsc_drv.c | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
index a9c5eaa..b12dcd9 100644
--- a/drivers/net/hyperv/netvsc_drv.c
+++ b/drivers/net/hyperv/netvsc_drv.c
@@ -191,6 +191,8 @@ static u32 comp_hash(u8 *key, int klen, u8 *data, int dlen)
static bool netvsc_set_hash(u32 *hash, struct sk_buff *skb)
{
struct iphdr *iphdr;
+ u8 dbuf[12];
+ u8 *data;
int data_len;
bool ret = false;
@@ -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);
+ data = dbuf;
+ }
+ } else {
data_len = 8;
- *hash = comp_hash(netvsc_hash_key, HASH_KEYLEN,
- (u8 *)&iphdr->saddr, data_len);
+ }
+ *hash = comp_hash(netvsc_hash_key, HASH_KEYLEN, data, data_len);
ret = true;
}
--
1.7.1
next reply other threads:[~2014-08-19 20:56 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-19 20:53 Haiyang Zhang [this message]
2014-08-22 4:30 ` David Miller
2014-08-22 21:06 ` Haiyang Zhang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1408481635-29639-1-git-send-email-haiyangz@microsoft.com \
--to=haiyangz@microsoft.com \
--cc=davem@davemloft.net \
--cc=driverdev-devel@linuxdriverproject.org \
--cc=jasowang@redhat.com \
--cc=kys@microsoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=olaf@aepfle.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®