]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/staging/wlan-ng/prism2mib.c
Staging: wlan-ng: Move netdevice_t typedef into p80211netdev.h
[linux-2.6-omap-h63xx.git] / drivers / staging / wlan-ng / prism2mib.c
index 9cd5c74c778c931ea00fe92a2f9327583cdc5399..438c2c29891241f9ef16b6b796f6db9ea22a276f 100644 (file)
@@ -52,7 +52,6 @@
 
 /*================================================================*/
 /* System Includes */
-#define WLAN_DBVAR     prism2_debug
 
 #include <linux/version.h>
 
@@ -67,6 +66,7 @@
 #include <linux/delay.h>
 #include <asm/byteorder.h>
 #include <linux/usb.h>
+#include <linux/bitops.h>
 
 /*================================================================*/
 /* Project Includes */
@@ -112,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,
@@ -136,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,
@@ -176,14 +136,6 @@ 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,
@@ -192,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,
@@ -224,38 +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_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,
@@ -270,95 +182,6 @@ void                         *data);
 static mibrec_t mibtab[] = {
 
     /* dot11smt MIB's */
-
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11StationID,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFOWNMACADDR, HFA384x_RID_CNFOWNMACADDR_LEN, 0,
-          prism2mib_bytearea2pstr },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11CFPollable,
-          F_STA | F_READ,
-          HFA384x_RID_CFPOLLABLE, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11AuthenticationResponseTimeOut,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFAUTHRSPTIMEOUT, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11PrivacyOptionImplemented,
-          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_dot11DTIMPeriod,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFOWNDTIMPER, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_dot11smt_dot11StationConfigTable_dot11AssociationResponseTimeOut,
-          F_STA | F_READ,
-          HFA384x_RID_PROTOCOLRSPTIME, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm1,
-          F_STA | F_READ,
-          1, 0, 0,
-          prism2mib_authalg },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm2,
-          F_STA | F_READ,
-          2, 0, 0,
-          prism2mib_authalg },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm3,
-          F_STA | F_READ,
-          3, 0, 0,
-          prism2mib_authalg },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm4,
-          F_STA | F_READ,
-          4, 0, 0,
-          prism2mib_authalg },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm5,
-          F_STA | F_READ,
-          5, 0, 0,
-          prism2mib_authalg },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithm6,
-          F_STA | F_READ,
-          6, 0, 0,
-          prism2mib_authalg },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable1,
-          F_STA | F_READ | F_WRITE,
-          1, 0, 0,
-          prism2mib_authalgenable },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable2,
-          F_STA | F_READ | F_WRITE,
-          2, 0, 0,
-          prism2mib_authalgenable },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable3,
-          F_STA | F_READ | F_WRITE,
-          3, 0, 0,
-          prism2mib_authalgenable },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable4,
-          F_STA | F_READ | F_WRITE,
-          4, 0, 0,
-          prism2mib_authalgenable },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable5,
-          F_STA | F_READ | F_WRITE,
-          5, 0, 0,
-          prism2mib_authalgenable },
-    { DIDmib_dot11smt_dot11AuthenticationAlgorithmsTable_dot11AuthenticationAlgorithmsEnable6,
-          F_STA | F_READ | F_WRITE,
-          6, 0, 0,
-          prism2mib_authalgenable },
     { DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey0,
           F_STA | F_WRITE,
           HFA384x_RID_CNFWEPDEFAULTKEY0, 0, 0,
@@ -387,10 +210,6 @@ static mibrec_t mibtab[] = {
           F_STA | F_READ | F_WRITE,
           HFA384x_RID_CNFWEPFLAGS, HFA384x_WEPFLAGS_EXCLUDE, 0,
           prism2mib_excludeunencrypted },
-    { DIDmib_dot11phy_dot11PhyOperationTable_dot11ShortPreambleEnabled,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFSHORTPREAMBLE, 0, 0,
-          prism2mib_preamble },
 
     /* dot11mac MIB's */
 
@@ -418,48 +237,17 @@ static mibrec_t mibtab[] = {
           F_STA | F_READ,
           HFA384x_RID_MAXTXLIFETIME, 0, 0,
           prism2mib_uint32 },
-    { DIDmib_dot11mac_dot11OperationTable_dot11MaxReceiveLifetime,
-          F_STA | F_READ,
-          HFA384x_RID_MAXRXLIFETIME, 0, 0,
-          prism2mib_uint32 },
 
     /* dot11phy MIB's */
 
-    { DIDmib_dot11phy_dot11PhyOperationTable_dot11PHYType,
-          F_STA | F_READ,
-          HFA384x_RID_PHYTYPE, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_dot11phy_dot11PhyOperationTable_dot11TempType,
-          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_dot11CurrentCCAMode,
-          F_STA | F_READ,
-          HFA384x_RID_CCAMODE, 0, 0,
-          prism2mib_uint32 },
-
-    /* p2Table MIB's */
-
-    { DIDmib_p2_p2Table_p2MMTx,
-          F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_priv },
-    { DIDmib_p2_p2Table_p2ReceivedFrameStatistics,
-          F_STA | F_READ,
-          0, 0, 0,
-          prism2mib_priv },
-    { DIDmib_p2_p2Table_p2CommunicationTallies,
-          F_STA | F_READ,
-          0, 0, 0,
-          prism2mib_priv },
-    { DIDmib_p2_p2Table_p2Comment,
+    { DIDmib_dot11phy_dot11PhyTxPowerTable_dot11CurrentTxPowerLevel,
           F_STA | F_READ | F_WRITE,
-          0, 0, 0,
-          prism2mib_priv },
+          HFA384x_RID_TXPOWERMAX, 0, 0,
+          prism2mib_uint32 },
 
     /* p2Static MIB's */
 
@@ -467,513 +255,55 @@ static mibrec_t mibtab[] = {
           F_STA | F_READ | F_WRITE,
           HFA384x_RID_CNFPORTTYPE, 0, 0,
           prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfOwnMACAddress,
-          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_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFOWNCHANNEL, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfOwnSSID,
-          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_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFSYSSCALE, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfMaxDataLength,
-          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_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFOWNNAME, HFA384x_RID_CNFOWNNAME_LEN, 0,
-          prism2mib_bytestr2pstr },
-    { DIDmib_p2_p2Static_p2CnfOwnDTIMPeriod,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFOWNDTIMPER, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfWEPDefaultKeyID,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFWEPDEFAULTKEYID, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfWEPDefaultKey0,
-          F_STA | F_WRITE,
-          HFA384x_RID_CNFWEPDEFAULTKEY0, 0, 0,
-          prism2mib_wepdefaultkey },
-    { DIDmib_p2_p2Static_p2CnfWEPDefaultKey1,
-          F_STA | F_WRITE,
-          HFA384x_RID_CNFWEPDEFAULTKEY1, 0, 0,
-          prism2mib_wepdefaultkey },
-    { DIDmib_p2_p2Static_p2CnfWEPDefaultKey2,
-          F_STA | F_WRITE,
-          HFA384x_RID_CNFWEPDEFAULTKEY2, 0, 0,
-          prism2mib_wepdefaultkey },
-    { DIDmib_p2_p2Static_p2CnfWEPDefaultKey3,
-          F_STA | F_WRITE,
-          HFA384x_RID_CNFWEPDEFAULTKEY3, 0, 0,
-          prism2mib_wepdefaultkey },
-    { DIDmib_p2_p2Static_p2CnfWEPFlags,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFWEPFLAGS, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfAuthentication,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFAUTHENTICATION, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfTxControl,
-          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_p2CnfRcvCrcError,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFRCVCRCERROR, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfAltRetryCount,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFALTRETRYCNT, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfSTAPCFInfo,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFSTAPCFINFO, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfPriorityQUsage,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFPRIORITYQUSAGE, HFA384x_RID_CNFPRIOQUSAGE_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2Static_p2CnfTIMCtrl,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFTIMCTRL, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfThirty2Tally,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFTHIRTY2TALLY, 0, 0,
-          prism2mib_truth },
-    { DIDmib_p2_p2Static_p2CnfShortPreamble,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFSHORTPREAMBLE, 0, 0,
-          prism2mib_preamble },
-    { DIDmib_p2_p2Static_p2CnfAuthenticationRspTO,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFAUTHRSPTIMEOUT, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfBasicRates,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_CNFBASICRATES, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Static_p2CnfSupportedRates,
-          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,
+
+    /* And finally, lnx mibs */
+    { DIDmib_lnx_lnxConfigTable_lnxRSNAIE,
           F_STA | F_READ | F_WRITE,
-          HFA384x_RID_PROMISCMODE, 0, 0,
-          prism2mib_truth },
+          HFA384x_RID_CNFWPADATA, 0, 0,
+          prism2mib_priv },
+    { 0, 0, 0, 0, 0, NULL}};
 
-    /* p2Behavior MIB's */
+/*================================================================*/
+/* Function Definitions */
 
-    { DIDmib_p2_p2Behavior_p2TickTime,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_ITICKTIME, 0, 0,
-          prism2mib_uint32 },
+/*----------------------------------------------------------------
+* prism2mgmt_mibset_mibget
+*
+* Set the value of a mib item.
+*
+* Arguments:
+*      wlandev         wlan device structure
+*      msgp            ptr to msg buffer
+*
+* Returns:
+*      0       success and done
+*      <0      success, but we're waiting for something to finish.
+*      >0      an error occurred while handling the message.
+* Side effects:
+*
+* Call context:
+*      process thread  (usually)
+*      interrupt
+----------------------------------------------------------------*/
 
-    /* p2NIC MIB's */
-
-    { DIDmib_p2_p2NIC_p2MaxLoadTime,
-          F_STA | F_READ,
-          HFA384x_RID_MAXLOADTIME, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2NIC_p2DLBufferPage,
-          F_STA | F_READ,
-          HFA384x_RID_DOWNLOADBUFFER, HFA384x_RID_DOWNLOADBUFFER_LEN, 0,
-          prism2mib_uint32offset },
-    { DIDmib_p2_p2NIC_p2DLBufferOffset,
-          F_STA | F_READ,
-          HFA384x_RID_DOWNLOADBUFFER, HFA384x_RID_DOWNLOADBUFFER_LEN, 1,
-          prism2mib_uint32offset },
-    { DIDmib_p2_p2NIC_p2DLBufferLength,
-          F_STA | F_READ,
-          HFA384x_RID_DOWNLOADBUFFER, HFA384x_RID_DOWNLOADBUFFER_LEN, 2,
-          prism2mib_uint32offset },
-    { DIDmib_p2_p2NIC_p2PRIIdentity,
-          F_STA | F_READ,
-          HFA384x_RID_PRIIDENTITY, HFA384x_RID_PRIIDENTITY_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2PRISupRange,
-          F_STA | F_READ,
-          HFA384x_RID_PRISUPRANGE, HFA384x_RID_PRISUPRANGE_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2CFIActRanges,
-          F_STA | F_READ,
-          HFA384x_RID_PRI_CFIACTRANGES, HFA384x_RID_CFIACTRANGES_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2BuildSequence,
-          F_STA | F_READ,
-          HFA384x_RID_BUILDSEQ, HFA384x_RID_BUILDSEQ_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2PrimaryFWID,
-          F_STA | F_READ,
-          0, 0, 0,
-          prism2mib_fwid },
-    { DIDmib_p2_p2NIC_p2SecondaryFWID,
-          F_STA | F_READ,
-          0, 0, 0,
-          prism2mib_fwid },
-    { DIDmib_p2_p2NIC_p2NICSerialNumber,
-          F_STA | F_READ,
-          HFA384x_RID_NICSERIALNUMBER, HFA384x_RID_NICSERIALNUMBER_LEN, 0,
-          prism2mib_bytearea2pstr },
-    { DIDmib_p2_p2NIC_p2NICIdentity,
-          F_STA | F_READ,
-          HFA384x_RID_NICIDENTITY, HFA384x_RID_NICIDENTITY_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2MFISupRange,
-          F_STA | F_READ,
-          HFA384x_RID_MFISUPRANGE, HFA384x_RID_MFISUPRANGE_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2CFISupRange,
-          F_STA | F_READ,
-          HFA384x_RID_CFISUPRANGE, HFA384x_RID_CFISUPRANGE_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2ChannelList,
-          F_STA | F_READ,
-          HFA384x_RID_CHANNELLIST, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2NIC_p2RegulatoryDomains,
-          F_STA | F_READ,
-          HFA384x_RID_REGULATORYDOMAINS, HFA384x_RID_REGULATORYDOMAINS_LEN, 0,
-          prism2mib_regulatorydomains },
-    { DIDmib_p2_p2NIC_p2TempType,
-          F_STA | F_READ,
-          HFA384x_RID_TEMPTYPE, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2NIC_p2STAIdentity,
-          F_STA | F_READ,
-          HFA384x_RID_STAIDENTITY, HFA384x_RID_STAIDENTITY_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2STASupRange,
-          F_STA | F_READ,
-          HFA384x_RID_STASUPRANGE, HFA384x_RID_STASUPRANGE_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2MFIActRanges,
-          F_STA | F_READ,
-          HFA384x_RID_STA_MFIACTRANGES, HFA384x_RID_MFIACTRANGES_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2NIC_p2STACFIActRanges,
-          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_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_p2ProtocolRspTime,
-          F_STA | F_READ,
-          HFA384x_RID_PROTOCOLRSPTIME, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2ShortRetryLimit,
-          F_STA | F_READ,
-          HFA384x_RID_SHORTRETRYLIMIT, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2LongRetryLimit,
-          F_STA | F_READ,
-          HFA384x_RID_LONGRETRYLIMIT, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2MaxTransmitLifetime,
-          F_STA | F_READ,
-          HFA384x_RID_MAXTXLIFETIME, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2MAC_p2MaxReceiveLifetime,
-          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_STA | F_READ,
-          HFA384x_RID_AUTHALGORITHMS, HFA384x_RID_AUTHALGORITHMS_LEN, 0,
-          prism2mib_uint32array },
-    { DIDmib_p2_p2MAC_p2PrivacyOptionImplemented,
-          F_STA | F_READ,
-          HFA384x_RID_PRIVACYOPTIMP, 0, 0,
-          prism2mib_uint32 },
-
-    /* p2Modem MIB's */
-
-    { DIDmib_p2_p2Modem_p2PHYType,
-          F_STA | F_READ,
-          HFA384x_RID_PHYTYPE, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Modem_p2CurrentChannel,
-          F_STA | F_READ,
-          HFA384x_RID_CURRENTCHANNEL, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Modem_p2CurrentPowerState,
-          F_STA | F_READ,
-          HFA384x_RID_CURRENTPOWERSTATE, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Modem_p2CCAMode,
-          F_STA | F_READ,
-          HFA384x_RID_CCAMODE, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Modem_p2TxPowerMax,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_TXPOWERMAX, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_dot11phy_dot11PhyTxPowerTable_dot11CurrentTxPowerLevel,
-          F_STA | F_READ | F_WRITE,
-          HFA384x_RID_TXPOWERMAX, 0, 0,
-          prism2mib_uint32 },
-    { DIDmib_p2_p2Modem_p2SupportedDataRates,
-          F_STA | F_READ,
-          HFA384x_RID_SUPPORTEDDATARATES, HFA384x_RID_SUPPORTEDDATARATES_LEN, 0,
-          prism2mib_bytestr2pstr },
-
-    /* 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 */
-
-/*----------------------------------------------------------------
-* prism2mgmt_mibset_mibget
-*
-* Set the value of a mib item.
-*
-* Arguments:
-*      wlandev         wlan device structure
-*      msgp            ptr to msg buffer
-*
-* Returns:
-*      0       success and done
-*      <0      success, but we're waiting for something to finish.
-*      >0      an error occurred while handling the message.
-* Side effects:
-*
-* Call context:
-*      process thread  (usually)
-*      interrupt
-----------------------------------------------------------------*/
-
-int prism2mgmt_mibset_mibget(wlandevice_t *wlandev, void *msgp)
-{
-       hfa384x_t               *hw = wlandev->priv;
-       int                     result, isget;
-       mibrec_t                *mib;
+int prism2mgmt_mibset_mibget(wlandevice_t *wlandev, void *msgp)
+{
+       hfa384x_t               *hw = wlandev->priv;
+       int                     result, isget;
+       mibrec_t                *mib;
 
        u16                     which;
 
        p80211msg_dot11req_mibset_t     *msg = msgp;
        p80211itemd_t                   *mibitem;
 
-       DBFENTER;
-
        msg->resultcode.status = P80211ENUM_msgitem_status_data_ok;
        msg->resultcode.data = P80211ENUM_resultcode_success;
 
@@ -1045,643 +375,23 @@ int prism2mgmt_mibset_mibget(wlandevice_t *wlandev, void *msgp)
                                msg->mibattribute.status =
                                        P80211ENUM_msgitem_status_data_ok;
                                mibitem->status =
-                                       P80211ENUM_msgitem_status_data_ok;
-                       }
-               }
-       }
-
-done:
-       DBFEXIT;
-
-       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;
-       u8              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
-*
-* Get/set pstr data to/from a byte area.
-*
-* 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_bytearea2pstr(
-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;
-       u8          bytebuf[MIB_TMP_MAXLEN];
-
-       DBFENTER;
-
-       if (isget) {
-               result = hfa384x_drvr_getconfig(hw, mib->parm1, bytebuf, mib->parm2);
-               prism2mgmt_bytearea2pstr(bytebuf, pstr, mib->parm2);
-       } else {
-               memset(bytebuf, 0, mib->parm2);
-               prism2mgmt_pstr2bytearea(bytebuf, pstr);
-               result = hfa384x_drvr_setconfig(hw, mib->parm1, bytebuf, mib->parm2);
-       }
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_uint32
-*
-* Get/set uint32 data.
-*
-* 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_uint32(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int     result;
-       u32  *uint32 = (u32*) data;
-       u8   bytebuf[MIB_TMP_MAXLEN];
-       u16  *wordbuf = (u16*) bytebuf;
-
-       DBFENTER;
-
-       if (isget) {
-               result = hfa384x_drvr_getconfig16(hw, mib->parm1, wordbuf);
-               *uint32 = *wordbuf;
-               /* [MSM] Removed, getconfig16 returns the value in host order.
-                * prism2mgmt_prism2int2p80211int(wordbuf, uint32);
-                */
-       } else {
-               /* [MSM] Removed, setconfig16 expects host order.
-                * prism2mgmt_p80211int2prism2int(wordbuf, uint32);
-                */
-               *wordbuf = *uint32;
-               result = hfa384x_drvr_setconfig16(hw, mib->parm1, *wordbuf);
-       }
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_uint32array
-*
-* Get/set an array of uint32 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_uint32array(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int     result;
-       u32  *uint32 = (u32 *) data;
-       u8   bytebuf[MIB_TMP_MAXLEN];
-       u16  *wordbuf = (u16*) bytebuf;
-       int     i, cnt;
-
-       DBFENTER;
-
-       cnt = mib->parm2 / sizeof(u16);
-
-       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(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int     result;
-       u32  *uint32 = (u32*) data;
-       u8   bytebuf[MIB_TMP_MAXLEN];
-       u16  *wordbuf = (u16*) bytebuf;
-       u16  cnt;
-
-       DBFENTER;
-
-       cnt = mib->parm2 / sizeof(u16);
-
-       result = hfa384x_drvr_getconfig(hw, mib->parm1, wordbuf, mib->parm2);
-       if (result == 0) {
-               if (isget) {
-                       if (mib->parm3 < cnt)
-                               prism2mgmt_prism2int2p80211int(wordbuf+mib->parm3, uint32);
-                       else
-                               *uint32 = 0;
-               } else {
-                       if (mib->parm3 < cnt) {
-                               prism2mgmt_p80211int2prism2int(wordbuf+mib->parm3, uint32);
-                               result = hfa384x_drvr_setconfig(hw, mib->parm1, wordbuf, mib->parm2);
-                       }
-               }
-       }
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_truth
-*
-* Get/set truth data.
-*
-* 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_truth(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int     result;
-       u32  *uint32 = (u32*) data;
-       u8   bytebuf[MIB_TMP_MAXLEN];
-       u16  *wordbuf = (u16*) bytebuf;
-
-       DBFENTER;
-
-       if (isget) {
-               result = hfa384x_drvr_getconfig16(hw, mib->parm1, wordbuf);
-               *uint32 = (*wordbuf) ?
-                               P80211ENUM_truth_true : P80211ENUM_truth_false;
-       } else {
-               *wordbuf = ((*uint32) == P80211ENUM_truth_true) ? 1 : 0;
-               result = hfa384x_drvr_setconfig16(hw, mib->parm1, *wordbuf);
-       }
-
-       DBFEXIT;
-       return(result);
-}
-
-/*----------------------------------------------------------------
-* prism2mib_flag
-*
-* Get/set a flag.
-*
-* MIB record parameters:
-*       parm1    Prism2 RID value.
-*       parm2    Bit to get/set.
-*       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_flag(
-mibrec_t                     *mib,
-int                          isget,
-wlandevice_t                 *wlandev,
-hfa384x_t                    *hw,
-p80211msg_dot11req_mibset_t  *msg,
-void                         *data)
-{
-       int     result;
-       u32  *uint32 = (u32*) data;
-       u8   bytebuf[MIB_TMP_MAXLEN];
-       u16  *wordbuf = (u16*) bytebuf;
-       u32  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_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;
-       u32         cnt;
-       p80211pstrd_t  *pstr = (p80211pstrd_t*) data;
-       u8          bytebuf[MIB_TMP_MAXLEN];
-       u16         *wordbuf = (u16*) bytebuf;
-
-       DBFENTER;
-
-       result = 0;
-
-       if (isget) {
-               result = hfa384x_drvr_getconfig(hw, mib->parm1, wordbuf, mib->parm2);
-               prism2mgmt_prism2int2p80211int(wordbuf, &cnt);
-               pstr->len = (u8) 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;
-       u8          bytebuf[MIB_TMP_MAXLEN];
-       u16         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;
-       u32  *uint32 = (u32*) data;
-       u32  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;
-       u32  *uint32 = (u32*) data;
-       u8   bytebuf[MIB_TMP_MAXLEN];
-       u16  *wordbuf = (u16*) 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);
+                                       P80211ENUM_msgitem_status_data_ok;
+                       }
+               }
        }
 
-       DBFEXIT;
-       return(result);
+done:
+       return(0);
 }
 
 /*----------------------------------------------------------------
-* prism2mib_privacyinvoked
+* prism2mib_bytearea2pstr
 *
-* Get/set the dot11PrivacyInvoked value.
+* Get/set pstr data to/from a byte area.
 *
 * MIB record parameters:
 *       parm1    Prism2 RID value.
-*       parm2    Bit value for PrivacyInvoked flag.
+*       parm2    Number of bytes of RID data.
 *       parm3    Not used.
 *
 * Arguments:
@@ -1699,7 +409,7 @@ void                         *data)
 *
 ----------------------------------------------------------------*/
 
-static int prism2mib_privacyinvoked(
+static int prism2mib_bytearea2pstr(
 mibrec_t                     *mib,
 int                          isget,
 wlandevice_t                 *wlandev,
@@ -1707,31 +417,30 @@ hfa384x_t                    *hw,
 p80211msg_dot11req_mibset_t  *msg,
 void                         *data)
 {
-       int     result;
-
-       DBFENTER;
+       int            result;
+       p80211pstrd_t  *pstr = (p80211pstrd_t*) data;
+       u8          bytebuf[MIB_TMP_MAXLEN];
 
-       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;
+       if (isget) {
+               result = hfa384x_drvr_getconfig(hw, mib->parm1, bytebuf, mib->parm2);
+               prism2mgmt_bytearea2pstr(bytebuf, pstr, mib->parm2);
+       } else {
+               memset(bytebuf, 0, mib->parm2);
+               prism2mgmt_pstr2bytearea(bytebuf, pstr);
+               result = hfa384x_drvr_setconfig(hw, mib->parm1, bytebuf, mib->parm2);
        }
 
-       result = prism2mib_flag(mib, isget, wlandev, hw, msg, data);
-
-       DBFEXIT;
        return(result);
 }
 
 /*----------------------------------------------------------------
-* prism2mib_excludeunencrypted
+* prism2mib_uint32
 *
-* Get/set the dot11ExcludeUnencrypted value.
+* Get/set uint32 data.
 *
 * MIB record parameters:
 *       parm1    Prism2 RID value.
-*       parm2    Bit value for ExcludeUnencrypted flag.
+*       parm2    Not used.
 *       parm3    Not used.
 *
 * Arguments:
@@ -1749,7 +458,7 @@ void                         *data)
 *
 ----------------------------------------------------------------*/
 
-static int prism2mib_excludeunencrypted(
+static int prism2mib_uint32(
 mibrec_t                     *mib,
 int                          isget,
 wlandevice_t                 *wlandev,
@@ -1758,23 +467,35 @@ p80211msg_dot11req_mibset_t  *msg,
 void                         *data)
 {
        int     result;
+       u32  *uint32 = (u32*) data;
+       u8   bytebuf[MIB_TMP_MAXLEN];
+       u16  *wordbuf = (u16*) bytebuf;
 
-       DBFENTER;
-
-       result = prism2mib_flag(mib, isget, wlandev, hw, msg, data);
+       if (isget) {
+               result = hfa384x_drvr_getconfig16(hw, mib->parm1, wordbuf);
+               *uint32 = *wordbuf;
+               /* [MSM] Removed, getconfig16 returns the value in host order.
+                * prism2mgmt_prism2int2p80211int(wordbuf, uint32);
+                */
+       } else {
+               /* [MSM] Removed, setconfig16 expects host order.
+                * prism2mgmt_p80211int2prism2int(wordbuf, uint32);
+                */
+               *wordbuf = *uint32;
+               result = hfa384x_drvr_setconfig16(hw, mib->parm1, *wordbuf);
+       }
 
-       DBFEXIT;
        return(result);
 }
 
 /*----------------------------------------------------------------
-* prism2mib_fragmentationthreshold
+* prism2mib_flag
 *
-* Get/set the fragmentation threshold.
+* Get/set a flag.
 *
 * MIB record parameters:
 *       parm1    Prism2 RID value.
-*       parm2    Not used.
+*       parm2    Bit to get/set.
 *       parm3    Not used.
 *
 * Arguments:
@@ -1792,7 +513,7 @@ void                         *data)
 *
 ----------------------------------------------------------------*/
 
-static int prism2mib_fragmentationthreshold(
+static int prism2mib_flag(
 mibrec_t                     *mib,
 int                          isget,
 wlandevice_t                 *wlandev,
@@ -1802,31 +523,43 @@ void                         *data)
 {
        int     result;
        u32  *uint32 = (u32*) data;
+       u8   bytebuf[MIB_TMP_MAXLEN];
+       u16  *wordbuf = (u16*) bytebuf;
+       u32  flags;
 
-       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 = 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);
                }
+       }
 
-       result = prism2mib_uint32(mib, isget, wlandev, hw, msg, data);
-
-       DBFEXIT;
        return(result);
 }
 
 /*----------------------------------------------------------------
-* prism2mib_operationalrateset
+* prism2mib_wepdefaultkey
 *
-* Get/set the operational rate set.
+* 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:
@@ -1844,7 +577,7 @@ void                         *data)
 *
 ----------------------------------------------------------------*/
 
-static int prism2mib_operationalrateset(
+static int prism2mib_wepdefaultkey(
 mibrec_t                     *mib,
 int                          isget,
 wlandevice_t                 *wlandev,
@@ -1853,33 +586,31 @@ p80211msg_dot11req_mibset_t  *msg,
 void                         *data)
 {
        int            result;
-       p80211pstrd_t  *pstr = (p80211pstrd_t *) data;
+       p80211pstrd_t  *pstr = (p80211pstrd_t*) data;
        u8          bytebuf[MIB_TMP_MAXLEN];
-       u16         *wordbuf = (u16*) bytebuf;
-
-       DBFENTER;
+       u16         len;
 
        if (isget) {
-               result = hfa384x_drvr_getconfig16(hw, mib->parm1, wordbuf);
-               prism2mgmt_get_oprateset(wordbuf, pstr);
+               result = 0;    /* Should never happen. */
        } else {
-               prism2mgmt_set_oprateset(wordbuf, pstr);
-               result = hfa384x_drvr_setconfig16(hw, mib->parm1, *wordbuf);
-               result = hfa384x_drvr_setconfig16(hw, HFA384x_RID_CNFSUPPRATES, *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;
        return(result);
 }
 
 /*----------------------------------------------------------------
-* prism2mib_fwid
+* prism2mib_privacyinvoked
 *
-* Get the firmware ID.
+* Get/set the dot11PrivacyInvoked value.
 *
 * MIB record parameters:
-*       parm1    Not used.
-*       parm2    Not used.
+*       parm1    Prism2 RID value.
+*       parm2    Bit value for PrivacyInvoked flag.
 *       parm3    Not used.
 *
 * Arguments:
@@ -1897,7 +628,7 @@ void                         *data)
 *
 ----------------------------------------------------------------*/
 
-static int prism2mib_fwid(
+static int prism2mib_privacyinvoked(
 mibrec_t                     *mib,
 int                          isget,
 wlandevice_t                 *wlandev,
@@ -1905,39 +636,28 @@ hfa384x_t                    *hw,
 p80211msg_dot11req_mibset_t  *msg,
 void                         *data)
 {
-       int             result;
-       p80211pstrd_t   *pstr = (p80211pstrd_t *) data;
-       hfa384x_FWID_t  fwid;
+       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;
+       }
 
-       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. */
+       result = prism2mib_flag(mib, isget, wlandev, hw, msg, data);
 
-       DBFEXIT;
        return(result);
 }
 
 /*----------------------------------------------------------------
-* prism2mib_authalg
+* prism2mib_excludeunencrypted
 *
-* Get values from the AuhtenticationAlgorithmsTable.
+* Get/set the dot11ExcludeUnencrypted value.
 *
 * MIB record parameters:
-*       parm1    Table index (1-6).
-*       parm2    Not used.
+*       parm1    Prism2 RID value.
+*       parm2    Bit value for ExcludeUnencrypted flag.
 *       parm3    Not used.
 *
 * Arguments:
@@ -1955,7 +675,7 @@ void                         *data)
 *
 ----------------------------------------------------------------*/
 
-static int prism2mib_authalg(
+static int prism2mib_excludeunencrypted(
 mibrec_t                     *mib,
 int                          isget,
 wlandevice_t                 *wlandev,
@@ -1963,43 +683,20 @@ hfa384x_t                    *hw,
 p80211msg_dot11req_mibset_t  *msg,
 void                         *data)
 {
-       u32  *uint32 = (u32*) 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.
-         */
+       int     result;
 
-       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;
-               }
-       }
+       result = prism2mib_flag(mib, isget, wlandev, hw, msg, data);
 
-       DBFEXIT;
-       return(0);
+       return(result);
 }
 
 /*----------------------------------------------------------------
-* prism2mib_authalgenable
+* prism2mib_fragmentationthreshold
 *
-* Get/set the enable values from the AuhtenticationAlgorithmsTable.
+* Get/set the fragmentation threshold.
 *
 * MIB record parameters:
-*       parm1    Table index (1-6).
+*       parm1    Prism2 RID value.
 *       parm2    Not used.
 *       parm3    Not used.
 *
@@ -2018,7 +715,7 @@ void                         *data)
 *
 ----------------------------------------------------------------*/
 
-static int prism2mib_authalgenable(
+static int prism2mib_fragmentationthreshold(
 mibrec_t                     *mib,
 int                          isget,
 wlandevice_t                 *wlandev,
@@ -2029,47 +726,16 @@ void                         *data)
        int     result;
        u32  *uint32 = (u32*) data;
 
-       int     index;
-       u16  cnf_auth;
-       u16     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 {
+       if (!isget)
+               if ((*uint32) % 2) {
+                       printk(KERN_WARNING "Attempt to set odd number "
+                                         "FragmentationThreshold\n");
                        msg->resultcode.data = P80211ENUM_resultcode_not_supported;
+                       return(0);
                }
-       }
 
-       DBFEXIT;
+       result = prism2mib_uint32(mib, isget, wlandev, hw, msg, data);
+
        return(result);
 }
 
@@ -2106,114 +772,11 @@ hfa384x_t                    *hw,
 p80211msg_dot11req_mibset_t  *msg,
 void                         *data)
 {
-       u32            *uint32 = (u32*) data;
        p80211pstrd_t     *pstr = (p80211pstrd_t*) data;
 
-       int  i, cnt, result;
-
-       /*
-       ** "test" is a lot longer than necessary but who cares?  ...as long as
-       ** it is long enough!
-       */
-
-       u8  test[sizeof(wlandev->rx) + sizeof(hw->tallies)];
-
-       DBFENTER;
+       int  result;
 
        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_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_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) {
@@ -2231,10 +794,9 @@ void                         *data)
                break;
        }
        default:
-               WLAN_LOG_ERROR("Unhandled DID 0x%08x\n", mib->did);
+               printk(KERN_ERR "Unhandled DID 0x%08x\n", mib->did);
        }
 
-       DBFEXIT;
        return(0);
 }
 
@@ -2255,11 +817,8 @@ void                         *data)
 
 void prism2mgmt_pstr2bytestr(hfa384x_bytestr_t *bytestr, p80211pstrd_t *pstr)
 {
-       DBFENTER;
-
        bytestr->len = host2hfa384x_16((u16)(pstr->len));
        memcpy(bytestr->data, pstr->data, pstr->len);
-       DBFEXIT;
 }
 
 
@@ -2280,10 +839,7 @@ void prism2mgmt_pstr2bytestr(hfa384x_bytestr_t *bytestr, p80211pstrd_t *pstr)
 
 void prism2mgmt_pstr2bytearea(u8 *bytearea, p80211pstrd_t *pstr)
 {
-       DBFENTER;
-
        memcpy(bytearea, pstr->data, pstr->len);
-       DBFEXIT;
 }
 
 
@@ -2304,11 +860,8 @@ void prism2mgmt_pstr2bytearea(u8 *bytearea, p80211pstrd_t *pstr)
 
 void prism2mgmt_bytestr2pstr(hfa384x_bytestr_t *bytestr, p80211pstrd_t *pstr)
 {
-       DBFENTER;
-
        pstr->len = (u8)(hfa384x2host_16((u16)(bytestr->len)));
        memcpy(pstr->data, bytestr->data, pstr->len);
-       DBFEXIT;
 }
 
 
@@ -2329,11 +882,8 @@ void prism2mgmt_bytestr2pstr(hfa384x_bytestr_t *bytestr, p80211pstrd_t *pstr)
 
 void prism2mgmt_bytearea2pstr(u8 *bytearea, p80211pstrd_t *pstr, int len)
 {
-       DBFENTER;
-
        pstr->len = (u8)len;
        memcpy(pstr->data, bytearea, len);
-       DBFEXIT;
 }
 
 
@@ -2353,10 +903,7 @@ void prism2mgmt_bytearea2pstr(u8 *bytearea, p80211pstrd_t *pstr, int len)
 
 void prism2mgmt_prism2int2p80211int(u16 *prism2int, u32 *wlanint)
 {
-       DBFENTER;
-
        *wlanint = (u32)hfa384x2host_16(*prism2int);
-       DBFEXIT;
 }
 
 
@@ -2376,10 +923,7 @@ void prism2mgmt_prism2int2p80211int(u16 *prism2int, u32 *wlanint)
 
 void prism2mgmt_p80211int2prism2int(u16 *prism2int, u32 *wlanint)
 {
-       DBFENTER;
-
        *prism2int = host2hfa384x_16((u16)(*wlanint));
-       DBFEXIT;
 }
 
 
@@ -2399,12 +943,9 @@ void prism2mgmt_p80211int2prism2int(u16 *prism2int, u32 *wlanint)
 ----------------------------------------------------------------*/
 void prism2mgmt_prism2enum2p80211enum(u16 *prism2enum, u32 *wlanenum, u16 rid)
 {
-       DBFENTER;
-
        /* At the moment, the need for this functionality hasn't
        presented itself. All the wlan enumerated values are
        a 1-to-1 match against the Prism2 enumerated values*/
-       DBFEXIT;
        return;
 }
 
@@ -2425,12 +966,9 @@ void prism2mgmt_prism2enum2p80211enum(u16 *prism2enum, u32 *wlanenum, u16 rid)
 ----------------------------------------------------------------*/
 void prism2mgmt_p80211enum2prism2enum(u16 *prism2enum, u32 *wlanenum, u16 rid)
 {
-       DBFENTER;
-
        /* At the moment, the need for this functionality hasn't
        presented itself. All the wlan enumerated values are
        a 1-to-1 match against the Prism2 enumerated values*/
-       DBFEXIT;
        return;
 }
 
@@ -2454,34 +992,32 @@ void prism2mgmt_get_oprateset(u16 *rate, p80211pstrd_t *pstr)
        u8      len;
        u8      *datarate;
 
-       DBFENTER;
-
        len = 0;
        datarate = pstr->data;
 
        /* 1 Mbps */
-       if ( BIT0 & (*rate) ) {
+       if ( BIT(0) & (*rate) ) {
                len += (u8)1;
                *datarate = (u8)2;
                datarate++;
        }
 
        /* 2 Mbps */
-       if ( BIT1 & (*rate) ) {
+       if ( BIT(1) & (*rate) ) {
                len += (u8)1;
                *datarate = (u8)4;
                datarate++;
        }
 
        /* 5.5 Mbps */
-       if ( BIT2 & (*rate) ) {
+       if ( BIT(2) & (*rate) ) {
                len += (u8)1;
                *datarate = (u8)11;
                datarate++;
        }
 
        /* 11 Mbps */
-       if ( BIT3 & (*rate) ) {
+       if ( BIT(3) & (*rate) ) {
                len += (u8)1;
                *datarate = (u8)22;
                datarate++;
@@ -2489,7 +1025,6 @@ void prism2mgmt_get_oprateset(u16 *rate, p80211pstrd_t *pstr)
 
        pstr->len = len;
 
-       DBFEXIT;
        return;
 }
 
@@ -2513,8 +1048,6 @@ void prism2mgmt_set_oprateset(u16 *rate, p80211pstrd_t *pstr)
        u8      *datarate;
        int     i;
 
-       DBFENTER;
-
        *rate = 0;
 
        datarate = pstr->data;
@@ -2522,16 +1055,16 @@ void prism2mgmt_set_oprateset(u16 *rate, p80211pstrd_t *pstr)
        for ( i=0; i < pstr->len; i++, datarate++ ) {
                switch (*datarate) {
                case 2: /* 1 Mbps */
-                       *rate |= BIT0;
+                       *rate |= BIT(0);
                        break;
                case 4: /* 2 Mbps */
-                       *rate |= BIT1;
+                       *rate |= BIT(1);
                        break;
                case 11: /* 5.5 Mbps */
-                       *rate |= BIT2;
+                       *rate |= BIT(2);
                        break;
                case 22: /* 11 Mbps */
-                       *rate |= BIT3;
+                       *rate |= BIT(3);
                        break;
                default:
                        WLAN_LOG_DEBUG(1, "Unrecoginzed Rate of %d\n",
@@ -2540,111 +1073,5 @@ void prism2mgmt_set_oprateset(u16 *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(u32 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(u32 did, u8 *prism2buf,
-       p80211pstrd_t *pstr, hfa384x_t *hw )
-{
-       u8      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);
-}