Repository : ssh://git@diktynna/batman-adv
On branch : master
commit 92064deda9b063ca2d5a53b307c6127a9453357c Author: Sven Eckelmann sven@narfation.org Date: Thu Nov 26 18:15:06 2020 +0100
batman-adv: Consider fragmentation for needed_headroom
If a batman-adv packets has to be fragmented, then the original batman-adv packet header is not stripped away. Instead, only a new header is added in front of the packet after it was split.
This size must be considered to avoid cost intensive reallocations during the transmission through the various device layers.
Fixes: e2b4301f4e2d ("batman-adv: Add lower layer needed_(head|tail)room to own ones") Reported-by: Linus L��ssing linus.luessing@c0d3.blue Signed-off-by: Sven Eckelmann sven@narfation.org
92064deda9b063ca2d5a53b307c6127a9453357c net/batman-adv/hard-interface.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c index dad99641..33904595 100644 --- a/net/batman-adv/hard-interface.c +++ b/net/batman-adv/hard-interface.c @@ -554,6 +554,9 @@ static void batadv_hardif_recalc_extra_skbroom(struct net_device *soft_iface) needed_headroom = lower_headroom + (lower_header_len - ETH_HLEN); needed_headroom += batadv_max_header_len();
+ /* fragmentation headers don't strip the unicast/... header */ + needed_headroom += sizeof(struct batadv_frag_packet); + soft_iface->needed_headroom = needed_headroom; soft_iface->needed_tailroom = lower_tailroom; }