* [PATCH net-next] Add hash value into RNDIS Per-packet info
@ 2014-05-21 19:55 Haiyang Zhang
2014-05-23 18:50 ` David Miller
0 siblings, 1 reply; 3+ messages in thread
From: Haiyang Zhang @ 2014-05-21 19:55 UTC (permalink / raw)
To: davem, netdev
Cc: haiyangz, kys, olaf, jasowang, linux-kernel, driverdev-devel
It passes the hash value as the RNDIS Per-packet info to the Hyper-V host,
so that the send completion notices can be spread across multiple channels.
MS-TFS: 140273
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
---
drivers/net/hyperv/hyperv_net.h | 4 ++++
drivers/net/hyperv/netvsc_drv.c | 18 ++++++++++++++----
2 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
index 4b7df5a..6cc37c1 100644
--- a/drivers/net/hyperv/hyperv_net.h
+++ b/drivers/net/hyperv/hyperv_net.h
@@ -791,6 +791,7 @@ enum ndis_per_pkt_info_type {
IEEE_8021Q_INFO,
ORIGINAL_PKTINFO,
PACKET_CANCEL_ID,
+ NBL_HASH_VALUE = PACKET_CANCEL_ID,
ORIGINAL_NET_BUFLIST,
CACHED_NET_BUFLIST,
SHORT_PKT_PADINFO,
@@ -937,6 +938,9 @@ struct ndis_tcp_lso_info {
#define NDIS_LSO_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
sizeof(struct ndis_tcp_lso_info))
+#define NDIS_HASH_PPI_SIZE (sizeof(struct rndis_per_packet_info) + \
+ sizeof(u32))
+
/* Format of Information buffer passed in a SetRequest for the OID */
/* OID_GEN_RNDIS_CONFIG_PARAMETER. */
struct rndis_config_parameter_info {
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
index 2e967a7..4fd71b7 100644
--- a/drivers/net/hyperv/netvsc_drv.c
+++ b/drivers/net/hyperv/netvsc_drv.c
@@ -224,9 +224,11 @@ static u16 netvsc_select_queue(struct net_device *ndev, struct sk_buff *skb,
if (nvsc_dev == NULL || ndev->real_num_tx_queues <= 1)
return 0;
- if (netvsc_set_hash(&hash, skb))
+ if (netvsc_set_hash(&hash, skb)) {
q_idx = nvsc_dev->send_table[hash % VRSS_SEND_TAB_SIZE] %
ndev->real_num_tx_queues;
+ skb_set_hash(skb, hash, PKT_HASH_TYPE_L3);
+ }
return q_idx;
}
@@ -384,6 +386,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
struct ndis_tcp_lso_info *lso_info;
int hdr_offset;
u32 net_trans_info;
+ u32 hash;
/* We will atmost need two pages to describe the rndis
@@ -402,9 +405,8 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
packet = kzalloc(sizeof(struct hv_netvsc_packet) +
(num_data_pgs * sizeof(struct hv_page_buffer)) +
sizeof(struct rndis_message) +
- NDIS_VLAN_PPI_SIZE +
- NDIS_CSUM_PPI_SIZE +
- NDIS_LSO_PPI_SIZE, GFP_ATOMIC);
+ NDIS_VLAN_PPI_SIZE + NDIS_CSUM_PPI_SIZE +
+ NDIS_LSO_PPI_SIZE + NDIS_HASH_PPI_SIZE, GFP_ATOMIC);
if (!packet) {
/* out of memory, drop packet */
netdev_err(net, "unable to allocate hv_netvsc_packet\n");
@@ -443,6 +445,14 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
rndis_msg_size = RNDIS_MESSAGE_SIZE(struct rndis_packet);
+ hash = skb_get_hash_raw(skb);
+ if (hash != 0 && net->real_num_tx_queues > 1) {
+ rndis_msg_size += NDIS_HASH_PPI_SIZE;
+ ppi = init_ppi_data(rndis_msg, NDIS_HASH_PPI_SIZE,
+ NBL_HASH_VALUE);
+ *(u32 *)((void *)ppi + ppi->ppi_offset) = hash;
+ }
+
if (isvlan) {
struct ndis_pkt_8021q_info *vlan;
--
1.7.4.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net-next] Add hash value into RNDIS Per-packet info
2014-05-21 19:55 [PATCH net-next] Add hash value into RNDIS Per-packet info Haiyang Zhang
@ 2014-05-23 18:50 ` David Miller
2014-05-23 18:52 ` Haiyang Zhang
0 siblings, 1 reply; 3+ messages in thread
From: David Miller @ 2014-05-23 18:50 UTC (permalink / raw)
To: haiyangz; +Cc: netdev, kys, olaf, jasowang, linux-kernel, driverdev-devel
From: Haiyang Zhang <haiyangz@microsoft.com>
Date: Wed, 21 May 2014 12:55:39 -0700
> It passes the hash value as the RNDIS Per-packet info to the Hyper-V host,
> so that the send completion notices can be spread across multiple channels.
> MS-TFS: 140273
>
> Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Applied, but please craft your Subject lines correctly in the future.
You did not specify a subsystem prefix, which in this case should
have been something like "hyperv: "
Otherwise people scanning the commit log headers have no idea where
your changes might be taking place.
I fixed it up this time for you.
Thanks.
^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: [PATCH net-next] Add hash value into RNDIS Per-packet info
2014-05-23 18:50 ` David Miller
@ 2014-05-23 18:52 ` Haiyang Zhang
0 siblings, 0 replies; 3+ messages in thread
From: Haiyang Zhang @ 2014-05-23 18:52 UTC (permalink / raw)
To: David Miller
Cc: netdev, KY Srinivasan, olaf, jasowang, linux-kernel, driverdev-devel
> -----Original Message-----
> From: David Miller [mailto:davem@davemloft.net]
> Sent: Friday, May 23, 2014 2:50 PM
> To: Haiyang Zhang
> Cc: netdev@vger.kernel.org; KY Srinivasan; olaf@aepfle.de;
> jasowang@redhat.com; linux-kernel@vger.kernel.org; driverdev-
> devel@linuxdriverproject.org
> Subject: Re: [PATCH net-next] Add hash value into RNDIS Per-packet info
>
> From: Haiyang Zhang <haiyangz@microsoft.com>
> Date: Wed, 21 May 2014 12:55:39 -0700
>
> > It passes the hash value as the RNDIS Per-packet info to the Hyper-V
> host,
> > so that the send completion notices can be spread across multiple
> channels.
> > MS-TFS: 140273
> >
> > Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
>
> Applied, but please craft your Subject lines correctly in the future.
>
> You did not specify a subsystem prefix, which in this case should
> have been something like "hyperv: "
>
> Otherwise people scanning the commit log headers have no idea where
> your changes might be taking place.
>
> I fixed it up this time for you.
Thank you for fixing it! I will do this in the future.
Thanks,
- Haiyang
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-05-23 19:08 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-21 19:55 [PATCH net-next] Add hash value into RNDIS Per-packet info Haiyang Zhang
2014-05-23 18:50 ` David Miller
2014-05-23 18:52 ` Haiyang Zhang
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®