diff options
Diffstat (limited to 'include/linux/skbuff.h')
-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 122d08396e56..ac74ee085d74 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); |