📄 cisaironetstmibioctl.c
字号:
/* cisAironetStMibIoctl.c - Mib driver Ioctl (control) routines *//* Copyright 2001-2003 Wind River Systems, Inc. *//*modification history--------------------01n,09may03,rb Removed warnings caused by IPv6 integration01m,26feb03,ss Fixed diab compiler warnings01h,09may02,dxb Removed CIS_AIRONET_SLEEP and CIS_AIRONET_WAKEUP.01g,08may02,dxb Updated comments.01f,06may02,eja Added changes to support trimmed mib.01d,08apr02,eja Code clean up before FCS.01c,08mar02,eja Added new power save macro around ioctl call.01b,28feb02,eja Changes to mib leaf element defines.01a,14feb02,eja Added macro to convert FALSE to DOT11_FALSE (2).*//*DESCRIPTIONThis module provides the support routines for the Cisco Aironet 340/350wireless 802.11b driver.INCLUDE FILES: cisAironet.h, wlanEnd.hSEE ALSO: cisAironetHw.c, cisAironetEnd.c, cisAironetIoctl.c, configWlan.h*/#include <vxWorks.h>#include <string.h>#include <ioLib.h>#include <stdio.h>#include <logLib.h>#include "wrn/wlan/cisAironet.h"#include "wrn/wlan/wlanEnd.h"#include "wrn/wlan/snmp802dot11.h"#define VXBOOL_TO_DOT11BOOL(truthVal) \ { \ truthVal = (truthVal == FALSE) ? DOT11_FALSE: truthVal; \ }/**************************************************************************** cisAironetStMibIoctl - Ioctl Routines for MIB support* * RETURNS : OK, EINVAL for an invalid value, or ERROR if an error occured** ERRNO : N/A** SEE ALSO: Cisco Aironet 340/350 Driver Programmer's Manual** NOMANUAL*/ int cisAironetStMibIoctl ( CARD_CTRL_T * pDev, /* Pointer to device control structure */ INT32 cmd, /* ioctl command to execute */ caddr_t data /* generic data pointer - varies by cmd */ ) { INT32 status = OK; PDOT11_IOCTL_PARAM_T pCmdObj = NULL; INT16 mibGroup = 0; INT16 mibLeaf = 0; if (pDev == NULL) { ANET_DEBUG(DEBUG_ERROR, (" cisAironetStMibIoctl: NULL pointer")); return (ERROR); } /* attach to command object */ pCmdObj = (PDOT11_IOCTL_PARAM_T) data; /* Extract the mib group */ mibGroup = (INT16) (pCmdObj->cmdCall >> 16); /* Extract the mib leaf */ mibLeaf = (INT16) pCmdObj->cmdCall; /* Get or Set a station variable (mib leaf) */ switch (cmd) { /* Get station variables */ case EIOCGMIB2STA: { /* Get the object element for the snmp agent */ switch (mibGroup) { /* Get the leaf element for the snmp agent */ case STATION_CONFIG_ENTRY: { CFG_RID_T cfg; STATUS_RID_T stat; PSTATION_CONFIG_ENTRY_T pInfo = NULL; /* Get the card config Rid */ if ( cisAironetHwRidActualConfigGet (pDev, (void *) &cfg) == ERROR ) { status = EINVAL; break; } /* Get the card status */ if ( cisAironetHwRidStatusGet (pDev, (void *) &stat) == ERROR ) { status = EINVAL; break; } /* Copy the configuration info into the data buffer */ pInfo = (PSTATION_CONFIG_ENTRY_T) pCmdObj->pData; switch (mibLeaf) { case SMT_STATION_ID: bcopy ((char *) stat.mac, (char *) pInfo->dot11StationID, NELEMENTS(stat.mac)); break; case SMT_MEDIUM_OCCUPANCY_LIMIT: pInfo->dot11MediumOccupancyLimit = DOT11_MOL_MIN; break; case SMT_CF_POLLABLE: pInfo->dot11CFPollable = DOT11_TRUE; break; case SMT_CFP_PERIOD: pInfo->dot11CFPPeriod = cfg.dtimPeriod * 1024; break; case SMT_CFP_MAX_DURATION: pInfo->dot11CFPMaxDuration = DOT11_MOL_MIN; break; case SMT_AUTH_RESP_TOUT: pInfo->dot11AuthenticationResponseTimeOut = cfg.authTimeout; break; case SMT_PRIV_OPT_IMPL: pInfo->dot11PrivacyOptionImplemented = DOT11_TRUE; break; case SMT_PWR_MGR_MODE: VXBOOL_TO_DOT11BOOL(cfg.powerSaveMode); pInfo->dot11PowerManagementMode = cfg.powerSaveMode; break; case SMT_DESIRED_SSID: bcopy ((char *) stat.SSID, (char *)pInfo->dot11DesiredSSID, NELEMENTS(stat.currentBssID)); break; case SMT_DESIRED_BSS_TYPE: bcopy ((char *) stat.SSID, (char *) pInfo->dot11DesiredSSID, NELEMENTS(stat.currentBssID)); break; case SMT_OPER_RATE_SET: bcopy ((char *) cfg.rates, (char *) pInfo->dot11OperationalRateSet, NELEMENTS(cfg.rates)); break; case SMT_BEACON_PERIOD: case SMT_DTIM_PERIOD: pInfo->dot11DTIMPeriod = cfg.dtimPeriod; break; case SMT_ASSOC_RESP_TOUT: pInfo->dot11AssociationResponseTimeOut = cfg.associationTimeout; break; default: status = EINVAL; break; } } break; case AUTH_ALGORITHM_ENTRY: case OPERATION_ENTRY: case COUNTERS_ENTRY: case GROUP_ADDRESSES_ENTRY: case RESOURCE_INFO_ENTRY: case PHY_OPERATION_ENTRY: case PHY_DSSS_ENTRY: default: status = EINVAL; break; } } break; /* Set station variables */ case EIOCSMIB2STA: status = EINVAL; break; default: status = EINVAL; } /* If there's an error, return that */ return (status); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -