[DTV00841130] cfg80211: Fix compile errors for linux-4.9.y
[Description]
Fix compile errors for linux-4.9.y due to:
- linux-4.8.y cfg80211: changed type of cfg80211_scan_done's 2nd parameter
from bool to struct cfg80211_scan_info
- linux-4.7.y cfg80211: removed IEEE80211_BAND_ and changed to
use NL80211_BAND_ (in nl80211)
Define KAL_BAND_ and replace all references of NL80211_BAND_ and
IEEE80211_BAND_. Define a new KAL function kalCfg80211ScanDone to replace
direct calls of cfg80211_scan_done.
Test build ok with following Linux kernel versions:
3.10, 3.13, 3.18, 4.1, 4.4, 4.9
Test mt7668u STA wlan0 interface connection ok with:
Ubuntu 16.04 + linux-4.4.63
Change-Id: I93ac374883ec10c094554ffd6023b62309b1d046
CR-Id: DTV00841130
Signed-off-by: George Kuo <george.kuo@mediatek.com>
diff --git a/mgmt/rlm_domain.c b/mgmt/rlm_domain.c
index a907b5c..8464bb0 100644
--- a/mgmt/rlm_domain.c
+++ b/mgmt/rlm_domain.c
@@ -822,15 +822,15 @@
if (eSpecificBand == BAND_2G4) {
i = 0;
- max_count = rlmDomainGetActiveChannelCount(IEEE80211_BAND_2GHZ);
+ max_count = rlmDomainGetActiveChannelCount(KAL_BAND_2GHZ);
} else if (eSpecificBand == BAND_5G) {
- i = rlmDomainGetActiveChannelCount(IEEE80211_BAND_2GHZ);
- max_count = rlmDomainGetActiveChannelCount(IEEE80211_BAND_5GHZ) +
- rlmDomainGetActiveChannelCount(IEEE80211_BAND_2GHZ);
+ i = rlmDomainGetActiveChannelCount(KAL_BAND_2GHZ);
+ max_count = rlmDomainGetActiveChannelCount(KAL_BAND_5GHZ) +
+ rlmDomainGetActiveChannelCount(KAL_BAND_2GHZ);
} else {
i = 0;
- max_count = rlmDomainGetActiveChannelCount(IEEE80211_BAND_5GHZ) +
- rlmDomainGetActiveChannelCount(IEEE80211_BAND_2GHZ);
+ max_count = rlmDomainGetActiveChannelCount(KAL_BAND_5GHZ) +
+ rlmDomainGetActiveChannelCount(KAL_BAND_2GHZ);
}
ucNum = 0;
@@ -839,7 +839,7 @@
if (fgNoDfs && (prCh->flags & IEEE80211_CHAN_RADAR))
continue; /*not match*/
- if (i < rlmDomainGetActiveChannelCount(IEEE80211_BAND_2GHZ))
+ if (i < rlmDomainGetActiveChannelCount(KAL_BAND_2GHZ))
band = BAND_2G4;
else
band = BAND_5G;
@@ -941,8 +941,8 @@
pWiphy = priv_to_wiphy(prAdapter->prGlueInfo);
- max_channel_count = pWiphy->bands[IEEE80211_BAND_2GHZ]->n_channels
- + pWiphy->bands[IEEE80211_BAND_5GHZ]->n_channels;
+ max_channel_count = pWiphy->bands[KAL_BAND_2GHZ]->n_channels
+ + pWiphy->bands[KAL_BAND_5GHZ]->n_channels;
if (max_channel_count == 0) {
DBGLOG(RLM, ERROR, "%s, invalid channel count.\n", __func__);
@@ -1153,11 +1153,11 @@
if (eBand == BAND_2G4) {
start_idx = 0;
- end_idx = rlmDomainGetActiveChannelCount(IEEE80211_BAND_2GHZ);
+ end_idx = rlmDomainGetActiveChannelCount(KAL_BAND_2GHZ);
} else {
- start_idx = rlmDomainGetActiveChannelCount(IEEE80211_BAND_2GHZ);
- end_idx = rlmDomainGetActiveChannelCount(IEEE80211_BAND_2GHZ) +
- rlmDomainGetActiveChannelCount(IEEE80211_BAND_5GHZ);
+ start_idx = rlmDomainGetActiveChannelCount(KAL_BAND_2GHZ);
+ end_idx = rlmDomainGetActiveChannelCount(KAL_BAND_2GHZ) +
+ rlmDomainGetActiveChannelCount(KAL_BAND_5GHZ);
}
for (idx = start_idx; idx < end_idx; idx++) {
@@ -2405,22 +2405,22 @@
UINT32 ch_cnt;
struct wiphy *wiphy;
u8 band_idx, ch_idx;
- P_CMD_SET_COUNTRY_CHANNEL_POWER_LIMIT_V2_T prCmd[IEEE80211_NUM_BANDS] = {NULL};
- UINT_32 u4SetCmdTableMaxSize[IEEE80211_NUM_BANDS] = {0};
+ P_CMD_SET_COUNTRY_CHANNEL_POWER_LIMIT_V2_T prCmd[KAL_NUM_BANDS] = {NULL};
+ UINT_32 u4SetCmdTableMaxSize[KAL_NUM_BANDS] = {0};
const INT_8 *prChannelList = NULL;
DBGLOG(RLM, INFO, "rlmDomainSendPwrLimitCmd()\n");
wiphy = priv_to_wiphy(prAdapter->prGlueInfo);
- for (band_idx = 0; band_idx < IEEE80211_NUM_BANDS; band_idx++) {
- if (band_idx != IEEE80211_BAND_2GHZ && band_idx != IEEE80211_BAND_5GHZ)
+ for (band_idx = 0; band_idx < KAL_NUM_BANDS; band_idx++) {
+ if (band_idx != KAL_BAND_2GHZ && band_idx != KAL_BAND_5GHZ)
continue;
- prChannelList = (band_idx == IEEE80211_BAND_2GHZ) ?
+ prChannelList = (band_idx == KAL_BAND_2GHZ) ?
gTx_Pwr_Limit_2g_Ch : gTx_Pwr_Limit_5g_Ch;
- ch_cnt = (band_idx == IEEE80211_BAND_2GHZ) ? TX_PWR_LIMIT_2G_CH_NUM :
+ ch_cnt = (band_idx == KAL_BAND_2GHZ) ? TX_PWR_LIMIT_2G_CH_NUM :
TX_PWR_LIMIT_5G_CH_NUM;
if (!ch_cnt)
@@ -2455,7 +2455,7 @@
kalMemSet(prCmd[band_idx], MAX_TX_POWER, u4SetCmdTableMaxSize[band_idx]);
prCmd[band_idx]->ucNum = ch_cnt;
- prCmd[band_idx]->eband = (band_idx == IEEE80211_BAND_2GHZ) ? BAND_2G4 : BAND_5G;
+ prCmd[band_idx]->eband = (band_idx == KAL_BAND_2GHZ) ? BAND_2G4 : BAND_5G;
prCmd[band_idx]->countryCode = rlmDomainGetCountryCode();
DBGLOG(RLM, INFO, "%s, active n_channels=%d, band=%d\n", __func__, ch_cnt, prCmd[band_idx]->eband);
@@ -2472,15 +2472,15 @@
*/
rlmDomainGetTxPwrLimit(rlmDomainGetCountryCode(),
prAdapter->prGlueInfo,
- prCmd[IEEE80211_BAND_2GHZ],
- prCmd[IEEE80211_BAND_5GHZ]);
+ prCmd[KAL_BAND_2GHZ],
+ prCmd[KAL_BAND_5GHZ]);
- for (band_idx = 0; band_idx < IEEE80211_NUM_BANDS; band_idx++) {
+ for (band_idx = 0; band_idx < KAL_NUM_BANDS; band_idx++) {
UINT_8 ucRemainChNum, i, ucTempChNum, prCmdBatchNum;
UINT_32 u4BufSize = 0;
P_CMD_SET_COUNTRY_CHANNEL_POWER_LIMIT_V2_T prTempCmd = NULL;
- ENUM_BAND_T eBand = (band_idx == IEEE80211_BAND_2GHZ) ?
+ ENUM_BAND_T eBand = (band_idx == KAL_BAND_2GHZ) ?
BAND_2G4 : BAND_5G;
if (!prCmd[band_idx])
@@ -2537,7 +2537,7 @@
}
error:
- for (band_idx = 0; band_idx < IEEE80211_NUM_BANDS; band_idx++) {
+ for (band_idx = 0; band_idx < KAL_NUM_BANDS; band_idx++) {
if (prCmd[band_idx])
cnmMemFree(prAdapter, prCmd[band_idx]);
}
@@ -2718,17 +2718,17 @@
void rlmDomainAddActiveChannel(u8 band)
{
- if (band == IEEE80211_BAND_2GHZ)
+ if (band == KAL_BAND_2GHZ)
g_mtk_regd_control.n_channel_active_2g += 1;
- else if (band == IEEE80211_BAND_5GHZ)
+ else if (band == KAL_BAND_5GHZ)
g_mtk_regd_control.n_channel_active_5g += 1;
}
u8 rlmDomainGetActiveChannelCount(u8 band)
{
- if (band == IEEE80211_BAND_2GHZ)
+ if (band == KAL_BAND_2GHZ)
return g_mtk_regd_control.n_channel_active_2g;
- else if (band == IEEE80211_BAND_5GHZ)
+ else if (band == KAL_BAND_5GHZ)
return g_mtk_regd_control.n_channel_active_5g;
else
return 0;
@@ -2943,17 +2943,7 @@
rlmDomainSetRefWiphy(pWiphy);
ch_count = 0;
- for (band_idx = 0; band_idx < IEEE80211_NUM_BANDS; band_idx++) {
- /**
- * enum nl80211_band - Frequency band
- * @NL80211_BAND_2GHZ: 2.4 GHz ISM band
- * @NL80211_BAND_5GHZ: around 5 GHz band (4.9 - 5.7 GHz)
- * @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 64.80 GHz)
- * @NUM_NL80211_BANDS: number of bands, avoid using this in userspace
- * since newer kernel versions may support more bands
- */
-
- /*select band*/
+ for (band_idx = 0; band_idx < KAL_NUM_BANDS; band_idx++) {
sband = pWiphy->bands[band_idx];
if (!sband)
continue;
@@ -2996,8 +2986,8 @@
u32 ch_count, idx;
struct channel *pCh;
- prBuff->n_channels_2g = rlmDomainGetActiveChannelCount(IEEE80211_BAND_2GHZ);
- prBuff->n_channels_5g = rlmDomainGetActiveChannelCount(IEEE80211_BAND_5GHZ);
+ prBuff->n_channels_2g = rlmDomainGetActiveChannelCount(KAL_BAND_2GHZ);
+ prBuff->n_channels_5g = rlmDomainGetActiveChannelCount(KAL_BAND_5GHZ);
ch_count = prBuff->n_channels_2g + prBuff->n_channels_5g;
if (ch_count > max_ch_count) {
diff --git a/os/linux/gl_cfg80211.c b/os/linux/gl_cfg80211.c
index 9952451..587ec05 100644
--- a/os/linux/gl_cfg80211.c
+++ b/os/linux/gl_cfg80211.c
@@ -1649,10 +1649,10 @@
prMsgChnlReq->ucChannelNum = nicFreq2ChannelNum(chan->center_freq * 1000);
switch (chan->band) {
- case IEEE80211_BAND_2GHZ:
+ case KAL_BAND_2GHZ:
prMsgChnlReq->eBand = BAND_2G4;
break;
- case IEEE80211_BAND_5GHZ:
+ case KAL_BAND_5GHZ:
prMsgChnlReq->eBand = BAND_5G;
break;
default:
@@ -3201,17 +3201,7 @@
DBGLOG(RLM, INFO, "%s()\n", __func__);
/* to reset cha->flags*/
- for (band_idx = 0; band_idx < IEEE80211_NUM_BANDS; band_idx++) {
- /**
- * enum nl80211_band - Frequency band
- * @NL80211_BAND_2GHZ: 2.4 GHz ISM band
- * @NL80211_BAND_5GHZ: around 5 GHz band (4.9 - 5.7 GHz)
- * @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 64.80 GHz)
- * @NUM_NL80211_BANDS: number of bands, avoid using this in userspace
- * since newer kernel versions may support more bands
- */
-
- /*select band*/
+ for (band_idx = 0; band_idx < KAL_NUM_BANDS; band_idx++) {
sband = pWiphy->bands[band_idx];
if (!sband)
continue;
diff --git a/os/linux/gl_init.c b/os/linux/gl_init.c
index 63617bf..a78c6b1 100644
--- a/os/linux/gl_init.c
+++ b/os/linux/gl_init.c
@@ -182,7 +182,7 @@
#define CHAN2G(_channel, _freq, _flags) \
{ \
- .band = IEEE80211_BAND_2GHZ, \
+ .band = KAL_BAND_2GHZ, \
.center_freq = (_freq), \
.hw_value = (_channel), \
.flags = (_flags), \
@@ -208,7 +208,7 @@
#define CHAN5G(_channel, _flags) \
{ \
- .band = IEEE80211_BAND_5GHZ, \
+ .band = KAL_BAND_5GHZ, \
.center_freq = 5000 + (5 * (_channel)), \
.hw_value = (_channel), \
.flags = (_flags), \
@@ -309,7 +309,7 @@
/* public for both Legacy Wi-Fi / P2P access */
struct ieee80211_supported_band mtk_band_2ghz = {
- .band = IEEE80211_BAND_2GHZ,
+ .band = KAL_BAND_2GHZ,
.channels = mtk_2ghz_channels,
.n_channels = ARRAY_SIZE(mtk_2ghz_channels),
.bitrates = mtk_g_rates,
@@ -319,7 +319,7 @@
/* public for both Legacy Wi-Fi / P2P access */
struct ieee80211_supported_band mtk_band_5ghz = {
- .band = IEEE80211_BAND_5GHZ,
+ .band = KAL_BAND_5GHZ,
.channels = mtk_5ghz_channels,
.n_channels = ARRAY_SIZE(mtk_5ghz_channels),
.bitrates = mtk_a_rates,
@@ -1205,7 +1205,8 @@
GLUE_RELEASE_SPIN_LOCK(prGlueInfo, SPIN_LOCK_NET_DEV);
if (prScanRequest)
- cfg80211_scan_done(prScanRequest, TRUE);
+ kalCfg80211ScanDone(prScanRequest, TRUE);
+
netif_tx_stop_all_queues(prDev);
return 0; /* success */
@@ -1469,11 +1470,11 @@
prWiphy->max_scan_ssids = 1; /* FIXME: for combo scan */
prWiphy->max_scan_ie_len = 512;
prWiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | BIT(NL80211_IFTYPE_ADHOC);
- prWiphy->bands[IEEE80211_BAND_2GHZ] = &mtk_band_2ghz;
+ prWiphy->bands[KAL_BAND_2GHZ] = &mtk_band_2ghz;
/* always assign 5Ghz bands here, if the chip is not support 5Ghz,
- * bands[IEEE80211_BAND_5GHZ] will be assign to NULL
+ * bands[KAL_BAND_5GHZ] will be assign to NULL
*/
- prWiphy->bands[IEEE80211_BAND_5GHZ] = &mtk_band_5ghz;
+ prWiphy->bands[KAL_BAND_5GHZ] = &mtk_band_5ghz;
prWiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM;
prWiphy->cipher_suites = (const u32 *)mtk_cipher_suites;
prWiphy->n_cipher_suites = ARRAY_SIZE(mtk_cipher_suites);
@@ -2285,7 +2286,7 @@
/* Disable 5G band for AIS */
if (prAdapter->fgEnable5GBand == FALSE)
- prWdev->wiphy->bands[IEEE80211_BAND_5GHZ] = NULL;
+ prWdev->wiphy->bands[KAL_BAND_5GHZ] = NULL;
g_u4HaltFlag = 0;
diff --git a/os/linux/gl_kal.c b/os/linux/gl_kal.c
index ab4c051..e519ea3 100644
--- a/os/linux/gl_kal.c
+++ b/os/linux/gl_kal.c
@@ -1035,12 +1035,12 @@
prChannel =
ieee80211_get_channel(priv_to_wiphy(prGlueInfo),
ieee80211_channel_to_frequency
- (ucChannelNum, IEEE80211_BAND_2GHZ));
+ (ucChannelNum, KAL_BAND_2GHZ));
} else {
prChannel =
ieee80211_get_channel(priv_to_wiphy(prGlueInfo),
ieee80211_channel_to_frequency
- (ucChannelNum, IEEE80211_BAND_5GHZ));
+ (ucChannelNum, KAL_BAND_5GHZ));
}
/* ensure BSS exists */
@@ -1087,11 +1087,11 @@
if (ucChannelNum <= 14) {
prChannel = ieee80211_get_channel(priv_to_wiphy(prGlueInfo),
ieee80211_channel_to_frequency
- (ucChannelNum, IEEE80211_BAND_2GHZ));
+ (ucChannelNum, KAL_BAND_2GHZ));
} else {
prChannel = ieee80211_get_channel(priv_to_wiphy(prGlueInfo),
ieee80211_channel_to_frequency
- (ucChannelNum, IEEE80211_BAND_5GHZ));
+ (ucChannelNum, KAL_BAND_5GHZ));
}
cfg80211_roamed(prGlueInfo->prDevHandler,
@@ -1182,8 +1182,9 @@
GLUE_RELEASE_SPIN_LOCK(prGlueInfo, SPIN_LOCK_NET_DEV);
/* 2. then CFG80211 Indication */
- if (prScanRequest != NULL)
- cfg80211_scan_done(prScanRequest, FALSE);
+ if (prScanRequest)
+ kalCfg80211ScanDone(prScanRequest, FALSE);
+
break;
#if 0
@@ -4053,10 +4054,10 @@
/* search through channel entries */
if (ucChannelNum <= 14) {
prChannel =
- ieee80211_get_channel(wiphy, ieee80211_channel_to_frequency(ucChannelNum, IEEE80211_BAND_2GHZ));
+ ieee80211_get_channel(wiphy, ieee80211_channel_to_frequency(ucChannelNum, KAL_BAND_2GHZ));
} else {
prChannel =
- ieee80211_get_channel(wiphy, ieee80211_channel_to_frequency(ucChannelNum, IEEE80211_BAND_5GHZ));
+ ieee80211_get_channel(wiphy, ieee80211_channel_to_frequency(ucChannelNum, KAL_BAND_5GHZ));
}
if (prChannel != NULL && prGlueInfo->fgIsRegistered == TRUE) {
@@ -4107,11 +4108,11 @@
if (ucChannelNum <= 14) {
prChannel =
ieee80211_get_channel(priv_to_wiphy(prGlueInfo),
- ieee80211_channel_to_frequency(ucChannelNum, IEEE80211_BAND_2GHZ));
+ ieee80211_channel_to_frequency(ucChannelNum, KAL_BAND_2GHZ));
} else {
prChannel =
ieee80211_get_channel(priv_to_wiphy(prGlueInfo),
- ieee80211_channel_to_frequency(ucChannelNum, IEEE80211_BAND_5GHZ));
+ ieee80211_channel_to_frequency(ucChannelNum, KAL_BAND_5GHZ));
}
switch (eSco) {
@@ -4164,11 +4165,11 @@
if (ucChannelNum <= 14) {
prChannel =
ieee80211_get_channel(priv_to_wiphy(prGlueInfo),
- ieee80211_channel_to_frequency(ucChannelNum, IEEE80211_BAND_2GHZ));
+ ieee80211_channel_to_frequency(ucChannelNum, KAL_BAND_2GHZ));
} else {
prChannel =
ieee80211_get_channel(priv_to_wiphy(prGlueInfo),
- ieee80211_channel_to_frequency(ucChannelNum, IEEE80211_BAND_5GHZ));
+ ieee80211_channel_to_frequency(ucChannelNum, KAL_BAND_5GHZ));
}
switch (eSco) {
diff --git a/os/linux/gl_p2p.c b/os/linux/gl_p2p.c
index 419fe81..6044cbb 100644
--- a/os/linux/gl_p2p.c
+++ b/os/linux/gl_p2p.c
@@ -1048,8 +1048,8 @@
prWiphy->iface_combinations = p_mtk_iface_combinations_p2p;
prWiphy->n_iface_combinations = mtk_iface_combinations_p2p_num;
- prWiphy->bands[IEEE80211_BAND_2GHZ] = &mtk_band_2ghz;
- prWiphy->bands[IEEE80211_BAND_5GHZ] = &mtk_band_5ghz;
+ prWiphy->bands[KAL_BAND_2GHZ] = &mtk_band_2ghz;
+ prWiphy->bands[KAL_BAND_5GHZ] = &mtk_band_5ghz;
prWiphy->mgmt_stypes = mtk_cfg80211_default_mgmt_stypes;
prWiphy->max_remain_on_channel_duration = 5000;
@@ -1364,7 +1364,7 @@
if (prScanRequest) {
DBGLOG(INIT, INFO, "p2pStop and abort scan!!\n");
- cfg80211_scan_done(prScanRequest, TRUE);
+ kalCfg80211ScanDone(prScanRequest, TRUE);
}
/* 1. stop TX queue */
diff --git a/os/linux/gl_p2p_cfg80211.c b/os/linux/gl_p2p_cfg80211.c
index 58cd879..16b37be 100644
--- a/os/linux/gl_p2p_cfg80211.c
+++ b/os/linux/gl_p2p_cfg80211.c
@@ -174,10 +174,10 @@
prRfChnlInfo->ucChannelNum = nicFreq2ChannelNum(channel->center_freq * 1000);
switch (channel->band) {
- case IEEE80211_BAND_2GHZ:
+ case KAL_BAND_2GHZ:
prRfChnlInfo->eBand = BAND_2G4;
break;
- case IEEE80211_BAND_5GHZ:
+ case KAL_BAND_5GHZ:
prRfChnlInfo->eBand = BAND_5G;
break;
default:
@@ -528,7 +528,7 @@
/* Check the wdev with backup scan req due to */
/* the kernel will free this request by error handling */
if (prP2pGlueDevInfo->rBackupScanRequest.wdev == UnregRoleHander->ieee80211_ptr) {
- cfg80211_scan_done(&(prP2pGlueDevInfo->rBackupScanRequest), TRUE);
+ kalCfg80211ScanDone(&(prP2pGlueDevInfo->rBackupScanRequest), TRUE);
/* clear the request to avoid the Role FSM calls the scan_done again */
prP2pGlueDevInfo->prScanRequest = NULL;
}
@@ -963,10 +963,10 @@
"Scanning Channel:%d, freq: %d\n", prRfChannelInfo->ucChannelNum,
prChannel->center_freq);
switch (prChannel->band) {
- case IEEE80211_BAND_2GHZ:
+ case KAL_BAND_2GHZ:
prRfChannelInfo->eBand = BAND_2G4;
break;
- case IEEE80211_BAND_5GHZ:
+ case KAL_BAND_5GHZ:
prRfChannelInfo->eBand = BAND_5G;
break;
default:
diff --git a/os/linux/gl_p2p_kal.c b/os/linux/gl_p2p_kal.c
index c1f42ab..938dfa3 100644
--- a/os/linux/gl_p2p_kal.c
+++ b/os/linux/gl_p2p_kal.c
@@ -984,7 +984,7 @@
scanReportBss2Cfg80211(prGlueInfo->prAdapter, BSS_TYPE_P2P_DEVICE, NULL);
DBGLOG(INIT, INFO, "DBG:p2p_cfg_scan_done\n");
- cfg80211_scan_done(prScanRequest, fgIsAbort);
+ kalCfg80211ScanDone(prScanRequest, fgIsAbort);
}
KAL_RELEASE_MUTEX(prGlueInfo->prAdapter, MUTEX_DEL_INF);
@@ -1384,12 +1384,12 @@
switch (prChannelInfo->eBand) {
case BAND_2G4:
- prTargetChannelEntry = wiphy->bands[IEEE80211_BAND_2GHZ]->channels;
- u4TblSize = wiphy->bands[IEEE80211_BAND_2GHZ]->n_channels;
+ prTargetChannelEntry = wiphy->bands[KAL_BAND_2GHZ]->channels;
+ u4TblSize = wiphy->bands[KAL_BAND_2GHZ]->n_channels;
break;
case BAND_5G:
- prTargetChannelEntry = wiphy->bands[IEEE80211_BAND_5GHZ]->channels;
- u4TblSize = wiphy->bands[IEEE80211_BAND_5GHZ]->n_channels;
+ prTargetChannelEntry = wiphy->bands[KAL_BAND_5GHZ]->channels;
+ u4TblSize = wiphy->bands[KAL_BAND_5GHZ]->n_channels;
break;
default:
break;
diff --git a/os/linux/gl_wext_priv.c b/os/linux/gl_wext_priv.c
index a5d38f8..8ebca1b 100644
--- a/os/linux/gl_wext_priv.c
+++ b/os/linux/gl_wext_priv.c
@@ -6752,15 +6752,15 @@
**/
if (i4Argc >= 2 && (apcArgv[1][0] == '2') && (apcArgv[1][1] == 'g')) {
start_idx = 0;
- end_idx = rlmDomainGetActiveChannelCount(IEEE80211_BAND_2GHZ);
+ end_idx = rlmDomainGetActiveChannelCount(KAL_BAND_2GHZ);
} else if (i4Argc >= 2 && (apcArgv[1][0] == '5') && (apcArgv[1][1] == 'g')) {
- start_idx = rlmDomainGetActiveChannelCount(IEEE80211_BAND_2GHZ);
- end_idx = rlmDomainGetActiveChannelCount(IEEE80211_BAND_2GHZ)
- + rlmDomainGetActiveChannelCount(IEEE80211_BAND_5GHZ);
+ start_idx = rlmDomainGetActiveChannelCount(KAL_BAND_2GHZ);
+ end_idx = rlmDomainGetActiveChannelCount(KAL_BAND_2GHZ)
+ + rlmDomainGetActiveChannelCount(KAL_BAND_5GHZ);
} else {
start_idx = 0;
- end_idx = rlmDomainGetActiveChannelCount(IEEE80211_BAND_2GHZ)
- + rlmDomainGetActiveChannelCount(IEEE80211_BAND_5GHZ);
+ end_idx = rlmDomainGetActiveChannelCount(KAL_BAND_2GHZ)
+ + rlmDomainGetActiveChannelCount(KAL_BAND_5GHZ);
if (i4Argc >= 2)
/* Dump only specified channel */
u4Ret = kalkStrtou32(apcArgv[1], 0, &ch_num);
diff --git a/os/linux/include/gl_kal.h b/os/linux/include/gl_kal.h
index 4067987..76b1646 100644
--- a/os/linux/include/gl_kal.h
+++ b/os/linux/include/gl_kal.h
@@ -437,6 +437,50 @@
#define IEEE80211_CHAN_PASSIVE_STR "NO_IR"
#endif
+#if KERNEL_VERSION(4, 7, 0) <= CFG80211_VERSION_CODE
+/**
+ * enum nl80211_band - Frequency band
+ * @NL80211_BAND_2GHZ: 2.4 GHz ISM band
+ * @NL80211_BAND_5GHZ: around 5 GHz band (4.9 - 5.7 GHz)
+ * @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 64.80 GHz)
+ * @NUM_NL80211_BANDS: number of bands, avoid using this in userspace
+ * since newer kernel versions may support more bands
+ */
+#define KAL_BAND_2GHZ NL80211_BAND_2GHZ
+#define KAL_BAND_5GHZ NL80211_BAND_5GHZ
+#define KAL_NUM_BANDS NUM_NL80211_BANDS
+#else
+#define KAL_BAND_2GHZ IEEE80211_BAND_2GHZ
+#define KAL_BAND_5GHZ IEEE80211_BAND_5GHZ
+#define KAL_NUM_BANDS IEEE80211_NUM_BANDS
+#endif
+
+/**
+ * kalCfg80211ScanDone - abstraction of cfg80211_scan_done
+ *
+ * @request: the corresponding scan request (sanity checked by callers!)
+ * @aborted: set to true if the scan was aborted for any reason,
+ * userspace will be notified of that
+ *
+ * Since linux-4.8.y the 2nd parameter is changed from bool to
+ * struct cfg80211_scan_info, but we don't use all fields yet.
+ */
+#if KERNEL_VERSION(4, 8, 0) <= CFG80211_VERSION_CODE
+static inline void kalCfg80211ScanDone(struct cfg80211_scan_request *request,
+ bool aborted)
+{
+ struct cfg80211_scan_info info = { .aborted = aborted };
+
+ cfg80211_scan_done(request, &info);
+}
+#else
+static inline void kalCfg80211ScanDone(struct cfg80211_scan_request *request,
+ bool aborted)
+{
+ cfg80211_scan_done(request, aborted);
+}
+#endif
+
/* Consider on some Android platform, using request_firmware_direct()
* may cause system failed to load firmware. So we still use
* request_firmware().
diff --git a/os/linux/include/gl_p2p_ioctl.h b/os/linux/include/gl_p2p_ioctl.h
index 4b2462a..550e5e8 100644
--- a/os/linux/include/gl_p2p_ioctl.h
+++ b/os/linux/include/gl_p2p_ioctl.h
@@ -344,7 +344,7 @@
#define CHAN2G(_channel, _freq, _flags) \
{ \
- .band = IEEE80211_BAND_2GHZ, \
+ .band = KAL_BAND_2GHZ, \
.center_freq = (_freq), \
.hw_value = (_channel), \
.flags = (_flags), \
@@ -354,7 +354,7 @@
#define CHAN5G(_channel, _flags) \
{ \
- .band = IEEE80211_BAND_5GHZ, \
+ .band = KAL_BAND_5GHZ, \
.center_freq = 5000 + (5 * (_channel)), \
.hw_value = (_channel), \
.flags = (_flags), \