/** * @brief This function sets region table. * * @param pmpriv A pointer to mlan_private structure * @param region The region code * @param band The band * * @return MLAN_STATUS_SUCCESS or MLAN_STATUS_FAILURE */ mlan_status wlan_set_regiontable(mlan_private * pmpriv, t_u8 region, t_u8 band) { mlan_adapter *pmadapter = pmpriv->adapter; int i = 0; chan_freq_power_t *cfp; int cfp_no; ENTER(); memset(pmadapter, pmadapter->region_channel, 0, sizeof(pmadapter->region_channel)); if (band & (BAND_B | BAND_G | BAND_GN)) { cfp = wlan_get_region_cfp_table(pmadapter, region, BAND_G | BAND_B | BAND_GN, &cfp_no); if (cfp) { pmadapter->region_channel[i].num_cfp = (t_u8) cfp_no; pmadapter->region_channel[i].pcfp = cfp; } else { PRINTM(MERROR, "wrong region code %#x in Band B-G\n", region); LEAVE(); return MLAN_STATUS_FAILURE; } pmadapter->region_channel[i].valid = MTRUE; pmadapter->region_channel[i].region = region; if (band & BAND_GN) pmadapter->region_channel[i].band = BAND_G; else pmadapter->region_channel[i].band = (band & BAND_G) ? BAND_G : BAND_B; i++; } if (band & (BAND_A | BAND_AN)) { cfp = wlan_get_region_cfp_table(pmadapter, region, BAND_A, &cfp_no); if (cfp) { pmadapter->region_channel[i].num_cfp = cfp_no; pmadapter->region_channel[i].pcfp = cfp; } else { PRINTM(MERROR, "wrong region code %#x in Band A\n", region); LEAVE(); return MLAN_STATUS_FAILURE; } pmadapter->region_channel[i].valid = MTRUE; pmadapter->region_channel[i].region = region; pmadapter->region_channel[i].band = BAND_A; } LEAVE(); return MLAN_STATUS_SUCCESS; }
/** * @brief This function sets region table. * * @param priv A pointer to wlan_private structure * @param region The region code * @param band The band * @return WLAN_STATUS_SUCCESS or WLAN_STATUS_FAILURE */ int wlan_set_regiontable(wlan_private * priv, cyg_uint8 region, cyg_uint8 band) { wlan_adapter *Adapter = priv->adapter; int i = 0; CHANNEL_FREQ_POWER *cfp; int cfp_no; ENTER(); memset(Adapter->region_channel, 0, sizeof(Adapter->region_channel)); { cfp = wlan_get_region_cfp_table(region, band, &cfp_no); if (cfp != NULL) { Adapter->region_channel[i].NrCFP = cfp_no; Adapter->region_channel[i].CFP = cfp; } else { diag_printf("wrong region code %#x in Band B-G\n", region); return WLAN_STATUS_FAILURE; } Adapter->region_channel[i].Valid = TRUE; Adapter->region_channel[i].Region = region; Adapter->region_channel[i].Band = band; i++; } LEAVE(); return WLAN_STATUS_SUCCESS; }
/** * @brief This function sets region table. * * @param priv A pointer to wlan_private structure * @param region The region code * @param band The band * @return WLAN_STATUS_SUCCESS or WLAN_STATUS_FAILURE */ int wlan_set_regiontable(wlan_private * priv, u8 region, u8 band) { wlan_adapter *Adapter = priv->adapter; int i = 0; CHANNEL_FREQ_POWER *cfp; int cfp_no; ENTER(); memset(Adapter->region_channel, 0, sizeof(Adapter->region_channel)); if (band & (BAND_B | BAND_G)) { cfp = wlan_get_region_cfp_table(region, BAND_G | BAND_B, &cfp_no); if (cfp != NULL) { Adapter->region_channel[i].NrCFP = cfp_no; Adapter->region_channel[i].CFP = cfp; } else { PRINTM(INFO, "wrong region code %#x in Band B-G\n", region); LEAVE(); return WLAN_STATUS_FAILURE; } Adapter->region_channel[i].Valid = TRUE; Adapter->region_channel[i].Region = region; Adapter->region_channel[i].Band = (band & BAND_G) ? BAND_G : BAND_B; i++; } if (band & BAND_A) { cfp = wlan_get_region_cfp_table(region, BAND_A, &cfp_no); if (cfp != NULL) { Adapter->region_channel[i].NrCFP = cfp_no; Adapter->region_channel[i].CFP = cfp; } else { PRINTM(INFO, "wrong region code %#x in Band A\n", region); LEAVE(); return WLAN_STATUS_FAILURE; } Adapter->region_channel[i].Valid = TRUE; Adapter->region_channel[i].Region = region; Adapter->region_channel[i].Band = BAND_A; } LEAVE(); return WLAN_STATUS_SUCCESS; }
/** * @brief This function sets region table. * * @param pmpriv A pointer to mlan_private structure * @param region The region code * @param band The band * * @return MLAN_STATUS_SUCCESS or MLAN_STATUS_FAILURE */ mlan_status wlan_set_regiontable(mlan_private * pmpriv, t_u8 region, t_u8 band) { mlan_adapter *pmadapter = pmpriv->adapter; int i = 0, j; chan_freq_power_t *cfp; int cfp_no; region_chan_t region_chan_old[MAX_REGION_CHANNEL_NUM]; ENTER(); memcpy(pmadapter, region_chan_old, pmadapter->region_channel, sizeof(pmadapter->region_channel)); memset(pmadapter, pmadapter->region_channel, 0, sizeof(pmadapter->region_channel)); if (band & (BAND_B | BAND_G | BAND_GN)) { cfp = wlan_get_region_cfp_table(pmadapter, region, BAND_G | BAND_B | BAND_GN, &cfp_no); if (cfp) { pmadapter->region_channel[i].num_cfp = (t_u8) cfp_no; pmadapter->region_channel[i].pcfp = cfp; } else { PRINTM(MERROR, "wrong region code %#x in Band B-G\n", region); LEAVE(); return MLAN_STATUS_FAILURE; } pmadapter->region_channel[i].valid = MTRUE; pmadapter->region_channel[i].region = region; if (band & BAND_GN) pmadapter->region_channel[i].band = BAND_G; else pmadapter->region_channel[i].band = (band & BAND_G) ? BAND_G : BAND_B; for (j = 0; j < MAX_REGION_CHANNEL_NUM; j++) { if (region_chan_old[j].band & (BAND_B | BAND_G)) break; } if ((j < MAX_REGION_CHANNEL_NUM) && region_chan_old[j].valid) wlan_cfp_copy_dynamic(pmadapter, cfp, cfp_no, region_chan_old[j].pcfp, region_chan_old[j].num_cfp); else wlan_cfp_copy_dynamic(pmadapter, cfp, cfp_no, MNULL, 0); i++; } if (band & (BAND_A | BAND_AN)) { cfp = wlan_get_region_cfp_table(pmadapter, region, BAND_A, &cfp_no); if (cfp) { pmadapter->region_channel[i].num_cfp = (t_u8) cfp_no; pmadapter->region_channel[i].pcfp = cfp; } else { PRINTM(MERROR, "wrong region code %#x in Band A\n", region); LEAVE(); return MLAN_STATUS_FAILURE; } pmadapter->region_channel[i].valid = MTRUE; pmadapter->region_channel[i].region = region; pmadapter->region_channel[i].band = BAND_A; for (j = 0; j < MAX_REGION_CHANNEL_NUM; j++) { if (region_chan_old[j].band & BAND_A) break; } if ((j < MAX_REGION_CHANNEL_NUM) && region_chan_old[j].valid) wlan_cfp_copy_dynamic(pmadapter, cfp, cfp_no, region_chan_old[j].pcfp, region_chan_old[j].num_cfp); else wlan_cfp_copy_dynamic(pmadapter, cfp, cfp_no, MNULL, 0); } LEAVE(); return MLAN_STATUS_SUCCESS; }