[PATCH 3/3] channel and frequency added in interface capability properties on dbus

Dan Williams dcbw at redhat.com
Mon Dec 19 08:20:47 PST 2016


On Mon, 2016-12-19 at 09:44 -0600, Dan Williams wrote:
> On Mon, 2016-12-19 at 19:27 +0530, Avichal Agarwal wrote:
> > 
> > Signed-off-by: Avichal Agarwal <avichal.a at samsung.com>
> > Signed-off-by: Mayank Haarit <mayank.h at samsung.com>
> > Signed-off-by: Kyeong-Chae Lim <kcya.lim at samsung.com>
> > ---
> >  wpa_supplicant/dbus/dbus_new_handlers.c | 18 ++++++++++++++++++
> >  1 file changed, 18 insertions(+)
> > 
> > diff --git a/wpa_supplicant/dbus/dbus_new_handlers.c
> > b/wpa_supplicant/dbus/dbus_new_handlers.c
> > index e11dd36..d0d3c88 100644
> > --- a/wpa_supplicant/dbus/dbus_new_handlers.c
> > +++ b/wpa_supplicant/dbus/dbus_new_handlers.c
> > @@ -2360,6 +2360,7 @@ DBusMessage *
> > wpas_dbus_handler_set_pkcs11_engine_and_module_path(
> >  }
> >  
> >  
> > +
> >  /**
> >   * wpas_dbus_getter_capabilities - Return interface capabilities
> >   * @iter: Pointer to incoming dbus message iter
> > @@ -2642,6 +2643,21 @@ dbus_bool_t wpas_dbus_getter_capabilities(
> >  			goto nomem;
> >  	}
> >  
> > +	if (res >= 0) {
> > +		int  buf[1024];
> 
> Whitespace issues here; only one space between the type and variable
> name.
> 
> > 
> > +		 int len= wpas_get_channel_freq(wpa_s, buf,2);
> 
> Formatting here; space between variable name and the '=' sign.  Also
> spaces after ',' in argument lists.
> 
> > 
> > +		if(!wpa_dbus_dict_append_int32_array(&iter_dict,
> > "Frequency", buf,len))
> 
> "Channels" is plural below, so perhaps this should be "Frequencies"?
>  Also, these aren't ever going to be negative, so perhaps we should
> be
> using uint32 lists instead of int32.

Here's a different thought.  The supplicant internally keeps the
channel/frequency in the same object (hostap_channel_data) and we could
do the same thing here for the dbus interface.

Having these two pieces of info as separate items in the D-Bus
interface means you cannot distinguish between the overlapping channel
#s from the different bands (channel 132 at either 5660 or 3660 MHz) or
802.11b from 802.11ad channels.

There are two ways to tie channel/frequency together in the interface:

1) array-of-dicts: a "Channels" property would be an array of dicts
(dbus signature "aa{sv}"), and each element in the array would be a
dict of channel properties.  This is most extendable to the future
should we want to add more options to each channel's properties, like
max TX power and whatnot.

2) array-of-structs: a "Channels" property would be an array of structs
(dbus signature "a(uu)") where each element is a struct of type "uu"
with the first uint32 being the frequency and the second being the
channel #.  I like this less because it's less future-proof.

Dan

> > 
> > +				goto nomem;
> > +
> > +	}
> > +	if (res >= 0) {
> > +			int  buf[1024];
> > +			int len=wpas_get_channel_freq(wpa_s,
> > buf,1)
> 
> Same whitespace/spacing comments here.
> 
> > 
> > +			if(!wpa_dbus_dict_append_int32_array(&iter
> > _d
> > ict, "Channels", buf,len))
> > +					goto nomem;
> > +
> > +		}
> > +
> >  	if (!wpa_dbus_dict_close_write(&variant_iter, &iter_dict)
> > ||
> >  	    !dbus_message_iter_close_container(iter,
> > &variant_iter))
> >  		goto nomem;
> > @@ -2654,6 +2670,8 @@ nomem:
> >  }
> >  
> >  
> > +
> > +
> >  /**
> >   * wpas_dbus_getter_state - Get interface state
> >   * @iter: Pointer to incoming dbus message iter
> 
> _______________________________________________
> Hostap mailing list
> Hostap at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/hostap



More information about the Hostap mailing list