diff options
| author | Paul Durrant <Paul.Durrant@citrix.com> | 2016-05-13 09:37:28 +0100 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2016-05-16 13:35:56 -0400 | 
| commit | f07f989338587bc2b202f6e3c8e8468c450bd6a2 (patch) | |
| tree | 87e05544ca5d886d7da7c930ae627bfb7a1ce991 /drivers/net/xen-netback/interface.c | |
| parent | 40d8abdee806d496a60ee607a6d01b1cd7fabaf0 (diff) | |
| download | blackbird-op-linux-f07f989338587bc2b202f6e3c8e8468c450bd6a2.tar.gz blackbird-op-linux-f07f989338587bc2b202f6e3c8e8468c450bd6a2.zip | |
xen-netback: pass hash value to the frontend
My recent patch to include/xen/interface/io/netif.h defines a new extra
info type that can be used to pass hash values between backend and guest
frontend.
This patch adds code to xen-netback to pass hash values calculated for
guest receive-side packets (i.e. netback transmit side) to the frontend.
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/xen-netback/interface.c')
| -rw-r--r-- | drivers/net/xen-netback/interface.c | 13 | 
1 files changed, 11 insertions, 2 deletions
| diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c index 5a39cdbc217c..1c7f49b5acc1 100644 --- a/drivers/net/xen-netback/interface.c +++ b/drivers/net/xen-netback/interface.c @@ -158,8 +158,17 @@ static u16 xenvif_select_queue(struct net_device *dev, struct sk_buff *skb,  	struct xenvif *vif = netdev_priv(dev);  	unsigned int size = vif->hash.size; -	if (vif->hash.alg == XEN_NETIF_CTRL_HASH_ALGORITHM_NONE) -		return fallback(dev, skb) % dev->real_num_tx_queues; +	if (vif->hash.alg == XEN_NETIF_CTRL_HASH_ALGORITHM_NONE) { +		u16 index = fallback(dev, skb) % dev->real_num_tx_queues; + +		/* Make sure there is no hash information in the socket +		 * buffer otherwise it would be incorrectly forwarded +		 * to the frontend. +		 */ +		skb_clear_hash(skb); + +		return index; +	}  	xenvif_set_skb_hash(vif, skb); | 

