mirror of
https://github.com/Mange/rtl8192eu-linux-driver
synced 2024-11-25 23:15:00 +00:00
Merge branch 'master' into v4.4.1
This commit is contained in:
commit
aa5570d0d1
@ -124,8 +124,10 @@ void rtw_os_ndevs_deinit(struct dvobj_priv *dvobj);
|
|||||||
u16 rtw_recv_select_queue(struct sk_buff *skb);
|
u16 rtw_recv_select_queue(struct sk_buff *skb);
|
||||||
#endif //LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)
|
#endif //LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35)
|
||||||
|
|
||||||
|
#if (LINUX_VERSION_CODE<KERNEL_VERSION(3, 11, 0))
|
||||||
int rtw_ndev_notifier_register(void);
|
int rtw_ndev_notifier_register(void);
|
||||||
void rtw_ndev_notifier_unregister(void);
|
void rtw_ndev_notifier_unregister(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "../os_dep/linux/rtw_proc.h"
|
#include "../os_dep/linux/rtw_proc.h"
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ static const u32 rtw_cipher_suites[] = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define CHAN2G(_channel, _freq, _flags) { \
|
#define CHAN2G(_channel, _freq, _flags) { \
|
||||||
.band = IEEE80211_BAND_2GHZ, \
|
.band = NL80211_BAND_2GHZ, \
|
||||||
.center_freq = (_freq), \
|
.center_freq = (_freq), \
|
||||||
.hw_value = (_channel), \
|
.hw_value = (_channel), \
|
||||||
.flags = (_flags), \
|
.flags = (_flags), \
|
||||||
@ -108,7 +108,7 @@ static const u32 rtw_cipher_suites[] = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define CHAN5G(_channel, _flags) { \
|
#define CHAN5G(_channel, _flags) { \
|
||||||
.band = IEEE80211_BAND_5GHZ, \
|
.band = NL80211_BAND_5GHZ, \
|
||||||
.center_freq = 5000 + (5 * (_channel)), \
|
.center_freq = 5000 + (5 * (_channel)), \
|
||||||
.hw_value = (_channel), \
|
.hw_value = (_channel), \
|
||||||
.flags = (_flags), \
|
.flags = (_flags), \
|
||||||
@ -225,18 +225,18 @@ void rtw_5g_rates_init(struct ieee80211_rate *rates)
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct ieee80211_supported_band *rtw_spt_band_alloc(
|
struct ieee80211_supported_band *rtw_spt_band_alloc(
|
||||||
enum ieee80211_band band
|
enum nl80211_band band
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
struct ieee80211_supported_band *spt_band = NULL;
|
struct ieee80211_supported_band *spt_band = NULL;
|
||||||
int n_channels, n_bitrates;
|
int n_channels, n_bitrates;
|
||||||
|
|
||||||
if(band == IEEE80211_BAND_2GHZ)
|
if(band == NL80211_BAND_2GHZ)
|
||||||
{
|
{
|
||||||
n_channels = RTW_2G_CHANNELS_NUM;
|
n_channels = RTW_2G_CHANNELS_NUM;
|
||||||
n_bitrates = RTW_G_RATES_NUM;
|
n_bitrates = RTW_G_RATES_NUM;
|
||||||
}
|
}
|
||||||
else if(band == IEEE80211_BAND_5GHZ)
|
else if(band == NL80211_BAND_5GHZ)
|
||||||
{
|
{
|
||||||
n_channels = RTW_5G_CHANNELS_NUM;
|
n_channels = RTW_5G_CHANNELS_NUM;
|
||||||
n_bitrates = RTW_A_RATES_NUM;
|
n_bitrates = RTW_A_RATES_NUM;
|
||||||
@ -260,12 +260,12 @@ struct ieee80211_supported_band *rtw_spt_band_alloc(
|
|||||||
spt_band->n_channels = n_channels;
|
spt_band->n_channels = n_channels;
|
||||||
spt_band->n_bitrates = n_bitrates;
|
spt_band->n_bitrates = n_bitrates;
|
||||||
|
|
||||||
if(band == IEEE80211_BAND_2GHZ)
|
if(band == NL80211_BAND_2GHZ)
|
||||||
{
|
{
|
||||||
rtw_2g_channels_init(spt_band->channels);
|
rtw_2g_channels_init(spt_band->channels);
|
||||||
rtw_2g_rates_init(spt_band->bitrates);
|
rtw_2g_rates_init(spt_band->bitrates);
|
||||||
}
|
}
|
||||||
else if(band == IEEE80211_BAND_5GHZ)
|
else if(band == NL80211_BAND_5GHZ)
|
||||||
{
|
{
|
||||||
rtw_5g_channels_init(spt_band->channels);
|
rtw_5g_channels_init(spt_band->channels);
|
||||||
rtw_5g_rates_init(spt_band->bitrates);
|
rtw_5g_rates_init(spt_band->bitrates);
|
||||||
@ -285,13 +285,13 @@ void rtw_spt_band_free(struct ieee80211_supported_band *spt_band)
|
|||||||
if(!spt_band)
|
if(!spt_band)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(spt_band->band == IEEE80211_BAND_2GHZ)
|
if(spt_band->band == NL80211_BAND_2GHZ)
|
||||||
{
|
{
|
||||||
size = sizeof(struct ieee80211_supported_band)
|
size = sizeof(struct ieee80211_supported_band)
|
||||||
+ sizeof(struct ieee80211_channel)*RTW_2G_CHANNELS_NUM
|
+ sizeof(struct ieee80211_channel)*RTW_2G_CHANNELS_NUM
|
||||||
+ sizeof(struct ieee80211_rate)*RTW_G_RATES_NUM;
|
+ sizeof(struct ieee80211_rate)*RTW_G_RATES_NUM;
|
||||||
}
|
}
|
||||||
else if(spt_band->band == IEEE80211_BAND_5GHZ)
|
else if(spt_band->band == NL80211_BAND_5GHZ)
|
||||||
{
|
{
|
||||||
size = sizeof(struct ieee80211_supported_band)
|
size = sizeof(struct ieee80211_supported_band)
|
||||||
+ sizeof(struct ieee80211_channel)*RTW_5G_CHANNELS_NUM
|
+ sizeof(struct ieee80211_channel)*RTW_5G_CHANNELS_NUM
|
||||||
@ -810,6 +810,19 @@ check_bss:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
DBG_871X(FUNC_ADPT_FMT" call cfg80211_roamed\n", FUNC_ADPT_ARG(padapter));
|
DBG_871X(FUNC_ADPT_FMT" call cfg80211_roamed\n", FUNC_ADPT_ARG(padapter));
|
||||||
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
|
||||||
|
{
|
||||||
|
struct cfg80211_roam_info roam_info = {
|
||||||
|
.channel = notify_channel,
|
||||||
|
.bssid = cur_network->network.MacAddress,
|
||||||
|
.req_ie = pmlmepriv->assoc_req+sizeof(struct rtw_ieee80211_hdr_3addr)+2,
|
||||||
|
.req_ie_len = pmlmepriv->assoc_req_len-sizeof(struct rtw_ieee80211_hdr_3addr)-2,
|
||||||
|
.resp_ie = pmlmepriv->assoc_rsp+sizeof(struct rtw_ieee80211_hdr_3addr)+6,
|
||||||
|
.resp_ie_len = pmlmepriv->assoc_rsp_len-sizeof(struct rtw_ieee80211_hdr_3addr)-6,
|
||||||
|
};
|
||||||
|
cfg80211_roamed(padapter->pnetdev, &roam_info, GFP_ATOMIC);
|
||||||
|
}
|
||||||
|
#else
|
||||||
cfg80211_roamed(padapter->pnetdev
|
cfg80211_roamed(padapter->pnetdev
|
||||||
#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) || defined(COMPAT_KERNEL_RELEASE)
|
#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) || defined(COMPAT_KERNEL_RELEASE)
|
||||||
, notify_channel
|
, notify_channel
|
||||||
@ -820,6 +833,7 @@ check_bss:
|
|||||||
, pmlmepriv->assoc_rsp+sizeof(struct rtw_ieee80211_hdr_3addr)+6
|
, pmlmepriv->assoc_rsp+sizeof(struct rtw_ieee80211_hdr_3addr)+6
|
||||||
, pmlmepriv->assoc_rsp_len-sizeof(struct rtw_ieee80211_hdr_3addr)-6
|
, pmlmepriv->assoc_rsp_len-sizeof(struct rtw_ieee80211_hdr_3addr)-6
|
||||||
, GFP_ATOMIC);
|
, GFP_ATOMIC);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1901,10 +1915,17 @@ enum nl80211_iftype {
|
|||||||
NL80211_IFTYPE_MAX = NUM_NL80211_IFTYPES - 1
|
NL80211_IFTYPE_MAX = NUM_NL80211_IFTYPES - 1
|
||||||
};
|
};
|
||||||
*/
|
*/
|
||||||
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
|
||||||
|
static int cfg80211_rtw_change_iface(struct wiphy *wiphy,
|
||||||
|
struct net_device *ndev,
|
||||||
|
enum nl80211_iftype type,
|
||||||
|
struct vif_params *params)
|
||||||
|
#else
|
||||||
static int cfg80211_rtw_change_iface(struct wiphy *wiphy,
|
static int cfg80211_rtw_change_iface(struct wiphy *wiphy,
|
||||||
struct net_device *ndev,
|
struct net_device *ndev,
|
||||||
enum nl80211_iftype type, u32 *flags,
|
enum nl80211_iftype type, u32 *flags,
|
||||||
struct vif_params *params)
|
struct vif_params *params)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
enum nl80211_iftype old_type;
|
enum nl80211_iftype old_type;
|
||||||
NDIS_802_11_NETWORK_INFRASTRUCTURE networkType;
|
NDIS_802_11_NETWORK_INFRASTRUCTURE networkType;
|
||||||
@ -4027,6 +4048,7 @@ static int
|
|||||||
unsigned char name_assign_type,
|
unsigned char name_assign_type,
|
||||||
#endif
|
#endif
|
||||||
enum nl80211_iftype type, u32 *flags, struct vif_params *params)
|
enum nl80211_iftype type, u32 *flags, struct vif_params *params)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
struct net_device* ndev = NULL;
|
struct net_device* ndev = NULL;
|
||||||
@ -6374,7 +6396,7 @@ static void rtw_cfg80211_init_ht_capab(_adapter *padapter, struct ieee80211_sta_
|
|||||||
ht_cap->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
|
ht_cap->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*hw->wiphy->bands[IEEE80211_BAND_2GHZ]
|
*hw->wiphy->bands[NL80211_BAND_2GHZ]
|
||||||
*base on ant_num
|
*base on ant_num
|
||||||
*rx_mask: RX mask
|
*rx_mask: RX mask
|
||||||
*if rx_ant =1 rx_mask[0]=0xff;==>MCS0-MCS7
|
*if rx_ant =1 rx_mask[0]=0xff;==>MCS0-MCS7
|
||||||
@ -6532,7 +6554,11 @@ static void rtw_cfg80211_preinit_wiphy(_adapter *adapter, struct wiphy *wiphy)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_PM) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0))
|
#if defined(CONFIG_PM) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0))
|
||||||
|
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0))
|
||||||
wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN;
|
wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN;
|
||||||
|
#else // kernel >= 4.12
|
||||||
|
wiphy->max_sched_scan_reqs = 1;
|
||||||
|
#endif
|
||||||
#ifdef CONFIG_PNO_SUPPORT
|
#ifdef CONFIG_PNO_SUPPORT
|
||||||
wiphy->max_sched_scan_ssids = MAX_PNO_LIST_COUNT;
|
wiphy->max_sched_scan_ssids = MAX_PNO_LIST_COUNT;
|
||||||
#endif
|
#endif
|
||||||
|
@ -978,7 +978,6 @@ u16 rtw_recv_select_queue(struct sk_buff *skb)
|
|||||||
return rtw_1d_to_queue[priority];
|
return rtw_1d_to_queue[priority];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
static int rtw_ndev_notifier_call(struct notifier_block * nb, unsigned long state, void *ptr)
|
static int rtw_ndev_notifier_call(struct notifier_block * nb, unsigned long state, void *ptr)
|
||||||
{
|
{
|
||||||
@ -1031,7 +1030,7 @@ void rtw_ndev_notifier_unregister(void)
|
|||||||
{
|
{
|
||||||
unregister_netdevice_notifier(&rtw_ndev_notifier);
|
unregister_netdevice_notifier(&rtw_ndev_notifier);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int rtw_ndev_init(struct net_device *dev)
|
int rtw_ndev_init(struct net_device *dev)
|
||||||
{
|
{
|
||||||
@ -1071,9 +1070,15 @@ static const struct net_device_ops rtw_netdev_ops = {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static const struct device_type wlan_type = {
|
||||||
|
.name = "wlan",
|
||||||
|
};
|
||||||
|
|
||||||
int rtw_init_netdev_name(struct net_device *pnetdev, const char *ifname)
|
int rtw_init_netdev_name(struct net_device *pnetdev, const char *ifname)
|
||||||
{
|
{
|
||||||
_adapter *padapter = rtw_netdev_priv(pnetdev);
|
_adapter *padapter;
|
||||||
|
pnetdev->dev.type = &wlan_type;
|
||||||
|
padapter = rtw_netdev_priv(pnetdev);
|
||||||
|
|
||||||
#ifdef CONFIG_EASY_REPLACEMENT
|
#ifdef CONFIG_EASY_REPLACEMENT
|
||||||
struct net_device *TargetNetdev = NULL;
|
struct net_device *TargetNetdev = NULL;
|
||||||
|
@ -351,7 +351,11 @@ int rtw_android_cmdstr_to_num(char *cmdstr)
|
|||||||
{
|
{
|
||||||
int cmd_num;
|
int cmd_num;
|
||||||
for(cmd_num=0 ; cmd_num<ANDROID_WIFI_CMD_MAX; cmd_num++)
|
for(cmd_num=0 ; cmd_num<ANDROID_WIFI_CMD_MAX; cmd_num++)
|
||||||
|
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0))
|
||||||
|
if(!strncasecmp(cmdstr , android_wifi_cmd_str[cmd_num], strlen(android_wifi_cmd_str[cmd_num])) )
|
||||||
|
#else
|
||||||
if(0 == strnicmp(cmdstr , android_wifi_cmd_str[cmd_num], strlen(android_wifi_cmd_str[cmd_num])) )
|
if(0 == strnicmp(cmdstr , android_wifi_cmd_str[cmd_num], strlen(android_wifi_cmd_str[cmd_num])) )
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
return cmd_num;
|
return cmd_num;
|
||||||
|
@ -1657,15 +1657,18 @@ static int __init rtw_drv_entry(void)
|
|||||||
usb_drv.drv_registered = _TRUE;
|
usb_drv.drv_registered = _TRUE;
|
||||||
rtw_suspend_lock_init();
|
rtw_suspend_lock_init();
|
||||||
rtw_drv_proc_init();
|
rtw_drv_proc_init();
|
||||||
|
#if (LINUX_VERSION_CODE<KERNEL_VERSION(3, 11, 0))
|
||||||
rtw_ndev_notifier_register();
|
rtw_ndev_notifier_register();
|
||||||
|
#endif
|
||||||
ret = usb_register(&usb_drv.usbdrv);
|
ret = usb_register(&usb_drv.usbdrv);
|
||||||
|
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
usb_drv.drv_registered = _FALSE;
|
usb_drv.drv_registered = _FALSE;
|
||||||
rtw_suspend_lock_uninit();
|
rtw_suspend_lock_uninit();
|
||||||
rtw_drv_proc_deinit();
|
rtw_drv_proc_deinit();
|
||||||
|
#if (LINUX_VERSION_CODE<KERNEL_VERSION(3, 11, 0))
|
||||||
rtw_ndev_notifier_unregister();
|
rtw_ndev_notifier_unregister();
|
||||||
|
#endif
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1686,7 +1689,9 @@ static void __exit rtw_drv_halt(void)
|
|||||||
|
|
||||||
rtw_suspend_lock_uninit();
|
rtw_suspend_lock_uninit();
|
||||||
rtw_drv_proc_deinit();
|
rtw_drv_proc_deinit();
|
||||||
|
#if (LINUX_VERSION_CODE<KERNEL_VERSION(3, 11, 0))
|
||||||
rtw_ndev_notifier_unregister();
|
rtw_ndev_notifier_unregister();
|
||||||
|
#endif
|
||||||
|
|
||||||
DBG_871X_LEVEL(_drv_always_, "module exit success\n");
|
DBG_871X_LEVEL(_drv_always_, "module exit success\n");
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@ static bool _rtw_is_radar_freq(u16 center_freq)
|
|||||||
static void _rtw_reg_apply_beaconing_flags(struct wiphy *wiphy,
|
static void _rtw_reg_apply_beaconing_flags(struct wiphy *wiphy,
|
||||||
enum nl80211_reg_initiator initiator)
|
enum nl80211_reg_initiator initiator)
|
||||||
{
|
{
|
||||||
enum ieee80211_band band;
|
enum nl80211_band band;
|
||||||
struct ieee80211_supported_band *sband;
|
struct ieee80211_supported_band *sband;
|
||||||
const struct ieee80211_reg_rule *reg_rule;
|
const struct ieee80211_reg_rule *reg_rule;
|
||||||
struct ieee80211_channel *ch;
|
struct ieee80211_channel *ch;
|
||||||
@ -211,9 +211,9 @@ static void _rtw_reg_apply_active_scan_flags(struct wiphy *wiphy,
|
|||||||
u32 bandwidth = 0;
|
u32 bandwidth = 0;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
if (!wiphy->bands[IEEE80211_BAND_2GHZ])
|
if (!wiphy->bands[NL80211_BAND_2GHZ])
|
||||||
return;
|
return;
|
||||||
sband = wiphy->bands[IEEE80211_BAND_2GHZ];
|
sband = wiphy->bands[NL80211_BAND_2GHZ];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If no country IE has been received always enable active scan
|
* If no country IE has been received always enable active scan
|
||||||
@ -264,10 +264,10 @@ static void _rtw_reg_apply_radar_flags(struct wiphy *wiphy)
|
|||||||
struct ieee80211_channel *ch;
|
struct ieee80211_channel *ch;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
if (!wiphy->bands[IEEE80211_BAND_5GHZ])
|
if (!wiphy->bands[NL80211_BAND_5GHZ])
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sband = wiphy->bands[IEEE80211_BAND_5GHZ];
|
sband = wiphy->bands[NL80211_BAND_5GHZ];
|
||||||
|
|
||||||
for (i = 0; i < sband->n_channels; i++) {
|
for (i = 0; i < sband->n_channels; i++) {
|
||||||
ch = &sband->channels[i];
|
ch = &sband->channels[i];
|
||||||
|
Loading…
Reference in New Issue
Block a user