📄 rtmp.h
字号:
// Fast Roaming BOOLEAN bFastRoaming; // 0:disable fast roaming, 1:enable fast roaming ULONG dBmToRoam; // the condition to roam when receiving Rssi less than this value. It's negative value. RADAR_DETECT_STRUCT RadarDetect; BOOLEAN bGetAPConfig; BOOLEAN bWscCapable; // 1:use simple config, 0:otherwise WSC_LV_INFO WscIEProbeReq; WSC_LV_INFO WscIEBeacon;} PORT_CONFIG, *PPORT_CONFIG;// This data structure keep the current active BSS/IBSS's configuration that this STA// had agreed upon joining the network. Which means these parameters are usually decided// by the BSS/IBSS creator instead of user configuration. Data in this data structurre// is valid only when either ADHOC_ON(pAd) or INFRA_ON(pAd) is TRUE.// Normally, after SCAN or failed roaming attempts, we need to recover back to// the current active settings.typedef struct _ACTIVE_CONFIG { USHORT Aid; USHORT AtimWin; // in kusec; IBSS parameter set element USHORT CapabilityInfo; USHORT CfpMaxDuration; USHORT CfpPeriod; // Copy supported rate from desired AP's beacon. We are trying to match // AP's supported and extended rate settings. UCHAR SupRate[MAX_LEN_OF_SUPPORTED_RATES]; UCHAR ExtRate[MAX_LEN_OF_SUPPORTED_RATES]; UCHAR SupRateLen; UCHAR ExtRateLen;} ACTIVE_CONFIG, *PACTIVE_CONFIG;//// The miniport adapter structure//typedef struct _RTMP_ADAPTER{ //---------------------------- // Linux specific //---------------------------- CHAR nickn[IW_ESSID_MAX_SIZE+1]; // nickname, only used in the iwconfig i/f struct usb_device *pUsb_Dev; struct net_device *net_dev; struct usb_device *usb;#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) && defined(CONFIG_PM) struct pm_dev *pmdev;#endif struct tasklet_struct rx_bh; struct tasklet_struct rx_bk; struct usb_config_descriptor *config; devctrlrequest *devreq; INT EAPOLVer; /* The device we're working with * It's important to note: * (o) you must hold dev_semaphore to change pUsb_Dev */ struct semaphore usbdev_semaphore; /* protect usb */ // Thread struct semaphore mlme_semaphore; /* to sleep thread on */ struct semaphore RTUSBCmd_semaphore; /* to sleep thread on */ struct completion mlmenotify; /* thread begin/end */ struct completion cmdnotify; /* thread begin/end */ pid_t MLMEThr_pid; pid_t RTUSBCmdThr_pid; wait_queue_head_t *wait;#if WIRELESS_EXT >= 12 struct iw_statistics iw_stats;#endif struct net_device_stats stats; ULONG VendorDesc; // VID/PID // resource for software backlog queues struct sk_buff_head TxSwQueue[NUM_OF_TX_RING]; // 4 AC + 1 HCCA MGMT_STRUC MgmtRing[MGMT_RING_SIZE]; // outgoing BEACON frame buffer and corresponding TXD TXD_STRUC BeaconTxD; CHAR BeaconBuf[256]; // NOTE: BeaconBuf should be 4-byte aligned // pre-build PS-POLL and NULL frame upon link up. for efficiency purpose. PSPOLL_FRAME PsPollFrame; HEADER_802_11 NullFrame; // configuration: read from Registry & E2PROM BOOLEAN bLocalAdminMAC; // Use user changed MAC // Factory default MAC address UCHAR PermanentAddress[MAC_ADDR_LEN] ALIGN_USB_RCV; // User changed MAC address UCHAR CurrentAddress[MAC_ADDR_LEN]; MLME_STRUCT Mlme; // --------------------------- // STA specific configuration // --------------------------- PORT_CONFIG PortCfg; // user desired settings ACTIVE_CONFIG ActiveCfg; // valid only when ADHOC_ON(pAd) || INFRA_ON(pAd) MLME_AUX MlmeAux; // temporary settings used during MLME state machine BSS_TABLE ScanTab; // store the latest SCAN result // encryption/decryption KEY tables CIPHER_KEY SharedKey[4];// CIPHER_KEY PairwiseKey[64]; // for AP only // Boolean control for packet filter BOOLEAN bAcceptDirect; BOOLEAN bAcceptMulticast; BOOLEAN bAcceptBroadcast; BOOLEAN bAcceptAllMulticast; BOOLEAN bAcceptRFMONTx; UINT ForcePrismHeader; // 802.3 multicast support ULONG NumberOfMcastAddresses; // Number of mcast entry exists UCHAR McastTable[MAX_MCAST_LIST_SIZE][MAC_ADDR_LEN]; // Mcast list // RX Tuple chahe for duplicate frame check TUPLE_CACHE TupleCache[MAX_CLIENT]; // Maximum number of tuple caches, only useful in Ad-Hoc UCHAR TupleCacheLastUpdateIndex; // 0..MAX_CLIENT-1 // RX re-assembly buffer for fragmentation FRAGMENT_FRAME FragFrame; // Frame storage for fragment frame // various Counters COUNTER_802_3 Counters8023; // 802.3 counters COUNTER_802_11 WlanCounters; // 802.11 MIB counters COUNTER_RALINK RalinkCounters; // Ralink propriety counters COUNTER_DRS DrsCounters; // counters for Dynamic TX Rate Switching PRIVATE_STRUC PrivateInfo; // Private information & counters // Counters for 802.3 & generic. // Add 802.11 specific counters later COUNTER_802_3 Counters; // 802.3 counters COUNTER_QA QACounters; // Ralink propriety counters // flags, see fRTMP_ADAPTER_xxx flags ULONG Flags; // Represent current device status // current TX sequence # USHORT Sequence; // Control disconnect / connect event generation ULONG LinkDownTime; ULONG LastRxRate; BOOLEAN bConfigChanged; // Config Change flag for the same SSID setting ULONG ExtraInfo; // Extra information for displaying status ULONG SystemErrorBitmap; // b0: E2PROM version error // --------------------------- // E2PROM // --------------------------- ULONG EepromVersion; // byte 0: version, byte 1: revision, byte 2~3: unused UCHAR EEPROMAddressNum; // 93c46=6 93c66=8 USHORT EEPROMDefaultValue[NUM_EEPROM_BBP_PARMS]; ULONG FirmwareVersion; // byte 0: Minor version, byte 1: Major version, otherwise unused. // --------------------------- // BBP Control // --------------------------- UCHAR BbpWriteLatch[110]; // record last BBP register value written via BBP_IO_WRITE/BBP_IO_WRITE_VY_REG_ID UCHAR BbpRssiToDbmDelta; BBP_R17_TUNING BbpTuning; // ---------------------------- // RFIC control // ---------------------------- UCHAR RfIcType; // RFIC_xxx ULONG RfFreqOffset; // Frequency offset for channel switching BOOLEAN bAutoTxAgc; // Enable driver auto Tx Agc control RTMP_RF_REGS LatchRfRegs; // latch th latest RF programming value since RF IC doesn't support READ// CCK_TX_POWER_CALIBRATE CckTxPowerCalibrate; // 2004-05-25 add CCK TX power caliberation based on E2PROM settings UCHAR RFProgSeq; EEPROM_ANTENNA_STRUC Antenna; // Since ANtenna definition is different for a & g. We need to save it for future reference. EEPROM_NIC_CONFIG2_STRUC NicConfig2; CHANNEL_TX_POWER TxPower[MAX_NUM_OF_CHANNELS]; // Store Tx power value for all channels. CHANNEL_TX_POWER ChannelList[MAX_NUM_OF_CHANNELS]; // list all supported channels for site survey UCHAR ChannelListNum; // number of channel in ChannelList[] EEPROM_TXPOWER_DELTA_STRUC TxPowerDeltaConfig; // Compensate the Tx power BBP94 with this configurate value UCHAR Bbp94; BOOLEAN BbpForCCK;// UCHAR ChannelTssiRef[MAX_NUM_OF_CHANNELS]; // Store Tssi Reference value for all channels.// UCHAR ChannelTssiDelta; // Store Tx TSSI delta increment / decrement value // This soft Rx Antenna Diversity mechanism is used only when user set // RX Antenna = DIVERSITY ON SOFT_RX_ANT_DIVERSITY RxAnt; BOOLEAN bAutoTxAgcA; // Enable driver auto Tx Agc control UCHAR TssiRefA; // Store Tssi reference value as 25 tempature. UCHAR TssiPlusBoundaryA[5]; // Tssi boundary for increase Tx power to compensate. UCHAR TssiMinusBoundaryA[5]; // Tssi boundary for decrease Tx power to compensate. UCHAR TxAgcStepA; // Store Tx TSSI delta increment / decrement value CHAR TxAgcCompensateA; // Store the compensation (TxAgcStep * (idx-1)) BOOLEAN bAutoTxAgcG; // Enable driver auto Tx Agc control UCHAR TssiRefG; // Store Tssi reference value as 25 tempature. UCHAR TssiPlusBoundaryG[5]; // Tssi boundary for increase Tx power to compensate. UCHAR TssiMinusBoundaryG[5]; // Tssi boundary for decrease Tx power to compensate. UCHAR TxAgcStepG; // Store Tx TSSI delta increment / decrement value CHAR TxAgcCompensateG; // Store the compensation (TxAgcStep * (idx-1)) CHAR BGRssiOffset1; // Store B/G RSSI#1 Offset value on EEPROM 0x9Ah CHAR BGRssiOffset2; // Store B/G RSSI#2 Offset value CHAR ARssiOffset1; // Store A RSSI#1 Offset value on EEPROM 0x9Ch CHAR ARssiOffset2; // ---------------------------- // LED control // ---------------------------- MCU_LEDCS_STRUC LedCntl; USHORT LedIndicatorStrength; // ---------------------------- // DEBUG paramerts // ----------------------------// ULONG DebugSetting[4]; ////////////////////////////////////////////////////////////////////// // USB ////////////////////////////////////////////////////////////////////// USHORT BulkOutMaxPacketSize; // 64 in XP USHORT BulkInMaxPacketSize; CmdQ CmdQ; CmdQElmt CmdQElements[COMMAND_QUEUE_SIZE]; // SpinLocks spinlock_t MLMEWaitQueueLock; spinlock_t CmdQLock; spinlock_t BulkOutLock[4]; // for 4 ACs spinlock_t MLMEQLock; spinlock_t BulkFlagsLock; ///////////////////// // Transmit Path ///////////////////// TX_CONTEXT MLMEContext[PRIO_RING_SIZE]; TX_CONTEXT BeaconContext[BEACON_RING_SIZE]; TX_CONTEXT NullContext; TX_CONTEXT PsPollContext; TX_CONTEXT RTSContext;// PUCHAR TxBuffer;// TX_BUFFER TxMgmtBuf;// PURB pTxMgmtUrb;// PIRP pTxMgmtIrp; struct sk_buff_head SendTxWaitQueue[4]; UINT32 TxRingTotalNumber[4]; UCHAR NextTxIndex[4]; // Next TxD write pointer UCHAR NextMLMEIndex; // Next PrioD write pointer UCHAR PushMgmtIndex; // Next SW management ring index UCHAR PopMgmtIndex; // Next SW management ring index atomic_t MgmtQueueSize; // Number of Mgmt request stored in MgmtRing UCHAR NextRxBulkInIndex; UCHAR CurRxBulkInIndex; // 4 sets of Bulk Out index and pending flag UCHAR NextBulkOutIndex[4]; BOOLEAN BulkOutPending[4];// BOOLEAN ControlPending; ULONG PrioRingTxCnt; UCHAR PrioRingFirstIndex; atomic_t PendingTx; // Number of Bulkout waiting to be send. // Data related context and AC specified, 4 AC supported TX_CONTEXT TxContext[4][TX_RING_SIZE]; LONG NumPacketsQueued[4];// PURB pTxUrb[4];// PIRP pTxIrp[4]; ///////////////////// // Receive Path ///////////////////// RX_CONTEXT RxContext[RX_RING_SIZE];// PURB pRxUrb;// PIRP pRxIrp;// PUCHAR RxBuffer; atomic_t PendingRx; ///////////////////// // Control Flags /////////////////////// atomic_t PendingIoCount; // Flags for bulk out data priority ULONG BulkFlags; ULONG BulkOutDataOneSecCount; ULONG BulkInDataOneSecCount; ULONG BulkLastOneSecCount; // BulkOutDataOneSecCount + BulkInDataOneSecCount} RTMP_ADAPTER, *PRTMP_ADAPTER;/* Define in md5.h *///// SHA context////typedef struct//{// ULONG H[5];// ULONG W[80];// INT lenW;// ULONG sizeHi, sizeLo;//} SHA_CTX;//// Prototypes of function definition////// Miniport routines in rtmp_main.c//VOID RTUSBHalt( IN PRTMP_ADAPTER pAd, IN BOOLEAN IsFree);VOID CMDHandler( IN PRTMP_ADAPTER pAd);INT MlmeThread( IN void * Context);INT RTUSBCmdThread( IN void * Context);#if WIRELESS_EXT >= 12struct iw_statistics *rt73_get_wireless_stats( IN struct net_device *net_dev);#endifstruct net_device_stats *rt73_get_ether_stats( IN struct net_device *net_dev);long rt_abs(long arg);//// Routines in rtmp_init.c//VOID CreateThreads(PRTMP_ADAPTER pAd);void KillThreads(PRTMP_ADAPTER pAd);NDIS_STATUS NICInitTransmit( IN PRTMP_ADAPTER pAd );NDIS_STATUS NICInitRecv( IN PRTMP_ADAPTER pAd);VOID ReleaseAdapter( IN PRTMP_ADAPTER pAd, IN BOOLEAN IsFree, IN BOOLEAN IsOnlyTx);VOID RTMPInitAdapterBlock( IN PRTMP_ADAPTER pAd);NDIS_STATUS RTUSBWriteHWMACAddress( IN PRTMP_ADAPTER pAd);VOID NICReadEEPROMParameters( IN PRTMP_ADAPTER pAd);VOID NICInitAsicFromEEPROM( IN PRTMP_ADAPTER pAd);NDIS_STATUS NICInitializeAsic( IN PRTMP_ADAPTER pAd);VOID NICIssueReset( IN PRTMP_ADAPTER pAd);BOOLEAN NICCheckForHang( IN PRTMP_ADAPTER pAd);VOID NICUpdateRawCounters( IN PRTMP_ADAPTER pAd);VOID NICResetFromError( IN PRTMP_ADAPTER pAd);INT LoadFirmware (IN PRTMP_ADAPTER pAd, char *firmName);PUCHAR RTMPFindSection( IN PCHAR buffer);#ifndef BIG_ENDIANULONG RTMPEqualMemory( IN PVOID pSrc1, IN PVOID pSrc2, IN ULONG Length);#endifULONG RTMPCompareMemory( IN PVOID pSrc1, IN PVOID pSrc2, IN ULONG Length);VOID RTMPZeroMemory( IN PVOID pSrc, IN ULONG Length);VOID RTMPFillMemory( IN PVOID pSrc, IN ULONG Length, IN UCHAR Fill);VOID RTMPMoveMemory( OUT PVOID pDest,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -