public inbox for b.a.t.m.a.n@lists.open-mesh.org
 help / color / mirror / Atom feed
From: Simon Wunderlich <simon.wunderlich@s2003.tu-chemnitz.de>
To: The list for a Better Approach To Mobile Ad-hoc Networking
	<b.a.t.m.a.n@lists.open-mesh.org>
Cc: Antonio Quartulli <antonio@open-mesh.com>
Subject: Re: [B.A.T.M.A.N.] [RFCv2 05/10] batman-adv: add bat_metric_is_equiv_or_better API function
Date: Sat, 3 Aug 2013 23:10:07 +0200	[thread overview]
Message-ID: <20130803211005.GD12891@pandem0nium> (raw)
In-Reply-To: <1375303667-3018-6-git-send-email-ordex@autistici.org>

[-- Attachment #1: Type: text/plain, Size: 4023 bytes --]

On Wed, Jul 31, 2013 at 10:47:42PM +0200, Antonio Quartulli wrote:
> From: Antonio Quartulli <antonio@open-mesh.com>
> 
> Each routing protocol has its own metric semantic and
> therefore is the protocol itself the only component able to
> compare two metrics to check similarity similarity.
> 
> This new API allows each routing protocol to implement its
> own logic and make the external code protocol agnostic.
> 
> Signed-off-by: Antonio Quartulli <antonio@open-mesh.com>
> ---
>  bat_iv_ogm.c | 6 ++++++
>  main.c       | 3 ++-
>  main.h       | 6 ++++++
>  types.h      | 4 ++++
>  4 files changed, 18 insertions(+), 1 deletion(-)
> 
> diff --git a/bat_iv_ogm.c b/bat_iv_ogm.c
> index 32e0321..2e03fdb 100644
> --- a/bat_iv_ogm.c
> +++ b/bat_iv_ogm.c
> @@ -1465,6 +1465,11 @@ static uint32_t batadv_iv_ogm_metric_get(struct batadv_neigh_node *neigh_node)
>  	return neigh_node->bat_iv.tq_avg;
>  }
>  
> +static bool batadv_iv_ogm_metric_is_eob(uint32_t metric, uint32_t new_metric)
> +{
> +	return (metric - new_metric < BATADV_TQ_SIMILARITY_THRESHOLD);
> +}
> +

Since it's static anyway, maybe call this function batadv_iv_ogm_metric_is_equiv_or_better instead? eob
looks so ... random. :) Also, maybe use BATADV_IV_TQ_SIMILARITY_THRESHOLD? Although TQ somehow implies
BATADV_IV ...

>  static struct batadv_algo_ops batadv_batman_iv __read_mostly = {
>  	.name = "BATMAN_IV",
>  	.bat_iface_enable = batadv_iv_ogm_iface_enable,
> @@ -1474,6 +1479,7 @@ static struct batadv_algo_ops batadv_batman_iv __read_mostly = {
>  	.bat_ogm_schedule = batadv_iv_ogm_schedule,
>  	.bat_ogm_emit = batadv_iv_ogm_emit,
>  	.bat_metric_get = batadv_iv_ogm_metric_get,
> +	.bat_metric_is_equiv_or_better = batadv_iv_ogm_metric_is_eob,
>  	.bat_orig_print = batadv_iv_ogm_orig_print,
>  };
>  
> diff --git a/main.c b/main.c
> index cc75126..d263a42 100644
> --- a/main.c
> +++ b/main.c
> @@ -446,7 +446,8 @@ int batadv_algo_register(struct batadv_algo_ops *bat_algo_ops)
>  	    !bat_algo_ops->bat_primary_iface_set ||
>  	    !bat_algo_ops->bat_ogm_schedule ||
>  	    !bat_algo_ops->bat_ogm_emit ||
> -	    !bat_algo_ops->bat_metric_get) {
> +	    !bat_algo_ops->bat_metric_get ||
> +	    !bat_algo_ops->bat_metric_is_equiv_or_better) {
>  		pr_info("Routing algo '%s' does not implement required ops\n",
>  			bat_algo_ops->name);
>  		ret = -EINVAL;
> diff --git a/main.h b/main.h
> index 7b68db9..9b365ad 100644
> --- a/main.h
> +++ b/main.h
> @@ -86,6 +86,12 @@
>  /* numbers of originator to contact for any PUT/GET DHT operation */
>  #define BATADV_DAT_CANDIDATES_NUM 3
>  
> +/**
> + * BATADV_TQ_SIMILARITY_THRESHOLD - TQ points that a secondary metric can differ
> + *  at most from the primary one in order to be still considered acceptable
> + */
> +#define BATADV_TQ_SIMILARITY_THRESHOLD 50
> +
>  /* how much worse secondary interfaces may be to be considered as bonding
>   * candidates
>   */
> diff --git a/types.h b/types.h
> index e994fe0..8885dc0 100644
> --- a/types.h
> +++ b/types.h
> @@ -991,6 +991,8 @@ struct batadv_forw_packet {
>   * @bat_primary_iface_set: called when primary interface is selected / changed
>   * @bat_ogm_schedule: prepare a new outgoing OGM for the send queue
>   * @bat_ogm_emit: send scheduled OGM
> + * @bat_metric_is_equiv_or_better: check if new_metric is good enough to be
> + *  comparable with metric
>   * @bat_orig_print: print the originator table
>   */
>  struct batadv_algo_ops {
> @@ -1003,6 +1005,8 @@ struct batadv_algo_ops {
>  	void (*bat_ogm_schedule)(struct batadv_hard_iface *hard_iface);
>  	void (*bat_ogm_emit)(struct batadv_forw_packet *forw_packet);
>  	uint32_t (*bat_metric_get)(struct batadv_neigh_node *neigh_node);
> +	bool (*bat_metric_is_equiv_or_better)(uint32_t metric,
> +					      uint32_t new_metric);
>  	/* orig_node handling API */
>  	void (*bat_orig_print)(struct batadv_priv *priv, struct seq_file *seq);
>  };
> -- 
> 1.8.1.5
> 

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

  reply	other threads:[~2013-08-03 21:10 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-31 20:47 [B.A.T.M.A.N.] [RFCv2 00/10] Improving the routing protocol abstraction Antonio Quartulli
2013-07-31 20:47 ` [B.A.T.M.A.N.] [RFCv2 01/10] batman-adv: make struct batadv_neigh_node algorithm agnostic Antonio Quartulli
2013-08-03 20:57   ` Simon Wunderlich
2013-07-31 20:47 ` [B.A.T.M.A.N.] [RFCv2 02/10] batman-adv: make struct batadv_orig_node " Antonio Quartulli
2013-08-03 21:05   ` Simon Wunderlich
2013-07-31 20:47 ` [B.A.T.M.A.N.] [RFCv2 03/10] batman-adv: add bat_orig_print function API Antonio Quartulli
2013-08-03 21:07   ` Simon Wunderlich
2013-07-31 20:47 ` [B.A.T.M.A.N.] [RFCv2 04/10] batman-adv: add bat_metric_get API function Antonio Quartulli
2013-07-31 20:47 ` [B.A.T.M.A.N.] [RFCv2 05/10] batman-adv: add bat_metric_is_equiv_or_better " Antonio Quartulli
2013-08-03 21:10   ` Simon Wunderlich [this message]
2013-08-10 16:24     ` Antonio Quartulli
2013-07-31 20:47 ` [B.A.T.M.A.N.] [RFCv2 06/10] batman-adv: add bat_metric_compare " Antonio Quartulli
2013-08-03 21:10   ` Simon Wunderlich
2013-07-31 20:47 ` [B.A.T.M.A.N.] [RFCv2 07/10] batman-adv: adapt bonding to use the new API functions Antonio Quartulli
2013-07-31 20:47 ` [B.A.T.M.A.N.] [RFCv2 08/10] batman-adv: adapt the neighbor purging routine " Antonio Quartulli
2013-07-31 20:47 ` [B.A.T.M.A.N.] [RFCv2 09/10] batman-adv: provide orig_node routing API Antonio Quartulli
2013-07-31 20:47 ` [B.A.T.M.A.N.] [RFCv2 10/10] batman-adv: adapt the TT component to use the new API functions Antonio Quartulli
2013-08-03 21:17   ` Simon Wunderlich
2013-08-03 21:19 ` [B.A.T.M.A.N.] [RFCv2 00/10] Improving the routing protocol abstraction Simon Wunderlich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130803211005.GD12891@pandem0nium \
    --to=simon.wunderlich@s2003.tu-chemnitz.de \
    --cc=antonio@open-mesh.com \
    --cc=b.a.t.m.a.n@lists.open-mesh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox