public inbox for b.a.t.m.a.n@lists.open-mesh.org
 help / color / mirror / Atom feed
From: Marek Lindner <lindner_marek@yahoo.de>
To: The list for a Better Approach To Mobile Ad-hoc Networking
	<b.a.t.m.a.n@lists.open-mesh.org>
Subject: Re: [B.A.T.M.A.N.] [PATCH] batman-adv: limit local translation table max size
Date: Sun, 1 Sep 2013 12:48:44 +0800	[thread overview]
Message-ID: <201309011248.44874.lindner_marek@yahoo.de> (raw)
In-Reply-To: <20130831183829.GT2896@ritirata.org>

On Sunday, September 01, 2013 02:38:29 Antonio Quartulli wrote:
> > diff --git a/hard-interface.c b/hard-interface.c
> > index c5f871f..c60d3ed 100644
> > --- a/hard-interface.c
> > +++ b/hard-interface.c
> > @@ -266,16 +266,9 @@ static void batadv_check_known_mac_addr(const struct
> > net_device *net_dev)
> > 
> >  int batadv_hardif_min_mtu(struct net_device *soft_iface)
> >  {
> > 
> > -	const struct batadv_priv *bat_priv = netdev_priv(soft_iface);
> > +	struct batadv_priv *bat_priv = netdev_priv(soft_iface);
> 
> Why are you removing the const qualifier?

  CC [M]  /home/marek/batman-adv/hard-interface.o
/home/marek/batman-adv/hard-interface.c: In function ‘batadv_hardif_min_mtu’:
/home/marek/batman-adv/hard-interface.c:286:2: warning: passing argument 1 of 
‘atomic_set’ discards ‘const’ qualifier from pointer target type [enabled by 
default]
/usr/src/linux-headers-3.2.0-4-common/arch/x86/include/asm/atomic.h:35:20: 
note: expected ‘struct atomic_t *’ but argument is of type ‘const struct 
atomic_t *’
/home/marek/batman-adv/hard-interface.c:298:2: warning: passing argument 1 of 
‘atomic_set’ discards ‘const’ qualifier from pointer target type [enabled by 
default]
/usr/src/linux-headers-3.2.0-4-common/arch/x86/include/asm/atomic.h:35:20: 
note: expected ‘struct atomic_t *’ but argument is of type ‘const struct 
atomic_t *’

	
> >  	/* Register the client MAC in the transtable */
> > 
> > -	if (!is_multicast_ether_addr(ethhdr->h_source))
> > -		batadv_tt_local_add(soft_iface, ethhdr->h_source, vid,
> > -				    skb->skb_iif);
> > +	if (!is_multicast_ether_addr(ethhdr->h_source)) {
> > +		client_added = batadv_tt_local_add(soft_iface, ethhdr->h_source,
> > +						   vid, skb->skb_iif);
> 
> Isn't this assignment as ugly as the following if condition?
> 
> 		if (!batadv_tt_local_add(soft_iface, ethhdr->h_source, vid,
> 					 skb->skb_iif))
> 
> client_added looks useless to me.

The general idea behind "client_added" was to increase readibility. For the 
casual reader this variable makes it more obvious what goes on.


> > +/**
> > + * batadv_tt_local_table_transmit_size - calculates the local
> > translation table + *  size when transmitted over the air
> > + * @bat_priv: the bat priv with all the soft interface information
> > + *
> > + * Returns local translation table size in bytes.
> > + */
> > +static int batadv_tt_local_table_transmit_size(struct batadv_priv
> > *bat_priv) +{
> > +	struct batadv_softif_vlan *vlan;
> > +	uint16_t num_vlan = 0, tt_local_entries = 0;
> > +	int hdr_size;
> 
> David always asks to sort variable declaration lines from the longest to
> the shorter.
> IMHO it is not really important (in particular in this case) but since you
> are creating the function now, please follow that indication.

Sure.


> > @@ -717,12 +762,6 @@ static void batadv_tt_tvlv_container_update(struct
> > batadv_priv *bat_priv)
> > 
> >  	tt_diff_entries_num = atomic_read(&bat_priv->tt.local_changes);
> >  	tt_diff_len = batadv_tt_len(tt_diff_entries_num);
> > 
> > -	/* if we have too many changes for one packet don't send any
> > -	 * and wait for the tt table request which will be fragmented
> > -	 */
> > -	if (tt_diff_len > bat_priv->soft_iface->mtu)
> > -		tt_diff_len = 0;
> > -
> 
> Why are you removing this? We are not going to fragment OGMs and in this
> function we are preparing the TVLV to send within one of those.

Upon reading this function a realized this "tt_diff_len = 0" mechanism is 
buggy. For instance, the changes_list list is not purged but keeps growing 
until it magically fits the ogm diff again. Or checking bat_priv->soft_iface-
>mtu isn't terribly accurate either. The more I looked the more my head 
started to spin. Suddenly, I was convinced we don't need the check anymore 
because we have the fragmentation but you are right - it won't help here. I'll 
add the check again but be aware that it is broken.

Thanks for the review!

Cheers,
Marek

  reply	other threads:[~2013-09-01  4:48 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-29 15:33 [B.A.T.M.A.N.] [PATCH] batman-adv: limit local translation table max size Marek Lindner
2013-08-31 18:38 ` Antonio Quartulli
2013-09-01  4:48   ` Marek Lindner [this message]
2013-09-01  8:05     ` Antonio Quartulli
2013-09-01 16:49       ` Marek Lindner
2013-09-01 17:04         ` Antonio Quartulli

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=201309011248.44874.lindner_marek@yahoo.de \
    --to=lindner_marek@yahoo.de \
    --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