aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/xen-netback/interface.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/xen-netback/interface.c')
-rw-r--r--drivers/net/xen-netback/interface.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c
index 78ebe494fef0..182d6770f102 100644
--- a/drivers/net/xen-netback/interface.c
+++ b/drivers/net/xen-netback/interface.c
@@ -148,24 +148,26 @@ void xenvif_wake_queue(struct xenvif_queue *queue)
148} 148}
149 149
150static u16 xenvif_select_queue(struct net_device *dev, struct sk_buff *skb, 150static u16 xenvif_select_queue(struct net_device *dev, struct sk_buff *skb,
151 void *accel_priv, 151 struct net_device *sb_dev,
152 select_queue_fallback_t fallback) 152 select_queue_fallback_t fallback)
153{ 153{
154 struct xenvif *vif = netdev_priv(dev); 154 struct xenvif *vif = netdev_priv(dev);
155 unsigned int size = vif->hash.size; 155 unsigned int size = vif->hash.size;
156 156
157 if (vif->hash.alg == XEN_NETIF_CTRL_HASH_ALGORITHM_NONE) 157 if (vif->hash.alg == XEN_NETIF_CTRL_HASH_ALGORITHM_NONE)
158 return fallback(dev, skb) % dev->real_num_tx_queues; 158 return fallback(dev, skb, NULL) % dev->real_num_tx_queues;
159 159
160 xenvif_set_skb_hash(vif, skb); 160 xenvif_set_skb_hash(vif, skb);
161 161
162 if (size == 0) 162 if (size == 0)
163 return skb_get_hash_raw(skb) % dev->real_num_tx_queues; 163 return skb_get_hash_raw(skb) % dev->real_num_tx_queues;
164 164
165 return vif->hash.mapping[skb_get_hash_raw(skb) % size]; 165 return vif->hash.mapping[vif->hash.mapping_sel]
166 [skb_get_hash_raw(skb) % size];
166} 167}
167 168
168static int xenvif_start_xmit(struct sk_buff *skb, struct net_device *dev) 169static netdev_tx_t
170xenvif_start_xmit(struct sk_buff *skb, struct net_device *dev)
169{ 171{
170 struct xenvif *vif = netdev_priv(dev); 172 struct xenvif *vif = netdev_priv(dev);
171 struct xenvif_queue *queue = NULL; 173 struct xenvif_queue *queue = NULL;