]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/staging/wlan-ng/prism2mib.c
Staging: wlan-ng: Purge all MIBs not used internally.
[linux-2.6-omap-h63xx.git] / drivers / staging / wlan-ng / prism2mib.c
index eac06f793d815b39b9c1d47c57afa018721b7f43..539c4479d381ddc9d68383102191b56fac816565 100644 (file)
@@ -54,9 +54,6 @@
 /* System Includes */
 #define WLAN_DBVAR     prism2_debug
 
-#include "version.h"
-
-
 #include <linux/version.h>
 
 #include <linux/module.h>
 #include <asm/io.h>
 #include <linux/delay.h>
 #include <asm/byteorder.h>
-
-#include "wlan_compat.h"
-
-//#if (WLAN_HOSTIF == WLAN_PCMCIA)
-//#include <pcmcia/version.h>
-//#include <pcmcia/cs_types.h>
-//#include <pcmcia/cs.h>
-//#include <pcmcia/cistpl.h>
-//#include <pcmcia/ds.h>
-//#include <pcmcia/cisreg.h>
-//#endif
-//
-//#if ((WLAN_HOSTIF == WLAN_PLX) || (WLAN_HOSTIF == WLAN_PCI))
-//#include <linux/ioport.h>
-//#include <linux/pci.h>
-//endif
-
-//#if (WLAN_HOSTIF == WLAN_USB)
 #include <linux/usb.h>
-//#endif
 
 /*================================================================*/
 /* Project Includes */
 /*================================================================*/
 /* Local Types */
 
-#define  F_AP         0x1        /* MIB is supported on Access Points. */
-#define  F_STA        0x2        /* MIB is supported on stations. */
-#define  F_READ       0x4        /* MIB may be read. */
-#define  F_WRITE      0x8        /* MIB may be written. */
+#define  F_STA        0x1        /* MIB is supported on stations. */
+#define  F_READ       0x2        /* MIB may be read. */
+#define  F_WRITE      0x4        /* MIB may be written. */
 
 typedef struct mibrec
 {
-    UINT32   did;
-    UINT16   flag;
-    UINT16   parm1;
-    UINT16   parm2;
-    UINT16   parm3;
+    u32   did;
+    u16   flag;
+    u16   parm1;
+    u16   parm2;
+    u16   parm3;
     int      (*func)(struct mibrec                *mib,
                      int                          isget,
                      wlandevice_t                 *wlandev,
@@ -135,14 +112,6 @@ typedef struct mibrec
 /*================================================================*/
 /* Local Function Declarations */
 
-static int prism2mib_bytestr2pstr(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data);
-
 static int prism2mib_bytearea2pstr(
 mibrec_t                     *mib,
 int                          isget,
@@ -159,38 +128,6 @@ hfa384x_t                    *hw,
 p80211msg_dot11req_mibset_t  *msg,
 void                         *data);
 
-static int prism2mib_uint32array(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data);
-
-static int prism2mib_uint32offset(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data);
-
-static int prism2mib_truth(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data);
-
-static int prism2mib_preamble(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data);
-
 static int prism2mib_flag(
 mibrec_t                     *mib,
 int                          isget,
@@ -199,22 +136,6 @@ hfa384x_t                    *hw,
 p80211msg_dot11req_mibset_t  *msg,
 void                         *data);
 
-static int prism2mib_appcfinfoflag(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data);
-
-static int prism2mib_regulatorydomains(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data);
-
 static int prism2mib_wepdefaultkey(
 mibrec_t                     *mib,
 int                          isget,
@@ -223,14 +144,6 @@ hfa384x_t                    *hw,
 p80211msg_dot11req_mibset_t  *msg,
 void                         *data);
 
-static int prism2mib_powermanagement(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data);
-
 static int prism2mib_privacyinvoked(
 mibrec_t                     *mib,
 int                          isget,
@@ -255,46 +168,6 @@ hfa384x_t                    *hw,
 p80211msg_dot11req_mibset_t  *msg,
 void                         *data);
 
-static int prism2mib_operationalrateset(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data);
-
-static int prism2mib_groupaddress(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data);
-
-static int prism2mib_fwid(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data);
-
-static int prism2mib_authalg(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data);
-
-static int prism2mib_authalgenable(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data);
-
 static int prism2mib_priv(
 mibrec_t                     *mib,
 int                          isget,
@@ -303,1076 +176,100 @@ hfa384x_t                    *hw,
 p80211msg_dot11req_mibset_t  *msg,
 void                         *data);
 
-static void prism2mib_priv_authlist(
-hfa384x_t      *hw,
-prism2sta_authlist_t  *list);
-
-static void prism2mib_priv_accessmode(
-hfa384x_t         *hw,
-UINT32            mode);
-
-static void prism2mib_priv_accessallow(
-hfa384x_t         *hw,
-p80211macarray_t  *macarray);
-
-static void prism2mib_priv_accessdeny(
-hfa384x_t         *hw,
-p80211macarray_t  *macarray);
-
-static void prism2mib_priv_deauthenticate(
-hfa384x_t         *hw,
-UINT8             *addr);
-
 /*================================================================*/
 /* Local Static Definitions */
 
 static mibrec_t mibtab[] = {
 
     /* dot11smt MIB's */
-
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11StationID,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFOWNMACADDR, HFA384x_RID_CNFOWNMACADDR_LEN, 0,
-          prism2mib_bytearea2pstr },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11MediumOccupancyLimit,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFAPPCFINFO, HFA384x_RID_CNFAPPCFINFO_LEN, 0,
-          prism2mib_uint32offset },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11CFPollable,
-          F_STA | F_READ,
-          HFA384x_RID_CFPOLLABLE, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11CFPPeriod,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFAPPCFINFO, HFA384x_RID_CNFAPPCFINFO_LEN, 1,
-          prism2mib_uint32offset },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11CFPMaxDuration,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFAPPCFINFO, HFA384x_RID_CNFAPPCFINFO_LEN, 2,
-          prism2mib_uint32offset },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11AuthenticationResponseTimeOut,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFAUTHRSPTIMEOUT, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11PrivacyOptionImplemented,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_PRIVACYOPTIMP, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11PowerManagementMode,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFPMENABLED, 0, 0,
-          prism2mib_powermanagement },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11DesiredSSID,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFDESIREDSSID, HFA384x_RID_CNFDESIREDSSID_LEN, 0,
-          prism2mib_bytestr2pstr },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11DesiredBSSType,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_priv },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11OperationalRateSet,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_TXRATECNTL, 0, 0,
-          prism2mib_operationalrateset },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11OperationalRateSet,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_TXRATECNTL0, 0, 0,
-          prism2mib_operationalrateset },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11BeaconPeriod,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFAPBCNINT, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11DTIMPeriod,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFOWNDTIMPER, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11AssociationResponseTimeOut,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_PROTOCOLRSPTIME, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm1,
-          F_AP | F_STA | F_READ,
-          1, 0, 0,
-          prism2mib_authalg },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm2,
-          F_AP | F_STA | F_READ,
-          2, 0, 0,
-          prism2mib_authalg },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm3,
-          F_AP | F_STA | F_READ,
-          3, 0, 0,
-          prism2mib_authalg },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm4,
-          F_AP | F_STA | F_READ,
-          4, 0, 0,
-          prism2mib_authalg },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm5,
-          F_AP | F_STA | F_READ,
-          5, 0, 0,
-          prism2mib_authalg },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm6,
-          F_AP | F_STA | F_READ,
-          6, 0, 0,
-          prism2mib_authalg },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable1,
-          F_AP | F_STA | F_READ | F_WRITE,
-          1, 0, 0,
-          prism2mib_authalgenable },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable2,
-          F_AP | F_STA | F_READ | F_WRITE,
-          2, 0, 0,
-          prism2mib_authalgenable },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable3,
-          F_AP | F_STA | F_READ | F_WRITE,
-          3, 0, 0,
-          prism2mib_authalgenable },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable4,
-          F_AP | F_STA | F_READ | F_WRITE,
-          4, 0, 0,
-          prism2mib_authalgenable },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable5,
-          F_AP | F_STA | F_READ | F_WRITE,
-          5, 0, 0,
-          prism2mib_authalgenable },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable6,
-          F_AP | F_STA | F_READ | F_WRITE,
-          6, 0, 0,
-          prism2mib_authalgenable },
     { DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey0,
-          F_AP | F_STA | F_WRITE,
+          F_STA | F_WRITE,
           HFA384x_RID_CNFWEPDEFAULTKEY0, 0, 0,
           prism2mib_wepdefaultkey },
     { DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey1,
-          F_AP | F_STA | F_WRITE,
+          F_STA | F_WRITE,
           HFA384x_RID_CNFWEPDEFAULTKEY1, 0, 0,
           prism2mib_wepdefaultkey },
     { DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey2,
-          F_AP | F_STA | F_WRITE,
+          F_STA | F_WRITE,
           HFA384x_RID_CNFWEPDEFAULTKEY2, 0, 0,
           prism2mib_wepdefaultkey },
     { DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey3,
-          F_AP | F_STA | F_WRITE,
+          F_STA | F_WRITE,
           HFA384x_RID_CNFWEPDEFAULTKEY3, 0, 0,
           prism2mib_wepdefaultkey },
     { DIDmib_dot11smt_dot11PrivacyTable_dot11PrivacyInvoked,
-          F_AP | F_STA | F_READ | F_WRITE,
+          F_STA | F_READ | F_WRITE,
           HFA384x_RID_CNFWEPFLAGS, HFA384x_WEPFLAGS_PRIVINVOKED, 0,
           prism2mib_privacyinvoked },
     { DIDmib_dot11smt_dot11PrivacyTable_dot11WEPDefaultKeyID,
-          F_AP | F_STA | F_READ | F_WRITE,
+          F_STA | F_READ | F_WRITE,
           HFA384x_RID_CNFWEPDEFAULTKEYID, 0, 0,
           prism2mib_uint32 },
     { DIDmib_dot11smt_dot11PrivacyTable_dot11ExcludeUnencrypted,
-          F_AP | F_STA | F_READ | F_WRITE,
+          F_STA | F_READ | F_WRITE,
           HFA384x_RID_CNFWEPFLAGS, HFA384x_WEPFLAGS_EXCLUDE, 0,
           prism2mib_excludeunencrypted },
-    { DIDmib_dot11phy_dot11PhyOperationTable_dot11ShortPreambleEnabled,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFSHORTPREAMBLE, 0, 0,
-          prism2mib_preamble },
 
     /* dot11mac MIB's */
 
     { DIDmib_dot11mac_dot11OperationTable_dot11MACAddress,
-          F_AP | F_STA | F_READ | F_WRITE,
+          F_STA | F_READ | F_WRITE,
           HFA384x_RID_CNFOWNMACADDR, HFA384x_RID_CNFOWNMACADDR_LEN, 0,
           prism2mib_bytearea2pstr },
     { DIDmib_dot11mac_dot11OperationTable_dot11RTSThreshold,
           F_STA | F_READ | F_WRITE,
           HFA384x_RID_RTSTHRESH, 0, 0,
           prism2mib_uint32 },
-    { DIDmib_dot11mac_dot11OperationTable_dot11RTSThreshold,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_RTSTHRESH0, 0, 0,
-          prism2mib_uint32 },
     { DIDmib_dot11mac_dot11OperationTable_dot11ShortRetryLimit,
-          F_AP | F_STA | F_READ,
+          F_STA | F_READ,
           HFA384x_RID_SHORTRETRYLIMIT, 0, 0,
           prism2mib_uint32 },
     { DIDmib_dot11mac_dot11OperationTable_dot11LongRetryLimit,
-          F_AP | F_STA | F_READ,
+          F_STA | F_READ,
           HFA384x_RID_LONGRETRYLIMIT, 0, 0,
           prism2mib_uint32 },
     { DIDmib_dot11mac_dot11OperationTable_dot11FragmentationThreshold,
           F_STA | F_READ | F_WRITE,
           HFA384x_RID_FRAGTHRESH, 0, 0,
           prism2mib_fragmentationthreshold },
-    { DIDmib_dot11mac_dot11OperationTable_dot11FragmentationThreshold,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_FRAGTHRESH0, 0, 0,
-          prism2mib_fragmentationthreshold },
     { DIDmib_dot11mac_dot11OperationTable_dot11MaxTransmitMSDULifetime,
-          F_AP | F_STA | F_READ,
+          F_STA | F_READ,
           HFA384x_RID_MAXTXLIFETIME, 0, 0,
           prism2mib_uint32 },
-    { DIDmib_dot11mac_dot11OperationTable_dot11MaxReceiveLifetime,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_MAXRXLIFETIME, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address1,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address2,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address3,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address4,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address5,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address6,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address7,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address8,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address9,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address10,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address11,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address12,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address13,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address14,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address15,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address16,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address17,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address18,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address19,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address20,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address21,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address22,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address23,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address24,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address25,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address26,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address27,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address28,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address29,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address30,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address31,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
-    { DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address32,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_groupaddress },
 
     /* dot11phy MIB's */
 
-    { DIDmib_dot11phy_dot11PhyOperationTable_dot11PHYType,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_PHYTYPE, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_dot11phy_dot11PhyOperationTable_dot11TempType,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_TEMPTYPE, 0, 0,
-          prism2mib_uint32 },
     { DIDmib_dot11phy_dot11PhyDSSSTable_dot11CurrentChannel,
           F_STA | F_READ,
           HFA384x_RID_CURRENTCHANNEL, 0, 0,
           prism2mib_uint32 },
-    { DIDmib_dot11phy_dot11PhyDSSSTable_dot11CurrentChannel,
-          F_AP | F_READ,
-          HFA384x_RID_CNFOWNCHANNEL, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_dot11phy_dot11PhyDSSSTable_dot11CurrentCCAMode,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_CCAMODE, 0, 0,
+    { DIDmib_dot11phy_dot11PhyTxPowerTable_dot11CurrentTxPowerLevel,
+          F_STA | F_READ | F_WRITE,
+          HFA384x_RID_TXPOWERMAX, 0, 0,
           prism2mib_uint32 },
 
-    /* p2Table MIB's */
-
-    { DIDmib_p2_p2Table_p2MMTx,
-          F_AP | F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_priv },
-    { DIDmib_p2_p2Table_p2EarlyBeacon,
-          F_AP | F_READ | F_WRITE,
-          BIT7, 0, 0,
-          prism2mib_appcfinfoflag },
-    { DIDmib_p2_p2Table_p2ReceivedFrameStatistics,
-          F_AP | F_STA | F_READ,
-          0, 0, 0,
-          prism2mib_priv },
-    { DIDmib_p2_p2Table_p2CommunicationTallies,
-          F_AP | F_STA | F_READ,
-          0, 0, 0,
-          prism2mib_priv },
-    { DIDmib_p2_p2Table_p2Authenticated,
-          F_AP | F_READ,
-          0, 0, 0,
-          prism2mib_priv },
-    { DIDmib_p2_p2Table_p2Associated,
-          F_AP | F_READ,
-          0, 0, 0,
-          prism2mib_priv },
-    { DIDmib_p2_p2Table_p2PowerSaveUserCount,
-          F_AP | F_READ,
-          0, 0, 0,
-          prism2mib_priv },
-    { DIDmib_p2_p2Table_p2Comment,
-          F_AP | F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_priv },
-    { DIDmib_p2_p2Table_p2AccessMode,
-          F_AP | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_priv },
-    { DIDmib_p2_p2Table_p2AccessAllow,
-          F_AP | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_priv },
-    { DIDmib_p2_p2Table_p2AccessDeny,
-          F_AP | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_priv },
-    { DIDmib_p2_p2Table_p2ChannelInfoResults,
-          F_AP | F_READ,
-          0, 0, 0,
-          prism2mib_priv },
-
     /* p2Static MIB's */
 
     { DIDmib_p2_p2Static_p2CnfPortType,
           F_STA | F_READ | F_WRITE,
           HFA384x_RID_CNFPORTTYPE, 0, 0,
           prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfOwnMACAddress,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFOWNMACADDR, HFA384x_RID_CNFOWNMACADDR_LEN, 0,
-          prism2mib_bytearea2pstr },
-    { DIDmib_p2_p2Static_p2CnfDesiredSSID,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFDESIREDSSID, HFA384x_RID_CNFDESIREDSSID_LEN, 0,
-          prism2mib_bytestr2pstr },
-    { DIDmib_p2_p2Static_p2CnfOwnChannel,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFOWNCHANNEL, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfOwnSSID,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFOWNSSID, HFA384x_RID_CNFOWNSSID_LEN, 0,
-          prism2mib_bytestr2pstr },
-    { DIDmib_p2_p2Static_p2CnfOwnATIMWindow,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFOWNATIMWIN, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfSystemScale,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFSYSSCALE, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfMaxDataLength,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFMAXDATALEN, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfWDSAddress,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFWDSADDR, HFA384x_RID_CNFWDSADDR_LEN, 0,
-          prism2mib_bytearea2pstr },
-    { DIDmib_p2_p2Static_p2CnfPMEnabled,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFPMENABLED, 0, 0,
-          prism2mib_truth },
-    { DIDmib_p2_p2Static_p2CnfPMEPS,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFPMEPS, 0, 0,
-          prism2mib_truth },
-    { DIDmib_p2_p2Static_p2CnfMulticastReceive,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFMULTICASTRX, 0, 0,
-          prism2mib_truth },
-    { DIDmib_p2_p2Static_p2CnfMaxSleepDuration,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFMAXSLEEPDUR, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfPMHoldoverDuration,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFPMHOLDDUR, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfOwnName,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFOWNNAME, HFA384x_RID_CNFOWNNAME_LEN, 0,
-          prism2mib_bytestr2pstr },
-    { DIDmib_p2_p2Static_p2CnfOwnDTIMPeriod,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFOWNDTIMPER, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfWDSAddress1,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFWDSADDR1, HFA384x_RID_CNFWDSADDR1_LEN, 0,
-          prism2mib_bytearea2pstr },
-    { DIDmib_p2_p2Static_p2CnfWDSAddress2,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFWDSADDR2, HFA384x_RID_CNFWDSADDR2_LEN, 0,
-          prism2mib_bytearea2pstr },
-    { DIDmib_p2_p2Static_p2CnfWDSAddress3,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFWDSADDR3, HFA384x_RID_CNFWDSADDR3_LEN, 0,
-          prism2mib_bytearea2pstr },
-    { DIDmib_p2_p2Static_p2CnfWDSAddress4,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFWDSADDR4, HFA384x_RID_CNFWDSADDR4_LEN, 0,
-          prism2mib_bytearea2pstr },
-    { DIDmib_p2_p2Static_p2CnfWDSAddress5,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFWDSADDR5, HFA384x_RID_CNFWDSADDR5_LEN, 0,
-          prism2mib_bytearea2pstr },
-    { DIDmib_p2_p2Static_p2CnfWDSAddress6,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFWDSADDR6, HFA384x_RID_CNFWDSADDR6_LEN, 0,
-          prism2mib_bytearea2pstr },
-    { DIDmib_p2_p2Static_p2CnfMulticastPMBuffering,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFMCASTPMBUFF, 0, 0,
-          prism2mib_truth },
-    { DIDmib_p2_p2Static_p2CnfWEPDefaultKeyID,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFWEPDEFAULTKEYID, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfWEPDefaultKey0,
-          F_AP | F_STA | F_WRITE,
-          HFA384x_RID_CNFWEPDEFAULTKEY0, 0, 0,
-          prism2mib_wepdefaultkey },
-    { DIDmib_p2_p2Static_p2CnfWEPDefaultKey1,
-          F_AP | F_STA | F_WRITE,
-          HFA384x_RID_CNFWEPDEFAULTKEY1, 0, 0,
-          prism2mib_wepdefaultkey },
-    { DIDmib_p2_p2Static_p2CnfWEPDefaultKey2,
-          F_AP | F_STA | F_WRITE,
-          HFA384x_RID_CNFWEPDEFAULTKEY2, 0, 0,
-          prism2mib_wepdefaultkey },
-    { DIDmib_p2_p2Static_p2CnfWEPDefaultKey3,
-          F_AP | F_STA | F_WRITE,
-          HFA384x_RID_CNFWEPDEFAULTKEY3, 0, 0,
-          prism2mib_wepdefaultkey },
-    { DIDmib_p2_p2Static_p2CnfWEPFlags,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFWEPFLAGS, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfAuthentication,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFAUTHENTICATION, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfMaxAssociatedStations,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFMAXASSOCSTATIONS, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfTxControl,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFTXCONTROL, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfRoamingMode,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFROAMINGMODE, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfHostAuthentication,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFHOSTAUTHASSOC, 0, 0,
-          prism2mib_truth },
-    { DIDmib_p2_p2Static_p2CnfRcvCrcError,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFRCVCRCERROR, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfAltRetryCount,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFALTRETRYCNT, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfBeaconInterval,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFAPBCNINT, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfMediumOccupancyLimit,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFAPPCFINFO, HFA384x_RID_CNFAPPCFINFO_LEN, 0,
-          prism2mib_uint32offset },
-    { DIDmib_p2_p2Static_p2CnfCFPPeriod,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFAPPCFINFO, HFA384x_RID_CNFAPPCFINFO_LEN, 1,
-          prism2mib_uint32offset },
-    { DIDmib_p2_p2Static_p2CnfCFPMaxDuration,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFAPPCFINFO, HFA384x_RID_CNFAPPCFINFO_LEN, 2,
-          prism2mib_uint32offset },
-    { DIDmib_p2_p2Static_p2CnfCFPFlags,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFAPPCFINFO, HFA384x_RID_CNFAPPCFINFO_LEN, 3,
-          prism2mib_uint32offset },
-    { DIDmib_p2_p2Static_p2CnfSTAPCFInfo,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFSTAPCFINFO, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfPriorityQUsage,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFPRIORITYQUSAGE, HFA384x_RID_CNFPRIOQUSAGE_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2Static_p2CnfTIMCtrl,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFTIMCTRL, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfThirty2Tally,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFTHIRTY2TALLY, 0, 0,
-          prism2mib_truth },
-    { DIDmib_p2_p2Static_p2CnfEnhSecurity,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFENHSECURITY, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfShortPreamble,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFSHORTPREAMBLE, 0, 0,
-          prism2mib_preamble },
-    { DIDmib_p2_p2Static_p2CnfExcludeLongPreamble,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_CNFEXCLONGPREAMBLE, 0, 0,
-          prism2mib_truth },
-    { DIDmib_p2_p2Static_p2CnfAuthenticationRspTO,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFAUTHRSPTIMEOUT, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfBasicRates,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFBASICRATES, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfSupportedRates,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFSUPPRATES, 0, 0,
-          prism2mib_uint32 },
 
-    /* p2Dynamic MIB's */
+    /* p2MAC MIB's */
 
-    { DIDmib_p2_p2Dynamic_p2CreateIBSS,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CREATEIBSS, 0, 0,
-          prism2mib_truth },
-    { DIDmib_p2_p2Dynamic_p2FragmentationThreshold,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_FRAGTHRESH, 0, 0,
-          prism2mib_fragmentationthreshold },
-    { DIDmib_p2_p2Dynamic_p2RTSThreshold,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_RTSTHRESH, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Dynamic_p2TxRateControl,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_TXRATECNTL, 0, 0,
+    { DIDmib_p2_p2MAC_p2CurrentTxRate,
+          F_STA | F_READ,
+          HFA384x_RID_CURRENTTXRATE, 0, 0,
           prism2mib_uint32 },
-    { DIDmib_p2_p2Dynamic_p2PromiscuousMode,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_PROMISCMODE, 0, 0,
-          prism2mib_truth },
-    { DIDmib_p2_p2Dynamic_p2FragmentationThreshold0,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_FRAGTHRESH0, 0, 0,
-          prism2mib_fragmentationthreshold },
-    { DIDmib_p2_p2Dynamic_p2FragmentationThreshold1,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_FRAGTHRESH1, 0, 0,
-          prism2mib_fragmentationthreshold },
-    { DIDmib_p2_p2Dynamic_p2FragmentationThreshold2,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_FRAGTHRESH2, 0, 0,
-          prism2mib_fragmentationthreshold },
-    { DIDmib_p2_p2Dynamic_p2FragmentationThreshold3,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_FRAGTHRESH3, 0, 0,
-          prism2mib_fragmentationthreshold },
-    { DIDmib_p2_p2Dynamic_p2FragmentationThreshold4,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_FRAGTHRESH4, 0, 0,
-          prism2mib_fragmentationthreshold },
-    { DIDmib_p2_p2Dynamic_p2FragmentationThreshold5,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_FRAGTHRESH5, 0, 0,
-          prism2mib_fragmentationthreshold },
-    { DIDmib_p2_p2Dynamic_p2FragmentationThreshold6,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_FRAGTHRESH6, 0, 0,
-          prism2mib_fragmentationthreshold },
-    { DIDmib_p2_p2Dynamic_p2RTSThreshold0,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_RTSTHRESH0, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Dynamic_p2RTSThreshold1,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_RTSTHRESH1, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Dynamic_p2RTSThreshold2,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_RTSTHRESH2, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Dynamic_p2RTSThreshold3,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_RTSTHRESH3, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Dynamic_p2RTSThreshold4,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_RTSTHRESH4, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Dynamic_p2RTSThreshold5,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_RTSTHRESH5, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Dynamic_p2RTSThreshold6,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_RTSTHRESH6, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Dynamic_p2TxRateControl0,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_TXRATECNTL0, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Dynamic_p2TxRateControl1,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_TXRATECNTL1, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Dynamic_p2TxRateControl2,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_TXRATECNTL2, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Dynamic_p2TxRateControl3,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_TXRATECNTL3, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Dynamic_p2TxRateControl4,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_TXRATECNTL4, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Dynamic_p2TxRateControl5,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_TXRATECNTL5, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Dynamic_p2TxRateControl6,
-          F_AP | F_READ | F_WRITE,
-          HFA384x_RID_TXRATECNTL6, 0, 0,
-          prism2mib_uint32 },
-
-    /* p2Behavior MIB's */
-
-    { DIDmib_p2_p2Behavior_p2TickTime,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_ITICKTIME, 0, 0,
-          prism2mib_uint32 },
-
-    /* p2NIC MIB's */
-
-    { DIDmib_p2_p2NIC_p2MaxLoadTime,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_MAXLOADTIME, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2NIC_p2DLBufferPage,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_DOWNLOADBUFFER, HFA384x_RID_DOWNLOADBUFFER_LEN, 0,
-          prism2mib_uint32offset },
-    { DIDmib_p2_p2NIC_p2DLBufferOffset,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_DOWNLOADBUFFER, HFA384x_RID_DOWNLOADBUFFER_LEN, 1,
-          prism2mib_uint32offset },
-    { DIDmib_p2_p2NIC_p2DLBufferLength,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_DOWNLOADBUFFER, HFA384x_RID_DOWNLOADBUFFER_LEN, 2,
-          prism2mib_uint32offset },
-    { DIDmib_p2_p2NIC_p2PRIIdentity,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_PRIIDENTITY, HFA384x_RID_PRIIDENTITY_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2PRISupRange,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_PRISUPRANGE, HFA384x_RID_PRISUPRANGE_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2CFIActRanges,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_PRI_CFIACTRANGES, HFA384x_RID_CFIACTRANGES_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2BuildSequence,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_BUILDSEQ, HFA384x_RID_BUILDSEQ_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2PrimaryFWID,
-          F_AP | F_STA | F_READ,
-          0, 0, 0,
-          prism2mib_fwid },
-    { DIDmib_p2_p2NIC_p2SecondaryFWID,
-          F_AP | F_STA | F_READ,
-          0, 0, 0,
-          prism2mib_fwid },
-    { DIDmib_p2_p2NIC_p2TertiaryFWID,
-          F_AP | F_READ,
-          0, 0, 0,
-          prism2mib_fwid },
-    { DIDmib_p2_p2NIC_p2NICSerialNumber,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_NICSERIALNUMBER, HFA384x_RID_NICSERIALNUMBER_LEN, 0,
-          prism2mib_bytearea2pstr },
-    { DIDmib_p2_p2NIC_p2NICIdentity,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_NICIDENTITY, HFA384x_RID_NICIDENTITY_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2MFISupRange,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_MFISUPRANGE, HFA384x_RID_MFISUPRANGE_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2CFISupRange,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_CFISUPRANGE, HFA384x_RID_CFISUPRANGE_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2ChannelList,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_CHANNELLIST, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2NIC_p2RegulatoryDomains,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_REGULATORYDOMAINS, HFA384x_RID_REGULATORYDOMAINS_LEN, 0,
-          prism2mib_regulatorydomains },
-    { DIDmib_p2_p2NIC_p2TempType,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_TEMPTYPE, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2NIC_p2STAIdentity,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_STAIDENTITY, HFA384x_RID_STAIDENTITY_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2STASupRange,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_STASUPRANGE, HFA384x_RID_STASUPRANGE_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2MFIActRanges,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_STA_MFIACTRANGES, HFA384x_RID_MFIACTRANGES_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2STACFIActRanges,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_STA_CFIACTRANGES, HFA384x_RID_CFIACTRANGES2_LEN, 0,
-          prism2mib_uint32array },
-
-    /* p2MAC MIB's */
-
-    { DIDmib_p2_p2MAC_p2PortStatus,
-          F_STA | F_READ,
-          HFA384x_RID_PORTSTATUS, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2CurrentSSID,
-          F_STA | F_READ,
-          HFA384x_RID_CURRENTSSID, HFA384x_RID_CURRENTSSID_LEN, 0,
-          prism2mib_bytestr2pstr },
-    { DIDmib_p2_p2MAC_p2CurrentBSSID,
-          F_STA | F_READ,
-          HFA384x_RID_CURRENTBSSID, HFA384x_RID_CURRENTBSSID_LEN, 0,
-          prism2mib_bytearea2pstr },
-    { DIDmib_p2_p2MAC_p2CommsQuality,
-          F_STA | F_READ,
-          HFA384x_RID_COMMSQUALITY, HFA384x_RID_COMMSQUALITY_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2MAC_p2CommsQualityCQ,
-          F_STA | F_READ,
-          HFA384x_RID_COMMSQUALITY, HFA384x_RID_COMMSQUALITY_LEN, 0,
-          prism2mib_uint32offset },
-    { DIDmib_p2_p2MAC_p2CommsQualityASL,
-          F_STA | F_READ,
-          HFA384x_RID_COMMSQUALITY, HFA384x_RID_COMMSQUALITY_LEN, 1,
-          prism2mib_uint32offset },
-    { DIDmib_p2_p2MAC_p2CommsQualityANL,
-          F_STA | F_READ,
-          HFA384x_RID_COMMSQUALITY, HFA384x_RID_COMMSQUALITY_LEN, 2,
-          prism2mib_uint32offset },
-    { DIDmib_p2_p2MAC_p2dbmCommsQuality,
-          F_STA | F_READ,
-          HFA384x_RID_DBMCOMMSQUALITY, HFA384x_RID_DBMCOMMSQUALITY_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2MAC_p2dbmCommsQualityCQ,
-          F_STA | F_READ,
-          HFA384x_RID_COMMSQUALITY, HFA384x_RID_COMMSQUALITY_LEN, 0,
-          prism2mib_uint32offset },
-    { DIDmib_p2_p2MAC_p2dbmCommsQualityASL,
-          F_STA | F_READ,
-          HFA384x_RID_COMMSQUALITY, HFA384x_RID_COMMSQUALITY_LEN, 1,
-          prism2mib_uint32offset },
-    { DIDmib_p2_p2MAC_p2dbmCommsQualityANL,
-          F_STA | F_READ,
-          HFA384x_RID_COMMSQUALITY, HFA384x_RID_COMMSQUALITY_LEN, 2,
-          prism2mib_uint32offset },
-    { DIDmib_p2_p2MAC_p2CurrentTxRate,
-          F_STA | F_READ,
-          HFA384x_RID_CURRENTTXRATE, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2CurrentBeaconInterval,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_CURRENTBCNINT, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2StaCurrentScaleThresholds,
-          F_STA | F_READ,
-          HFA384x_RID_CURRENTSCALETHRESH, HFA384x_RID_STACURSCALETHRESH_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2MAC_p2APCurrentScaleThresholds,
-          F_AP | F_READ,
-          HFA384x_RID_CURRENTSCALETHRESH, HFA384x_RID_APCURSCALETHRESH_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2MAC_p2ProtocolRspTime,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_PROTOCOLRSPTIME, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2ShortRetryLimit,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_SHORTRETRYLIMIT, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2LongRetryLimit,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_LONGRETRYLIMIT, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2MaxTransmitLifetime,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_MAXTXLIFETIME, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2MaxReceiveLifetime,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_MAXRXLIFETIME, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2CFPollable,
-          F_STA | F_READ,
-          HFA384x_RID_CFPOLLABLE, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2AuthenticationAlgorithms,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_AUTHALGORITHMS, HFA384x_RID_AUTHALGORITHMS_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2MAC_p2PrivacyOptionImplemented,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_PRIVACYOPTIMP, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2CurrentTxRate1,
-          F_AP | F_READ,
-          HFA384x_RID_CURRENTTXRATE1, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2CurrentTxRate2,
-          F_AP | F_READ,
-          HFA384x_RID_CURRENTTXRATE2, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2CurrentTxRate3,
-          F_AP | F_READ,
-          HFA384x_RID_CURRENTTXRATE3, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2CurrentTxRate4,
-          F_AP | F_READ,
-          HFA384x_RID_CURRENTTXRATE4, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2CurrentTxRate5,
-          F_AP | F_READ,
-          HFA384x_RID_CURRENTTXRATE5, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2CurrentTxRate6,
-          F_AP | F_READ,
-          HFA384x_RID_CURRENTTXRATE6, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2OwnMACAddress,
-          F_AP | F_READ,
-          HFA384x_RID_OWNMACADDRESS, HFA384x_RID_OWNMACADDRESS_LEN, 0,
-          prism2mib_bytearea2pstr },
-
-    /* p2Modem MIB's */
-
-    { DIDmib_p2_p2Modem_p2PHYType,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_PHYTYPE, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Modem_p2CurrentChannel,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_CURRENTCHANNEL, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Modem_p2CurrentPowerState,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_CURRENTPOWERSTATE, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Modem_p2CCAMode,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_CCAMODE, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Modem_p2TxPowerMax,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_TXPOWERMAX, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_dot11phy_dot11PhyTxPowerTable_dot11CurrentTxPowerLevel,
-          F_AP | F_STA | F_READ | F_WRITE,
-          HFA384x_RID_TXPOWERMAX, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Modem_p2SupportedDataRates,
-          F_AP | F_STA | F_READ,
-          HFA384x_RID_SUPPORTEDDATARATES, HFA384x_RID_SUPPORTEDDATARATES_LEN, 0,
-          prism2mib_bytestr2pstr },
-
-    /* And finally, lnx mibs */
-    { DIDmib_lnx_lnxConfigTable_lnxRSNAIE,
+
+    /* And finally, lnx mibs */
+    { DIDmib_lnx_lnxConfigTable_lnxRSNAIE,
           F_STA | F_READ | F_WRITE,
           HFA384x_RID_CNFWPADATA, 0, 0,
           prism2mib_priv },
     { 0, 0, 0, 0, 0, NULL}};
 
-/*----------------------------------------------------------------
-These MIB's are not supported at this time:
-
-DIDmib_dot11phy_dot11PhyOperationTable_dot11ChannelAgilityPresent
-DIDmib_dot11phy_dot11PhyOperationTable_dot11ChannelAgilityEnabled
-DIDmib_dot11phy_dot11PhyDSSSTable_dot11PBCCOptionImplemented
-DIDmib_dot11phy_dot11RegDomainsSupportedTable_dot11RegDomainsSupportIndex
-DIDmib_dot11phy_dot11SupportedDataRatesTxTable_dot11SupportedDataRatesTxIndex
-DIDmib_dot11phy_dot11SupportedDataRatesTxTable_dot11SupportedDataRatesTxValue
-DIDmib_dot11phy_dot11SupportedDataRatesRxTable_dot11SupportedDataRatesRxIndex
-DIDmib_dot11phy_dot11SupportedDataRatesRxTable_dot11SupportedDataRatesRxValue
-
-DIDmib_dot11phy_dot11RegDomainsSupportedTable_dot11RegDomainsSupportValue
-TODO: need to investigate why wlan has this as enumerated and Prism2 has this
-      as btye str.
-
-DIDmib_dot11phy_dot11PhyDSSSTable_dot11ShortPreambleOptionImplemented
-TODO: Find out the firmware version number(s) for identifying
-      whether the firmware is capable of short preamble. TRUE or FALSE
-      will be returned based on the version of the firmware.
-
-WEP Key mappings aren't supported in the f/w.
-DIDmib_dot11smt_dot11WEPKeyMappingsTable_dot11WEPKeyMappingIndex
-DIDmib_dot11smt_dot11WEPKeyMappingsTable_dot11WEPKeyMappingAddress
-DIDmib_dot11smt_dot11WEPKeyMappingsTable_dot11WEPKeyMappingWEPOn
-DIDmib_dot11smt_dot11WEPKeyMappingsTable_dot11WEPKeyMappingValue
-DIDmib_dot11smt_dot11PrivacyTable_dot11WEPKeyMappingLength
-
-TODO: implement counters.
-DIDmib_dot11smt_dot11PrivacyTable_dot11WEPICVErrorCount
-DIDmib_dot11smt_dot11PrivacyTable_dot11WEPExcludedCount
-DIDmib_dot11mac_dot11CountersTable_dot11TransmittedFragmentCount
-DIDmib_dot11mac_dot11CountersTable_dot11MulticastTransmittedFrameCount
-DIDmib_dot11mac_dot11CountersTable_dot11FailedCount
-DIDmib_dot11mac_dot11CountersTable_dot11RetryCount
-DIDmib_dot11mac_dot11CountersTable_dot11MultipleRetryCount
-DIDmib_dot11mac_dot11CountersTable_dot11FrameDuplicateCount
-DIDmib_dot11mac_dot11CountersTable_dot11RTSSuccessCount
-DIDmib_dot11mac_dot11CountersTable_dot11RTSFailureCount
-DIDmib_dot11mac_dot11CountersTable_dot11ACKFailureCount
-DIDmib_dot11mac_dot11CountersTable_dot11ReceivedFragmentCount
-DIDmib_dot11mac_dot11CountersTable_dot11MulticastReceivedFrameCount
-DIDmib_dot11mac_dot11CountersTable_dot11FCSErrorCount
-DIDmib_dot11mac_dot11CountersTable_dot11TransmittedFrameCount
-DIDmib_dot11mac_dot11CountersTable_dot11WEPUndecryptableCount
-
-TODO: implement sane values for these.
-DIDmib_dot11mac_dot11OperationTable_dot11ManufacturerID
-DIDmib_dot11mac_dot11OperationTable_dot11ProductID
-
-Not too worried about these at the moment.
-DIDmib_dot11phy_dot11PhyAntennaTable_dot11CurrentTxAntenna
-DIDmib_dot11phy_dot11PhyAntennaTable_dot11DiversitySupport
-DIDmib_dot11phy_dot11PhyAntennaTable_dot11CurrentRxAntenna
-DIDmib_dot11phy_dot11PhyTxPowerTable_dot11NumberSupportedPowerLevels
-DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel1
-DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel2
-DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel3
-DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel4
-DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel5
-DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel6
-DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel7
-DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel8
-DIDmib_dot11phy_dot11PhyTxPowerTable_dot11CurrentTxPowerLevel
-
-Ummm, FH and IR don't apply
-DIDmib_dot11phy_dot11PhyFHSSTable_dot11HopTime
-DIDmib_dot11phy_dot11PhyFHSSTable_dot11CurrentChannelNumber
-DIDmib_dot11phy_dot11PhyFHSSTable_dot11MaxDwellTime
-DIDmib_dot11phy_dot11PhyFHSSTable_dot11CurrentDwellTime
-DIDmib_dot11phy_dot11PhyFHSSTable_dot11CurrentSet
-DIDmib_dot11phy_dot11PhyFHSSTable_dot11CurrentPattern
-DIDmib_dot11phy_dot11PhyFHSSTable_dot11CurrentIndex
-DIDmib_dot11phy_dot11PhyDSSSTable_dot11CCAModeSupported
-DIDmib_dot11phy_dot11PhyDSSSTable_dot11EDThreshold
-DIDmib_dot11phy_dot11PhyIRTable_dot11CCAWatchdogTimerMax
-DIDmib_dot11phy_dot11PhyIRTable_dot11CCAWatchdogCountMax
-DIDmib_dot11phy_dot11PhyIRTable_dot11CCAWatchdogTimerMin
-DIDmib_dot11phy_dot11PhyIRTable_dot11CCAWatchdogCountMin
-
-We just don't have enough antennas right now to worry about this.
-DIDmib_dot11phy_dot11AntennasListTable_dot11AntennaListIndex
-DIDmib_dot11phy_dot11AntennasListTable_dot11SupportedTxAntenna
-DIDmib_dot11phy_dot11AntennasListTable_dot11SupportedRxAntenna
-DIDmib_dot11phy_dot11AntennasListTable_dot11DiversitySelectionRx
-
-------------------------------------------------------------------*/
-
 /*================================================================*/
 /* Function Definitions */
 
@@ -1401,7 +298,8 @@ int prism2mgmt_mibset_mibget(wlandevice_t *wlandev, void *msgp)
        hfa384x_t               *hw = wlandev->priv;
        int                     result, isget;
        mibrec_t                *mib;
-       UINT16                  which;
+
+       u16                     which;
 
        p80211msg_dot11req_mibset_t     *msg = msgp;
        p80211itemd_t                   *mibitem;
@@ -1415,7 +313,7 @@ int prism2mgmt_mibset_mibget(wlandevice_t *wlandev, void *msgp)
        ** Determine if this is an Access Point or a station.
        */
 
-       which = hw->ap ? F_AP : F_STA;
+       which = F_STA;
 
        /*
        ** Find the MIB in the MIB table.  Note that a MIB may be in the
@@ -1490,59 +388,6 @@ done:
        return(0);
 }
 
-/*----------------------------------------------------------------
-* prism2mib_bytestr2pstr
-*
-* Get/set pstr data to/from a byte string.
-*
-* MIB record parameters:
-*       parm1    Prism2 RID value.
-*       parm2    Number of bytes of RID data.
-*       parm3    Not used.
-*
-* Arguments:
-*       mib      MIB record.
-*       isget    MIBGET/MIBSET flag.
-*       wlandev  wlan device structure.
-*       priv     "priv" structure.
-*       hw       "hw" structure.
-*       msg      Message structure.
-*       data     Data buffer.
-*
-* Returns:
-*       0   - Success.
-*       ~0  - Error.
-*
-----------------------------------------------------------------*/
-
-static int prism2mib_bytestr2pstr(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int                result;
-       p80211pstrd_t      *pstr = (p80211pstrd_t*) data;
-       UINT8              bytebuf[MIB_TMP_MAXLEN];
-       hfa384x_bytestr_t  *p2bytestr = (hfa384x_bytestr_t*) bytebuf;
-
-       DBFENTER;
-
-       if (isget) {
-               result = hfa384x_drvr_getconfig(hw, mib->parm1, bytebuf, mib->parm2);
-               prism2mgmt_bytestr2pstr(p2bytestr, pstr);
-       } else {
-               memset(bytebuf, 0, mib->parm2);
-               prism2mgmt_pstr2bytestr(p2bytestr, pstr);
-               result = hfa384x_drvr_setconfig(hw, mib->parm1, bytebuf, mib->parm2);
-       }
-
-       DBFEXIT;
-       return(result);
-}
-
 /*----------------------------------------------------------------
 * prism2mib_bytearea2pstr
 *
@@ -1578,13 +423,13 @@ void                         *data)
 {
        int            result;
        p80211pstrd_t  *pstr = (p80211pstrd_t*) data;
-       UINT8          bytebuf[MIB_TMP_MAXLEN];
+       u8          bytebuf[MIB_TMP_MAXLEN];
 
        DBFENTER;
 
        if (isget) {
                result = hfa384x_drvr_getconfig(hw, mib->parm1, bytebuf, mib->parm2);
-               prism2mgmt_bytearea2pstr(bytebuf, pstr, mib->parm2);
+               prism2mgmt_bytearea2pstr(bytebuf, pstr, mib->parm2);
        } else {
                memset(bytebuf, 0, mib->parm2);
                prism2mgmt_pstr2bytearea(bytebuf, pstr);
@@ -1629,9 +474,9 @@ p80211msg_dot11req_mibset_t  *msg,
 void                         *data)
 {
        int     result;
-       UINT32  *uint32 = (UINT32*) data;
-       UINT8   bytebuf[MIB_TMP_MAXLEN];
-       UINT16  *wordbuf = (UINT16*) bytebuf;
+       u32  *uint32 = (u32*) data;
+       u8   bytebuf[MIB_TMP_MAXLEN];
+       u16  *wordbuf = (u16*) bytebuf;
 
        DBFENTER;
 
@@ -1654,13 +499,13 @@ void                         *data)
 }
 
 /*----------------------------------------------------------------
-* prism2mib_uint32array
+* prism2mib_flag
 *
-* Get/set an array of uint32 data.
+* Get/set a flag.
 *
 * MIB record parameters:
 *       parm1    Prism2 RID value.
-*       parm2    Number of bytes of RID data.
+*       parm2    Bit to get/set.
 *       parm3    Not used.
 *
 * Arguments:
@@ -1678,64 +523,7 @@ void                         *data)
 *
 ----------------------------------------------------------------*/
 
-static int prism2mib_uint32array(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int     result;
-       UINT32  *uint32 = (UINT32 *) data;
-       UINT8   bytebuf[MIB_TMP_MAXLEN];
-       UINT16  *wordbuf = (UINT16*) bytebuf;
-       int     i, cnt;
-
-       DBFENTER;
-
-       cnt = mib->parm2 / sizeof(UINT16);
-
-       if (isget) {
-               result = hfa384x_drvr_getconfig(hw, mib->parm1, wordbuf, mib->parm2);
-               for (i = 0; i < cnt; i++)
-                       prism2mgmt_prism2int2p80211int(wordbuf+i, uint32+i);
-       } else {
-               for (i = 0; i < cnt; i++)
-                       prism2mgmt_p80211int2prism2int(wordbuf+i, uint32+i);
-               result = hfa384x_drvr_setconfig(hw, mib->parm1, wordbuf, mib->parm2);
-               }
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_uint32offset
-*
-* Get/set a single element in an array of uint32 data.
-*
-* MIB record parameters:
-*       parm1    Prism2 RID value.
-*       parm2    Number of bytes of RID data.
-*       parm3    Element index.
-*
-* Arguments:
-*       mib      MIB record.
-*       isget    MIBGET/MIBSET flag.
-*       wlandev  wlan device structure.
-*       priv     "priv" structure.
-*       hw       "hw" structure.
-*       msg      Message structure.
-*       data     Data buffer.
-*
-* Returns:
-*       0   - Success.
-*       ~0  - Error.
-*
-----------------------------------------------------------------*/
-
-static int prism2mib_uint32offset(
+static int prism2mib_flag(
 mibrec_t                     *mib,
 int                          isget,
 wlandevice_t                 *wlandev,
@@ -1744,27 +532,32 @@ p80211msg_dot11req_mibset_t  *msg,
 void                         *data)
 {
        int     result;
-       UINT32  *uint32 = (UINT32*) data;
-       UINT8   bytebuf[MIB_TMP_MAXLEN];
-       UINT16  *wordbuf = (UINT16*) bytebuf;
-       UINT16  cnt;
+       u32  *uint32 = (u32*) data;
+       u8   bytebuf[MIB_TMP_MAXLEN];
+       u16  *wordbuf = (u16*) bytebuf;
+       u32  flags;
 
        DBFENTER;
 
-       cnt = mib->parm2 / sizeof(UINT16);
-
-       result = hfa384x_drvr_getconfig(hw, mib->parm1, wordbuf, mib->parm2);
+       result = hfa384x_drvr_getconfig16(hw, mib->parm1, wordbuf);
        if (result == 0) {
+               /* [MSM] Removed, getconfig16 returns the value in host order.
+                * prism2mgmt_prism2int2p80211int(wordbuf, &flags);
+                */
+               flags = *wordbuf;
                if (isget) {
-                       if (mib->parm3 < cnt)
-                               prism2mgmt_prism2int2p80211int(wordbuf+mib->parm3, uint32);
-                       else
-                               *uint32 = 0;
+                       *uint32 = (flags & mib->parm2) ?
+                               P80211ENUM_truth_true : P80211ENUM_truth_false;
                } else {
-                       if (mib->parm3 < cnt) {
-                               prism2mgmt_p80211int2prism2int(wordbuf+mib->parm3, uint32);
-                               result = hfa384x_drvr_setconfig(hw, mib->parm1, wordbuf, mib->parm2);
-                       }
+                       if ((*uint32) == P80211ENUM_truth_true)
+                               flags |= mib->parm2;
+                       else
+                               flags &= ~mib->parm2;
+                       /* [MSM] Removed, setconfig16 expects host order.
+                        * prism2mgmt_p80211int2prism2int(wordbuf, &flags);
+                        */
+                       *wordbuf = flags;
+                       result = hfa384x_drvr_setconfig16(hw, mib->parm1, *wordbuf);
                }
        }
 
@@ -1773,13 +566,13 @@ void                         *data)
 }
 
 /*----------------------------------------------------------------
-* prism2mib_truth
+* prism2mib_wepdefaultkey
 *
-* Get/set truth data.
+* Get/set WEP default keys.
 *
 * MIB record parameters:
 *       parm1    Prism2 RID value.
-*       parm2    Not used.
+*       parm2    Number of bytes of RID data.
 *       parm3    Not used.
 *
 * Arguments:
@@ -1797,7 +590,7 @@ void                         *data)
 *
 ----------------------------------------------------------------*/
 
-static int prism2mib_truth(
+static int prism2mib_wepdefaultkey(
 mibrec_t                     *mib,
 int                          isget,
 wlandevice_t                 *wlandev,
@@ -1805,20 +598,21 @@ hfa384x_t                    *hw,
 p80211msg_dot11req_mibset_t  *msg,
 void                         *data)
 {
-       int     result;
-       UINT32  *uint32 = (UINT32*) data;
-       UINT8   bytebuf[MIB_TMP_MAXLEN];
-       UINT16  *wordbuf = (UINT16*) bytebuf;
+       int            result;
+       p80211pstrd_t  *pstr = (p80211pstrd_t*) data;
+       u8          bytebuf[MIB_TMP_MAXLEN];
+       u16         len;
 
        DBFENTER;
 
        if (isget) {
-               result = hfa384x_drvr_getconfig16(hw, mib->parm1, wordbuf);
-               *uint32 = (*wordbuf) ?
-                               P80211ENUM_truth_true : P80211ENUM_truth_false;
+               result = 0;    /* Should never happen. */
        } else {
-               *wordbuf = ((*uint32) == P80211ENUM_truth_true) ? 1 : 0;
-               result = hfa384x_drvr_setconfig16(hw, mib->parm1, *wordbuf);
+               len = (pstr->len > 5) ? HFA384x_RID_CNFWEP128DEFAULTKEY_LEN :
+                                       HFA384x_RID_CNFWEPDEFAULTKEY_LEN;
+               memset(bytebuf, 0, len);
+               prism2mgmt_pstr2bytearea(bytebuf, pstr);
+               result = hfa384x_drvr_setconfig(hw, mib->parm1, bytebuf, len);
        }
 
        DBFEXIT;
@@ -1826,13 +620,13 @@ void                         *data)
 }
 
 /*----------------------------------------------------------------
-* prism2mib_flag
+* prism2mib_privacyinvoked
 *
-* Get/set a flag.
+* Get/set the dot11PrivacyInvoked value.
 *
 * MIB record parameters:
 *       parm1    Prism2 RID value.
-*       parm2    Bit to get/set.
+*       parm2    Bit value for PrivacyInvoked flag.
 *       parm3    Not used.
 *
 * Arguments:
@@ -1850,1416 +644,190 @@ void                         *data)
 *
 ----------------------------------------------------------------*/
 
-static int prism2mib_flag(
+static int prism2mib_privacyinvoked(
 mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int     result;
-       UINT32  *uint32 = (UINT32*) data;
-       UINT8   bytebuf[MIB_TMP_MAXLEN];
-       UINT16  *wordbuf = (UINT16*) bytebuf;
-       UINT32  flags;
-
-       DBFENTER;
-
-       result = hfa384x_drvr_getconfig16(hw, mib->parm1, wordbuf);
-       if (result == 0) {
-               /* [MSM] Removed, getconfig16 returns the value in host order.
-                * prism2mgmt_prism2int2p80211int(wordbuf, &flags);
-                */
-               flags = *wordbuf;
-               if (isget) {
-                       *uint32 = (flags & mib->parm2) ?
-                               P80211ENUM_truth_true : P80211ENUM_truth_false;
-               } else {
-                       if ((*uint32) == P80211ENUM_truth_true)
-                               flags |= mib->parm2;
-                       else
-                               flags &= ~mib->parm2;
-                       /* [MSM] Removed, setconfig16 expects host order.
-                        * prism2mgmt_p80211int2prism2int(wordbuf, &flags);
-                        */
-                       *wordbuf = flags;
-                       result = hfa384x_drvr_setconfig16(hw, mib->parm1, *wordbuf);
-               }
-       }
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_appcfinfoflag
-*
-* Get/set a single flag in the APPCFINFO record.
-*
-* MIB record parameters:
-*       parm1    Bit to get/set.
-*       parm2    Not used.
-*       parm3    Not used.
-*
-* Arguments:
-*       mib      MIB record.
-*       isget    MIBGET/MIBSET flag.
-*       wlandev  wlan device structure.
-*       priv     "priv" structure.
-*       hw       "hw" structure.
-*       msg      Message structure.
-*       data     Data buffer.
-*
-* Returns:
-*       0   - Success.
-*       ~0  - Error.
-*
-----------------------------------------------------------------*/
-
-static int prism2mib_appcfinfoflag(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int     result;
-       UINT32  *uint32 = (UINT32*) data;
-       UINT8   bytebuf[MIB_TMP_MAXLEN];
-       UINT16  *wordbuf = (UINT16*) bytebuf;
-       UINT16  word;
-
-       DBFENTER;
-
-       result = hfa384x_drvr_getconfig(hw, HFA384x_RID_CNFAPPCFINFO,
-                                       bytebuf, HFA384x_RID_CNFAPPCFINFO_LEN);
-       if (result == 0) {
-               if (isget) {
-                       *uint32 = (hfa384x2host_16(wordbuf[3]) & mib->parm1) ?
-                               P80211ENUM_truth_true : P80211ENUM_truth_false;
-               } else {
-                       word = hfa384x2host_16(wordbuf[3]);
-                       word = ((*uint32) == P80211ENUM_truth_true) ?
-                               (word | mib->parm1) : (word & ~mib->parm1);
-                       wordbuf[3] = host2hfa384x_16(word);
-                       result = hfa384x_drvr_setconfig(hw, HFA384x_RID_CNFAPPCFINFO,
-                                       bytebuf, HFA384x_RID_CNFAPPCFINFO_LEN);
-               }
-       }
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_regulatorydomains
-*
-* Get regulatory domain data.
-*
-* MIB record parameters:
-*       parm1    Prism2 RID value.
-*       parm2    Number of bytes of RID data.
-*       parm3    Not used.
-*
-* Arguments:
-*       mib      MIB record.
-*       isget    MIBGET/MIBSET flag.
-*       wlandev  wlan device structure.
-*       priv     "priv" structure.
-*       hw       "hw" structure.
-*       msg      Message structure.
-*       data     Data buffer.
-*
-* Returns:
-*       0   - Success.
-*       ~0  - Error.
-*
-----------------------------------------------------------------*/
-
-static int prism2mib_regulatorydomains(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int            result;
-       UINT32         cnt;
-       p80211pstrd_t  *pstr = (p80211pstrd_t*) data;
-       UINT8          bytebuf[MIB_TMP_MAXLEN];
-       UINT16         *wordbuf = (UINT16*) bytebuf;
-
-       DBFENTER;
-
-       result = 0;
-
-       if (isget) {
-               result = hfa384x_drvr_getconfig(hw, mib->parm1, wordbuf, mib->parm2);
-               prism2mgmt_prism2int2p80211int(wordbuf, &cnt);
-               pstr->len = (UINT8) cnt;
-               memcpy(pstr->data, &wordbuf[1], pstr->len);
-       }
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_wepdefaultkey
-*
-* Get/set WEP default keys.
-*
-* MIB record parameters:
-*       parm1    Prism2 RID value.
-*       parm2    Number of bytes of RID data.
-*       parm3    Not used.
-*
-* Arguments:
-*       mib      MIB record.
-*       isget    MIBGET/MIBSET flag.
-*       wlandev  wlan device structure.
-*       priv     "priv" structure.
-*       hw       "hw" structure.
-*       msg      Message structure.
-*       data     Data buffer.
-*
-* Returns:
-*       0   - Success.
-*       ~0  - Error.
-*
-----------------------------------------------------------------*/
-
-static int prism2mib_wepdefaultkey(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int            result;
-       p80211pstrd_t  *pstr = (p80211pstrd_t*) data;
-       UINT8          bytebuf[MIB_TMP_MAXLEN];
-       UINT16         len;
-
-       DBFENTER;
-
-       if (isget) {
-               result = 0;    /* Should never happen. */
-       } else {
-               len = (pstr->len > 5) ? HFA384x_RID_CNFWEP128DEFAULTKEY_LEN :
-                                       HFA384x_RID_CNFWEPDEFAULTKEY_LEN;
-               memset(bytebuf, 0, len);
-               prism2mgmt_pstr2bytearea(bytebuf, pstr);
-               result = hfa384x_drvr_setconfig(hw, mib->parm1, bytebuf, len);
-       }
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_powermanagement
-*
-* Get/set 802.11 power management value.  Note that this is defined differently
-* by 802.11 and Prism2:
-*
-*       Meaning     802.11       Prism2
-*        active       1           false
-*      powersave      2           true
-*
-* MIB record parameters:
-*       parm1    Prism2 RID value.
-*       parm2    Not used.
-*       parm3    Not used.
-*
-* Arguments:
-*       mib      MIB record.
-*       isget    MIBGET/MIBSET flag.
-*       wlandev  wlan device structure.
-*       priv     "priv" structure.
-*       hw       "hw" structure.
-*       msg      Message structure.
-*       data     Data buffer.
-*
-* Returns:
-*       0   - Success.
-*       ~0  - Error.
-*
-----------------------------------------------------------------*/
-
-static int prism2mib_powermanagement(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int     result;
-       UINT32  *uint32 = (UINT32*) data;
-       UINT32  value;
-
-       DBFENTER;
-
-       if (isget) {
-               result = prism2mib_uint32(mib, isget, wlandev, hw, msg, &value);
-               *uint32 = (value == 0) ? 1 : 2;
-       } else {
-               value = ((*uint32) == 1) ? 0 : 1;
-               result = prism2mib_uint32(mib, isget, wlandev, hw, msg, &value);
-       }
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_preamble
-*
-* Get/set Prism2 short preamble
-*
-* MIB record parameters:
-*       parm1    Prism2 RID value.
-*       parm2    Not used.
-*       parm3    Not used.
-*
-* Arguments:
-*       mib      MIB record.
-*       isget    MIBGET/MIBSET flag.
-*       wlandev  wlan device structure.
-*       priv     "priv" structure.
-*       hw       "hw" structure.
-*       msg      Message structure.
-*       data     Data buffer.
-*
-* Returns:
-*       0   - Success.
-*       ~0  - Error.
-*
-----------------------------------------------------------------*/
-
-static int prism2mib_preamble(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int     result;
-       UINT32  *uint32 = (UINT32*) data;
-       UINT8   bytebuf[MIB_TMP_MAXLEN];
-       UINT16  *wordbuf = (UINT16*) bytebuf;
-
-       DBFENTER;
-
-       if (isget) {
-               result = hfa384x_drvr_getconfig16(hw, mib->parm1, wordbuf);
-               *uint32 = *wordbuf;
-       } else {
-               *wordbuf = *uint32;
-               result = hfa384x_drvr_setconfig16(hw, mib->parm1, *wordbuf);
-       }
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_privacyinvoked
-*
-* Get/set the dot11PrivacyInvoked value.
-*
-* MIB record parameters:
-*       parm1    Prism2 RID value.
-*       parm2    Bit value for PrivacyInvoked flag.
-*       parm3    Not used.
-*
-* Arguments:
-*       mib      MIB record.
-*       isget    MIBGET/MIBSET flag.
-*       wlandev  wlan device structure.
-*       priv     "priv" structure.
-*       hw       "hw" structure.
-*       msg      Message structure.
-*       data     Data buffer.
-*
-* Returns:
-*       0   - Success.
-*       ~0  - Error.
-*
-----------------------------------------------------------------*/
-
-static int prism2mib_privacyinvoked(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int     result;
-
-       DBFENTER;
-
-       if (wlandev->hostwep & HOSTWEP_DECRYPT) {
-               if (wlandev->hostwep & HOSTWEP_DECRYPT)
-                       mib->parm2 |= HFA384x_WEPFLAGS_DISABLE_RXCRYPT;
-               if (wlandev->hostwep & HOSTWEP_ENCRYPT)
-                       mib->parm2 |= HFA384x_WEPFLAGS_DISABLE_TXCRYPT;
-       }
-
-       result = prism2mib_flag(mib, isget, wlandev, hw, msg, data);
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_excludeunencrypted
-*
-* Get/set the dot11ExcludeUnencrypted value.
-*
-* MIB record parameters:
-*       parm1    Prism2 RID value.
-*       parm2    Bit value for ExcludeUnencrypted flag.
-*       parm3    Not used.
-*
-* Arguments:
-*       mib      MIB record.
-*       isget    MIBGET/MIBSET flag.
-*       wlandev  wlan device structure.
-*       priv     "priv" structure.
-*       hw       "hw" structure.
-*       msg      Message structure.
-*       data     Data buffer.
-*
-* Returns:
-*       0   - Success.
-*       ~0  - Error.
-*
-----------------------------------------------------------------*/
-
-static int prism2mib_excludeunencrypted(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int     result;
-
-       DBFENTER;
-
-       result = prism2mib_flag(mib, isget, wlandev, hw, msg, data);
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_fragmentationthreshold
-*
-* Get/set the fragmentation threshold.
-*
-* MIB record parameters:
-*       parm1    Prism2 RID value.
-*       parm2    Not used.
-*       parm3    Not used.
-*
-* Arguments:
-*       mib      MIB record.
-*       isget    MIBGET/MIBSET flag.
-*       wlandev  wlan device structure.
-*       priv     "priv" structure.
-*       hw       "hw" structure.
-*       msg      Message structure.
-*       data     Data buffer.
-*
-* Returns:
-*       0   - Success.
-*       ~0  - Error.
-*
-----------------------------------------------------------------*/
-
-static int prism2mib_fragmentationthreshold(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int     result;
-       UINT32  *uint32 = (UINT32*) data;
-
-       DBFENTER;
-
-       if (!isget)
-               if ((*uint32) % 2) {
-                       WLAN_LOG_WARNING("Attempt to set odd number "
-                                         "FragmentationThreshold\n");
-                       msg->resultcode.data = P80211ENUM_resultcode_not_supported;
-                       return(0);
-               }
-
-       result = prism2mib_uint32(mib, isget, wlandev, hw, msg, data);
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_operationalrateset
-*
-* Get/set the operational rate set.
-*
-* MIB record parameters:
-*       parm1    Prism2 RID value.
-*       parm2    Not used.
-*       parm3    Not used.
-*
-* Arguments:
-*       mib      MIB record.
-*       isget    MIBGET/MIBSET flag.
-*       wlandev  wlan device structure.
-*       priv     "priv" structure.
-*       hw       "hw" structure.
-*       msg      Message structure.
-*       data     Data buffer.
-*
-* Returns:
-*       0   - Success.
-*       ~0  - Error.
-*
-----------------------------------------------------------------*/
-
-static int prism2mib_operationalrateset(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int            result;
-       p80211pstrd_t  *pstr = (p80211pstrd_t *) data;
-       UINT8          bytebuf[MIB_TMP_MAXLEN];
-       UINT16         *wordbuf = (UINT16*) bytebuf;
-
-       DBFENTER;
-
-       if (isget) {
-               result = hfa384x_drvr_getconfig16(hw, mib->parm1, wordbuf);
-               prism2mgmt_get_oprateset(wordbuf, pstr);
-       } else {
-               prism2mgmt_set_oprateset(wordbuf, pstr);
-               result = hfa384x_drvr_setconfig16(hw, mib->parm1, *wordbuf);
-               result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFSUPPRATES, *wordbuf);
-       }
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_groupaddress
-*
-* Get/set the dot11GroupAddressesTable.
-*
-* MIB record parameters:
-*       parm1    Not used.
-*       parm2    Not used.
-*       parm3    Not used.
-*
-* Arguments:
-*       mib      MIB record.
-*       isget    MIBGET/MIBSET flag.
-*       wlandev  wlan device structure.
-*       priv     "priv" structure.
-*       hw       "hw" structure.
-*       msg      Message structure.
-*       data     Data buffer.
-*
-* Returns:
-*       0   - Success.
-*       ~0  - Error.
-*
-----------------------------------------------------------------*/
-
-static int prism2mib_groupaddress(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int            result;
-       p80211pstrd_t  *pstr = (p80211pstrd_t *) data;
-       UINT8          bytebuf[MIB_TMP_MAXLEN];
-       UINT16         len;
-
-       DBFENTER;
-
-       /* TODO: fix this.  f/w doesn't support mcast filters */
-
-       if (isget) {
-               prism2mgmt_get_grpaddr(mib->did, pstr, hw);
-               return(0);
-       }
-
-       result = prism2mgmt_set_grpaddr(mib->did, bytebuf, pstr, hw);
-       if (result != 0) {
-               msg->resultcode.data = P80211ENUM_resultcode_not_supported;
-               return(result);
-       }
-
-       if (hw->dot11_grpcnt <= MAX_PRISM2_GRP_ADDR) {
-               len = hw->dot11_grpcnt * WLAN_ADDR_LEN;
-               memcpy(bytebuf, hw->dot11_grp_addr[0], len);
-               result = hfa384x_drvr_setconfig(hw, HFA384x_RID_GROUPADDR, bytebuf, len);
-
-               /*
-               ** Turn off promiscuous mode if count is equal to MAX.  We may
-               ** have been at a higher count in promiscuous mode and need to
-               ** turn it off.
-               */
-
-               /* but only if we're not already in promisc mode. :) */
-               if ((hw->dot11_grpcnt == MAX_PRISM2_GRP_ADDR) &&
-                   !( wlandev->netdev->flags & IFF_PROMISC)) {
-                       result = hfa384x_drvr_setconfig16(hw,
-                                            HFA384x_RID_PROMISCMODE, 0);
-               }
-       } else {
-
-               /*
-               ** Clear group addresses in card and set to promiscuous mode.
-               */
-
-               memset(bytebuf, 0, sizeof(bytebuf));
-               result = hfa384x_drvr_setconfig(hw, HFA384x_RID_GROUPADDR,
-                                               bytebuf, 0);
-               if (result == 0) {
-                       result = hfa384x_drvr_setconfig16(hw,
-                                       HFA384x_RID_PROMISCMODE, 1);
-               }
-       }
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_fwid
-*
-* Get the firmware ID.
-*
-* MIB record parameters:
-*       parm1    Not used.
-*       parm2    Not used.
-*       parm3    Not used.
-*
-* Arguments:
-*       mib      MIB record.
-*       isget    MIBGET/MIBSET flag.
-*       wlandev  wlan device structure.
-*       priv     "priv" structure.
-*       hw       "hw" structure.
-*       msg      Message structure.
-*       data     Data buffer.
-*
-* Returns:
-*       0   - Success.
-*       ~0  - Error.
-*
-----------------------------------------------------------------*/
-
-static int prism2mib_fwid(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int             result;
-       p80211pstrd_t   *pstr = (p80211pstrd_t *) data;
-       hfa384x_FWID_t  fwid;
-
-       DBFENTER;
-
-       if (isget) {
-               result = hfa384x_drvr_getconfig(hw, HFA384x_RID_FWID,
-                                               &fwid, HFA384x_RID_FWID_LEN);
-               if (mib->did == DIDmib_p2_p2NIC_p2PrimaryFWID) {
-                       fwid.primary[HFA384x_FWID_LEN - 1] = '\0';
-                       pstr->len = strlen(fwid.primary);
-                       memcpy(pstr->data, fwid.primary, pstr->len);
-               } else {
-                       fwid.secondary[HFA384x_FWID_LEN - 1] = '\0';
-                       pstr->len = strlen(fwid.secondary);
-                       memcpy(pstr->data, fwid.secondary, pstr->len);
-               }
-       } else
-               result = 0;     /* Should never happen. */
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_authalg
-*
-* Get values from the AuhtenticationAlgorithmsTable.
-*
-* MIB record parameters:
-*       parm1    Table index (1-6).
-*       parm2    Not used.
-*       parm3    Not used.
-*
-* Arguments:
-*       mib      MIB record.
-*       isget    MIBGET/MIBSET flag.
-*       wlandev  wlan device structure.
-*       priv     "priv" structure.
-*       hw       "hw" structure.
-*       msg      Message structure.
-*       data     Data buffer.
-*
-* Returns:
-*       0   - Success.
-*       ~0  - Error.
-*
-----------------------------------------------------------------*/
-
-static int prism2mib_authalg(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       UINT32  *uint32 = (UINT32*) data;
-
-       DBFENTER;
-
-       /* MSM: pkx supplied code that  code queries RID FD4D....but the f/w's
-         *  results are bogus. Therefore, we have to simulate the appropriate
-         *  results here in the driver based on our knowledge of existing MAC
-         *  features.  That's the whole point behind this ugly function.
-         */
-
-       if (isget) {
-               msg->resultcode.data = P80211ENUM_resultcode_success;
-               switch (mib->parm1) {
-                       case 1: /* Open System */
-                               *uint32 = P80211ENUM_authalg_opensystem;
-                               break;
-                       case 2: /* SharedKey */
-                               *uint32 = P80211ENUM_authalg_sharedkey;
-                               break;
-                       default:
-                               *uint32 = 0;
-                               msg->resultcode.data = P80211ENUM_resultcode_not_supported;
-                               break;
-               }
-       }
-
-       DBFEXIT;
-       return(0);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_authalgenable
-*
-* Get/set the enable values from the AuhtenticationAlgorithmsTable.
-*
-* MIB record parameters:
-*       parm1    Table index (1-6).
-*       parm2    Not used.
-*       parm3    Not used.
-*
-* Arguments:
-*       mib      MIB record.
-*       isget    MIBGET/MIBSET flag.
-*       wlandev  wlan device structure.
-*       priv     "priv" structure.
-*       hw       "hw" structure.
-*       msg      Message structure.
-*       data     Data buffer.
-*
-* Returns:
-*       0   - Success.
-*       ~0  - Error.
-*
-----------------------------------------------------------------*/
-
-static int prism2mib_authalgenable(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int     result;
-       UINT32  *uint32 = (UINT32*) data;
-
-       int     index;
-       UINT16  cnf_auth;
-       UINT16  mask;
-
-       DBFENTER;
-
-       index = mib->parm1 - 1;
-
-       result = hfa384x_drvr_getconfig16( hw,
-                       HFA384x_RID_CNFAUTHENTICATION, &cnf_auth);
-       WLAN_LOG_DEBUG(2,"cnfAuthentication0=%d, index=%d\n", cnf_auth, index);
-
-       if (isget) {
-               if ( index == 0 || index == 1 ) {
-                       *uint32 = (cnf_auth & (1<<index)) ?
-                               P80211ENUM_truth_true: P80211ENUM_truth_false;
-               } else {
-                       *uint32 = P80211ENUM_truth_false;
-                       msg->resultcode.data = P80211ENUM_resultcode_not_supported;
-               }
-       } else {
-               if ( index == 0 || index == 1 ) {
-                       mask = 1 << index;
-                       if (*uint32==P80211ENUM_truth_true ) {
-                               cnf_auth |= mask;
-                       } else {
-                               cnf_auth &= ~mask;
-                       }
-                       result = hfa384x_drvr_setconfig16( hw,
-                                       HFA384x_RID_CNFAUTHENTICATION, cnf_auth);
-                       WLAN_LOG_DEBUG(2,"cnfAuthentication:=%d\n", cnf_auth);
-                       if ( result ) {
-                               WLAN_LOG_DEBUG(1,"Unable to set p2cnfAuthentication to %d\n", cnf_auth);
-                               msg->resultcode.data = P80211ENUM_resultcode_implementation_failure;
-                       }
-               } else {
-                       msg->resultcode.data = P80211ENUM_resultcode_not_supported;
-               }
-       }
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_priv
-*
-* Get/set values in the "priv" data structure.
-*
-* MIB record parameters:
-*       parm1    Not used.
-*       parm2    Not used.
-*       parm3    Not used.
-*
-* Arguments:
-*       mib      MIB record.
-*       isget    MIBGET/MIBSET flag.
-*       wlandev  wlan device structure.
-*       priv     "priv" structure.
-*       hw       "hw" structure.
-*       msg      Message structure.
-*       data     Data buffer.
-*
-* Returns:
-*       0   - Success.
-*       ~0  - Error.
-*
-----------------------------------------------------------------*/
-
-static int prism2mib_priv(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       UINT32            *uint32 = (UINT32*) data;
-       p80211pstrd_t     *pstr = (p80211pstrd_t*) data;
-       p80211macarray_t  *macarray = (p80211macarray_t *) data;
-
-       int  i, cnt, result, done;
-
-       prism2sta_authlist_t  old;
-
-       /*
-       ** "test" is a lot longer than necessary but who cares?  ...as long as
-       ** it is long enough!
-       */
-
-       UINT8  test[sizeof(wlandev->rx) + sizeof(hw->tallies)];
-
-       DBFENTER;
-
-       switch (mib->did) {
-       case DIDmib_p2_p2Table_p2ReceivedFrameStatistics:
-
-               /*
-               ** Note: The values in this record are changed by the
-               ** interrupt handler and therefore cannot be guaranteed
-               ** to be stable while they are being copied.  However,
-               ** the interrupt handler will take priority over this
-               ** code.  Hence, if the same values are copied twice,
-               ** then we are ensured that the values have not been
-               ** changed.  If they have, then just try again.  Don't
-               ** try more than 10 times...if we still haven't got it,
-               ** then the values we do have are probably good enough.
-               ** This scheme for copying values is used in order to
-               ** prevent having to block the interrupt handler while
-               ** we copy the values.
-               */
-
-               if (isget)
-                       for (i = 0; i < 10; i++) {
-                               memcpy(data, &wlandev->rx, sizeof(wlandev->rx));
-                               memcpy(test, &wlandev->rx, sizeof(wlandev->rx));
-                               if (memcmp(data, test, sizeof(wlandev->rx)) == 0) break;
-                       }
-
-               break;
-
-       case DIDmib_p2_p2Table_p2CommunicationTallies:
-
-               /*
-               ** Note: The values in this record are changed by the
-               ** interrupt handler and therefore cannot be guaranteed
-               ** to be stable while they are being copied.  See the
-               ** note above about copying values.
-               */
-
-               if (isget) {
-                       result = hfa384x_drvr_commtallies(hw);
-
-                       /* ?????? We need to wait a bit here for the */
-                       /*   tallies to get updated. ?????? */
-                       /* MSM: TODO: The right way to do this is to
-                        *      add a "commtallie" wait queue to the
-                        *      priv structure that gets run every time
-                        *      we receive a commtally info frame.
-                        *      This process would sleep on that
-                        *      queue and get awakened when the
-                        *      the requested info frame arrives.
-                        *      Don't have time to do and test this
-                        *      right now.
-                        */
-
-                       /* Ugh, this is nasty. */
-                       for (i = 0; i < 10; i++) {
-                               memcpy(data,
-                                      &hw->tallies,
-                                      sizeof(hw->tallies));
-                               memcpy(test,
-                                      &hw->tallies,
-                                      sizeof(hw->tallies));
-                               if ( memcmp(data,
-                                           test,
-                                           sizeof(hw->tallies)) == 0)
-                                       break;
-                       }
-               }
-
-               break;
-
-       case DIDmib_p2_p2Table_p2Authenticated:
-
-               if (isget) {
-                       prism2mib_priv_authlist(hw, &old);
-
-                       macarray->cnt = 0;
-                       for (i = 0; i < old.cnt; i++) {
-                               if (!old.assoc[i]) {
-                                       memcpy(macarray->data[macarray->cnt], old.addr[i], WLAN_ADDR_LEN);
-                                       macarray->cnt++;
-                               }
-                       }
-               }
-
-               break;
-
-       case DIDmib_p2_p2Table_p2Associated:
-
-               if (isget) {
-                       prism2mib_priv_authlist(hw, &old);
-
-                       macarray->cnt = 0;
-                       for (i = 0; i < old.cnt; i++) {
-                               if (old.assoc[i]) {
-                                       memcpy(macarray->data[macarray->cnt], old.addr[i], WLAN_ADDR_LEN);
-                                       macarray->cnt++;
-                               }
-                       }
-               }
-
-               break;
-
-       case DIDmib_p2_p2Table_p2PowerSaveUserCount:
-
-               if (isget)
-                       *uint32 = hw->psusercount;
-
-               break;
-
-       case DIDmib_p2_p2Table_p2Comment:
-
-               if (isget) {
-                       pstr->len = strlen(hw->comment);
-                       memcpy(pstr->data, hw->comment, pstr->len);
-               } else {
-                       cnt = pstr->len;
-                       if (cnt < 0) cnt = 0;
-                       if (cnt >= sizeof(hw->comment))
-                               cnt = sizeof(hw->comment)-1;
-                       memcpy(hw->comment, pstr->data, cnt);
-                       pstr->data[cnt] = '\0';
-               }
-
-               break;
-
-       case DIDmib_p2_p2Table_p2AccessMode:
-
-               if (isget)
-                       *uint32 = hw->accessmode;
-               else
-                       prism2mib_priv_accessmode(hw, *uint32);
-
-               break;
-
-       case DIDmib_p2_p2Table_p2AccessAllow:
-
-               if (isget) {
-                       macarray->cnt = hw->allow.cnt;
-                       memcpy(macarray->data, hw->allow.addr,
-                              macarray->cnt*WLAN_ADDR_LEN);
-               } else {
-                       prism2mib_priv_accessallow(hw, macarray);
-               }
-
-               break;
-
-       case DIDmib_p2_p2Table_p2AccessDeny:
-
-               if (isget) {
-                       macarray->cnt = hw->deny.cnt;
-                       memcpy(macarray->data, hw->deny.addr,
-                              macarray->cnt*WLAN_ADDR_LEN);
-               } else {
-                       prism2mib_priv_accessdeny(hw, macarray);
-               }
-
-               break;
-
-       case DIDmib_p2_p2Table_p2ChannelInfoResults:
-
-               if (isget) {
-                       done = atomic_read(&hw->channel_info.done);
-                       if (done == 0) {
-                               msg->resultcode.status = P80211ENUM_msgitem_status_no_value;
-                               break;
-                       }
-                       if (done == 1) {
-                               msg->resultcode.status = P80211ENUM_msgitem_status_incomplete_itemdata;
-                               break;
-                       }
-
-                       for (i = 0; i < 14; i++, uint32 += 5) {
-                               uint32[0] = i+1;
-                               uint32[1] = hw->channel_info.results.result[i].anl;
-                               uint32[2] = hw->channel_info.results.result[i].pnl;
-                               uint32[3] = (hw->channel_info.results.result[i].active & HFA384x_CHINFORESULT_BSSACTIVE) ? 1 : 0;
-                               uint32[4] = (hw->channel_info.results.result[i].active & HFA384x_CHINFORESULT_PCFACTIVE) ? 1 : 0;
-                       }
-               }
-
-               break;
-
-       case DIDmib_dot11smt_dot11StationConfigTable_dot11DesiredBSSType:
-
-               if (isget)
-                       *uint32 = hw->dot11_desired_bss_type;
-               else
-                       hw->dot11_desired_bss_type = *uint32;
-
-               break;
-
-       case DIDmib_lnx_lnxConfigTable_lnxRSNAIE: {
-               hfa384x_WPAData_t wpa;
-               if (isget) {
-                       hfa384x_drvr_getconfig( hw, HFA384x_RID_CNFWPADATA,
-                                               (UINT8 *) &wpa, sizeof(wpa));
-                       pstr->len = hfa384x2host_16(wpa.datalen);
-                       memcpy(pstr->data, wpa.data, pstr->len);
-               } else {
-                       wpa.datalen = host2hfa384x_16(pstr->len);
-                       memcpy(wpa.data, pstr->data, pstr->len);
-
-                       result = hfa384x_drvr_setconfig(hw, HFA384x_RID_CNFWPADATA,
-                               (UINT8 *) &wpa, sizeof(wpa));
-               }
-               break;
-       }
-       default:
-               WLAN_LOG_ERROR("Unhandled DID 0x%08x\n", mib->did);
-       }
-
-       DBFEXIT;
-       return(0);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_priv_authlist
-*
-* Get a copy of the list of authenticated stations.
-*
-* Arguments:
-*       priv     "priv" structure.
-*       list     List of authenticated stations.
-*
-* Returns:
-*      Nothing
-*
-----------------------------------------------------------------*/
-
-static void prism2mib_priv_authlist(
-hfa384x_t             *hw,
-prism2sta_authlist_t  *list)
-{
-       prism2sta_authlist_t  test;
-       int                   i;
-
-       DBFENTER;
-
-       /*
-       ** Note: The values in this record are changed by the interrupt
-       ** handler and therefore cannot be guaranteed to be stable while
-       ** they are being copied.  However, the interrupt handler will
-       ** take priority over this code.  Hence, if the same values are
-       ** copied twice, then we are ensured that the values have not
-       ** been changed.  If they have, then just try again.  Don't try
-       ** more than 10 times...the list of authenticated stations is
-       ** unlikely to be changing frequently enough that we can't get
-       ** a snapshot in 10 tries.  Don't try more than this so that we
-       ** don't risk locking-up for long periods of time.  If we still
-       ** haven't got the snapshot, then generate an error message and
-       ** return an empty list (since this is the only valid list that
-       ** we can guarentee).  This scheme for copying values is used in
-       ** order to prevent having to block the interrupt handler while
-       ** we copy the values.
-       */
-
-       for (i = 0; i < 10; i++) {
-               memcpy(list, &hw->authlist, sizeof(prism2sta_authlist_t));
-               memcpy(&test, &hw->authlist, sizeof(prism2sta_authlist_t));
-               if (memcmp(list, &test, sizeof(prism2sta_authlist_t)) == 0)
-                       break;
-       }
-
-       if (i >= 10) {
-               list->cnt = 0;
-               WLAN_LOG_ERROR("Could not obtain snapshot of authenticated stations.\n");
-               }
-
-       DBFEXIT;
-       return;
-}
-
-/*----------------------------------------------------------------
-* prism2mib_priv_accessmode
-*
-* Set the Access Mode.
-*
-* Arguments:
-*       priv     "priv" structure.
-*       hw       "hw" structure.
-*       mode     New access mode.
-*
-* Returns:
-*      Nothing
-*
-----------------------------------------------------------------*/
-
-static void prism2mib_priv_accessmode(
-hfa384x_t         *hw,
-UINT32            mode)
-{
-       prism2sta_authlist_t  old;
-       int                   i, j, deauth;
-       UINT8                 *addr;
-
-       DBFENTER;
-
-       /*
-       ** If the mode is not changing or it is changing to "All", then it's
-       ** okay to go ahead without a lot of messing around.  Otherwise, the
-       ** access mode is changing in a way that may leave some stations
-       ** authenticated which should not be authenticated.  It will be
-       ** necessary to de-authenticate these stations.
-       */
-
-       if (mode == WLAN_ACCESS_ALL || mode == hw->accessmode) {
-               hw->accessmode = mode;
-               return;
-       }
-
-       /*
-       ** Switch to the new access mode.  Once this is done, then the interrupt
-       ** handler (which uses this value) will be prevented from authenticating
-       ** ADDITIONAL stations which should not be authenticated.  Then get a
-       ** copy of the current list of authenticated stations.
-       */
-
-       hw->accessmode = mode;
-
-       prism2mib_priv_authlist(hw, &old);
-
-       /*
-       ** Now go through the list of previously authenticated stations (some
-       ** of which might de-authenticate themselves while we are processing it
-       ** but that is okay).  Any station which no longer matches the access
-       ** mode, must be de-authenticated.
-       */
+int                          isget,
+wlandevice_t                 *wlandev,
+hfa384x_t                    *hw,
+p80211msg_dot11req_mibset_t  *msg,
+void                         *data)
+{
+       int     result;
 
-       for (i = 0; i < old.cnt; i++) {
-               addr = old.addr[i];
-
-               if (mode == WLAN_ACCESS_NONE)
-                       deauth = 1;
-               else {
-                       if (mode == WLAN_ACCESS_ALLOW) {
-                               for (j = 0; j < hw->allow.cnt; j++)
-                                       if (memcmp(addr, hw->allow.addr[j],
-                                                       WLAN_ADDR_LEN) == 0)
-                                               break;
-                               deauth = (j >= hw->allow.cnt);
-                       } else {
-                               for (j = 0; j < hw->deny.cnt; j++)
-                                       if (memcmp(addr, hw->deny.addr[j],
-                                                       WLAN_ADDR_LEN) == 0)
-                                               break;
-                               deauth = (j < hw->deny.cnt);
-                       }
-               }
+       DBFENTER;
 
-               if (deauth) prism2mib_priv_deauthenticate(hw, addr);
+       if (wlandev->hostwep & HOSTWEP_DECRYPT) {
+               if (wlandev->hostwep & HOSTWEP_DECRYPT)
+                       mib->parm2 |= HFA384x_WEPFLAGS_DISABLE_RXCRYPT;
+               if (wlandev->hostwep & HOSTWEP_ENCRYPT)
+                       mib->parm2 |= HFA384x_WEPFLAGS_DISABLE_TXCRYPT;
        }
 
+       result = prism2mib_flag(mib, isget, wlandev, hw, msg, data);
+
        DBFEXIT;
-       return;
+       return(result);
 }
 
 /*----------------------------------------------------------------
-* prism2mib_priv_accessallow
+* prism2mib_excludeunencrypted
 *
-* Change the list of allowed MAC addresses.
+* Get/set the dot11ExcludeUnencrypted value.
+*
+* MIB record parameters:
+*       parm1    Prism2 RID value.
+*       parm2    Bit value for ExcludeUnencrypted flag.
+*       parm3    Not used.
 *
 * Arguments:
-*       priv      "priv" structure.
-*       hw        "hw" structure.
-*       macarray  New array of MAC addresses.
+*       mib      MIB record.
+*       isget    MIBGET/MIBSET flag.
+*       wlandev  wlan device structure.
+*       priv     "priv" structure.
+*       hw       "hw" structure.
+*       msg      Message structure.
+*       data     Data buffer.
 *
 * Returns:
-*      Nothing
+*       0   - Success.
+*       ~0  - Error.
 *
 ----------------------------------------------------------------*/
 
-static void prism2mib_priv_accessallow(
-hfa384x_t         *hw,
-p80211macarray_t  *macarray)
+static int prism2mib_excludeunencrypted(
+mibrec_t                     *mib,
+int                          isget,
+wlandevice_t                 *wlandev,
+hfa384x_t                    *hw,
+p80211msg_dot11req_mibset_t  *msg,
+void                         *data)
 {
-       prism2sta_authlist_t  old;
-       int                   i, j;
+       int     result;
 
        DBFENTER;
 
-       /*
-       ** Change the access list.  Note that the interrupt handler may be in
-       ** the middle of using the access list!!!  Since the interrupt handler
-       ** will always have priority over this process and this is the only
-       ** process that will modify the list, this problem can be handled as
-       ** follows:
-       **
-       **    1. Set the "modify" flag.
-       **    2. Change the first copy of the list.
-       **    3. Clear the "modify" flag.
-       **    4. Change the backup copy of the list.
-       **
-       ** The interrupt handler will check the "modify" flag.  If NOT set, then
-       ** the first copy of the list is valid and may be used.  Otherwise, the
-       ** first copy is being changed but the backup copy is valid and may be
-       ** used.  Doing things this way prevents having to have the interrupt
-       ** handler block while the list is being updated.
-       */
-
-       hw->allow.modify = 1;
-
-       hw->allow.cnt = macarray->cnt;
-       memcpy(hw->allow.addr, macarray->data, macarray->cnt*WLAN_ADDR_LEN);
-
-       hw->allow.modify = 0;
-
-       hw->allow.cnt1 = macarray->cnt;
-       memcpy(hw->allow.addr1, macarray->data, macarray->cnt*WLAN_ADDR_LEN);
-
-       /*
-       ** If the current access mode is "Allow", then changing the access
-       ** list may leave some stations authenticated which should not be
-       ** authenticated.  It will be necessary to de-authenticate these
-       ** stations.  Otherwise, the list can be changed without a lot of fuss.
-       */
-
-       if (hw->accessmode == WLAN_ACCESS_ALLOW) {
-
-               /*
-               ** Go through the list of authenticated stations (some of
-               ** which might de-authenticate themselves while we are
-               ** processing it but that is okay).  Any station which is
-               ** no longer in the list of allowed stations, must be
-               ** de-authenticated.
-               */
-
-               prism2mib_priv_authlist(hw, &old);
-
-               for (i = 0; i < old.cnt; i++) {
-                       for (j = 0; j < hw->allow.cnt; j++)
-                               if (memcmp(old.addr[i], hw->allow.addr[j],
-                                                       WLAN_ADDR_LEN) == 0)
-                                       break;
-                       if (j >= hw->allow.cnt)
-                               prism2mib_priv_deauthenticate(hw, old.addr[i]);
-               }
-       }
+       result = prism2mib_flag(mib, isget, wlandev, hw, msg, data);
 
        DBFEXIT;
-       return;
+       return(result);
 }
 
 /*----------------------------------------------------------------
-* prism2mib_priv_accessdeny
+* prism2mib_fragmentationthreshold
 *
-* Change the list of denied MAC addresses.
+* Get/set the fragmentation threshold.
+*
+* MIB record parameters:
+*       parm1    Prism2 RID value.
+*       parm2    Not used.
+*       parm3    Not used.
 *
 * Arguments:
-*       priv      "priv" structure.
-*       hw        "hw" structure.
-*       macarray  New array of MAC addresses.
+*       mib      MIB record.
+*       isget    MIBGET/MIBSET flag.
+*       wlandev  wlan device structure.
+*       priv     "priv" structure.
+*       hw       "hw" structure.
+*       msg      Message structure.
+*       data     Data buffer.
 *
 * Returns:
-*      Nothing
+*       0   - Success.
+*       ~0  - Error.
 *
 ----------------------------------------------------------------*/
 
-static void prism2mib_priv_accessdeny(
-hfa384x_t         *hw,
-p80211macarray_t  *macarray)
+static int prism2mib_fragmentationthreshold(
+mibrec_t                     *mib,
+int                          isget,
+wlandevice_t                 *wlandev,
+hfa384x_t                    *hw,
+p80211msg_dot11req_mibset_t  *msg,
+void                         *data)
 {
-       prism2sta_authlist_t  old;
-       int                   i, j;
+       int     result;
+       u32  *uint32 = (u32*) data;
 
        DBFENTER;
 
-       /*
-       ** Change the access list.  Note that the interrupt handler may be in
-       ** the middle of using the access list!!!  Since the interrupt handler
-       ** will always have priority over this process and this is the only
-       ** process that will modify the list, this problem can be handled as
-       ** follows:
-       **
-       **    1. Set the "modify" flag.
-       **    2. Change the first copy of the list.
-       **    3. Clear the "modify" flag.
-       **    4. Change the backup copy of the list.
-       **
-       ** The interrupt handler will check the "modify" flag.  If NOT set, then
-       ** the first copy of the list is valid and may be used.  Otherwise, the
-       ** first copy is being changed but the backup copy is valid and may be
-       ** used.  Doing things this way prevents having to have the interrupt
-       ** handler block while the list is being updated.
-       */
-
-       hw->deny.modify = 1;
-
-       hw->deny.cnt = macarray->cnt;
-       memcpy(hw->deny.addr, macarray->data, macarray->cnt*WLAN_ADDR_LEN);
-
-       hw->deny.modify = 0;
-
-       hw->deny.cnt1 = macarray->cnt;
-       memcpy(hw->deny.addr1, macarray->data, macarray->cnt*WLAN_ADDR_LEN);
-
-       /*
-       ** If the current access mode is "Deny", then changing the access
-       ** list may leave some stations authenticated which should not be
-       ** authenticated.  It will be necessary to de-authenticate these
-       ** stations.  Otherwise, the list can be changed without a lot of fuss.
-       */
-
-       if (hw->accessmode == WLAN_ACCESS_DENY) {
-
-               /*
-               ** Go through the list of authenticated stations (some of
-               ** which might de-authenticate themselves while we are
-               ** processing it but that is okay).  Any station which is
-               ** now in the list of denied stations, must be de-authenticated.
-               */
-
-               prism2mib_priv_authlist(hw, &old);
+       if (!isget)
+               if ((*uint32) % 2) {
+                       WLAN_LOG_WARNING("Attempt to set odd number "
+                                         "FragmentationThreshold\n");
+                       msg->resultcode.data = P80211ENUM_resultcode_not_supported;
+                       return(0);
+               }
 
-               for (i = 0; i < old.cnt; i++)
-                       for (j = 0; j < hw->deny.cnt; j++)
-                               if (memcmp(old.addr[i], hw->deny.addr[j],
-                                                        WLAN_ADDR_LEN) == 0) {
-                                       prism2mib_priv_deauthenticate(hw, old.addr[i]);
-                                       break;
-                               }
-       }
+       result = prism2mib_uint32(mib, isget, wlandev, hw, msg, data);
 
        DBFEXIT;
-       return;
+       return(result);
 }
 
 /*----------------------------------------------------------------
-* prism2mib_priv_deauthenticate
+* prism2mib_priv
 *
-* De-authenticate a station.  This is done by sending a HandoverAddress
-* information frame to the firmware.  This should work, according to
-* Intersil.
+* Get/set values in the "priv" data structure.
+*
+* MIB record parameters:
+*       parm1    Not used.
+*       parm2    Not used.
+*       parm3    Not used.
 *
 * Arguments:
+*       mib      MIB record.
+*       isget    MIBGET/MIBSET flag.
+*       wlandev  wlan device structure.
 *       priv     "priv" structure.
 *       hw       "hw" structure.
-*       addr     MAC address of station to be de-authenticated.
+*       msg      Message structure.
+*       data     Data buffer.
 *
 * Returns:
-*      Nothing
+*       0   - Success.
+*       ~0  - Error.
 *
 ----------------------------------------------------------------*/
 
-static void prism2mib_priv_deauthenticate(
-hfa384x_t         *hw,
-UINT8             *addr)
+static int prism2mib_priv(
+mibrec_t                     *mib,
+int                          isget,
+wlandevice_t                 *wlandev,
+hfa384x_t                    *hw,
+p80211msg_dot11req_mibset_t  *msg,
+void                         *data)
 {
+       p80211pstrd_t     *pstr = (p80211pstrd_t*) data;
+
+       int  result;
+
        DBFENTER;
-       hfa384x_drvr_handover(hw, addr);
+
+       switch (mib->did) {
+       case DIDmib_lnx_lnxConfigTable_lnxRSNAIE: {
+               hfa384x_WPAData_t wpa;
+               if (isget) {
+                       hfa384x_drvr_getconfig( hw, HFA384x_RID_CNFWPADATA,
+                                               (u8 *) &wpa, sizeof(wpa));
+                       pstr->len = hfa384x2host_16(wpa.datalen);
+                       memcpy(pstr->data, wpa.data, pstr->len);
+               } else {
+                       wpa.datalen = host2hfa384x_16(pstr->len);
+                       memcpy(wpa.data, pstr->data, pstr->len);
+
+                       result = hfa384x_drvr_setconfig(hw, HFA384x_RID_CNFWPADATA,
+                               (u8 *) &wpa, sizeof(wpa));
+               }
+               break;
+       }
+       default:
+               WLAN_LOG_ERROR("Unhandled DID 0x%08x\n", mib->did);
+       }
+
        DBFEXIT;
-       return;
+       return(0);
 }
 
-
 /*----------------------------------------------------------------
 * prism2mgmt_pstr2bytestr
 *
@@ -3279,7 +847,7 @@ void prism2mgmt_pstr2bytestr(hfa384x_bytestr_t *bytestr, p80211pstrd_t *pstr)
 {
        DBFENTER;
 
-       bytestr->len = host2hfa384x_16((UINT16)(pstr->len));
+       bytestr->len = host2hfa384x_16((u16)(pstr->len));
        memcpy(bytestr->data, pstr->data, pstr->len);
        DBFEXIT;
 }
@@ -3300,7 +868,7 @@ void prism2mgmt_pstr2bytestr(hfa384x_bytestr_t *bytestr, p80211pstrd_t *pstr)
 *
 ----------------------------------------------------------------*/
 
-void prism2mgmt_pstr2bytearea(UINT8 *bytearea, p80211pstrd_t *pstr)
+void prism2mgmt_pstr2bytearea(u8 *bytearea, p80211pstrd_t *pstr)
 {
        DBFENTER;
 
@@ -3328,7 +896,7 @@ void prism2mgmt_bytestr2pstr(hfa384x_bytestr_t *bytestr, p80211pstrd_t *pstr)
 {
        DBFENTER;
 
-       pstr->len = (UINT8)(hfa384x2host_16((UINT16)(bytestr->len)));
+       pstr->len = (u8)(hfa384x2host_16((u16)(bytestr->len)));
        memcpy(pstr->data, bytestr->data, pstr->len);
        DBFEXIT;
 }
@@ -3349,11 +917,11 @@ void prism2mgmt_bytestr2pstr(hfa384x_bytestr_t *bytestr, p80211pstrd_t *pstr)
 *
 ----------------------------------------------------------------*/
 
-void prism2mgmt_bytearea2pstr(UINT8 *bytearea, p80211pstrd_t *pstr, int len)
+void prism2mgmt_bytearea2pstr(u8 *bytearea, p80211pstrd_t *pstr, int len)
 {
        DBFENTER;
 
-       pstr->len = (UINT8)len;
+       pstr->len = (u8)len;
        memcpy(pstr->data, bytearea, len);
        DBFEXIT;
 }
@@ -3373,11 +941,11 @@ void prism2mgmt_bytearea2pstr(UINT8 *bytearea, p80211pstrd_t *pstr, int len)
 *
 ----------------------------------------------------------------*/
 
-void prism2mgmt_prism2int2p80211int(UINT16 *prism2int, UINT32 *wlanint)
+void prism2mgmt_prism2int2p80211int(u16 *prism2int, u32 *wlanint)
 {
        DBFENTER;
 
-       *wlanint = (UINT32)hfa384x2host_16(*prism2int);
+       *wlanint = (u32)hfa384x2host_16(*prism2int);
        DBFEXIT;
 }
 
@@ -3396,11 +964,11 @@ void prism2mgmt_prism2int2p80211int(UINT16 *prism2int, UINT32 *wlanint)
 *
 ----------------------------------------------------------------*/
 
-void prism2mgmt_p80211int2prism2int(UINT16 *prism2int, UINT32 *wlanint)
+void prism2mgmt_p80211int2prism2int(u16 *prism2int, u32 *wlanint)
 {
        DBFENTER;
 
-       *prism2int = host2hfa384x_16((UINT16)(*wlanint));
+       *prism2int = host2hfa384x_16((u16)(*wlanint));
        DBFEXIT;
 }
 
@@ -3419,7 +987,7 @@ void prism2mgmt_p80211int2prism2int(UINT16 *prism2int, UINT32 *wlanint)
 *      Nothing
 *
 ----------------------------------------------------------------*/
-void prism2mgmt_prism2enum2p80211enum(UINT16 *prism2enum, UINT32 *wlanenum, UINT16 rid)
+void prism2mgmt_prism2enum2p80211enum(u16 *prism2enum, u32 *wlanenum, u16 rid)
 {
        DBFENTER;
 
@@ -3445,7 +1013,7 @@ void prism2mgmt_prism2enum2p80211enum(UINT16 *prism2enum, UINT32 *wlanenum, UINT
 *      Nothing
 *
 ----------------------------------------------------------------*/
-void prism2mgmt_p80211enum2prism2enum(UINT16 *prism2enum, UINT32 *wlanenum, UINT16 rid)
+void prism2mgmt_p80211enum2prism2enum(u16 *prism2enum, u32 *wlanenum, u16 rid)
 {
        DBFENTER;
 
@@ -3471,10 +1039,10 @@ void prism2mgmt_p80211enum2prism2enum(UINT16 *prism2enum, UINT32 *wlanenum, UINT
 *      Nothing
 *
 ----------------------------------------------------------------*/
-void prism2mgmt_get_oprateset(UINT16 *rate, p80211pstrd_t *pstr)
+void prism2mgmt_get_oprateset(u16 *rate, p80211pstrd_t *pstr)
 {
-       UINT8   len;
-       UINT8   *datarate;
+       u8      len;
+       u8      *datarate;
 
        DBFENTER;
 
@@ -3483,29 +1051,29 @@ void prism2mgmt_get_oprateset(UINT16 *rate, p80211pstrd_t *pstr)
 
        /* 1 Mbps */
        if ( BIT0 & (*rate) ) {
-               len += (UINT8)1;
-               *datarate = (UINT8)2;
+               len += (u8)1;
+               *datarate = (u8)2;
                datarate++;
        }
 
        /* 2 Mbps */
        if ( BIT1 & (*rate) ) {
-               len += (UINT8)1;
-               *datarate = (UINT8)4;
+               len += (u8)1;
+               *datarate = (u8)4;
                datarate++;
        }
 
        /* 5.5 Mbps */
        if ( BIT2 & (*rate) ) {
-               len += (UINT8)1;
-               *datarate = (UINT8)11;
+               len += (u8)1;
+               *datarate = (u8)11;
                datarate++;
        }
 
        /* 11 Mbps */
        if ( BIT3 & (*rate) ) {
-               len += (UINT8)1;
-               *datarate = (UINT8)22;
+               len += (u8)1;
+               *datarate = (u8)22;
                datarate++;
        }
 
@@ -3530,9 +1098,9 @@ void prism2mgmt_get_oprateset(UINT16 *rate, p80211pstrd_t *pstr)
 *      Nothing
 *
 ----------------------------------------------------------------*/
-void prism2mgmt_set_oprateset(UINT16 *rate, p80211pstrd_t *pstr)
+void prism2mgmt_set_oprateset(u16 *rate, p80211pstrd_t *pstr)
 {
-       UINT8   *datarate;
+       u8      *datarate;
        int     i;
 
        DBFENTER;
@@ -3565,233 +1133,3 @@ void prism2mgmt_set_oprateset(UINT16 *rate, p80211pstrd_t *pstr)
        DBFEXIT;
        return;
 }
-
-
-
-/*----------------------------------------------------------------
-* prism2mgmt_get_grpaddr
-*
-* Retrieves a particular group address from the list of
-* group addresses.
-*
-* Arguments:
-*      did             mibitem did
-*      pstr            wlan octet string
-*      priv            prism2 driver private data structure
-*
-* Returns:
-*      Nothing
-*
-----------------------------------------------------------------*/
-void prism2mgmt_get_grpaddr(UINT32 did, p80211pstrd_t *pstr,
-       hfa384x_t *hw )
-{
-       int     index;
-
-       DBFENTER;
-
-       index = prism2mgmt_get_grpaddr_index(did);
-
-       if ( index >= 0 ) {
-               pstr->len = WLAN_ADDR_LEN;
-               memcpy(pstr->data, hw->dot11_grp_addr[index],
-                       WLAN_ADDR_LEN);
-       }
-
-       DBFEXIT;
-       return;
-}
-
-
-
-/*----------------------------------------------------------------
-* prism2mgmt_set_grpaddr
-*
-* Convert the wlan octet string into an hfa384x bit area.
-*
-* Arguments:
-*      did             mibitem did
-*      buf
-*      groups
-*
-* Returns:
-*      0       Success
-*      !0      Error
-*
-----------------------------------------------------------------*/
-int prism2mgmt_set_grpaddr(UINT32 did, UINT8 *prism2buf,
-       p80211pstrd_t *pstr, hfa384x_t *hw )
-{
-       UINT8   no_addr[WLAN_ADDR_LEN];
-       int     index;
-
-       DBFENTER;
-
-       memset(no_addr, 0, WLAN_ADDR_LEN);
-       if (memcmp(no_addr, pstr->data, WLAN_ADDR_LEN) != 0) {
-
-               /*
-               ** The address is NOT 0 so we are "adding" an address to the
-               ** group address list.  Check to make sure we aren't trying
-               ** to add more than the maximum allowed number of group
-               ** addresses in the list.  The new address is added to the
-               ** end of the list regardless of the DID used to add the
-               ** address.
-               */
-
-               if (hw->dot11_grpcnt >= MAX_GRP_ADDR) return(-1);
-
-               memcpy(hw->dot11_grp_addr[hw->dot11_grpcnt], pstr->data,
-                                                                WLAN_ADDR_LEN);
-               hw->dot11_grpcnt += 1;
-       } else {
-
-               /*
-               ** The address is 0.  Interpret this as "deleting" an address
-               ** from the group address list.  Get the address index from
-               ** the DID.  If this is within the range of used addresses,
-               ** then delete the specified address by shifting all following
-               ** addresses down.  Then clear the last address (which should
-               ** now be unused).  If the address index is NOT within the
-               ** range of used addresses, then just ignore the address.
-               */
-
-               index = prism2mgmt_get_grpaddr_index(did);
-               if (index >= 0 && index < hw->dot11_grpcnt) {
-                       hw->dot11_grpcnt -= 1;
-                       memmove(hw->dot11_grp_addr[index],
-                               hw->dot11_grp_addr[index + 1],
-                               ((hw->dot11_grpcnt)-index) * WLAN_ADDR_LEN);
-                       memset(hw->dot11_grp_addr[hw->dot11_grpcnt], 0,
-                                                                WLAN_ADDR_LEN);
-               }
-       }
-
-       DBFEXIT;
-       return(0);
-}
-
-
-/*----------------------------------------------------------------
-* prism2mgmt_get_grpaddr_index
-*
-* Gets the index in the group address list based on the did.
-*
-* Arguments:
-*      did             mibitem did
-*
-* Returns:
-*      >= 0    If valid did
-*      < 0     If not valid did
-*
-----------------------------------------------------------------*/
-int prism2mgmt_get_grpaddr_index( UINT32 did )
-{
-       int     index;
-
-       DBFENTER;
-
-       index = -1;
-
-       switch (did) {
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address1:
-               index = 0;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address2:
-               index = 1;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address3:
-               index = 2;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address4:
-               index = 3;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address5:
-               index = 4;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address6:
-               index = 5;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address7:
-               index = 6;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address8:
-               index = 7;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address9:
-               index = 8;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address10:
-               index = 9;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address11:
-               index = 10;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address12:
-               index = 11;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address13:
-               index = 12;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address14:
-               index = 13;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address15:
-               index = 14;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address16:
-               index = 15;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address17:
-               index = 16;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address18:
-               index = 17;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address19:
-               index = 18;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address20:
-               index = 19;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address21:
-               index = 20;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address22:
-               index = 21;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address23:
-               index = 22;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address24:
-               index = 23;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address25:
-               index = 24;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address26:
-               index = 25;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address27:
-               index = 26;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address28:
-               index = 27;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address29:
-               index = 28;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address30:
-               index = 29;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address31:
-               index = 30;
-               break;
-       case DIDmib_dot11mac_dot11GroupAddressesTable_dot11Address32:
-               index = 31;
-               break;
-       }
-
-       DBFEXIT;
-       return index;
-}