diff -Naur rt73-k2wrlz-2.0.1/Module/rtmp_def.h rt73-k2wrlz-2.0.1-24/Module/rtmp_def.h --- rt73-k2wrlz-2.0.1/Module/rtmp_def.h 2007-07-10 10:01:32.000000000 +0200 +++ rt73-k2wrlz-2.0.1-24/Module/rtmp_def.h 2008-02-13 23:12:13.000000000 +0100 @@ -1,26 +1,26 @@ -/*************************************************************************** - * RT2x00 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * +/*************************************************************************** + * RT2x00 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * ***************************************************************************/ -/*************************************************************************** +/*************************************************************************** * Module Name: rtmp_def.h * * Abstract: Miniport related definition header @@ -31,7 +31,7 @@ * Paul Lin 08-01-2002 created * John Chang 08-05-2003 add definition for 11g & other drafts * idamlaj 04-10-2006 Add extra devices - * + * ***************************************************************************/ #ifndef __RTMP_DEF_H__ @@ -61,7 +61,7 @@ #define TYPE_RXD 1 #endif -//WEP +//WEP #define WEP_SMALL_KEY_LEN (40/8) #define WEP_LARGE_KEY_LEN (104/8) @@ -237,7 +237,7 @@ #define MAX_LEN_OF_SUPPORTED_RATES 12 // 1, 2, 5.5, 11, 6, 9, 12, 18, 24, 36, 48, 54 #define MAX_LEN_OF_KEY 32 // 32 octets == 256 bits, Redefine for WPA -#define MAX_NUM_OF_CHANNELS 43 //1-14, 36/40/44/48/52/56/60/64/100/104/108/112/116/120/124/ +#define MAX_NUM_OF_CHANNELS 43 //1-14, 36/40/44/48/52/56/60/64/100/104/108/112/116/120/124/ //128/132/136/140/149/153/157/161/165/34/38/42/46 + 1 as NULL termination #define MAX_NUM_OF_A_CHANNELS 24 //36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165 #define J52_CHANNEL_START_OFFSET 38 //1-14, 36/40/44/48/52/56/60/64/100/104/108/112/116/120/124/ @@ -245,7 +245,7 @@ #define MAX_LEN_OF_SSID 32 #define CIPHER_TEXT_LEN 128 #define MAX_LEN_OF_MLME_BUFFER 2048 -#define MAX_MLME_HANDLER_MEMORY 20 //each them cantains MAX_LEN_OF_MLME_BUFFER size +#define MAX_MLME_HANDLER_MEMORY 20 //each them cantains MAX_LEN_OF_MLME_BUFFER size #define MAX_FRAME_LEN 2338 #define MAX_VIE_LEN 160 // New for WPA cipher suite variable IE sizes. @@ -304,7 +304,7 @@ #define MLME_SUCCESS 0 #define MLME_UNSPECIFY_FAIL 1 #define MLME_CANNOT_SUPPORT_CAP 10 -#define MLME_REASSOC_DENY_ASSOC_EXIST 11 +#define MLME_REASSOC_DENY_ASSOC_EXIST 11 #define MLME_ASSOC_DENY_OUT_SCOPE 12 #define MLME_ALG_NOT_SUPPORT 13 #define MLME_SEQ_NR_OUT_OF_SEQUENCE 14 @@ -334,7 +334,7 @@ #define IE_802_11D_REQUEST 10 // 802.11d #define IE_QBSS_LOAD 11 // 802.11e d9 #define IE_EDCA_PARAMETER 12 // 802.11e d9 -#define IE_TSPEC 13 // 802.11e d9 +#define IE_TSPEC 13 // 802.11e d9 #define IE_TCLAS 14 // 802.11e d9 #define IE_SCHEDULE 15 // 802.11e d9 #define IE_CHALLENGE_TEXT 16 @@ -422,7 +422,7 @@ #define ASSOC_MACHINE_BASE 0 #define MT2_MLME_ASSOC_REQ 0 #define MT2_MLME_REASSOC_REQ 1 -#define MT2_MLME_DISASSOC_REQ 2 +#define MT2_MLME_DISASSOC_REQ 2 #define MT2_PEER_DISASSOC_REQ 3 #define MT2_PEER_ASSOC_REQ 4 #define MT2_PEER_ASSOC_RSP 5 @@ -491,7 +491,7 @@ // // STA's WPA-PSK State machine: states, events, total function # -// +// #define WPA_PSK_IDLE 0 #define MAX_WPA_PSK_STATE 1 @@ -650,8 +650,8 @@ #define CIPHER_AES 4 #define CIPHER_CKIP64 5 #define CIPHER_CKIP128 6 -#define CIPHER_TKIP_NO_MIC 7 // MIC has been appended by driver, not a valid value in hardware key table - +#define CIPHER_TKIP_NO_MIC 7 // MIC has been appended by driver, not a valid value in hardware key table + // value domain for pAd->RfIcType #define RFIC_5226 1 //A/B/G @@ -813,6 +813,7 @@ // VID/PID //------------------- +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) #define RT73_USB_DEVICES { \ {USB_DEVICE(0x0b05,0x1723)}, /* ASUS */ \ {USB_DEVICE(0x148f,0x2573)}, /* Ralink */ \ @@ -843,7 +844,38 @@ {USB_DEVICE(0x0df6,0x90ac)}, /* Sitecom */ \ {USB_DEVICE(0x13b1,0x0023)}, /* LinkSys */ \ {USB_DEVICE(0,0)}} /* end marker */ - +#else +#define RT73_USB_DEVICES { \ + {USB_DEVICE(0x0b05,0x1723)}, /* ASUS */ \ + {USB_DEVICE(0x148f,0x2573)}, /* Ralink */ \ + {USB_DEVICE(0x148f,0x2671)}, /* Ralink */ \ + {USB_DEVICE(0x18e8,0x6196)}, /* Qcom */ \ + {USB_DEVICE(0x18e8,0x6229)}, /* Qcom */ \ + {USB_DEVICE(0x1044,0x8008)}, /* Gigabyte */ \ + {USB_DEVICE(0x14b2,0x3c22)}, /* Conceptronic */ \ + {USB_DEVICE(0x0db0,0x6877)}, /* MSI */ \ + {USB_DEVICE(0x0db0,0xa874)}, /* MSI */ \ + {USB_DEVICE(0x0db0,0xa861)}, /* MSI */ \ + {USB_DEVICE(0x07b8,0xb21d)}, /* AboCom */ \ + {USB_DEVICE(0x0769,0x31f3)}, /* Surecom */ \ + {USB_DEVICE(0x1472,0x0009)}, /* Huawei-3Com */ \ + {USB_DEVICE(0x1371,0x9022)}, /* CNet */ \ + {USB_DEVICE(0x1371,0x9032)}, /* CNet */ \ + {USB_DEVICE(0x1631,0xc019)}, /* Billionton */ \ + {USB_DEVICE(0x1044,0x800a)}, /* Gigabyte */ \ + {USB_DEVICE(0x07d1,0x3c03)}, /* D-Link */ \ + {USB_DEVICE(0x07d1,0x3c04)}, /* D-Link */ \ + {USB_DEVICE(0x050d,0x7050)}, /* Belkin */ \ + {USB_DEVICE(0x050d,0x705a)}, /* Belkin */ \ + {USB_DEVICE(0x13b1,0x0020)}, /* Linksys */ \ + {USB_DEVICE(0x18e8,0x6196)}, /* Qcom*/ \ + {USB_DEVICE(0x0df6,0x9712)}, /* Sitecom */ \ + {USB_DEVICE(0x06f8,0xe010)}, /* Hercules */ \ + {USB_DEVICE(0x1690,0x0722)}, /* Askey */ \ + {USB_DEVICE(0x0df6,0x90ac)}, /* Sitecom */ \ + {USB_DEVICE(0x13b1,0x0023)}, /* LinkSys */ \ + {}} /* end marker */ +#endif #endif // __RTMP_DEF_H__ diff -Naur rt73-k2wrlz-2.0.1/Module/rtmp_main.c rt73-k2wrlz-2.0.1-24/Module/rtmp_main.c --- rt73-k2wrlz-2.0.1/Module/rtmp_main.c 2007-10-26 21:35:39.000000000 +0200 +++ rt73-k2wrlz-2.0.1-24/Module/rtmp_main.c 2008-02-13 23:03:14.000000000 +0100 @@ -1,26 +1,26 @@ -/*************************************************************************** - * RT2x00 SourceForge Project - http://rt2x00.serialmonkey.com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - * Licensed under the GNU GPL * - * Original code supplied under license from RaLink Inc, 2004. * +/*************************************************************************** + * RT2x00 SourceForge Project - http://rt2x00.serialmonkey.com * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + * Licensed under the GNU GPL * + * Original code supplied under license from RaLink Inc, 2004. * ***************************************************************************/ -/*************************************************************************** +/*************************************************************************** * Module Name: rtmp_main.c * * Abstract: Main initialization routines @@ -29,8 +29,8 @@ * Who When What * -------- ---------- ----------------------------- * Jan Lee 01-10-2005 modified - * idamlaj 04-10-2006 Apply patch by Ace17 (from forum) - * + * idamlaj 04-10-2006 Apply patch by Ace17 (from forum) + * ***************************************************************************/ #include "rt_config.h" @@ -67,7 +67,7 @@ /* module table */ struct usb_device_id rtusb_usb_id[] = RT73_USB_DEVICES; -INT const rtusb_usb_id_len = sizeof(rtusb_usb_id) / sizeof(struct usb_device_id); +INT const rtusb_usb_id_len = sizeof(rtusb_usb_id) / sizeof(struct usb_device_id); MODULE_DEVICE_TABLE(usb, rtusb_usb_id); @@ -158,7 +158,7 @@ // for cslip etc pAd->stats.rx_compressed = 0; pAd->stats.tx_compressed = 0; - + return &pAd->stats; } @@ -214,22 +214,22 @@ #endif VOID RTUSBHalt( - IN PRTMP_ADAPTER pAd, + IN PRTMP_ADAPTER pAd, IN BOOLEAN IsFree) { MLME_DISASSOC_REQ_STRUCT DisReq; MLME_QUEUE_ELEM MsgElem; INT i; - + DBGPRINT(RT_DEBUG_TRACE, "====> RTUSBHalt\n"); // - // before set flag fRTMP_ADAPTER_HALT_IN_PROGRESS, + // before set flag fRTMP_ADAPTER_HALT_IN_PROGRESS, // we should send a disassoc frame to our AP. // if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST)) { - if (INFRA_ON(pAd)) + if (INFRA_ON(pAd)) { COPY_MAC_ADDR(DisReq.Addr, pAd->PortCfg.Bssid); DisReq.Reason = REASON_DISASSOC_STA_LEAVING; @@ -252,7 +252,7 @@ RTMPSendNullFrame(pAd, RATE_6); RTMPusecDelay(1000); } - + // disable BEACON generation and other BEACON related hardware timers AsicDisableSync(pAd); RTMPSetLED(pAd, LED_HALT); @@ -281,23 +281,23 @@ // Free the entire adapter object ReleaseAdapter(pAd, IsFree, FALSE); - + // reset mlme & command thread pAd->MLMEThr_pid = -1; pAd->RTUSBCmdThr_pid = -1; - + RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS); } VOID CMDHandler( - IN PRTMP_ADAPTER pAd) + IN PRTMP_ADAPTER pAd) { PCmdQElmt cmdqelmt; PUCHAR pData; NDIS_STATUS NdisStatus = NDIS_STATUS_SUCCESS; ULONG IrqFlags; ULONG Now; - + while (pAd->CmdQ.size > 0) { NdisStatus = NDIS_STATUS_SUCCESS; @@ -339,7 +339,7 @@ // Update extra information pAd->ExtraInfo = HW_RADIO_OFF; } - } + } } break; @@ -351,11 +351,11 @@ { if (pAd->Mlme.CntlMachine.CurrState != CNTL_IDLE) { - MlmeEnqueue(pAd, + MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, RT_CMD_RESET_MLME, 0, - NULL); + NULL); } @@ -372,17 +372,17 @@ RTUSBMlmeUp(pAd); } break; - + case RT_OID_802_11_BSSID: { if (pAd->Mlme.CntlMachine.CurrState != CNTL_IDLE) { - MlmeEnqueue(pAd, + MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, RT_CMD_RESET_MLME, 0, - NULL); + NULL); } @@ -399,16 +399,16 @@ RTUSBMlmeUp(pAd); } break; - + case OID_802_11_SSID: { if (pAd->Mlme.CntlMachine.CurrState != CNTL_IDLE) - { - MlmeEnqueue(pAd, + { + MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, RT_CMD_RESET_MLME, 0, - NULL); + NULL); } @@ -421,7 +421,7 @@ MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, OID_802_11_SSID, - cmdqelmt->bufferlength, + cmdqelmt->bufferlength, pData); RTUSBMlmeUp(pAd); } @@ -431,11 +431,11 @@ { if (pAd->Mlme.CntlMachine.CurrState != CNTL_IDLE) { - MlmeEnqueue(pAd, + MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, RT_CMD_RESET_MLME, 0, - NULL); + NULL); } @@ -456,7 +456,7 @@ NDIS_802_11_ANTENNA Antenna = *(NDIS_802_11_ANTENNA *)pData; - if (Antenna == 0) + if (Antenna == 0) pAd->Antenna.field.RxDefaultAntenna = 1; // ant-A else if(Antenna == 1) pAd->Antenna.field.RxDefaultAntenna = 2; // ant-B @@ -473,7 +473,7 @@ { NDIS_802_11_ANTENNA Antenna = *(NDIS_802_11_ANTENNA *)pData; - if (Antenna == 0) + if (Antenna == 0) pAd->Antenna.field.TxDefaultAntenna = 1; // ant-A else if(Antenna == 1) pAd->Antenna.field.TxDefaultAntenna = 2; // ant-B @@ -517,7 +517,7 @@ RTUSBReadEEPROM(pAd, Offset, pData + 4, Length); } break; - + case RT_OID_USB_VENDOR_EEPROM_WRITE: { USHORT Offset = *((PUSHORT)pData); @@ -563,26 +563,26 @@ case RT_OID_USB_RESET_BULK_OUT: { INT Index; - + DBGPRINT_RAW(RT_DEBUG_ERROR, "RT_OID_USB_RESET_BULK_OUT\n"); - + RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_RESET_PIPE_IN_PROGRESS); - RTUSBRejectPendingPackets(pAd); //reject all NDIS packets waiting in TX queue + RTUSBRejectPendingPackets(pAd); //reject all NDIS packets waiting in TX queue RTUSBCancelPendingBulkOutIRP(pAd); RTUSBCleanUpDataBulkOutQueue(pAd); NICInitializeAsic(pAd); ReleaseAdapter(pAd, FALSE, TRUE); // unlink urb releated tx context NICInitTransmit(pAd); - - RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_RESET_PIPE_IN_PROGRESS); - + + RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_RESET_PIPE_IN_PROGRESS); + if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BULKOUT_RESET)) { RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_BULKOUT_RESET); } - + if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF)) { for (Index = 0; Index < 4; Index++) @@ -594,8 +594,8 @@ } RTUSBKickBulkOut(pAd); - } - } + } + } break; @@ -618,7 +618,7 @@ } if (pRxContext->TransferBuffer != NULL) { - kfree(pRxContext->TransferBuffer); + kfree(pRxContext->TransferBuffer); pRxContext->TransferBuffer = NULL; } } @@ -722,9 +722,9 @@ //disable Rx RTUSBWriteMACRegister(pAd, TXRX_CSR2, 1); //Ask our device to complete any pending bulk in IRP. - while ((atomic_read(&pAd->PendingRx) > 0) || + while ((atomic_read(&pAd->PendingRx) > 0) || (pAd->BulkOutPending[0] == TRUE) || - (pAd->BulkOutPending[1] == TRUE) || + (pAd->BulkOutPending[1] == TRUE) || (pAd->BulkOutPending[2] == TRUE) || (pAd->BulkOutPending[3] == TRUE)) @@ -743,7 +743,7 @@ } if ((pAd->BulkOutPending[0] == TRUE) || - (pAd->BulkOutPending[1] == TRUE) || + (pAd->BulkOutPending[1] == TRUE) || (pAd->BulkOutPending[2] == TRUE) || (pAd->BulkOutPending[3] == TRUE)) { @@ -758,7 +758,7 @@ RTMPusecDelay(500000); } - NICResetFromError(pAd); + NICResetFromError(pAd); if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HARDWARE_ERROR)) { RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_HARDWARE_ERROR); @@ -814,12 +814,12 @@ case RT_OID_VENDOR_WRITE_RF: { ULONG Value = *((PULONG)pData); - + DBGPRINT_RAW(RT_DEBUG_INFO, "value = 0x%08x\n", Value); RTUSBWriteRFRegister(pAd, Value); } break; - + case RT_OID_802_11_RESET_COUNTERS: { UCHAR Value[22]; @@ -865,7 +865,7 @@ NULL, 0); break; -#endif +#endif case RT_OID_VENDOR_FLIP_IQ: { ULONG Value1, Value2; @@ -926,7 +926,7 @@ else NdisStatus = NDIS_STATUS_FAILURE; DBGPRINT(RT_DEBUG_ERROR, "CMDHandler::OID_802_11_NETWORK_TYPE_IN_USE (=%d)\n",NetType); - + } break; case RT_OID_802_11_PHY_MODE: @@ -958,7 +958,7 @@ pAd->PortCfg.GroupCipher = WepStatus; #if 1 - if ((WepStatus == Ndis802_11Encryption1Enabled) && + if ((WepStatus == Ndis802_11Encryption1Enabled) && (pAd->SharedKey[pAd->PortCfg.DefaultKeyId].KeyLen != 0)) { if (pAd->SharedKey[pAd->PortCfg.DefaultKeyId].KeyLen <= 5) @@ -973,7 +973,7 @@ pAd->SharedKey[pAd->PortCfg.DefaultKeyId].CipherAlg = CIPHER_WEP128; } -#if 0 +#if 0 RTUSBReadMACRegister_old(pAd, TXRX_CSR0, &Value); Value &= 0xfe00; Value |= ((LENGTH_802_11 << 3) | (pAd->PortCfg.CipherAlg)); @@ -1013,7 +1013,7 @@ Value &= 0xfe00; RTUSBWriteMACRegister_old(pAd, TXRX_CSR0, Value); #endif - }else + }else { DBGPRINT(RT_DEBUG_ERROR, " ERROR Cipher !!! \n"); } @@ -1027,7 +1027,7 @@ PNDIS_802_11_WEP pWepKey; DBGPRINT(RT_DEBUG_TRACE, "CMDHandler::OID_802_11_ADD_WEP \n"); - + pWepKey = (PNDIS_802_11_WEP)pData; KeyIdx = pWepKey->KeyIndex & 0x0fffffff; @@ -1037,7 +1037,7 @@ NdisStatus = NDIS_STATUS_FAILURE; DBGPRINT(RT_DEBUG_ERROR, "CMDHandler::OID_802_11_ADD_WEP, INVALID_DATA!!\n"); } - else + else { UCHAR CipherAlg; pAd->SharedKey[KeyIdx].KeyLen = (UCHAR) pWepKey->KeyLength; @@ -1048,18 +1048,18 @@ { // Default key for tx (shared key) pAd->PortCfg.DefaultKeyId = (UCHAR) KeyIdx; - } + } AsicAddSharedKeyEntry(pAd, 0, (UCHAR)KeyIdx, CipherAlg, pWepKey->KeyMaterial, NULL, NULL); DBGPRINT(RT_DEBUG_TRACE, "CMDHandler::OID_802_11_ADD_WEP (KeyIdx=%d, Len=%d-byte)\n", KeyIdx, pWepKey->KeyLength); } } break; - + case OID_802_11_REMOVE_WEP: { ULONG KeyIdx; - + KeyIdx = *(NDIS_802_11_KEY_INDEX *) pData; if (KeyIdx & 0x80000000) { @@ -1081,14 +1081,14 @@ AsicRemoveSharedKeyEntry(pAd, 0, (UCHAR)KeyIdx); DBGPRINT(RT_DEBUG_TRACE, "CMDHandler::OID_802_11_REMOVE_WEP (KeyIdx=%d)\n", KeyIdx); } - } + } } break; case OID_802_11_ADD_KEY_WEP: { PNDIS_802_11_KEY pKey; - ULONG i, KeyIdx; + ULONG i, KeyIdx; pKey = (PNDIS_802_11_KEY) pData; KeyIdx = pKey->KeyIndex & 0x0fffffff; @@ -1099,10 +1099,10 @@ NdisStatus = NDIS_STATUS_FAILURE; DBGPRINT(RT_DEBUG_ERROR, "CMDHandler::OID_802_11_ADD_KEY_WEP, Invalid KeyIdx[=%d]!!\n", KeyIdx); } - else + else { UCHAR CipherAlg; - + pAd->SharedKey[KeyIdx].KeyLen = (UCHAR) pKey->KeyLength; memcpy(pAd->SharedKey[KeyIdx].Key, &pKey->KeyMaterial, pKey->KeyLength); @@ -1118,12 +1118,12 @@ { for(i = 1; i < (16 / pKey->KeyLength); i++) { - memcpy(&pAd->SharedKey[KeyIdx].Key[i * pKey->KeyLength], - &pKey->KeyMaterial[0], + memcpy(&pAd->SharedKey[KeyIdx].Key[i * pKey->KeyLength], + &pKey->KeyMaterial[0], pKey->KeyLength); } - memcpy(&pAd->SharedKey[KeyIdx].Key[i * pKey->KeyLength], - &pKey->KeyMaterial[0], + memcpy(&pAd->SharedKey[KeyIdx].Key[i * pKey->KeyLength], + &pKey->KeyMaterial[0], 16 - (i * pKey->KeyLength)); } @@ -1135,16 +1135,16 @@ } AsicAddSharedKeyEntry(pAd, 0, (UCHAR)KeyIdx, CipherAlg, pAd->SharedKey[KeyIdx].Key, NULL, NULL); - DBGPRINT(RT_DEBUG_TRACE, "CMDHandler::OID_802_11_ADD_KEY_WEP (KeyIdx=%d, KeyLen=%d, CipherAlg=%d)\n", + DBGPRINT(RT_DEBUG_TRACE, "CMDHandler::OID_802_11_ADD_KEY_WEP (KeyIdx=%d, KeyLen=%d, CipherAlg=%d)\n", pAd->PortCfg.DefaultKeyId, pAd->SharedKey[KeyIdx].KeyLen, pAd->SharedKey[KeyIdx].CipherAlg); } } break; case OID_802_11_ADD_KEY: - { + { PNDIS_802_11_KEY pkey = (PNDIS_802_11_KEY)pData; - + NdisStatus = RTMPWPAAddKeyProc(pAd, pkey); RTUSBBulkReceive(pAd); DBGPRINT(RT_DEBUG_TRACE, "CMDHandler::OID_802_11_ADD_KEY\n"); @@ -1157,7 +1157,7 @@ { ULONG KeyIdx; - + KeyIdx = *(NDIS_802_11_KEY_INDEX *) pData; if (KeyIdx & 0x80000000) { @@ -1179,7 +1179,7 @@ } } break; -#if 0 +#if 0 { //PNDIS_802_11_REMOVE_KEY pRemoveKey; ULONG KeyIdx; @@ -1190,7 +1190,7 @@ DBGPRINT(RT_DEBUG_ERROR, "CMDHandler::OID_802_11_REMOVE_WEP\n"); //if (InformationBufferLength != sizeof(NDIS_802_11_KEY_INDEX)) // Status = NDIS_STATUS_INVALID_LENGTH; - //else + //else { KeyIdx = *(NDIS_802_11_KEY_INDEX *) pData; @@ -1223,17 +1223,17 @@ { PNDIS_802_11_REMOVE_KEY pRemoveKey; ULONG KeyIdx; - + pRemoveKey = (PNDIS_802_11_REMOVE_KEY) pData; if (pAd->PortCfg.AuthMode >= Ndis802_11AuthModeWPA) { NdisStatus = RTMPWPARemoveKeyProc(pAd, pData); DBGPRINT(RT_DEBUG_TRACE, "CMDHandler::RTMPWPARemoveKeyProc\n"); } - else + else { KeyIdx = pRemoveKey->KeyIndex; - + if (KeyIdx & 0x80000000) { // Should never set default bit when remove key @@ -1246,7 +1246,7 @@ if (KeyIdx >= 4) { NdisStatus = NDIS_STATUS_FAILURE; - DBGPRINT(RT_DEBUG_ERROR, "CMDHandler::OID_802_11_REMOVE_KEY, Invalid KeyIdx[=%d]!!\n", KeyIdx); + DBGPRINT(RT_DEBUG_ERROR, "CMDHandler::OID_802_11_REMOVE_KEY, Invalid KeyIdx[=%d]!!\n", KeyIdx); } else { @@ -1260,24 +1260,24 @@ } break; - + case OID_802_11_POWER_MODE: { NDIS_802_11_POWER_MODE PowerMode = *(PNDIS_802_11_POWER_MODE) pData; DBGPRINT(RT_DEBUG_TRACE, "CMDHandler::OID_802_11_POWER_MODE (=%d)\n",PowerMode); - + // save user's policy here, but not change PortCfg.Psm immediately - if (PowerMode == Ndis802_11PowerModeCAM) + if (PowerMode == Ndis802_11PowerModeCAM) { // clear PSM bit immediately MlmeSetPsmBit(pAd, PWR_ACTIVE); - - OPSTATUS_SET_FLAG(pAd, fOP_STATUS_RECEIVE_DTIM); + + OPSTATUS_SET_FLAG(pAd, fOP_STATUS_RECEIVE_DTIM); if (pAd->PortCfg.bWindowsACCAMEnable == FALSE) pAd->PortCfg.WindowsPowerMode = PowerMode; pAd->PortCfg.WindowsBatteryPowerMode = PowerMode; - } - else if (PowerMode == Ndis802_11PowerModeMAX_PSP) + } + else if (PowerMode == Ndis802_11PowerModeMAX_PSP) { // do NOT turn on PSM bit here, wait until MlmeCheckPsmChange() // to exclude certain situations. @@ -1285,10 +1285,10 @@ if (pAd->PortCfg.bWindowsACCAMEnable == FALSE) pAd->PortCfg.WindowsPowerMode = PowerMode; pAd->PortCfg.WindowsBatteryPowerMode = PowerMode; - OPSTATUS_SET_FLAG(pAd, fOP_STATUS_RECEIVE_DTIM); + OPSTATUS_SET_FLAG(pAd, fOP_STATUS_RECEIVE_DTIM); pAd->PortCfg.DefaultListenCount = 5; - } - else if (PowerMode == Ndis802_11PowerModeFast_PSP) + } + else if (PowerMode == Ndis802_11PowerModeFast_PSP) { // do NOT turn on PSM bit here, wait until MlmeCheckPsmChange() // to exclude certain situations. @@ -1298,8 +1298,8 @@ pAd->PortCfg.WindowsPowerMode = PowerMode; pAd->PortCfg.WindowsBatteryPowerMode = PowerMode; pAd->PortCfg.DefaultListenCount = 3; - } - } + } + } break; case RT_PERFORM_SOFT_DIVERSITY: @@ -1318,7 +1318,7 @@ break; } - + if (cmdqelmt->CmdFromNdis == TRUE) { if ((cmdqelmt->command != OID_802_11_BSSID_LIST_SCAN) && @@ -1330,20 +1330,20 @@ if ((cmdqelmt->command != RT_OID_MULTI_READ_MAC) && (cmdqelmt->command != RT_OID_VENDOR_READ_BBP) && -#ifdef DBG +#ifdef DBG (cmdqelmt->command != RT_OID_802_11_QUERY_HARDWARE_REGISTER) && -#endif +#endif (cmdqelmt->command != RT_OID_USB_VENDOR_EEPROM_READ)) { if (cmdqelmt->buffer != NULL) kfree(cmdqelmt->buffer); } - + kfree((PCmdQElmt)cmdqelmt); } else cmdqelmt->InUse = FALSE; - + } @@ -1443,16 +1443,16 @@ PRTMP_ADAPTER pAd = (PRTMP_ADAPTER) net_dev->priv; NDIS_STATUS Status = NDIS_STATUS_SUCCESS; UCHAR TmpPhy; - + printk("rt73 driver version - %s\n", DRIVER_VERSION); init_MUTEX(&(pAd->usbdev_semaphore)); - + // init mediastate to disconnected OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED); - + pAd->rx_bh.func = RTUSBRxPacket; - + // Initialize pAd->PortCfg to manufacture default PortCfgInit(pAd); @@ -1481,19 +1481,19 @@ { goto out; } - + // Wait for hardware stable { ULONG MacCsr0 = 0, Index = 0; - + do { Status = RTUSBReadMACRegister(pAd, MAC_CSR0, &MacCsr0); if (MacCsr0 != 0) break; - + RTMPusecDelay(1000); } while (Index++ < 1000); DBGPRINT(RT_DEBUG_TRACE, "Init: MAC_CSR0=0x%08x, Status=0x%08x\n", MacCsr0, Status); @@ -1509,8 +1509,8 @@ // Initialize Asics NICInitializeAsic(pAd); - // Read RaConfig profile parameters -#ifdef READ_PROFILE_FROM_FILE + // Read RaConfig profile parameters +#ifdef READ_PROFILE_FROM_FILE RTMPReadParametersFromFile(pAd); #endif @@ -1560,7 +1560,7 @@ memcpy(pAd->net_dev->dev_addr, pAd->CurrentAddress, pAd->net_dev->addr_len); else memcpy(pAd->CurrentAddress, pAd->net_dev->dev_addr, pAd->net_dev->addr_len); - + // Clear Reset Flag before starting receiving/transmitting RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_RESET_IN_PROGRESS); @@ -1577,10 +1577,10 @@ // USB_ID info for UI pAd->VendorDesc = 0x148F2573; - + // Start net_dev interface tx /rx netif_start_queue(net_dev); - + netif_carrier_on(net_dev); netif_wake_queue(net_dev); return 0; @@ -1598,17 +1598,17 @@ PRTMP_ADAPTER pAd = (PRTMP_ADAPTER) net_dev->priv; int ret; int i = 0; - - DECLARE_WAIT_QUEUE_HEAD (unlink_wakeup); + + DECLARE_WAIT_QUEUE_HEAD (unlink_wakeup); DECLARE_WAITQUEUE (wait, current); - + DBGPRINT(RT_DEBUG_TRACE,"-->rt73_close\n"); - + netif_carrier_off(pAd->net_dev); netif_stop_queue(pAd->net_dev); DBGPRINT(RT_DEBUG_INFO,"Ensure there are no more active urbs \n"); - // ensure there are no more active urbs. + // ensure there are no more active urbs. add_wait_queue (&unlink_wakeup, &wait); pAd->wait = &unlink_wakeup; // maybe wait for deletions to finish. @@ -1618,35 +1618,35 @@ DBGPRINT (RT_DEBUG_INFO,"waited for %d urb to complete\n", atomic_read(&pAd->PendingRx)); } pAd->wait = NULL; - remove_wait_queue (&unlink_wakeup, &wait); + remove_wait_queue (&unlink_wakeup, &wait); - if (pAd->MLMEThr_pid >= 0) + if (pAd->MLMEThr_pid >= 0) { mlme_kill = 1; RTUSBMlmeUp(pAd); wmb(); // need to check ret = kill_proc (pAd->MLMEThr_pid, SIGTERM, 1); - if (ret) + if (ret) { printk (KERN_ERR "%s: unable to signal thread\n", pAd->net_dev->name); //return ret; Fix process killing } wait_for_completion (&pAd->notify); } - if (pAd->RTUSBCmdThr_pid>= 0) + if (pAd->RTUSBCmdThr_pid>= 0) { RTUSBCmd_kill = 1; RTUSBCMDUp(pAd); wmb(); // need to check ret = kill_proc (pAd->RTUSBCmdThr_pid, SIGTERM, 1); - if (ret) + if (ret) { printk (KERN_ERR "%s: unable to signal thread\n", pAd->net_dev->name); //return ret; Fix process killing } wait_for_completion (&pAd->notify); } - + RTUSBHalt(pAd, TRUE); DBGPRINT(RT_DEBUG_TRACE,"<--rt73_close\n"); @@ -1676,7 +1676,7 @@ /* lock the device pointers , need to check if required*/ down(&(pAd->usbdev_semaphore)); - MlmeHandler(pAd); + MlmeHandler(pAd); /* unlock the device pointers */ up(&(pAd->usbdev_semaphore)); @@ -1703,7 +1703,7 @@ } #endif - /* notify the exit routine that we're actually exiting now + /* notify the exit routine that we're actually exiting now * * complete()/wait_for_completion() is similar to up()/down(), * except that complete() is safe in the case where the structure @@ -1744,13 +1744,13 @@ /* lock the device pointers , need to check if required*/ down(&(pAd->usbdev_semaphore)); - CMDHandler(pAd); + CMDHandler(pAd); /* unlock the device pointers */ up(&(pAd->usbdev_semaphore)); } - /* notify the exit routine that we're actually exiting now + /* notify the exit routine that we're actually exiting now * * complete()/wait_for_completion() is similar to up()/down(), * except that complete() is safe in the case where the structure @@ -1771,12 +1771,12 @@ static void *usb_rtusb_probe(struct usb_device *dev, UINT interface, const struct usb_device_id *id_table) -{ +{ PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)NULL; int i; struct net_device *netdev; int res = -ENOMEM; - + for (i = 0; i < rtusb_usb_id_len; i++) { if (le32_to_cpu(dev->descriptor.idVendor) == rtusb_usb_id[i].idVendor && @@ -1797,20 +1797,22 @@ if(!netdev) { printk("alloc_etherdev failed\n"); - + MOD_DEC_USE_COUNT; usb_dec_dev_use(dev); return NULL; } - + pAd = netdev->priv; pAd->net_dev = netdev; netif_stop_queue(netdev); pAd->config = dev->config; pAd->pUsb_Dev= dev; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) SET_MODULE_OWNER(pAd->net_dev); +#endif ether_setup(pAd->net_dev); - + netdev->open = usb_rtusb_open; netdev->hard_start_xmit = RTMPSendPackets; netdev->stop = usb_rtusb_close; @@ -1826,22 +1828,24 @@ pAd->net_dev->hard_header_len = 14; pAd->net_dev->mtu = 1500; pAd->net_dev->addr_len = 6; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) pAd->net_dev->weight = 64; +#endif OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED); - {// find available + {// find available int i=0; char slot_name[IFNAMSIZ]; struct net_device *device; - struct usb_interface *ifp= &dev->actconfig->interface[interface]; // get interface from system + struct usb_interface *ifp= &dev->actconfig->interface[interface]; // get interface from system struct usb_interface_descriptor *as; - struct usb_endpoint_descriptor *ep; + struct usb_endpoint_descriptor *ep; for (i = 0; i < 8; i++) { sprintf(slot_name, "rausb%d", i); - + read_lock_bh(&dev_base_lock); // avoid multiple init for (device = dev_base; device != NULL; device = device->next) { @@ -1876,13 +1880,13 @@ //pAd->rx_bh.data = (unsigned long)pAd; pAd->rx_bh.func = RTUSBRxPacket; - + res = register_netdev(pAd->net_dev); if (res) goto out; return pAd; - + out: printk("register_netdev failed err=%d\n",res); return NULL; @@ -1892,16 +1896,16 @@ static void usb_rtusb_disconnect(struct usb_device *dev, void *ptr) { PRTMP_ADAPTER pAd = (PRTMP_ADAPTER) ptr; - + if (!pAd) return; - + tasklet_kill(&pAd->rx_bh); RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST); // for debug, wait to show some messages to /proc system udelay(1); - //After Add Thread implementation, Upon exec there, pAd->net_dev seems becomes NULL, + //After Add Thread implementation, Upon exec there, pAd->net_dev seems becomes NULL, //need to check why??? //assert(pAd->net_dev != NULL) if(pAd->net_dev != NULL) @@ -1926,19 +1930,19 @@ PRTMP_ADAPTER pAd = (PRTMP_ADAPTER) net_dev->priv; int ret; int i = 0; - - DECLARE_WAIT_QUEUE_HEAD (unlink_wakeup); + + DECLARE_WAIT_QUEUE_HEAD (unlink_wakeup); DECLARE_WAITQUEUE (wait, current); - + DBGPRINT(RT_DEBUG_TRACE,"-->rt73_close \n"); - + netif_carrier_off(pAd->net_dev); netif_stop_queue(pAd->net_dev); - // ensure there are no more active urbs. + // ensure there are no more active urbs. add_wait_queue (&unlink_wakeup, &wait); pAd->wait = &unlink_wakeup; - + // maybe wait for deletions to finish. while ((i < 25) && atomic_read(&pAd->PendingRx) > 0) { #if LINUX_VERSION_CODE >KERNEL_VERSION(2,6,9) @@ -1948,28 +1952,28 @@ i++; } pAd->wait = NULL; - remove_wait_queue (&unlink_wakeup, &wait); + remove_wait_queue (&unlink_wakeup, &wait); - if (pAd->MLMEThr_pid >= 0) + if (pAd->MLMEThr_pid >= 0) { mlme_kill = 1; RTUSBMlmeUp(pAd); wmb(); // need to check ret = kill_proc (pAd->MLMEThr_pid, SIGTERM, 1); - if (ret) + if (ret) { printk (KERN_ERR "%s: unable to signal thread\n", pAd->net_dev->name); //return ret; } wait_for_completion (&pAd->notify); } - if (pAd->RTUSBCmdThr_pid>= 0) + if (pAd->RTUSBCmdThr_pid>= 0) { RTUSBCmd_kill = 1; RTUSBCMDUp(pAd); wmb(); // need to check ret = kill_proc (pAd->RTUSBCmdThr_pid, SIGTERM, 1); - if (ret) + if (ret) { printk (KERN_ERR "%s: unable to signal thread\n", pAd->net_dev->name); //return ret; @@ -1977,7 +1981,7 @@ wait_for_completion (&pAd->notify); } RTUSBHalt(pAd, TRUE); - + DBGPRINT(RT_DEBUG_TRACE,"<--rt73_close \n"); return 0; @@ -2008,13 +2012,13 @@ /* lock the device pointers , need to check if required*/ down(&(pAd->usbdev_semaphore)); - MlmeHandler(pAd); + MlmeHandler(pAd); /* unlock the device pointers */ up(&(pAd->usbdev_semaphore)); } - /* notify the exit routine that we're actually exiting now + /* notify the exit routine that we're actually exiting now * * complete()/wait_for_completion() is similar to up()/down(), * except that complete() is safe in the case where the structure @@ -2057,13 +2061,13 @@ /* lock the device pointers , need to check if required*/ down(&(pAd->usbdev_semaphore)); - CMDHandler(pAd); + CMDHandler(pAd); /* unlock the device pointers */ up(&(pAd->usbdev_semaphore)); } - /* notify the exit routine that we're actually exiting now + /* notify the exit routine that we're actually exiting now * * complete()/wait_for_completion() is similar to up()/down(), * except that complete() is safe in the case where the structure @@ -2082,7 +2086,7 @@ static int usb_rtusb_probe (struct usb_interface *intf, const struct usb_device_id *id) -{ +{ struct usb_device *dev = interface_to_usbdev(intf); PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)NULL; int i; @@ -2111,19 +2115,21 @@ if(!netdev) { printk("alloc_etherdev failed\n"); - + module_put(THIS_MODULE); return res; } - + pAd = netdev->priv; pAd->net_dev = netdev; netif_stop_queue(netdev); pAd->config = &dev->config->desc; pAd->pUsb_Dev = dev; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) SET_MODULE_OWNER(pAd->net_dev); +#endif ether_setup(pAd->net_dev); - + netdev->open = usb_rtusb_open; netdev->stop = usb_rtusb_close; netdev->priv = pAd; @@ -2141,7 +2147,9 @@ pAd->net_dev->hard_header_len = 14; pAd->net_dev->mtu = 1500; pAd->net_dev->addr_len = 6; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) pAd->net_dev->weight = 64; +#endif OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED); @@ -2149,23 +2157,23 @@ pAd->RTUSBCmdThr_pid= -1; SET_NETDEV_DEV(pAd->net_dev, &intf->dev); - - {// find available + + {// find available int i=0; char slot_name[IFNAMSIZ]; //struct net_device *device; struct usb_host_interface *iface_desc; struct usb_endpoint_descriptor *endpoint; - + for (i = 0; i < 8; i++) { sprintf(slot_name, "rausb%d", i); -#if 1 - if(dev_get_by_name(slot_name)==NULL) +#if 1 + if(dev_get_by_name(&init_net, slot_name)==NULL) break; -#else +#else read_lock_bh(&dev_base_lock); // avoid multiple init for (device = dev_base; device != NULL; device = device->next) { @@ -2175,9 +2183,9 @@ } } read_unlock_bh(&dev_base_lock); - + if(device == NULL) break; -#endif +#endif } if(i == 8) { @@ -2194,18 +2202,18 @@ /* check out the endpoint: it has to be Interrupt & IN */ endpoint = &iface_desc->endpoint[i].desc; - + /* get Max Packet Size from endpoint */ pAd->BulkOutMaxPacketSize = (USHORT)endpoint->wMaxPacketSize; DBGPRINT(RT_DEBUG_TRACE, "BulkOutMaxPacketSize %d\n", pAd->BulkOutMaxPacketSize); } - + //bottom half data is assign at each task_scheduler //pAd->rx_bh.data = (unsigned long)pAd; pAd->rx_bh.func = RTUSBRxPacket; - + res = register_netdev(pAd->net_dev); if (res) goto out; @@ -2217,7 +2225,7 @@ usb_set_intfdata(intf, pAd); return 0; - + out: printk("register_netdev failed err=%d\n",res); free_netdev(netdev); @@ -2229,7 +2237,7 @@ { struct usb_device *dev = interface_to_usbdev(intf); PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)NULL; - + pAd = usb_get_intfdata(intf); usb_set_intfdata(intf, NULL); @@ -2238,11 +2246,11 @@ dev->bus->bus_name, dev->devpath); if (!pAd) return; - + tasklet_kill(&pAd->rx_bh); // for debug, wait to show some messages to /proc system udelay(1); - //After Add Thread implementation, Upon exec there, pAd->net_dev seems becomes NULL, + //After Add Thread implementation, Upon exec there, pAd->net_dev seems becomes NULL, //need to check why??? //assert(pAd->net_dev != NULL) if(pAd->net_dev!= NULL) @@ -2295,7 +2303,7 @@ udelay(1); udelay(1); usb_deregister(&rtusb_driver); - + printk("<=== rtusb exit\n"); } /**************************************/