-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge git://git.kernel.org/pub/scm/linux/kernel/git/lwfinger/r8192E i…
…nto staging-next * git://git.kernel.org/pub/scm/linux/kernel/git/lwfinger/r8192E: (61 commits) staging: rtl8192e: Fix compilation warnings staging: rtl8192e: Fix unload/reload problem staging: rtl8192e: Remove dead code associated with CONFIG_RTL_RFKILL staging: rtl8192e: Remove conditional code associated with EEPROM_OLD_FORMAT_SUPPORT staging: rtl8192e: Remove dead code associated with EFUSE_REPG_WORKAROUND staging: rtl8192e: Remove LOOP_TEST as parameter staging: rtl8192e: Remove dead code associated with CONFIG_FW_SETCHAN staging: rtl8192e: Remove dead code associated with CONFIG_RTLWIFI_DEBUGFS staging: rtl8192e: Remove dead code associated with _RTL8192_EXT_PATCH_ staging: rtl8192e: Remove ifdefs for CONFIG_RTLLIB_DEBUG staging: rtl8192e: Remove dead code associated with RTL819x_DEBUG staging: rtl8192e: Remove dead code associated with _ENABLE_SW_BEACON staging: rtl8192e: Remove dead code associated with CONFIG_CRYPTO_HMAC staging: rtl8192e: Remove dead code associated with CONFIG_BT_30 staging: rtl8192e: Remove dead code associated with ENABLE_NULL_PT_DEBUG staging: rtl8192e: Remove dead code associated with CONFIG_64BIT_DMA staging: rtl8192e: Remove dead code associated with CONFIG_RTLLIB_CRYPT_TKIP staging: rtl8192e: Remove dead code associated with IRQF_SHARED staging: rtl8192e: Remove dead code associated with CONFIG_CFG_80211 staging: rtl8192e: Remove dead code associated with BUILT_IN_CRYPTO ...
- Loading branch information
Showing
76 changed files
with
50,480 additions
and
12,563 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,38 +1,40 @@ | ||
NIC_SELECT = RTL8192E | ||
|
||
ccflags-y := -DRTL8192E | ||
ccflags-y += -std=gnu89 | ||
ccflags-y += -O2 | ||
ccflags-y += -DTHOMAS_TURBO | ||
ccflags-y += -DUSE_FW_SOURCE_IMG_FILE | ||
ccflags-y += -DCONFIG_PM_RTL | ||
ccflags-y += -DCONFIG_PM | ||
ccflags-y += -DHAVE_NET_DEVICE_OPS | ||
ccflags-y += -DENABLE_DOT11D | ||
|
||
ccflags-y += -DENABLE_IPS | ||
ccflags-y += -DENABLE_LPS | ||
|
||
r8192e_pci-objs := \ | ||
r8192E_core.o \ | ||
r8180_93cx6.o \ | ||
r8192E_wx.o \ | ||
r8190_rtl8256.o \ | ||
r819xE_phy.o \ | ||
r819xE_firmware.o \ | ||
r819xE_cmdpkt.o \ | ||
r8192E_dm.o \ | ||
r8192_pm.o \ | ||
ieee80211/ieee80211_rx.o \ | ||
ieee80211/ieee80211_softmac.o \ | ||
ieee80211/ieee80211_tx.o \ | ||
ieee80211/ieee80211_wx.o \ | ||
ieee80211/ieee80211_module.o \ | ||
ieee80211/ieee80211_softmac_wx.o \ | ||
ieee80211/rtl819x_HTProc.o \ | ||
ieee80211/rtl819x_TSProc.o \ | ||
ieee80211/rtl819x_BAProc.o \ | ||
ieee80211/dot11d.o \ | ||
ieee80211/ieee80211_crypt.o \ | ||
ieee80211/ieee80211_crypt_tkip.o \ | ||
ieee80211/ieee80211_crypt_ccmp.o \ | ||
ieee80211/ieee80211_crypt_wep.o | ||
rtl_core.o \ | ||
rtl_eeprom.o \ | ||
rtl_ps.o \ | ||
rtl_wx.o \ | ||
rtl_cam.o \ | ||
rtl_dm.o \ | ||
rtl_pm.o \ | ||
rtl_pci.o \ | ||
rtl_debug.o \ | ||
rtl_ethtool.o \ | ||
r8192E_dev.o \ | ||
r8192E_phy.o \ | ||
r8192E_firmware.o \ | ||
r8192E_cmdpkt.o \ | ||
r8192E_hwimg.o \ | ||
r8190P_rtl8256.o \ | ||
rtllib_rx.o \ | ||
rtllib_softmac.o \ | ||
rtllib_tx.o \ | ||
rtllib_wx.o \ | ||
rtllib_module.o \ | ||
rtllib_softmac_wx.o \ | ||
rtl819x_HTProc.o \ | ||
rtl819x_TSProc.o \ | ||
rtl819x_BAProc.o \ | ||
dot11d.o \ | ||
rtllib_crypt.o \ | ||
rtllib_crypt_tkip.o \ | ||
rtllib_crypt_ccmp.o \ | ||
rtllib_crypt_wep.o | ||
|
||
obj-$(CONFIG_RTL8192E) += r8192e_pci.o | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
* merge into drivers/net/wireless/rtllib/rtl8192e | ||
* clean up function naming |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,216 @@ | ||
/****************************************************************************** | ||
* Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved. | ||
* | ||
* 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., | ||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA | ||
* | ||
* The full GNU General Public License is included in this distribution in the | ||
* file called LICENSE. | ||
* | ||
* Contact Information: | ||
* wlanfae <wlanfae@realtek.com> | ||
******************************************************************************/ | ||
#include "dot11d.h" | ||
|
||
struct channel_list { | ||
u8 Channel[32]; | ||
u8 Len; | ||
}; | ||
|
||
static struct channel_list ChannelPlan[] = { | ||
{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 36, 40, 44, 48, 52, 56, 60, 64, | ||
149, 153, 157, 161, 165}, 24}, | ||
{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 11}, | ||
{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56, | ||
60, 64}, 21}, | ||
{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13}, | ||
{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13}, | ||
{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 36, 40, 44, 48, 52, | ||
56, 60, 64}, 22}, | ||
{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 36, 40, 44, 48, 52, | ||
56, 60, 64}, 22}, | ||
{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13}, | ||
{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 36, 40, 44, 48, 52, | ||
56, 60, 64}, 22}, | ||
{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 36, 40, 44, 48, 52, | ||
56, 60, 64}, 22}, | ||
{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}, 14}, | ||
{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}, 13}, | ||
{{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, | ||
56, 60, 64}, 21} | ||
}; | ||
|
||
void Dot11d_Init(struct rtllib_device *ieee) | ||
{ | ||
struct rt_dot11d_info *pDot11dInfo = GET_DOT11D_INFO(ieee); | ||
pDot11dInfo->bEnabled = false; | ||
|
||
pDot11dInfo->State = DOT11D_STATE_NONE; | ||
pDot11dInfo->CountryIeLen = 0; | ||
memset(pDot11dInfo->channel_map, 0, MAX_CHANNEL_NUMBER+1); | ||
memset(pDot11dInfo->MaxTxPwrDbmList, 0xFF, MAX_CHANNEL_NUMBER+1); | ||
RESET_CIE_WATCHDOG(ieee); | ||
|
||
} | ||
|
||
void Dot11d_Channelmap(u8 channel_plan, struct rtllib_device *ieee) | ||
{ | ||
int i, max_chan = 14, min_chan = 1; | ||
|
||
ieee->bGlobalDomain = false; | ||
|
||
if (ChannelPlan[channel_plan].Len != 0) { | ||
memset(GET_DOT11D_INFO(ieee)->channel_map, 0, | ||
sizeof(GET_DOT11D_INFO(ieee)->channel_map)); | ||
for (i = 0; i < ChannelPlan[channel_plan].Len; i++) { | ||
if (ChannelPlan[channel_plan].Channel[i] < min_chan || | ||
ChannelPlan[channel_plan].Channel[i] > max_chan) | ||
break; | ||
GET_DOT11D_INFO(ieee)->channel_map[ChannelPlan | ||
[channel_plan].Channel[i]] = 1; | ||
} | ||
} | ||
|
||
switch (channel_plan) { | ||
case COUNTRY_CODE_GLOBAL_DOMAIN: | ||
ieee->bGlobalDomain = true; | ||
for (i = 12; i <= 14; i++) | ||
GET_DOT11D_INFO(ieee)->channel_map[i] = 2; | ||
ieee->IbssStartChnl = 10; | ||
ieee->ibss_maxjoin_chal = 11; | ||
break; | ||
|
||
case COUNTRY_CODE_WORLD_WIDE_13: | ||
for (i = 12; i <= 13; i++) | ||
GET_DOT11D_INFO(ieee)->channel_map[i] = 2; | ||
ieee->IbssStartChnl = 10; | ||
ieee->ibss_maxjoin_chal = 11; | ||
break; | ||
|
||
default: | ||
ieee->IbssStartChnl = 1; | ||
ieee->ibss_maxjoin_chal = 14; | ||
break; | ||
} | ||
} | ||
|
||
|
||
void Dot11d_Reset(struct rtllib_device *ieee) | ||
{ | ||
struct rt_dot11d_info *pDot11dInfo = GET_DOT11D_INFO(ieee); | ||
u32 i; | ||
|
||
memset(pDot11dInfo->channel_map, 0, MAX_CHANNEL_NUMBER+1); | ||
memset(pDot11dInfo->MaxTxPwrDbmList, 0xFF, MAX_CHANNEL_NUMBER+1); | ||
for (i = 1; i <= 11; i++) | ||
(pDot11dInfo->channel_map)[i] = 1; | ||
for (i = 12; i <= 14; i++) | ||
(pDot11dInfo->channel_map)[i] = 2; | ||
pDot11dInfo->State = DOT11D_STATE_NONE; | ||
pDot11dInfo->CountryIeLen = 0; | ||
RESET_CIE_WATCHDOG(ieee); | ||
} | ||
|
||
void Dot11d_UpdateCountryIe(struct rtllib_device *dev, u8 *pTaddr, | ||
u16 CoutryIeLen, u8 *pCoutryIe) | ||
{ | ||
struct rt_dot11d_info *pDot11dInfo = GET_DOT11D_INFO(dev); | ||
u8 i, j, NumTriples, MaxChnlNum; | ||
struct chnl_txpow_triple *pTriple; | ||
|
||
memset(pDot11dInfo->channel_map, 0, MAX_CHANNEL_NUMBER+1); | ||
memset(pDot11dInfo->MaxTxPwrDbmList, 0xFF, MAX_CHANNEL_NUMBER+1); | ||
MaxChnlNum = 0; | ||
NumTriples = (CoutryIeLen - 3) / 3; | ||
pTriple = (struct chnl_txpow_triple *)(pCoutryIe + 3); | ||
for (i = 0; i < NumTriples; i++) { | ||
if (MaxChnlNum >= pTriple->FirstChnl) { | ||
printk(KERN_INFO "Dot11d_UpdateCountryIe(): Invalid" | ||
" country IE, skip it........1\n"); | ||
return; | ||
} | ||
if (MAX_CHANNEL_NUMBER < (pTriple->FirstChnl + | ||
pTriple->NumChnls)) { | ||
printk(KERN_INFO "Dot11d_UpdateCountryIe(): Invalid " | ||
"country IE, skip it........2\n"); | ||
return; | ||
} | ||
|
||
for (j = 0 ; j < pTriple->NumChnls; j++) { | ||
pDot11dInfo->channel_map[pTriple->FirstChnl + j] = 1; | ||
pDot11dInfo->MaxTxPwrDbmList[pTriple->FirstChnl + j] = | ||
pTriple->MaxTxPowerInDbm; | ||
MaxChnlNum = pTriple->FirstChnl + j; | ||
} | ||
|
||
pTriple = (struct chnl_txpow_triple *)((u8*)pTriple + 3); | ||
} | ||
|
||
UPDATE_CIE_SRC(dev, pTaddr); | ||
|
||
pDot11dInfo->CountryIeLen = CoutryIeLen; | ||
memcpy(pDot11dInfo->CountryIeBuf, pCoutryIe, CoutryIeLen); | ||
pDot11dInfo->State = DOT11D_STATE_LEARNED; | ||
} | ||
|
||
u8 DOT11D_GetMaxTxPwrInDbm(struct rtllib_device *dev, u8 Channel) | ||
{ | ||
struct rt_dot11d_info *pDot11dInfo = GET_DOT11D_INFO(dev); | ||
u8 MaxTxPwrInDbm = 255; | ||
|
||
if (MAX_CHANNEL_NUMBER < Channel) { | ||
printk(KERN_INFO "DOT11D_GetMaxTxPwrInDbm(): Invalid " | ||
"Channel\n"); | ||
return MaxTxPwrInDbm; | ||
} | ||
if (pDot11dInfo->channel_map[Channel]) | ||
MaxTxPwrInDbm = pDot11dInfo->MaxTxPwrDbmList[Channel]; | ||
|
||
return MaxTxPwrInDbm; | ||
} | ||
|
||
void DOT11D_ScanComplete(struct rtllib_device *dev) | ||
{ | ||
struct rt_dot11d_info *pDot11dInfo = GET_DOT11D_INFO(dev); | ||
|
||
switch (pDot11dInfo->State) { | ||
case DOT11D_STATE_LEARNED: | ||
pDot11dInfo->State = DOT11D_STATE_DONE; | ||
break; | ||
case DOT11D_STATE_DONE: | ||
Dot11d_Reset(dev); | ||
break; | ||
case DOT11D_STATE_NONE: | ||
break; | ||
} | ||
} | ||
|
||
int ToLegalChannel(struct rtllib_device *dev, u8 channel) | ||
{ | ||
struct rt_dot11d_info *pDot11dInfo = GET_DOT11D_INFO(dev); | ||
u8 default_chn = 0; | ||
u32 i; | ||
|
||
for (i = 1; i <= MAX_CHANNEL_NUMBER; i++) { | ||
if (pDot11dInfo->channel_map[i] > 0) { | ||
default_chn = i; | ||
break; | ||
} | ||
} | ||
|
||
if (MAX_CHANNEL_NUMBER < channel) { | ||
printk(KERN_ERR "%s(): Invalid Channel\n", __func__); | ||
return default_chn; | ||
} | ||
|
||
if (pDot11dInfo->channel_map[channel] > 0) | ||
return channel; | ||
|
||
return default_chn; | ||
} |
Oops, something went wrong.