diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/core/dev.c | 13 | ||||
-rw-r--r-- | net/core/filter.c | 2 | ||||
-rw-r--r-- | net/core/flow_dissector.c | 10 | ||||
-rw-r--r-- | net/packet/af_packet.c | 3 |
4 files changed, 14 insertions, 14 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 55f8e64c03a2..48dd323d5918 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -2952,7 +2952,7 @@ set_rps_cpu(struct net_device *dev, struct sk_buff *skb, | |||
2952 | flow_table = rcu_dereference(rxqueue->rps_flow_table); | 2952 | flow_table = rcu_dereference(rxqueue->rps_flow_table); |
2953 | if (!flow_table) | 2953 | if (!flow_table) |
2954 | goto out; | 2954 | goto out; |
2955 | flow_id = skb->rxhash & flow_table->mask; | 2955 | flow_id = skb_get_hash(skb) & flow_table->mask; |
2956 | rc = dev->netdev_ops->ndo_rx_flow_steer(dev, skb, | 2956 | rc = dev->netdev_ops->ndo_rx_flow_steer(dev, skb, |
2957 | rxq_index, flow_id); | 2957 | rxq_index, flow_id); |
2958 | if (rc < 0) | 2958 | if (rc < 0) |
@@ -2986,6 +2986,7 @@ static int get_rps_cpu(struct net_device *dev, struct sk_buff *skb, | |||
2986 | struct rps_sock_flow_table *sock_flow_table; | 2986 | struct rps_sock_flow_table *sock_flow_table; |
2987 | int cpu = -1; | 2987 | int cpu = -1; |
2988 | u16 tcpu; | 2988 | u16 tcpu; |
2989 | u32 hash; | ||
2989 | 2990 | ||
2990 | if (skb_rx_queue_recorded(skb)) { | 2991 | if (skb_rx_queue_recorded(skb)) { |
2991 | u16 index = skb_get_rx_queue(skb); | 2992 | u16 index = skb_get_rx_queue(skb); |
@@ -3014,7 +3015,8 @@ static int get_rps_cpu(struct net_device *dev, struct sk_buff *skb, | |||
3014 | } | 3015 | } |
3015 | 3016 | ||
3016 | skb_reset_network_header(skb); | 3017 | skb_reset_network_header(skb); |
3017 | if (!skb_get_hash(skb)) | 3018 | hash = skb_get_hash(skb); |
3019 | if (!hash) | ||
3018 | goto done; | 3020 | goto done; |
3019 | 3021 | ||
3020 | flow_table = rcu_dereference(rxqueue->rps_flow_table); | 3022 | flow_table = rcu_dereference(rxqueue->rps_flow_table); |
@@ -3023,11 +3025,10 @@ static int get_rps_cpu(struct net_device *dev, struct sk_buff *skb, | |||
3023 | u16 next_cpu; | 3025 | u16 next_cpu; |
3024 | struct rps_dev_flow *rflow; | 3026 | struct rps_dev_flow *rflow; |
3025 | 3027 | ||
3026 | rflow = &flow_table->flows[skb->rxhash & flow_table->mask]; | 3028 | rflow = &flow_table->flows[hash & flow_table->mask]; |
3027 | tcpu = rflow->cpu; | 3029 | tcpu = rflow->cpu; |
3028 | 3030 | ||
3029 | next_cpu = sock_flow_table->ents[skb->rxhash & | 3031 | next_cpu = sock_flow_table->ents[hash & sock_flow_table->mask]; |
3030 | sock_flow_table->mask]; | ||
3031 | 3032 | ||
3032 | /* | 3033 | /* |
3033 | * If the desired CPU (where last recvmsg was done) is | 3034 | * If the desired CPU (where last recvmsg was done) is |
@@ -3056,7 +3057,7 @@ static int get_rps_cpu(struct net_device *dev, struct sk_buff *skb, | |||
3056 | } | 3057 | } |
3057 | 3058 | ||
3058 | if (map) { | 3059 | if (map) { |
3059 | tcpu = map->cpus[((u64) skb->rxhash * map->len) >> 32]; | 3060 | tcpu = map->cpus[((u64) hash * map->len) >> 32]; |
3060 | 3061 | ||
3061 | if (cpu_online(tcpu)) { | 3062 | if (cpu_online(tcpu)) { |
3062 | cpu = tcpu; | 3063 | cpu = tcpu; |
diff --git a/net/core/filter.c b/net/core/filter.c index ad30d626a5bd..65b75966e206 100644 --- a/net/core/filter.c +++ b/net/core/filter.c | |||
@@ -336,7 +336,7 @@ load_b: | |||
336 | A = skb->dev->type; | 336 | A = skb->dev->type; |
337 | continue; | 337 | continue; |
338 | case BPF_S_ANC_RXHASH: | 338 | case BPF_S_ANC_RXHASH: |
339 | A = skb->rxhash; | 339 | A = skb->hash; |
340 | continue; | 340 | continue; |
341 | case BPF_S_ANC_CPU: | 341 | case BPF_S_ANC_CPU: |
342 | A = raw_smp_processor_id(); | 342 | A = raw_smp_processor_id(); |
diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c index 80201bf69d59..107ed12a5323 100644 --- a/net/core/flow_dissector.c +++ b/net/core/flow_dissector.c | |||
@@ -203,8 +203,8 @@ static __always_inline u32 __flow_hash_1word(u32 a) | |||
203 | 203 | ||
204 | /* | 204 | /* |
205 | * __skb_get_hash: calculate a flow hash based on src/dst addresses | 205 | * __skb_get_hash: calculate a flow hash based on src/dst addresses |
206 | * and src/dst port numbers. Sets rxhash in skb to non-zero hash value | 206 | * and src/dst port numbers. Sets hash in skb to non-zero hash value |
207 | * on success, zero indicates no valid hash. Also, sets l4_rxhash in skb | 207 | * on success, zero indicates no valid hash. Also, sets l4_hash in skb |
208 | * if hash is a canonical 4-tuple hash over transport ports. | 208 | * if hash is a canonical 4-tuple hash over transport ports. |
209 | */ | 209 | */ |
210 | void __skb_get_hash(struct sk_buff *skb) | 210 | void __skb_get_hash(struct sk_buff *skb) |
@@ -216,7 +216,7 @@ void __skb_get_hash(struct sk_buff *skb) | |||
216 | return; | 216 | return; |
217 | 217 | ||
218 | if (keys.ports) | 218 | if (keys.ports) |
219 | skb->l4_rxhash = 1; | 219 | skb->l4_hash = 1; |
220 | 220 | ||
221 | /* get a consistent hash (same value on both flow directions) */ | 221 | /* get a consistent hash (same value on both flow directions) */ |
222 | if (((__force u32)keys.dst < (__force u32)keys.src) || | 222 | if (((__force u32)keys.dst < (__force u32)keys.src) || |
@@ -232,7 +232,7 @@ void __skb_get_hash(struct sk_buff *skb) | |||
232 | if (!hash) | 232 | if (!hash) |
233 | hash = 1; | 233 | hash = 1; |
234 | 234 | ||
235 | skb->rxhash = hash; | 235 | skb->hash = hash; |
236 | } | 236 | } |
237 | EXPORT_SYMBOL(__skb_get_hash); | 237 | EXPORT_SYMBOL(__skb_get_hash); |
238 | 238 | ||
@@ -344,7 +344,7 @@ static inline int get_xps_queue(struct net_device *dev, struct sk_buff *skb) | |||
344 | hash = skb->sk->sk_hash; | 344 | hash = skb->sk->sk_hash; |
345 | else | 345 | else |
346 | hash = (__force u16) skb->protocol ^ | 346 | hash = (__force u16) skb->protocol ^ |
347 | skb->rxhash; | 347 | skb->hash; |
348 | hash = __flow_hash_1word(hash); | 348 | hash = __flow_hash_1word(hash); |
349 | queue_index = map->queues[ | 349 | queue_index = map->queues[ |
350 | ((u64)hash * map->len) >> 32]; | 350 | ((u64)hash * map->len) >> 32]; |
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 292304404fda..097a354ec8cd 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c | |||
@@ -1277,7 +1277,7 @@ static unsigned int fanout_demux_hash(struct packet_fanout *f, | |||
1277 | struct sk_buff *skb, | 1277 | struct sk_buff *skb, |
1278 | unsigned int num) | 1278 | unsigned int num) |
1279 | { | 1279 | { |
1280 | return reciprocal_scale(skb->rxhash, num); | 1280 | return reciprocal_scale(skb_get_hash(skb), num); |
1281 | } | 1281 | } |
1282 | 1282 | ||
1283 | static unsigned int fanout_demux_lb(struct packet_fanout *f, | 1283 | static unsigned int fanout_demux_lb(struct packet_fanout *f, |
@@ -1362,7 +1362,6 @@ static int packet_rcv_fanout(struct sk_buff *skb, struct net_device *dev, | |||
1362 | if (!skb) | 1362 | if (!skb) |
1363 | return 0; | 1363 | return 0; |
1364 | } | 1364 | } |
1365 | skb_get_hash(skb); | ||
1366 | idx = fanout_demux_hash(f, skb, num); | 1365 | idx = fanout_demux_hash(f, skb, num); |
1367 | break; | 1366 | break; |
1368 | case PACKET_FANOUT_LB: | 1367 | case PACKET_FANOUT_LB: |