1
0
mirror of https://github.com/aircrack-ng/rtl8812au.git synced 2024-11-09 23:57:00 +00:00

Allow to set channel when in monitor mode

* Added support for setting channel when in "monitor" mode.
This commit is contained in:
Christian B 2017-11-15 20:45:51 +01:00 committed by GitHub
parent 8b41ccda9a
commit 136fbdef54
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4572,6 +4572,42 @@ static int cfg80211_rtw_set_monitor_channel(struct wiphy *wiphy
return 0; return 0;
} }
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0))
static int cfg80211_rtw_set_monitor_channel(struct wiphy *wiphy, struct cfg80211_chan_def *chandef)
{
struct ieee80211_channel *chan = (struct ieee80211_channel *) chandef->chan;
int chan_target = (u8) ieee80211_frequency_to_channel(chan->center_freq);
int chan_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
int chan_width = CHANNEL_WIDTH_20;
enum nl80211_channel_type channel_type = cfg80211_get_chandef_type(chandef);
_adapter *padapter = wiphy_to_adapter(wiphy);
switch (channel_type) {
case NL80211_CHAN_NO_HT:
case NL80211_CHAN_HT20:
chan_width = CHANNEL_WIDTH_20;
chan_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
break;
case NL80211_CHAN_HT40MINUS:
chan_width = CHANNEL_WIDTH_40;
chan_offset = HAL_PRIME_CHNL_OFFSET_UPPER;
break;
case NL80211_CHAN_HT40PLUS:
chan_width = CHANNEL_WIDTH_40;
chan_offset = HAL_PRIME_CHNL_OFFSET_LOWER;
break;
default:
chan_width = CHANNEL_WIDTH_20;
chan_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
break;
}
set_channel_bwmode(padapter, chan_target, chan_offset, chan_width);
DBG_871X("%s : %d", __func__, chan_target);
return 0;
}
#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)) */
static int cfg80211_rtw_auth(struct wiphy *wiphy, struct net_device *ndev, static int cfg80211_rtw_auth(struct wiphy *wiphy, struct net_device *ndev,
struct cfg80211_auth_request *req) struct cfg80211_auth_request *req)
{ {
@ -6595,6 +6631,9 @@ static struct cfg80211_ops rtw_cfg80211_ops = {
.change_bss = cfg80211_rtw_change_bss, .change_bss = cfg80211_rtw_change_bss,
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 6, 0)) #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 6, 0))
.set_channel = cfg80211_rtw_set_channel, .set_channel = cfg80211_rtw_set_channel,
#endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0))
.set_monitor_channel = cfg80211_rtw_set_monitor_channel,
#endif #endif
/* .auth = cfg80211_rtw_auth, */ /* .auth = cfg80211_rtw_auth, */
/* .assoc = cfg80211_rtw_assoc, */ /* .assoc = cfg80211_rtw_assoc, */