mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 04:38:03 +00:00
mpls: Reduce skb re-allocations due to skb_cow()
mpls_xmit() needs to prepend the MPLS-labels to the packet. That implies one needs to make sure there is enough space for it in the headers. Calling skb_cow() implies however that one wants to change even the playload part of the packet (which is not true for MPLS). Thus, call skb_cow_head() instead, which is what other tunnelling protocols do. Running a server with this comm it entirely removed the calls to pskb_expand_head() from the callstack in mpls_xmit() thus having significant CPU-reduction, especially at peak times. Cc: Roopa Prabhu <roopa@nvidia.com> Reported-by: Craig Taylor <cmtaylor@apple.com> Signed-off-by: Christoph Paasch <cpaasch@apple.com> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/20240815161201.22021-1-cpaasch@apple.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
1c66df8625
commit
f4ae8420f6
@ -106,7 +106,7 @@ static int mpls_xmit(struct sk_buff *skb)
|
|||||||
hh_len = 0;
|
hh_len = 0;
|
||||||
|
|
||||||
/* Ensure there is enough space for the headers in the skb */
|
/* Ensure there is enough space for the headers in the skb */
|
||||||
if (skb_cow(skb, hh_len + new_header_size))
|
if (skb_cow_head(skb, hh_len + new_header_size))
|
||||||
goto drop;
|
goto drop;
|
||||||
|
|
||||||
skb_set_inner_protocol(skb, skb->protocol);
|
skb_set_inner_protocol(skb, skb->protocol);
|
||||||
|
Loading…
Reference in New Issue
Block a user