get_wireless_stats call re-written to use the mib interface.
still have the generic ioctl stuff to finish before all of the GPL-only code is gone.
This commit is contained in:
parent
44e5da58d4
commit
ec780a50ba
2
CHANGES
2
CHANGES
|
@ -46,7 +46,7 @@
|
||||||
you to have multiple profiles per network. Not finished yet.
|
you to have multiple profiles per network. Not finished yet.
|
||||||
- hfa384x.h updates.
|
- hfa384x.h updates.
|
||||||
- additions to the MIB.
|
- additions to the MIB.
|
||||||
- Cleaned up wireless extension stuff a little bit.
|
- Rewrote part of the existing wireless extension code.
|
||||||
- Add the Microsoft MN510 device ID.
|
- Add the Microsoft MN510 device ID.
|
||||||
- Finally fix the 'crash on unload' problem for 2.2.x kernels with PCI.
|
- Finally fix the 'crash on unload' problem for 2.2.x kernels with PCI.
|
||||||
Turns out the kcompat24 code wasn't quite complete. (Matthew Rush)
|
Turns out the kcompat24 code wasn't quite complete. (Matthew Rush)
|
||||||
|
|
|
@ -211,7 +211,6 @@ typedef struct wlandevice
|
||||||
|
|
||||||
#ifdef WIRELESS_EXT
|
#ifdef WIRELESS_EXT
|
||||||
struct iw_statistics wstats;
|
struct iw_statistics wstats;
|
||||||
struct iw_statistics* (*get_wireless_stats)(netdevice_t *dev);
|
|
||||||
int (*support_ioctl)(netdevice_t *dev, struct iwreq *iwr, int cmd);
|
int (*support_ioctl)(netdevice_t *dev, struct iwreq *iwr, int cmd);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -1,22 +1,38 @@
|
||||||
/* p80211wext.c -*- linux-c -*-
|
/* src/p80211/p80211wext.c
|
||||||
*
|
*
|
||||||
* original author: Reyk Floeter <reyk@synack.de>
|
* Glue code to make linux-wlan-ng a happy wireless extension camper.
|
||||||
*
|
*
|
||||||
* This application is free software; you can redistribute it and/or
|
* original author: Reyk Floeter <reyk@synack.de>
|
||||||
* modify it under the terms of the GNU General Public
|
* Completely re-written by Solomon Peachy <solomon@linux-wlan.com>
|
||||||
* License as published by the Free Software Foundation; either
|
*
|
||||||
* version 2 of the License, or (at your option) any later version.
|
* Copyright (C) 2002 AbsoluteValue Systems, Inc. All Rights Reserved.
|
||||||
*
|
* --------------------------------------------------------------------
|
||||||
* This application is distributed in the hope that it will be useful,
|
*
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* linux-wlan
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
*
|
||||||
* Library General Public License for more details.
|
* The contents of this file are subject to the Mozilla Public
|
||||||
*
|
* License Version 1.1 (the "License"); you may not use this file
|
||||||
* You should have received a copy of the GNU General Public
|
* except in compliance with the License. You may obtain a copy of
|
||||||
* License along with this library; if not, write to the Free
|
* the License at http://www.mozilla.org/MPL/
|
||||||
* Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
*
|
||||||
* 02111 USA.
|
* Software distributed under the License is distributed on an "AS
|
||||||
*/
|
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||||
|
* implied. See the License for the specific language governing
|
||||||
|
* rights and limitations under the License.
|
||||||
|
*
|
||||||
|
* Alternatively, the contents of this file may be used under the
|
||||||
|
* terms of the GNU Public License version 2 (the "GPL"), in which
|
||||||
|
* case the provisions of the GPL are applicable instead of the
|
||||||
|
* above. If you wish to allow the use of your version of this file
|
||||||
|
* only under the terms of the GPL and not to allow others to use
|
||||||
|
* your version of this file under the MPL, indicate your decision
|
||||||
|
* by deleting the provisions above and replace them with the notice
|
||||||
|
* and other provisions required by the GPL. If you do not delete
|
||||||
|
* the provisions above, a recipient may use your version of this
|
||||||
|
* file under either the MPL or the GPL.
|
||||||
|
*
|
||||||
|
* --------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
/*================================================================*/
|
/*================================================================*/
|
||||||
/* System Includes */
|
/* System Includes */
|
||||||
|
@ -47,6 +63,8 @@
|
||||||
#include <wlan/p80211conv.h>
|
#include <wlan/p80211conv.h>
|
||||||
#include <wlan/p80211mgmt.h>
|
#include <wlan/p80211mgmt.h>
|
||||||
#include <wlan/p80211msg.h>
|
#include <wlan/p80211msg.h>
|
||||||
|
#include <wlan/p80211metastruct.h>
|
||||||
|
#include <wlan/p80211metadef.h>
|
||||||
#include <wlan/p80211netdev.h>
|
#include <wlan/p80211netdev.h>
|
||||||
#include <wlan/p80211ioctl.h>
|
#include <wlan/p80211ioctl.h>
|
||||||
#include <wlan/p80211req.h>
|
#include <wlan/p80211req.h>
|
||||||
|
@ -59,8 +77,10 @@
|
||||||
/* called by /proc/net/wireless */
|
/* called by /proc/net/wireless */
|
||||||
struct iw_statistics* p80211wext_get_wireless_stats (netdevice_t *dev)
|
struct iw_statistics* p80211wext_get_wireless_stats (netdevice_t *dev)
|
||||||
{
|
{
|
||||||
|
p80211msg_lnxreq_commsquality_t quality;
|
||||||
wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
|
wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
|
||||||
struct iw_statistics* wstats = NULL;
|
struct iw_statistics* wstats = &wlandev->wstats;
|
||||||
|
int retval;
|
||||||
|
|
||||||
DBFENTER;
|
DBFENTER;
|
||||||
|
|
||||||
|
@ -71,26 +91,31 @@ struct iw_statistics* p80211wext_get_wireless_stats (netdevice_t *dev)
|
||||||
if ( wlandev->msdstate != WLAN_MSD_RUNNING )
|
if ( wlandev->msdstate != WLAN_MSD_RUNNING )
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* iface
|
/* XXX Only valid in station mode */
|
||||||
status
|
wstats->status = 0;
|
||||||
link_qual
|
|
||||||
link_level
|
|
||||||
link_noise
|
|
||||||
disc_nwid
|
|
||||||
disc_crypt
|
|
||||||
disc_frag
|
|
||||||
disc_retry
|
|
||||||
disc_misc
|
|
||||||
missed_beacon
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* forward the request to a hardware- dependent function.
|
/* build request message */
|
||||||
* FIX: should it be possible to do abstract MIB- requests (ie. for
|
quality.msgcode = DIDmsg_lnxreq_commsquality;
|
||||||
* getting the link quality) on the p80211- level?!
|
quality.dbm.data = P80211ENUM_truth_false;
|
||||||
* ANSWER: [MSM] Yes, it should. It just isn't done yet.
|
quality.dbm.status = P80211ENUM_msgitem_status_data_ok;
|
||||||
*/
|
|
||||||
if (wlandev->get_wireless_stats)
|
/* send message to nsd */
|
||||||
wstats = (*(wlandev->get_wireless_stats))(dev);
|
if ( wlandev->mlmerequest == NULL )
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
retval = (*(wlandev->mlmerequest))(wlandev, (p80211msg_t*) &quality);
|
||||||
|
|
||||||
|
wstats->qual.qual = quality.link.data; /* overall link quality */
|
||||||
|
wstats->qual.level = quality.level.data; /* instant signal level */
|
||||||
|
wstats->qual.noise = quality.noise.data; /* instant noise level */
|
||||||
|
|
||||||
|
wstats->qual.updated = 7; // XXX magic number. don't know.
|
||||||
|
wstats->discard.code = wlandev->rx.decrypt_err;
|
||||||
|
wstats->discard.nwid = 0;
|
||||||
|
wstats->discard.fragment = 0;
|
||||||
|
wstats->discard.retries = 0;
|
||||||
|
wstats->discard.misc = 0;
|
||||||
|
wstats->miss.beacon = 0;
|
||||||
|
|
||||||
DBFEXIT;
|
DBFEXIT;
|
||||||
|
|
||||||
|
|
|
@ -958,9 +958,15 @@ int prism2sta_txframe(wlandevice_t *wlandev, struct sk_buff *skb, p80211_hdr_t *
|
||||||
----------------------------------------------------------------*/
|
----------------------------------------------------------------*/
|
||||||
int prism2sta_mlmerequest(wlandevice_t *wlandev, p80211msg_t *msg)
|
int prism2sta_mlmerequest(wlandevice_t *wlandev, p80211msg_t *msg)
|
||||||
{
|
{
|
||||||
|
prism2sta_priv_t *priv;
|
||||||
|
hfa384x_t *hw;
|
||||||
|
|
||||||
int result = 0;
|
int result = 0;
|
||||||
DBFENTER;
|
DBFENTER;
|
||||||
|
|
||||||
|
priv = (prism2sta_priv_t*)wlandev->priv;
|
||||||
|
hw = priv->hw;
|
||||||
|
|
||||||
switch( msg->msgcode )
|
switch( msg->msgcode )
|
||||||
{
|
{
|
||||||
case DIDmsg_dot11req_mibget :
|
case DIDmsg_dot11req_mibget :
|
||||||
|
@ -1115,6 +1121,36 @@ int prism2sta_mlmerequest(wlandevice_t *wlandev, p80211msg_t *msg)
|
||||||
WLAN_LOG_DEBUG0(2,"Received mlme enable request\n");
|
WLAN_LOG_DEBUG0(2,"Received mlme enable request\n");
|
||||||
result = prism2mgmt_enable(wlandev, msg);
|
result = prism2mgmt_enable(wlandev, msg);
|
||||||
break;
|
break;
|
||||||
|
case DIDmsg_lnxreq_commsquality: {
|
||||||
|
UINT8 bytebuf[HFA384x_CMD_ALLOC_LEN_MAX];
|
||||||
|
p80211msg_lnxreq_commsquality_t *qualmsg;
|
||||||
|
hfa384x_commsquality_t *qual = (hfa384x_commsquality_t*)bytebuf;
|
||||||
|
WLAN_LOG_DEBUG0(2,"Received commsquality request\n");
|
||||||
|
|
||||||
|
qualmsg = (p80211msg_lnxreq_commsquality_t*) msg;
|
||||||
|
memset(qual, 0, sizeof(hfa384x_commsquality_t));
|
||||||
|
|
||||||
|
result = hfa384x_drvr_getconfig(hw,
|
||||||
|
HFA384x_RID_COMMSQUALITY,
|
||||||
|
qual,
|
||||||
|
HFA384x_RID_COMMSQUALITY_LEN);
|
||||||
|
if (result != 0) {
|
||||||
|
WLAN_LOG_ERROR2("Failed to read %s statistics: error=%d\n",
|
||||||
|
wlandev->name, result);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (qualmsg->dbm.data == P80211ENUM_truth_true) {
|
||||||
|
qualmsg->link.data = qual->CQ_currBSS;
|
||||||
|
qualmsg->level.data = (qual->ASL_currBSS + 0x100 - 100);
|
||||||
|
qualmsg->noise.data = (qual->ANL_currFC + 0x100 - 100);
|
||||||
|
} else {
|
||||||
|
qualmsg->link.data = qual->CQ_currBSS;
|
||||||
|
qualmsg->level.data = qual->ASL_currBSS;
|
||||||
|
qualmsg->noise.data = qual->ANL_currFC;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
WLAN_LOG_WARNING1("Unknown mgmt request message 0x%08lx", msg->msgcode);
|
WLAN_LOG_WARNING1("Unknown mgmt request message 0x%08lx", msg->msgcode);
|
||||||
break;
|
break;
|
||||||
|
@ -4342,7 +4378,6 @@ static wlandevice_t *create_wlan(void)
|
||||||
wlandev->mlmerequest = &prism2sta_mlmerequest;
|
wlandev->mlmerequest = &prism2sta_mlmerequest;
|
||||||
wlandev->hwremovedfn = &prism2sta_hwremoved;
|
wlandev->hwremovedfn = &prism2sta_hwremoved;
|
||||||
#if WIRELESS_EXT > 10
|
#if WIRELESS_EXT > 10
|
||||||
wlandev->get_wireless_stats = &prism2wext_get_wireless_stats;
|
|
||||||
wlandev->support_ioctl = &prism2wext_support_ioctl;
|
wlandev->support_ioctl = &prism2wext_support_ioctl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -102,69 +102,6 @@ static int prism2wext_getrate(hfa384x_t* hw, struct iw_param *rrq);
|
||||||
|
|
||||||
static int prism2wext_get_channel(struct iw_freq *iwf);
|
static int prism2wext_get_channel(struct iw_freq *iwf);
|
||||||
|
|
||||||
/* called by p80211wstats_get_wireless_stats for /proc/net/wireless */
|
|
||||||
struct iw_statistics* prism2wext_get_wireless_stats(netdevice_t *dev)
|
|
||||||
{
|
|
||||||
wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
|
|
||||||
prism2sta_priv_t *priv = (prism2sta_priv_t*)wlandev->priv;
|
|
||||||
hfa384x_t *hw = priv->hw;
|
|
||||||
hfa384x_CommTallies32_t tallies = priv->tallies;
|
|
||||||
struct iw_statistics* wstats;
|
|
||||||
int result = 0;
|
|
||||||
UINT8 bytebuf[HFA384x_CMD_ALLOC_LEN_MAX];
|
|
||||||
hfa384x_commsquality_t *qual = (hfa384x_commsquality_t*)bytebuf;
|
|
||||||
|
|
||||||
DBFENTER;
|
|
||||||
|
|
||||||
if (wlandev == (wlandevice_t*) NULL)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
wstats = &wlandev->wstats;
|
|
||||||
|
|
||||||
memset(&wstats->qual, 0, sizeof(hfa384x_commsquality_t));
|
|
||||||
|
|
||||||
/* get the qualitity settings from the RID and return them
|
|
||||||
* into a struct...
|
|
||||||
*/
|
|
||||||
result = hfa384x_drvr_getconfig(hw,
|
|
||||||
HFA384x_RID_COMMSQUALITY,
|
|
||||||
qual,
|
|
||||||
HFA384x_RID_COMMSQUALITY_LEN);
|
|
||||||
if (result != 0) {
|
|
||||||
printk(KERN_ERR "Failed to read %s statistics: error=%d\n",
|
|
||||||
dev->name, result);
|
|
||||||
goto _done;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* set stats for the wireless- stats struct.
|
|
||||||
* we can't return any link quality, if we are in ap (accesspoint) -
|
|
||||||
* mode!
|
|
||||||
*/
|
|
||||||
wstats->status = priv->ap;
|
|
||||||
wstats->qual.qual = priv->ap ? 0L : qual->CQ_currBSS;
|
|
||||||
#ifdef WEXT_IN_DB
|
|
||||||
/* Intersil says : dBm = RSSI - 100 - remember that 0x100 == 0x0 */
|
|
||||||
/* Important : Wavelan/Orinoco driver do it differently, but I suspect
|
|
||||||
* that they are broken. Somebody need to check that iwconfig
|
|
||||||
* report the proper values before we enable that - Jean II */
|
|
||||||
wstats->qual.level = priv->ap ? 0L : (qual->ASL_currBSS + 0x100 - 100);
|
|
||||||
wstats->qual.noise = priv->ap ? 0L : (qual->ANL_currFC + 0x100 - 100);
|
|
||||||
#else /* WEXT_IN_DB */
|
|
||||||
wstats->qual.level = priv->ap ? 0L : qual->ASL_currBSS;
|
|
||||||
wstats->qual.noise = priv->ap ? 0L : qual->ANL_currFC;
|
|
||||||
#endif /* WEXT_IN_DB */
|
|
||||||
wstats->qual.updated = 7;
|
|
||||||
wstats->discard.nwid = 0L; /* tallies.txdiscardswrongsa is wrong! */
|
|
||||||
wstats->discard.code = tallies.rxdiscardswepundecr; /* am i wrong?! */
|
|
||||||
wstats->discard.misc = tallies.txdiscards; /* am i wrong?! */
|
|
||||||
|
|
||||||
_done:
|
|
||||||
DBFEXIT;
|
|
||||||
|
|
||||||
return &wlandev->wstats;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* wireless extensions' ioctls */
|
|
||||||
int prism2wext_support_ioctl(netdevice_t *dev, struct iwreq *iwr, int cmd)
|
int prism2wext_support_ioctl(netdevice_t *dev, struct iwreq *iwr, int cmd)
|
||||||
{
|
{
|
||||||
wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
|
wlandevice_t *wlandev = (wlandevice_t*)dev->priv;
|
||||||
|
|
|
@ -2476,6 +2476,100 @@ p80211meta_t MKREQMETANAME(lnxreq_ifstate)[] = {
|
||||||
UINT32 MKREQMETASIZE(lnxreq_ifstate) =
|
UINT32 MKREQMETASIZE(lnxreq_ifstate) =
|
||||||
sizeof(MKREQMETANAME(lnxreq_ifstate))/sizeof(p80211meta_t);
|
sizeof(MKREQMETANAME(lnxreq_ifstate))/sizeof(p80211meta_t);
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------*/
|
||||||
|
/* metadata for the commsquality request message arguments */
|
||||||
|
extern UINT32 MKREQMETASIZE(lnxreq_commsquality);
|
||||||
|
|
||||||
|
p80211meta_t MKREQMETANAME(lnxreq_commsquality)[] = {
|
||||||
|
{
|
||||||
|
/* name */ (char *)&(MKREQMETASIZE(lnxreq_commsquality)),
|
||||||
|
/* did */ 0,
|
||||||
|
/* flags */ 0,
|
||||||
|
/* min */ 0,
|
||||||
|
/* max */ 0,
|
||||||
|
/* maxlen */ 0,
|
||||||
|
/* minlen */ 0,
|
||||||
|
/* enumptr */ NULL,
|
||||||
|
/* collptr */ NULL,
|
||||||
|
/* totextptr */ NULL,
|
||||||
|
/* fromtextptr */ NULL,
|
||||||
|
/* validfunptr */ NULL
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* name */ MKITEMNAME("resultcode"),
|
||||||
|
/* did */ 0,
|
||||||
|
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, 0UL, ISCONFIRM),
|
||||||
|
/* min */ 0,
|
||||||
|
/* max */ 0,
|
||||||
|
/* maxlen */ 0,
|
||||||
|
/* minlen */ 0,
|
||||||
|
/* enumptr */ &MKENUMNAME(resultcode),
|
||||||
|
/* collptr */ NULL,
|
||||||
|
/* totextptr */ p80211_totext_enumint,
|
||||||
|
/* fromtextptr */ p80211_fromtext_enumint,
|
||||||
|
/* validfunptr */ p80211_isvalid_enumint
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* name */ MKITEMNAME("dbm"),
|
||||||
|
/* did */ 0,
|
||||||
|
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, 0UL, ISCONFIRM),
|
||||||
|
/* min */ 0,
|
||||||
|
/* max */ 0,
|
||||||
|
/* maxlen */ 0,
|
||||||
|
/* minlen */ 0,
|
||||||
|
/* enumptr */ &MKENUMNAME(truth),
|
||||||
|
/* collptr */ NULL,
|
||||||
|
/* totextptr */ p80211_totext_enumint,
|
||||||
|
/* fromtextptr */ p80211_fromtext_enumint,
|
||||||
|
/* validfunptr */ p80211_isvalid_enumint
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* name */ MKITEMNAME("link"),
|
||||||
|
/* did */ 0,
|
||||||
|
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, ISREQUEST, 0UL),
|
||||||
|
/* min */ 0,
|
||||||
|
/* max */ 0,
|
||||||
|
/* maxlen */ 0,
|
||||||
|
/* minlen */ 0,
|
||||||
|
/* enumptr */ NULL,
|
||||||
|
/* collptr */ NULL,
|
||||||
|
/* totextptr */ p80211_totext_boundedint,
|
||||||
|
/* fromtextptr */ p80211_fromtext_boundedint,
|
||||||
|
/* validfunptr */ p80211_isvalid_boundedint
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* name */ MKITEMNAME("level"),
|
||||||
|
/* did */ 0,
|
||||||
|
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, ISREQUEST, 0UL),
|
||||||
|
/* min */ 0,
|
||||||
|
/* max */ 0,
|
||||||
|
/* maxlen */ 0,
|
||||||
|
/* minlen */ 0,
|
||||||
|
/* enumptr */ NULL,
|
||||||
|
/* collptr */ NULL,
|
||||||
|
/* totextptr */ p80211_totext_boundedint,
|
||||||
|
/* fromtextptr */ p80211_fromtext_boundedint,
|
||||||
|
/* validfunptr */ p80211_isvalid_boundedint
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* name */ MKITEMNAME("noise"),
|
||||||
|
/* did */ 0,
|
||||||
|
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, ISREQUEST, 0UL),
|
||||||
|
/* min */ 0,
|
||||||
|
/* max */ 0,
|
||||||
|
/* maxlen */ 0,
|
||||||
|
/* minlen */ 0,
|
||||||
|
/* enumptr */ NULL,
|
||||||
|
/* collptr */ NULL,
|
||||||
|
/* totextptr */ p80211_totext_boundedint,
|
||||||
|
/* fromtextptr */ p80211_fromtext_boundedint,
|
||||||
|
/* validfunptr */ p80211_isvalid_boundedint
|
||||||
|
},
|
||||||
|
}; /* end of lnxreq_commsquality list */
|
||||||
|
|
||||||
|
UINT32 MKREQMETASIZE(lnxreq_commsquality) =
|
||||||
|
sizeof(MKREQMETANAME(lnxreq_commsquality))/sizeof(p80211meta_t);
|
||||||
|
|
||||||
/*--------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------*/
|
||||||
/* metadata for the hostwep request message arguments */
|
/* metadata for the hostwep request message arguments */
|
||||||
extern UINT32 MKREQMETASIZE(lnxreq_hostwep);
|
extern UINT32 MKREQMETASIZE(lnxreq_hostwep);
|
||||||
|
@ -2495,6 +2589,20 @@ p80211meta_t MKREQMETANAME(lnxreq_hostwep)[] = {
|
||||||
/* fromtextptr */ NULL,
|
/* fromtextptr */ NULL,
|
||||||
/* validfunptr */ NULL
|
/* validfunptr */ NULL
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
/* name */ MKITEMNAME("resultcode"),
|
||||||
|
/* did */ 0,
|
||||||
|
/* flags */ P80211ITEM_SETFLAGS(ISREQUIRED, 0UL, ISCONFIRM),
|
||||||
|
/* min */ 0,
|
||||||
|
/* max */ 0,
|
||||||
|
/* maxlen */ 0,
|
||||||
|
/* minlen */ 0,
|
||||||
|
/* enumptr */ &MKENUMNAME(resultcode),
|
||||||
|
/* collptr */ NULL,
|
||||||
|
/* totextptr */ p80211_totext_enumint,
|
||||||
|
/* fromtextptr */ p80211_fromtext_enumint,
|
||||||
|
/* validfunptr */ p80211_isvalid_enumint
|
||||||
|
},
|
||||||
{
|
{
|
||||||
/* name */ MKITEMNAME("decrypt"),
|
/* name */ MKITEMNAME("decrypt"),
|
||||||
/* did */ 0,
|
/* did */ 0,
|
||||||
|
@ -4662,6 +4770,10 @@ grplistitem_t MKGRPMETANAME(lnxreq)[] = {
|
||||||
"lnxreq_hostwep",
|
"lnxreq_hostwep",
|
||||||
MKREQMETANAME(lnxreq_hostwep)
|
MKREQMETANAME(lnxreq_hostwep)
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"lnxreq_commsquality",
|
||||||
|
MKREQMETANAME(lnxreq_commsquality)
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"lnxreq_autojoin",
|
"lnxreq_autojoin",
|
||||||
MKREQMETANAME(lnxreq_autojoin)
|
MKREQMETANAME(lnxreq_autojoin)
|
||||||
|
|
Loading…
Reference in New Issue