static UCHAR RT_CfgMbssWirelessModeMaxGet(RTMP_ADAPTER *pAd) { UCHAR wmode = 0, *mode_str; INT idx; struct wifi_dev *wdev; for(idx = 0; idx < pAd->ApCfg.BssidNum; idx++) { wdev = &pAd->ApCfg.MBSSID[idx].wdev; mode_str = wmode_2_str(wdev->PhyMode); if (mode_str) { DBGPRINT(RT_DEBUG_TRACE, ("%s(BSS%d): wmode=%s(0x%x)\n", __FUNCTION__, idx, mode_str, wdev->PhyMode)); os_free_mem(pAd, mode_str); } wmode |= wdev->PhyMode; } mode_str = wmode_2_str(wmode); if (mode_str) { DBGPRINT(RT_DEBUG_TRACE, ("%s(): Combined WirelessMode = %s(0x%x)\n", __FUNCTION__, mode_str, wmode)); os_free_mem(pAd, mode_str); } return wmode; }
BOOLEAN wmode_band_equal(UCHAR smode, UCHAR tmode) { BOOLEAN eq = FALSE; UCHAR *str1, *str2; if ((WMODE_CAP_5G(smode) == WMODE_CAP_5G(tmode)) && (WMODE_CAP_2G(smode) == WMODE_CAP_2G(tmode))) eq = TRUE; str1 = wmode_2_str(smode); str2 = wmode_2_str(tmode); if (str1 && str2) { DBGPRINT(RT_DEBUG_TRACE, ("Old WirelessMode:%s(0x%x), " "New WirelessMode:%s(0x%x)!\n", str1, smode, str2, tmode)); } if (str1) os_free_mem(NULL, str1); if (str2) os_free_mem(NULL, str2); return eq; }
/* ========================================================================== Description: Set Wireless Mode Return: TRUE if all parameters are OK, FALSE otherwise ========================================================================== */ INT RT_CfgSetWirelessMode(RTMP_ADAPTER *pAd, PSTRING arg) { LONG cfg_mode; UCHAR wmode, *mode_str; cfg_mode = simple_strtol(arg, 0, 10); /* check if chip support 5G band when WirelessMode is 5G band */ wmode = cfgmode_2_wmode((UCHAR)cfg_mode); if ((wmode == WMODE_INVALID) || (!wmode_valid_and_correct(pAd, &wmode))) { DBGPRINT(RT_DEBUG_ERROR, ("%s(): Invalid wireless mode(%ld), ChipCap(%s)\n", __FUNCTION__, cfg_mode, BAND_STR[pAd->chipCap.phy_caps & 0x3])); return FALSE; } if (wmode_band_equal(pAd->CommonCfg.PhyMode, wmode) == TRUE) DBGPRINT(RT_DEBUG_OFF, ("wmode_band_equal(): Band Equal!\n")); else DBGPRINT(RT_DEBUG_OFF, ("wmode_band_equal(): Band Not Equal!\n")); pAd->CommonCfg.PhyMode = wmode; pAd->CommonCfg.cfg_wmode = wmode; mode_str = wmode_2_str(wmode); if (mode_str) { DBGPRINT(RT_DEBUG_TRACE, ("%s(): Set WMODE=%s(0x%x)\n", __FUNCTION__, mode_str, wmode)); os_free_mem(NULL, mode_str); } return TRUE; }
/* ========================================================================== Description: Set Wireless Mode Return: TRUE if all parameters are OK, FALSE otherwise ========================================================================== */ INT RT_CfgSetWirelessMode(RTMP_ADAPTER *pAd, PSTRING arg) { LONG cfg_mode; UCHAR wmode, *mode_str; RTMP_CHIP_CAP *pChipCap = &pAd->chipCap; cfg_mode = simple_strtol(arg, 0, 10); /* check if chip support 5G band when WirelessMode is 5G band */ wmode = cfgmode_2_wmode((UCHAR)cfg_mode); if ((wmode == WMODE_INVALID) || (!wmode_valid(pAd, wmode))) { DBGPRINT(RT_DEBUG_ERROR, ("%s(): Invalid wireless mode(%ld, wmode=0x%x), ChipCap(%s)\n", __FUNCTION__, cfg_mode, wmode, BAND_STR[pAd->chipCap.phy_caps & 0x3])); return FALSE; } #if defined(MT76x2) && defined(DOT11_VHT_AC) if (pChipCap->ac_off_mode && WMODE_CAP_AC(wmode)) { DBGPRINT(RT_DEBUG_ERROR, ("it doesn't support VHT AC!\n")); wmode &= ~(WMODE_AC); } #endif /* MT76x2 */ if (wmode_band_equal(pAd->CommonCfg.PhyMode, wmode) == TRUE) DBGPRINT(RT_DEBUG_OFF, ("wmode_band_equal(): Band Equal!\n")); else DBGPRINT(RT_DEBUG_OFF, ("wmode_band_equal(): Band Not Equal!\n")); pAd->CommonCfg.PhyMode = wmode; pAd->CommonCfg.cfg_wmode = wmode; mode_str = wmode_2_str(wmode); if (mode_str) { DBGPRINT(RT_DEBUG_TRACE, ("%s(): Set WMODE=%s(0x%x)\n", __FUNCTION__, mode_str, wmode)); os_free_mem(NULL, mode_str); } return TRUE; }