Both translation tables and network coding use timeouts to do house keeping, so we might as well share the function used to compare a timestamp+timeout with current time.
Also, this patch removes a trailing newline in is_my_mac() to satisfy checkpatch
Signed-off-by: Martin Hundebøll martin@hundeboll.net --- main.c | 4 ++++ main.h | 1 + translation-table.c | 8 -------- 3 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/main.c b/main.c index fb87bdc..0930bb4 100644 --- a/main.c +++ b/main.c @@ -170,7 +170,11 @@ int is_my_mac(const uint8_t *addr) } rcu_read_unlock(); return 0; +}
+bool is_out_of_time(unsigned long timestamp, unsigned long timeout) +{ + return time_is_before_jiffies(timestamp + msecs_to_jiffies(timeout)); }
module_init(batman_init); diff --git a/main.h b/main.h index 464439f..92eb37b 100644 --- a/main.h +++ b/main.h @@ -159,6 +159,7 @@ void mesh_free(struct net_device *soft_iface); void inc_module_count(void); void dec_module_count(void); int is_my_mac(const uint8_t *addr); +bool is_out_of_time(unsigned long timestamp, unsigned long timeout);
#ifdef CONFIG_BATMAN_ADV_DEBUG int debug_log(struct bat_priv *bat_priv, const char *fmt, ...) __printf(2, 3); diff --git a/translation-table.c b/translation-table.c index 7a7df4a..b22f8d9 100644 --- a/translation-table.c +++ b/translation-table.c @@ -108,14 +108,6 @@ static struct tt_global_entry *tt_global_hash_find(struct bat_priv *bat_priv,
}
-static bool is_out_of_time(unsigned long starting_time, unsigned long timeout) -{ - unsigned long deadline; - deadline = starting_time + msecs_to_jiffies(timeout); - - return time_after(jiffies, deadline); -} - static void tt_local_entry_free_ref(struct tt_local_entry *tt_local_entry) { if (atomic_dec_and_test(&tt_local_entry->common.refcount))
Both translation tables and network coding use timeouts to do house keeping, so we might as well share the function used to compare a timestamp+timeout with current time.
Signed-off-by: Martin Hundebøll martin@hundeboll.net --- main.c | 5 +++++ main.h | 1 + translation-table.c | 8 -------- 3 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/main.c b/main.c index 71b56cf..0930bb4 100644 --- a/main.c +++ b/main.c @@ -172,6 +172,11 @@ int is_my_mac(const uint8_t *addr) return 0; }
+bool is_out_of_time(unsigned long timestamp, unsigned long timeout) +{ + return time_is_before_jiffies(timestamp + msecs_to_jiffies(timeout)); +} + module_init(batman_init); module_exit(batman_exit);
diff --git a/main.h b/main.h index 464439f..92eb37b 100644 --- a/main.h +++ b/main.h @@ -159,6 +159,7 @@ void mesh_free(struct net_device *soft_iface); void inc_module_count(void); void dec_module_count(void); int is_my_mac(const uint8_t *addr); +bool is_out_of_time(unsigned long timestamp, unsigned long timeout);
#ifdef CONFIG_BATMAN_ADV_DEBUG int debug_log(struct bat_priv *bat_priv, const char *fmt, ...) __printf(2, 3); diff --git a/translation-table.c b/translation-table.c index 7a7df4a..b22f8d9 100644 --- a/translation-table.c +++ b/translation-table.c @@ -108,14 +108,6 @@ static struct tt_global_entry *tt_global_hash_find(struct bat_priv *bat_priv,
}
-static bool is_out_of_time(unsigned long starting_time, unsigned long timeout) -{ - unsigned long deadline; - deadline = starting_time + msecs_to_jiffies(timeout); - - return time_after(jiffies, deadline); -} - static void tt_local_entry_free_ref(struct tt_local_entry *tt_local_entry) { if (atomic_dec_and_test(&tt_local_entry->common.refcount))
On Friday, December 02, 2011 22:37:31 Martin Hundebøll wrote:
Both translation tables and network coding use timeouts to do house keeping, so we might as well share the function used to compare a timestamp+timeout with current time.
Signed-off-by: Martin Hundebøll martin@hundeboll.net
main.c | 5 +++++ main.h | 1 + translation-table.c | 8 -------- 3 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/main.c b/main.c index 71b56cf..0930bb4 100644 --- a/main.c +++ b/main.c @@ -172,6 +172,11 @@ int is_my_mac(const uint8_t *addr) return 0; }
+bool is_out_of_time(unsigned long timestamp, unsigned long timeout) +{
return time_is_before_jiffies(timestamp +
msecs_to_jiffies(timeout)); +}
Since it is a simple one-liner you could make it a define or at least static inline (in main.h).
How about a more descriptive name like "reached_timeout()" or "has_timed_out()" ? We could use it in other parts of the code too.
You might also want to add a few words about the fact that you did not only move the function but also changed time_after() to time_is_before_jiffies() at the same time.
Regards, Marek
On 2011-12-03 08:36, Marek Lindner wrote:
Since it is a simple one-liner you could make it a define or at least static inline (in main.h).
Correct. Maybe the correct solution is to remove the function and just call time_is_before_jiffies() directly instead?
On Saturday, December 03, 2011 23:41:38 Martin Hundebøll wrote:
On 2011-12-03 08:36, Marek Lindner wrote:
Since it is a simple one-liner you could make it a define or at least static inline (in main.h).
Correct. Maybe the correct solution is to remove the function and just call time_is_before_jiffies() directly instead?
Guess you misread me. I like the idea of having this easy to read wrapper. Before you moved it to main.c it was a static function. The compiler could better optimize it.
Cheers, Marek
On 2011-12-03 16:46, Marek Lindner wrote:
On Saturday, December 03, 2011 23:41:38 Martin Hundebøll wrote:
On 2011-12-03 08:36, Marek Lindner wrote:
Since it is a simple one-liner you could make it a define or at least static inline (in main.h).
Correct. Maybe the correct solution is to remove the function and just call time_is_before_jiffies() directly instead?
Guess you misread me. I like the idea of having this easy to read wrapper. Before you moved it to main.c it was a static function. The compiler could better optimize it.
OK. Didn't misread you; just tried to think :) I'll send a patch with moving it to an inline function in main.h.
Both translation tables and network coding use timeouts to do house keeping, so we might as well share the function used to compare a timestamp+timeout with current time.
For readability and simplicity, the function is renamed to has_timed_out() and uses time_is_before_jiffies() instead of time_after().
Signed-off-by: Martin Hundebøll martin@hundeboll.net --- main.h | 5 +++++ translation-table.c | 32 ++++++++++++-------------------- 2 files changed, 17 insertions(+), 20 deletions(-)
diff --git a/main.h b/main.h index 464439f..838bba0 100644 --- a/main.h +++ b/main.h @@ -204,6 +204,11 @@ static inline int compare_eth(const void *data1, const void *data2) return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0); }
+/* Returns true if current time (jiffies) is after timestamp + timeout */ +static inline bool has_timed_out(unsigned long timestamp, unsigned long timeout) +{ + return time_is_before_jiffies(timestamp + msecs_to_jiffies(timeout)); +}
#define atomic_dec_not_zero(v) atomic_add_unless((v), -1, 0)
diff --git a/translation-table.c b/translation-table.c index 20d6628..d542b9d 100644 --- a/translation-table.c +++ b/translation-table.c @@ -108,14 +108,6 @@ static struct tt_global_entry *tt_global_hash_find(struct bat_priv *bat_priv,
}
-static bool is_out_of_time(unsigned long starting_time, unsigned long timeout) -{ - unsigned long deadline; - deadline = starting_time + msecs_to_jiffies(timeout); - - return time_after(jiffies, deadline); -} - static void tt_local_entry_free_ref(struct tt_local_entry *tt_local_entry) { if (atomic_dec_and_test(&tt_local_entry->common.refcount)) @@ -420,8 +412,8 @@ static void tt_local_purge(struct bat_priv *bat_priv) if (tt_local_entry->common.flags & TT_CLIENT_PENDING) continue;
- if (!is_out_of_time(tt_local_entry->last_seen, - TT_LOCAL_TIMEOUT * 1000)) + if (!has_timed_out(tt_local_entry->last_seen, + TT_LOCAL_TIMEOUT * 1000)) continue;
tt_local_set_pending(bat_priv, tt_local_entry, @@ -758,8 +750,8 @@ static void tt_global_roam_purge(struct bat_priv *bat_priv) common); if (!(tt_global_entry->common.flags & TT_CLIENT_ROAM)) continue; - if (!is_out_of_time(tt_global_entry->roam_at, - TT_CLIENT_ROAM_TIMEOUT * 1000)) + if (!has_timed_out(tt_global_entry->roam_at, + TT_CLIENT_ROAM_TIMEOUT * 1000)) continue;
bat_dbg(DBG_TT, bat_priv, "Deleting global " @@ -978,8 +970,8 @@ static void tt_req_purge(struct bat_priv *bat_priv)
spin_lock_bh(&bat_priv->tt_req_list_lock); list_for_each_entry_safe(node, safe, &bat_priv->tt_req_list, list) { - if (is_out_of_time(node->issued_at, - TT_REQUEST_TIMEOUT * 1000)) { + if (has_timed_out(node->issued_at, + TT_REQUEST_TIMEOUT * 1000)) { list_del(&node->list); kfree(node); } @@ -997,8 +989,8 @@ static struct tt_req_node *new_tt_req_node(struct bat_priv *bat_priv, spin_lock_bh(&bat_priv->tt_req_list_lock); list_for_each_entry(tt_req_node_tmp, &bat_priv->tt_req_list, list) { if (compare_eth(tt_req_node_tmp, orig_node) && - !is_out_of_time(tt_req_node_tmp->issued_at, - TT_REQUEST_TIMEOUT * 1000)) + !has_timed_out(tt_req_node_tmp->issued_at, + TT_REQUEST_TIMEOUT * 1000)) goto unlock; }
@@ -1591,8 +1583,8 @@ static void tt_roam_purge(struct bat_priv *bat_priv)
spin_lock_bh(&bat_priv->tt_roam_list_lock); list_for_each_entry_safe(node, safe, &bat_priv->tt_roam_list, list) { - if (!is_out_of_time(node->first_time, - ROAMING_MAX_TIME * 1000)) + if (!has_timed_out(node->first_time, + ROAMING_MAX_TIME * 1000)) continue;
list_del(&node->list); @@ -1619,8 +1611,8 @@ static bool tt_check_roam_count(struct bat_priv *bat_priv, if (!compare_eth(tt_roam_node->addr, client)) continue;
- if (is_out_of_time(tt_roam_node->first_time, - ROAMING_MAX_TIME * 1000)) + if (has_timed_out(tt_roam_node->first_time, + ROAMING_MAX_TIME * 1000)) continue;
if (!atomic_dec_not_zero(&tt_roam_node->counter))
On Thursday, December 08, 2011 20:32:41 Martin Hundebøll wrote:
Both translation tables and network coding use timeouts to do house keeping, so we might as well share the function used to compare a timestamp+timeout with current time.
For readability and simplicity, the function is renamed to has_timed_out() and uses time_is_before_jiffies() instead of time_after().
Applied in revision 7ee2219.
Thanks, Marek
Signed-off-by: Martin Hundebøll martin@hundeboll.net --- main.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/main.c b/main.c index fb87bdc..71b56cf 100644 --- a/main.c +++ b/main.c @@ -170,7 +170,6 @@ int is_my_mac(const uint8_t *addr) } rcu_read_unlock(); return 0; - }
module_init(batman_init);
On Friday, December 02, 2011 22:39:07 Martin Hundebøll wrote:
Signed-off-by: Martin Hundebøll martin@hundeboll.net
main.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/main.c b/main.c index fb87bdc..71b56cf 100644 --- a/main.c +++ b/main.c @@ -170,7 +170,6 @@ int is_my_mac(const uint8_t *addr) } rcu_read_unlock(); return 0;
}
module_init(batman_init);
I don't have a trailing whitespace space there and you are removing an entire (empty) line. Not just a whitespace ? My checkpatch also does not complain about your first patch. Where did you get your checkpatch from ?
Regards, Marek
On 2011-12-03 08:27, Marek Lindner wrote:
I don't have a trailing whitespace space there and you are removing an entire (empty) line. Not just a whitespace ?
Yes, sorry. The commit should say "empty line" instead of "whitespace". The empty line is also present on git.open-mesh.org: http://git.open-mesh.org/?p=batman-adv.git;a=blob;f=main.c;h=fb87bdc2ce9bdba...
My checkpatch also does not complain about your first patch. Where did you get your checkpatch from ?
Downloaded it from git.kernel.org: http://git.kernel.org/?p=linux/kernel/git/apw/checkpatch.git;a=blob;f=script...
Also tried to download the file from 3.1-tagged tree, which make the same complaints as I mentioned on IRC: Patch: http://dpaste.com/664910/ checkpatch.pl complaints: http://paste.pocoo.org/show/515753/
I will make a patch v2 with a corrected commit message.
Signed-off-by: Martin Hundebøll martin@hundeboll.net --- main.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/main.c b/main.c index fb87bdc..71b56cf 100644 --- a/main.c +++ b/main.c @@ -170,7 +170,6 @@ int is_my_mac(const uint8_t *addr) } rcu_read_unlock(); return 0; - }
module_init(batman_init);
On Thursday, December 08, 2011 19:48:26 Martin Hundebøll wrote:
Signed-off-by: Martin Hundebøll martin@hundeboll.net
main.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)
Applied in revision f742a64.
Thanks, Marek
b.a.t.m.a.n@lists.open-mesh.org