aboutsummaryrefslogtreecommitdiffstats
path: root/net/batman-adv/originator.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/batman-adv/originator.c')
-rw-r--r--net/batman-adv/originator.c32
1 files changed, 17 insertions, 15 deletions
diff --git a/net/batman-adv/originator.c b/net/batman-adv/originator.c
index 1980696a7fd7..f04f591f4668 100644
--- a/net/batman-adv/originator.c
+++ b/net/batman-adv/originator.c
@@ -194,6 +194,7 @@ struct orig_node *batadv_get_orig_node(struct bat_priv *bat_priv,
194 struct orig_node *orig_node; 194 struct orig_node *orig_node;
195 int size; 195 int size;
196 int hash_added; 196 int hash_added;
197 unsigned long reset_time;
197 198
198 orig_node = batadv_orig_hash_find(bat_priv, addr); 199 orig_node = batadv_orig_hash_find(bat_priv, addr);
199 if (orig_node) 200 if (orig_node)
@@ -226,14 +227,13 @@ struct orig_node *batadv_get_orig_node(struct bat_priv *bat_priv,
226 orig_node->tt_buff = NULL; 227 orig_node->tt_buff = NULL;
227 orig_node->tt_buff_len = 0; 228 orig_node->tt_buff_len = 0;
228 atomic_set(&orig_node->tt_size, 0); 229 atomic_set(&orig_node->tt_size, 0);
229 orig_node->bcast_seqno_reset = jiffies - 1 230 reset_time = jiffies - 1 - msecs_to_jiffies(BATADV_RESET_PROTECTION_MS);
230 - msecs_to_jiffies(RESET_PROTECTION_MS); 231 orig_node->bcast_seqno_reset = reset_time;
231 orig_node->batman_seqno_reset = jiffies - 1 232 orig_node->batman_seqno_reset = reset_time;
232 - msecs_to_jiffies(RESET_PROTECTION_MS);
233 233
234 atomic_set(&orig_node->bond_candidates, 0); 234 atomic_set(&orig_node->bond_candidates, 0);
235 235
236 size = bat_priv->num_ifaces * sizeof(unsigned long) * NUM_WORDS; 236 size = bat_priv->num_ifaces * sizeof(unsigned long) * BATADV_NUM_WORDS;
237 237
238 orig_node->bcast_own = kzalloc(size, GFP_ATOMIC); 238 orig_node->bcast_own = kzalloc(size, GFP_ATOMIC);
239 if (!orig_node->bcast_own) 239 if (!orig_node->bcast_own)
@@ -285,7 +285,7 @@ static bool batadv_purge_orig_neighbors(struct bat_priv *bat_priv,
285 last_seen = neigh_node->last_seen; 285 last_seen = neigh_node->last_seen;
286 if_incoming = neigh_node->if_incoming; 286 if_incoming = neigh_node->if_incoming;
287 287
288 if ((batadv_has_timed_out(last_seen, PURGE_TIMEOUT)) || 288 if ((batadv_has_timed_out(last_seen, BATADV_PURGE_TIMEOUT)) ||
289 (if_incoming->if_status == IF_INACTIVE) || 289 (if_incoming->if_status == IF_INACTIVE) ||
290 (if_incoming->if_status == IF_NOT_IN_USE) || 290 (if_incoming->if_status == IF_NOT_IN_USE) ||
291 (if_incoming->if_status == IF_TO_BE_REMOVED)) { 291 (if_incoming->if_status == IF_TO_BE_REMOVED)) {
@@ -324,7 +324,8 @@ static bool batadv_purge_orig_node(struct bat_priv *bat_priv,
324{ 324{
325 struct neigh_node *best_neigh_node; 325 struct neigh_node *best_neigh_node;
326 326
327 if (batadv_has_timed_out(orig_node->last_seen, 2 * PURGE_TIMEOUT)) { 327 if (batadv_has_timed_out(orig_node->last_seen,
328 2 * BATADV_PURGE_TIMEOUT)) {
328 batadv_dbg(DBG_BATMAN, bat_priv, 329 batadv_dbg(DBG_BATMAN, bat_priv,
329 "Originator timeout: originator %pM, last_seen %u\n", 330 "Originator timeout: originator %pM, last_seen %u\n",
330 orig_node->orig, 331 orig_node->orig,
@@ -429,11 +430,11 @@ int batadv_orig_seq_print_text(struct seq_file *seq, void *offset)
429 } 430 }
430 431
431 seq_printf(seq, "[B.A.T.M.A.N. adv %s, MainIF/MAC: %s/%pM (%s)]\n", 432 seq_printf(seq, "[B.A.T.M.A.N. adv %s, MainIF/MAC: %s/%pM (%s)]\n",
432 SOURCE_VERSION, primary_if->net_dev->name, 433 BATADV_SOURCE_VERSION, primary_if->net_dev->name,
433 primary_if->net_dev->dev_addr, net_dev->name); 434 primary_if->net_dev->dev_addr, net_dev->name);
434 seq_printf(seq, " %-15s %s (%s/%i) %17s [%10s]: %20s ...\n", 435 seq_printf(seq, " %-15s %s (%s/%i) %17s [%10s]: %20s ...\n",
435 "Originator", "last-seen", "#", TQ_MAX_VALUE, "Nexthop", 436 "Originator", "last-seen", "#", BATADV_TQ_MAX_VALUE,
436 "outgoingIF", "Potential nexthops"); 437 "Nexthop", "outgoingIF", "Potential nexthops");
437 438
438 for (i = 0; i < hash->size; i++) { 439 for (i = 0; i < hash->size; i++) {
439 head = &hash->table[i]; 440 head = &hash->table[i];
@@ -486,14 +487,15 @@ out:
486static int batadv_orig_node_add_if(struct orig_node *orig_node, int max_if_num) 487static int batadv_orig_node_add_if(struct orig_node *orig_node, int max_if_num)
487{ 488{
488 void *data_ptr; 489 void *data_ptr;
490 size_t data_size, old_size;
489 491
490 data_ptr = kmalloc(max_if_num * sizeof(unsigned long) * NUM_WORDS, 492 data_size = max_if_num * sizeof(unsigned long) * BATADV_NUM_WORDS;
491 GFP_ATOMIC); 493 old_size = (max_if_num - 1) * sizeof(unsigned long) * BATADV_NUM_WORDS;
494 data_ptr = kmalloc(data_size, GFP_ATOMIC);
492 if (!data_ptr) 495 if (!data_ptr)
493 return -ENOMEM; 496 return -ENOMEM;
494 497
495 memcpy(data_ptr, orig_node->bcast_own, 498 memcpy(data_ptr, orig_node->bcast_own, old_size);
496 (max_if_num - 1) * sizeof(unsigned long) * NUM_WORDS);
497 kfree(orig_node->bcast_own); 499 kfree(orig_node->bcast_own);
498 orig_node->bcast_own = data_ptr; 500 orig_node->bcast_own = data_ptr;
499 501
@@ -554,7 +556,7 @@ static int batadv_orig_node_del_if(struct orig_node *orig_node,
554 if (max_if_num == 0) 556 if (max_if_num == 0)
555 goto free_bcast_own; 557 goto free_bcast_own;
556 558
557 chunk_size = sizeof(unsigned long) * NUM_WORDS; 559 chunk_size = sizeof(unsigned long) * BATADV_NUM_WORDS;
558 data_ptr = kmalloc(max_if_num * chunk_size, GFP_ATOMIC); 560 data_ptr = kmalloc(max_if_num * chunk_size, GFP_ATOMIC);
559 if (!data_ptr) 561 if (!data_ptr)
560 return -ENOMEM; 562 return -ENOMEM;