aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2011-07-05 22:45:12 -0400
committerDavid S. Miller <davem@davemloft.net>2011-07-05 22:45:12 -0400
commitf8bae99ee5030625a4e7f0d87784191882292f0e (patch)
tree991cd2aff1ec1b74d1e3c658eb2ea09b0f93e5bd
parent994635a137f637466d36a7c6272dae014a46a11c (diff)
parent44c4349a2a117b22a5c4087f2ac9faf10c575e17 (diff)
Merge branch 'batman-adv/next' of git://git.open-mesh.org/linux-merge
-rw-r--r--net/batman-adv/aggregation.c25
-rw-r--r--net/batman-adv/gateway_client.c5
-rw-r--r--net/batman-adv/main.c9
-rw-r--r--net/batman-adv/main.h11
-rw-r--r--net/batman-adv/originator.c5
-rw-r--r--net/batman-adv/packet.h11
-rw-r--r--net/batman-adv/routing.c2
-rw-r--r--net/batman-adv/send.c21
-rw-r--r--net/batman-adv/send.h2
-rw-r--r--net/batman-adv/soft-interface.c2
-rw-r--r--net/batman-adv/translation-table.c30
-rw-r--r--net/batman-adv/translation-table.h3
-rw-r--r--net/batman-adv/types.h4
13 files changed, 71 insertions, 59 deletions
diff --git a/net/batman-adv/aggregation.c b/net/batman-adv/aggregation.c
index c583e049f421..69467fe71ff2 100644
--- a/net/batman-adv/aggregation.c
+++ b/net/batman-adv/aggregation.c
@@ -28,6 +28,7 @@
28 28
29/* return true if new_packet can be aggregated with forw_packet */ 29/* return true if new_packet can be aggregated with forw_packet */
30static bool can_aggregate_with(const struct batman_packet *new_batman_packet, 30static bool can_aggregate_with(const struct batman_packet *new_batman_packet,
31 struct bat_priv *bat_priv,
31 int packet_len, 32 int packet_len,
32 unsigned long send_time, 33 unsigned long send_time,
33 bool directlink, 34 bool directlink,
@@ -37,6 +38,8 @@ static bool can_aggregate_with(const struct batman_packet *new_batman_packet,
37 struct batman_packet *batman_packet = 38 struct batman_packet *batman_packet =
38 (struct batman_packet *)forw_packet->skb->data; 39 (struct batman_packet *)forw_packet->skb->data;
39 int aggregated_bytes = forw_packet->packet_len + packet_len; 40 int aggregated_bytes = forw_packet->packet_len + packet_len;
41 struct hard_iface *primary_if = NULL;
42 bool res = false;
40 43
41 /** 44 /**
42 * we can aggregate the current packet to this aggregated packet 45 * we can aggregate the current packet to this aggregated packet
@@ -61,6 +64,10 @@ static bool can_aggregate_with(const struct batman_packet *new_batman_packet,
61 * packet 64 * packet
62 */ 65 */
63 66
67 primary_if = primary_if_get_selected(bat_priv);
68 if (!primary_if)
69 goto out;
70
64 /* packets without direct link flag and high TTL 71 /* packets without direct link flag and high TTL
65 * are flooded through the net */ 72 * are flooded through the net */
66 if ((!directlink) && 73 if ((!directlink) &&
@@ -70,8 +77,10 @@ static bool can_aggregate_with(const struct batman_packet *new_batman_packet,
70 /* own packets originating non-primary 77 /* own packets originating non-primary
71 * interfaces leave only that interface */ 78 * interfaces leave only that interface */
72 ((!forw_packet->own) || 79 ((!forw_packet->own) ||
73 (forw_packet->if_incoming->if_num == 0))) 80 (forw_packet->if_incoming == primary_if))) {
74 return true; 81 res = true;
82 goto out;
83 }
75 84
76 /* if the incoming packet is sent via this one 85 /* if the incoming packet is sent via this one
77 * interface only - we still can aggregate */ 86 * interface only - we still can aggregate */
@@ -84,11 +93,16 @@ static bool can_aggregate_with(const struct batman_packet *new_batman_packet,
84 * (= secondary interface packets in general) */ 93 * (= secondary interface packets in general) */
85 (batman_packet->flags & DIRECTLINK || 94 (batman_packet->flags & DIRECTLINK ||
86 (forw_packet->own && 95 (forw_packet->own &&
87 forw_packet->if_incoming->if_num != 0))) 96 forw_packet->if_incoming != primary_if))) {
88 return true; 97 res = true;
98 goto out;
99 }
89 } 100 }
90 101
91 return false; 102out:
103 if (primary_if)
104 hardif_free_ref(primary_if);
105 return res;
92} 106}
93 107
94/* create a new aggregated packet and add this packet to it */ 108/* create a new aggregated packet and add this packet to it */
@@ -210,6 +224,7 @@ void add_bat_packet_to_list(struct bat_priv *bat_priv,
210 hlist_for_each_entry(forw_packet_pos, tmp_node, 224 hlist_for_each_entry(forw_packet_pos, tmp_node,
211 &bat_priv->forw_bat_list, list) { 225 &bat_priv->forw_bat_list, list) {
212 if (can_aggregate_with(batman_packet, 226 if (can_aggregate_with(batman_packet,
227 bat_priv,
213 packet_len, 228 packet_len,
214 send_time, 229 send_time,
215 direct_link, 230 direct_link,
diff --git a/net/batman-adv/gateway_client.c b/net/batman-adv/gateway_client.c
index 8b25b52a4764..056180ef9e1a 100644
--- a/net/batman-adv/gateway_client.c
+++ b/net/batman-adv/gateway_client.c
@@ -487,10 +487,9 @@ int gw_client_seq_print_text(struct seq_file *seq, void *offset)
487 } 487 }
488 488
489 seq_printf(seq, " %-12s (%s/%i) %17s [%10s]: gw_class ... " 489 seq_printf(seq, " %-12s (%s/%i) %17s [%10s]: gw_class ... "
490 "[B.A.T.M.A.N. adv %s%s, MainIF/MAC: %s/%pM (%s)]\n", 490 "[B.A.T.M.A.N. adv %s, MainIF/MAC: %s/%pM (%s)]\n",
491 "Gateway", "#", TQ_MAX_VALUE, "Nexthop", 491 "Gateway", "#", TQ_MAX_VALUE, "Nexthop",
492 "outgoingIF", SOURCE_VERSION, REVISION_VERSION_STR, 492 "outgoingIF", SOURCE_VERSION, primary_if->net_dev->name,
493 primary_if->net_dev->name,
494 primary_if->net_dev->dev_addr, net_dev->name); 493 primary_if->net_dev->dev_addr, net_dev->name);
495 494
496 rcu_read_lock(); 495 rcu_read_lock();
diff --git a/net/batman-adv/main.c b/net/batman-adv/main.c
index e367e690a9f6..b0f9068ade57 100644
--- a/net/batman-adv/main.c
+++ b/net/batman-adv/main.c
@@ -58,9 +58,8 @@ static int __init batman_init(void)
58 58
59 register_netdevice_notifier(&hard_if_notifier); 59 register_netdevice_notifier(&hard_if_notifier);
60 60
61 pr_info("B.A.T.M.A.N. advanced %s%s (compatibility version %i) " 61 pr_info("B.A.T.M.A.N. advanced %s (compatibility version %i) "
62 "loaded\n", SOURCE_VERSION, REVISION_VERSION_STR, 62 "loaded\n", SOURCE_VERSION, COMPAT_VERSION);
63 COMPAT_VERSION);
64 63
65 return 0; 64 return 0;
66} 65}
@@ -184,8 +183,4 @@ MODULE_LICENSE("GPL");
184MODULE_AUTHOR(DRIVER_AUTHOR); 183MODULE_AUTHOR(DRIVER_AUTHOR);
185MODULE_DESCRIPTION(DRIVER_DESC); 184MODULE_DESCRIPTION(DRIVER_DESC);
186MODULE_SUPPORTED_DEVICE(DRIVER_DEVICE); 185MODULE_SUPPORTED_DEVICE(DRIVER_DEVICE);
187#ifdef REVISION_VERSION
188MODULE_VERSION(SOURCE_VERSION "-" REVISION_VERSION);
189#else
190MODULE_VERSION(SOURCE_VERSION); 186MODULE_VERSION(SOURCE_VERSION);
191#endif
diff --git a/net/batman-adv/main.h b/net/batman-adv/main.h
index 4f293b594475..a6df61a6933b 100644
--- a/net/batman-adv/main.h
+++ b/net/batman-adv/main.h
@@ -27,8 +27,9 @@
27#define DRIVER_DESC "B.A.T.M.A.N. advanced" 27#define DRIVER_DESC "B.A.T.M.A.N. advanced"
28#define DRIVER_DEVICE "batman-adv" 28#define DRIVER_DEVICE "batman-adv"
29 29
30#define SOURCE_VERSION "next" 30#ifndef SOURCE_VERSION
31 31#define SOURCE_VERSION "2011.3.0"
32#endif
32 33
33/* B.A.T.M.A.N. parameters */ 34/* B.A.T.M.A.N. parameters */
34 35
@@ -144,12 +145,6 @@ enum dbg_level {
144#include <linux/seq_file.h> 145#include <linux/seq_file.h>
145#include "types.h" 146#include "types.h"
146 147
147#ifndef REVISION_VERSION
148#define REVISION_VERSION_STR ""
149#else
150#define REVISION_VERSION_STR " "REVISION_VERSION
151#endif
152
153extern struct list_head hardif_list; 148extern struct list_head hardif_list;
154 149
155extern unsigned char broadcast_addr[]; 150extern unsigned char broadcast_addr[];
diff --git a/net/batman-adv/originator.c b/net/batman-adv/originator.c
index 338b3c597e4a..4cc94d4ba890 100644
--- a/net/batman-adv/originator.c
+++ b/net/batman-adv/originator.c
@@ -430,9 +430,8 @@ int orig_seq_print_text(struct seq_file *seq, void *offset)
430 goto out; 430 goto out;
431 } 431 }
432 432
433 seq_printf(seq, "[B.A.T.M.A.N. adv %s%s, MainIF/MAC: %s/%pM (%s)]\n", 433 seq_printf(seq, "[B.A.T.M.A.N. adv %s, MainIF/MAC: %s/%pM (%s)]\n",
434 SOURCE_VERSION, REVISION_VERSION_STR, 434 SOURCE_VERSION, primary_if->net_dev->name,
435 primary_if->net_dev->name,
436 primary_if->net_dev->dev_addr, net_dev->name); 435