@ -391,6 +391,37 @@ static int wlc_wsec_key(wlc_param param, void *null, void *value)
return wl_bssiovar_set ( interface , " wsec_key " , vif , & wsec_key , sizeof ( wsec_key ) ) ;
}
static int wlc_cap ( wlc_param param , void * data , void * value )
{
char * iov = * ( ( char * * ) data ) ;
if ( param & GET )
return wl_iovar_get ( interface , iov , value , BUFSIZE ) ;
return - 1 ;
}
static int wlc_bssmax ( wlc_param param , void * data , void * value )
{
int * val = ( int * ) value ;
char * iov = * ( ( char * * ) data ) ;
int ret = - 1 ;
if ( param & GET ) {
ret = wl_iovar_get ( interface , iov , wlbuf , BUFSIZE ) ;
if ( ! ret ) {
if ( strstr ( wlbuf , " mbss4 " ) )
* val = 4 ;
else if ( strstr ( wlbuf , " mbss16 " ) )
* val = 16 ;
else
* val = 1 ;
}
}
return ret ;
}
static inline int cw2ecw ( int cw )
{
int i ;
@ -954,6 +985,20 @@ static const struct wlc_call wlc_calls[] = {
. handler = wlc_ioctl ,
. desc = " Band (0=auto, 1=5Ghz, 2=2.4GHz) "
} ,
{
. name = " cap " ,
. param = STRING | NOARG ,
. handler = wlc_cap ,
. data . str = " cap " ,
. desc = " Capabilities "
} ,
{
. name = " bssmax " ,
. param = INT | NOARG ,
. handler = wlc_bssmax ,
. data . str = " cap " ,
. desc = " Number of VIF's supported "
} ,
} ;
# define wlc_calls_size (sizeof(wlc_calls) / sizeof(struct wlc_call))