linux-next: manual merge of the net-next tree with the net tree
From: Stephen Rothwell
Date: Tue Dec 13 2011 - 21:26:13 EST
Hi all,
Today's linux-next merge of the net-next tree got conflicts in
net/batman-adv/translation-table.c between commits 03fc3070457d
("batman-adv: in case of roaming mark the client with TT_CLIENT_ROAM")
and 797399b415b7 ("batman-adv: delete global entry in case of roaming")
from the net tree and commit 48100bac89a6 ("batman-adv: create a common
substructure for tt_global/local_entry") from the net-next tree.
I fixed it up (I think - see below) and can carry the fix as necessary.
--
Cheers,
Stephen Rothwell sfr@xxxxxxxxxxxxxxxx
diff --cc net/batman-adv/translation-table.c
index 5f09a57,cc87acf..0000000
--- a/net/batman-adv/translation-table.c
+++ b/net/batman-adv/translation-table.c
@@@ -245,12 -242,10 +242,12 @@@ void tt_local_add(struct net_device *so
if (tt_global_entry) {
/* This node is probably going to update its tt table */
tt_global_entry->orig_node->tt_poss_change = true;
- /* The global entry has to be marked as PENDING and has to be
+ /* The global entry has to be marked as ROAMING and has to be
* kept for consistency purpose */
- tt_global_entry->flags |= TT_CLIENT_ROAM;
- tt_global_entry->common.flags |= TT_CLIENT_PENDING;
++ tt_global_entry->common.flags |= TT_CLIENT_ROAM;
+ tt_global_entry->roam_at = jiffies;
+
- send_roam_adv(bat_priv, tt_global_entry->addr,
+ send_roam_adv(bat_priv, tt_global_entry->common.addr,
tt_global_entry->orig_node);
}
out:
@@@ -704,21 -668,9 +671,21 @@@ void tt_global_del(struct bat_priv *bat
if (tt_global_entry->orig_node == orig_node) {
if (roaming) {
- tt_global_entry->common.flags |= TT_CLIENT_ROAM;
- tt_global_entry->roam_at = jiffies;
- goto out;
+ /* if we are deleting a global entry due to a roam
+ * event, there are two possibilities:
+ * 1) the client roamed from node A to node B => we mark
+ * it with TT_CLIENT_ROAM, we start a timer and we
+ * wait for node B to claim it. In case of timeout
+ * the entry is purged.
+ * 2) the client roamed to us => we can directly delete
+ * the global entry, since it is useless now. */
+ tt_local_entry = tt_local_hash_find(bat_priv,
- tt_global_entry->addr);
++ tt_global_entry->common.addr);
+ if (!tt_local_entry) {
- tt_global_entry->flags |= TT_CLIENT_ROAM;
++ tt_global_entry->common.flags |= TT_CLIENT_ROAM;
+ tt_global_entry->roam_at = jiffies;
+ goto out;
+ }
}
_tt_global_del(bat_priv, tt_global_entry, message);
}
Attachment:
pgp00000.pgp
Description: PGP signature