diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/skbuff.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 122d08396e5..ac74ee085d7 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -1414,12 +1414,14 @@ static inline int skb_network_offset(const struct sk_buff *skb) | |||
| 1414 | * | 1414 | * |
| 1415 | * Various parts of the networking layer expect at least 32 bytes of | 1415 | * Various parts of the networking layer expect at least 32 bytes of |
| 1416 | * headroom, you should not reduce this. | 1416 | * headroom, you should not reduce this. |
| 1417 | * With RPS, we raised NET_SKB_PAD to 64 so that get_rps_cpus() fetches span | 1417 | * |
| 1418 | * a 64 bytes aligned block to fit modern (>= 64 bytes) cache line sizes | 1418 | * Using max(32, L1_CACHE_BYTES) makes sense (especially with RPS) |
| 1419 | * to reduce average number of cache lines per packet. | ||
| 1420 | * get_rps_cpus() for example only access one 64 bytes aligned block : | ||
| 1419 | * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8) | 1421 | * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8) |
| 1420 | */ | 1422 | */ |
| 1421 | #ifndef NET_SKB_PAD | 1423 | #ifndef NET_SKB_PAD |
| 1422 | #define NET_SKB_PAD 64 | 1424 | #define NET_SKB_PAD max(32, L1_CACHE_BYTES) |
| 1423 | #endif | 1425 | #endif |
| 1424 | 1426 | ||
| 1425 | extern int ___pskb_trim(struct sk_buff *skb, unsigned int len); | 1427 | extern int ___pskb_trim(struct sk_buff *skb, unsigned int len); |
