Commit c2d09fde authored by Paul Durrant's avatar Paul Durrant Committed by David S. Miller

xen-netback: use hash value from 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 use the value in a hash extra
info fragment passed from the guest frontend in a transmit-side
(i.e. netback receive side) packet to set the skb hash accordingly.
Signed-off-by: default avatarPaul Durrant <paul.durrant@citrix.com>
Acked-by: default avatarWei Liu <wei.liu2@citrix.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f07f9893
...@@ -1510,6 +1510,33 @@ static void xenvif_tx_build_gops(struct xenvif_queue *queue, ...@@ -1510,6 +1510,33 @@ static void xenvif_tx_build_gops(struct xenvif_queue *queue,
} }
} }
if (extras[XEN_NETIF_EXTRA_TYPE_HASH - 1].type) {
struct xen_netif_extra_info *extra;
enum pkt_hash_types type = PKT_HASH_TYPE_NONE;
extra = &extras[XEN_NETIF_EXTRA_TYPE_HASH - 1];
switch (extra->u.hash.type) {
case _XEN_NETIF_CTRL_HASH_TYPE_IPV4:
case _XEN_NETIF_CTRL_HASH_TYPE_IPV6:
type = PKT_HASH_TYPE_L3;
break;
case _XEN_NETIF_CTRL_HASH_TYPE_IPV4_TCP:
case _XEN_NETIF_CTRL_HASH_TYPE_IPV6_TCP:
type = PKT_HASH_TYPE_L4;
break;
default:
break;
}
if (type != PKT_HASH_TYPE_NONE)
skb_set_hash(skb,
*(u32 *)extra->u.hash.value,
type);
}
XENVIF_TX_CB(skb)->pending_idx = pending_idx; XENVIF_TX_CB(skb)->pending_idx = pending_idx;
__skb_put(skb, data_len); __skb_put(skb, data_len);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment