aboutsummaryrefslogtreecommitdiffstats
path: root/net/batman-adv/routing.c
diff options
context:
space:
mode:
authorAntonio Quartulli <ordex@autistici.org>2011-10-16 14:32:02 -0400
committerSven Eckelmann <sven@narfation.org>2011-11-20 07:08:34 -0500
commitdc58fe32e6a4fbd270e8f045225ce475073d0772 (patch)
tree00b2fb40bff5f673c2dd0e9ef798d25e17c22e67 /net/batman-adv/routing.c
parentd099c2c541f003bfde9a9eda5519913b313c4c27 (diff)
batman-adv: linearise the tt_response skb only if needed
The TT_RESPONSE skb has to be linearised only if the node plans to access the packet payload (so only if the message is directed to that node). In all the other cases the node can avoid this memory operation Signed-off-by: Antonio Quartulli <ordex@autistici.org> Signed-off-by: Sven Eckelmann <sven@narfation.org>
Diffstat (limited to 'net/batman-adv/routing.c')
-rw-r--r--net/batman-adv/routing.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/net/batman-adv/routing.c b/net/batman-adv/routing.c
index 60ce4077348b..e0e7b7b79ca9 100644
--- a/net/batman-adv/routing.c
+++ b/net/batman-adv/routing.c
@@ -616,13 +616,14 @@ int recv_tt_query(struct sk_buff *skb, struct hard_iface *recv_if)
616 } 616 }
617 break; 617 break;
618 case TT_RESPONSE: 618 case TT_RESPONSE:
619 /* packet needs to be linearized to access the TT changes */ 619 if (is_my_mac(tt_query->dst)) {
620 if (skb_linearize(skb) < 0) 620 /* packet needs to be linearized to access the TT
621 goto out; 621 * changes */
622 if (skb_linearize(skb) < 0)
623 goto out;
622 624
623 if (is_my_mac(tt_query->dst))
624 handle_tt_response(bat_priv, tt_query); 625 handle_tt_response(bat_priv, tt_query);
625 else { 626 } else {
626 bat_dbg(DBG_TT, bat_priv, 627 bat_dbg(DBG_TT, bat_priv,
627 "Routing TT_RESPONSE to %pM [%c]\n", 628 "Routing TT_RESPONSE to %pM [%c]\n",
628 tt_query->dst, 629 tt_query->dst,