Example #1
0
static void _rtw_reg_apply_flags(struct wiphy *wiphy)
{
#if 1				// by channel plan
	_adapter *padapter = wiphy_to_adapter(wiphy);
	u8 channel_plan = padapter->mlmepriv.ChannelPlan;
	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
	RT_CHANNEL_INFO *channel_set = pmlmeext->channel_set;
	u8 max_chan_nums = pmlmeext->max_chan_nums;

	struct ieee80211_supported_band *sband;
	struct ieee80211_channel *ch;
	unsigned int i, j;
	u16 channel;
	u32 freq;

	// all channels disable
	for (i = 0; i < IEEE80211_NUM_BANDS; i++) {
		sband = wiphy->bands[i];

		if (sband) {
			for (j = 0; j < sband->n_channels; j++) {
				ch = &sband->channels[j];

				if (ch)
					ch->flags = IEEE80211_CHAN_DISABLED;
			}
		}
	}

	// channels apply by channel plans.
	for (i = 0; i < max_chan_nums; i++) {
		channel = channel_set[i].ChannelNum;
		if (channel <= 14)
			freq =
			    rtw_ieee80211_channel_to_frequency(channel,
							       IEEE80211_BAND_2GHZ);
		else
			freq =
			    rtw_ieee80211_channel_to_frequency(channel,
							       IEEE80211_BAND_5GHZ);

		ch = ieee80211_get_channel(wiphy, freq);
		if (ch) {
			if (channel_set[i].ScanType == SCAN_PASSIVE)
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0))
				ch->flags = IEEE80211_CHAN_PASSIVE_SCAN;
#else // kernel >= 3.14
				ch->flags = IEEE80211_CHAN_NO_IR;
#endif // kernel >= 3.14
			else
				ch->flags = 0;
		}
	}
Example #2
0
/*
 * Always apply Radar/DFS rules on
 * freq range 5260 MHz - 5700 MHz
 */
static void _rtw_reg_apply_radar_flags(struct wiphy *wiphy)
{
	struct ieee80211_supported_band *sband;
	struct ieee80211_channel *ch;
	unsigned int i;

	if (!wiphy->bands[NL80211_BAND_5GHZ])
		return;

	sband = wiphy->bands[NL80211_BAND_5GHZ];

	for (i = 0; i < sband->n_channels; i++) {
		ch = &sband->channels[i];
		if (!rtw_is_dfs_ch(ch->hw_value))
			continue;
#ifdef CONFIG_DFS
		if (!(ch->flags & IEEE80211_CHAN_DISABLED)
			#if defined(CONFIG_DFS_MASTER)
			&& rtw_odm_dfs_domain_unknown(wiphy_to_adapter(wiphy))
			#endif
		) {
			ch->flags |= IEEE80211_CHAN_RADAR;
			#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0))
			ch->flags |= (IEEE80211_CHAN_NO_IBSS | IEEE80211_CHAN_PASSIVE_SCAN);
			#else
			ch->flags |= IEEE80211_CHAN_NO_IR;
			#endif
		}
#endif /* CONFIG_DFS */

#if 0
		/*
		 * We always enable radar detection/DFS on this
		 * frequency range. Additionally we also apply on
		 * this frequency range:
		 * - If STA mode does not yet have DFS supports disable
		 *  active scanning
		 * - If adhoc mode does not support DFS yet then disable
		 *  adhoc in the frequency.
		 * - If AP mode does not yet support radar detection/DFS
		 *  do not allow AP mode
		 */
		if (!(ch->flags & IEEE80211_CHAN_DISABLED))
			ch->flags |= IEEE80211_CHAN_RADAR |
				     IEEE80211_CHAN_NO_IBSS |
				     IEEE80211_CHAN_PASSIVE_SCAN;
#endif
	}
}
Example #3
0
static void _rtw_reg_apply_flags(struct wiphy *wiphy)
{
    _adapter *padapter = wiphy_to_adapter(wiphy);
    struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
    RT_CHANNEL_INFO *channel_set = pmlmeext->channel_set;
    u8 max_chan_nums = pmlmeext->max_chan_nums;

    struct ieee80211_supported_band *sband;
    struct ieee80211_channel *ch;
    unsigned int i, j;
    u16 channel;
    u32 freq;

    // all channels disable
    for (i = 0; i < IEEE80211_NUM_BANDS; i++) {
        sband = wiphy->bands[i];

        if (sband) {
            for (j = 0; j < sband->n_channels; j++) {
                ch = &sband->channels[j];

                if (ch)
                    ch->flags = IEEE80211_CHAN_DISABLED;
            }
        }
    }

    // channels apply by channel plans.
    for (i = 0; i < max_chan_nums; i++) {
        channel = channel_set[i].ChannelNum;
        freq =
            rtw_ieee80211_channel_to_frequency(channel,
                                               IEEE80211_BAND_2GHZ);

        ch = ieee80211_get_channel(wiphy, freq);
        if (ch) {
            if (channel_set[i].ScanType == SCAN_PASSIVE) {
                ch->flags = IEEE80211_CHAN_NO_IR;
            }
            else {
                ch->flags = 0;
            }
        }
    }
}
Example #4
0
static void _rtw_reg_apply_flags(struct wiphy *wiphy)
{
#if 1				// by channel plan
	_adapter *padapter = wiphy_to_adapter(wiphy);
	u8 channel_plan = padapter->mlmepriv.ChannelPlan;
	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
	RT_CHANNEL_INFO *channel_set = pmlmeext->channel_set;
	u8 max_chan_nums = pmlmeext->max_chan_nums;

	struct ieee80211_supported_band *sband;
	struct ieee80211_channel *ch;
	unsigned int i, j;
	u16 channel;
	u32 freq;

	// all channels disable
	for (i = 0; i < IEEE80211_NUM_BANDS; i++) {
		sband = wiphy->bands[i];

		if (sband) {
			for (j = 0; j < sband->n_channels; j++) {
				ch = &sband->channels[j];

				if (ch)
					ch->flags = IEEE80211_CHAN_DISABLED;
			}
		}
	}

	// channels apply by channel plans.
	for (i = 0; i < max_chan_nums; i++) {
		channel = channel_set[i].ChannelNum;
		if (channel <= 14)
			freq =
			    rtw_ieee80211_channel_to_frequency(channel,
							       IEEE80211_BAND_2GHZ);
		else
			freq =
			    rtw_ieee80211_channel_to_frequency(channel,
							       IEEE80211_BAND_5GHZ);


		ch = ieee80211_get_channel(wiphy, freq);
		if (ch) {
			if (channel_set[i].ScanType == SCAN_PASSIVE) {
				#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0))
				ch->flags = (IEEE80211_CHAN_NO_IBSS|IEEE80211_CHAN_PASSIVE_SCAN);
				#else
				ch->flags = IEEE80211_CHAN_NO_IR;
				#endif
			}
			else {
				ch->flags = 0;
			}
		}
	}

#else
	struct ieee80211_supported_band *sband;
	struct ieee80211_channel *ch;
	unsigned int i, j;
	u16 channels[37] =
	    { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56,
		60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140,
		149, 153,
		157, 161, 165
	};
	u16 channel;
	u32 freq;

	for (i = 0; i < IEEE80211_NUM_BANDS; i++) {
		sband = wiphy->bands[i];

		if (sband)
			for (j = 0; j < sband->n_channels; j++) {
				ch = &sband->channels[j];

				if (ch)
					ch->flags = IEEE80211_CHAN_DISABLED;
			}
	}

	for (i = 0; i < 37; i++) {
		channel = channels[i];
		if (channel <= 14)
			freq =
			    rtw_ieee80211_channel_to_frequency(channel,
							       IEEE80211_BAND_2GHZ);
		else
			freq =
			    rtw_ieee80211_channel_to_frequency(channel,
							       IEEE80211_BAND_5GHZ);

		ch = ieee80211_get_channel(wiphy, freq);
		if (ch) {
			if (channel <= 11)
				ch->flags = 0;
			else
				ch->flags = 0;	//IEEE80211_CHAN_PASSIVE_SCAN;
		}
		//printk("%s: freq %d(%d) flag 0x%02X \n", __func__, freq, channel, ch->flags);
	}
#endif
}
Example #5
0
static void _rtw_reg_apply_flags(struct wiphy *wiphy)
{
#if 1				/* by channel plan */
	_adapter *padapter = wiphy_to_adapter(wiphy);
	u8 channel_plan = padapter->mlmepriv.ChannelPlan;
	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
	RT_CHANNEL_INFO *channel_set = pmlmeext->channel_set;
	u8 max_chan_nums = pmlmeext->max_chan_nums;

	struct ieee80211_supported_band *sband;
	struct ieee80211_channel *ch;
	unsigned int i, j;
	u16 channel;
	u32 freq;

	/* all channels disable */
	for (i = 0; i < NUM_NL80211_BANDS; i++) {
		sband = wiphy->bands[i];

		if (sband) {
			for (j = 0; j < sband->n_channels; j++) {
				ch = &sband->channels[j];

				if (ch)
					ch->flags = IEEE80211_CHAN_DISABLED;
			}
		}
	}

	/* channels apply by channel plans. */
	for (i = 0; i < max_chan_nums; i++) {
		channel = channel_set[i].ChannelNum;
		freq = rtw_ch2freq(channel);

		ch = ieee80211_get_channel(wiphy, freq);
		if (ch) {
			if (channel_set[i].ScanType == SCAN_PASSIVE
				#if defined(CONFIG_DFS_MASTER)
				&& rtw_odm_dfs_domain_unknown(wiphy_to_adapter(wiphy))
				#endif
			) {
				#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0))
				ch->flags = (IEEE80211_CHAN_NO_IBSS | IEEE80211_CHAN_PASSIVE_SCAN);
				#else
				ch->flags = IEEE80211_CHAN_NO_IR;
				#endif
			} else
				ch->flags = 0;
		}
	}

#else
	struct ieee80211_supported_band *sband;
	struct ieee80211_channel *ch;
	unsigned int i, j;
	u16 channels[37] = {
		1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56,
		60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140,
		149, 153,
		157, 161, 165
	};
	u16 channel;
	u32 freq;

	for (i = 0; i < NUM_NL80211_BANDS; i++) {
		sband = wiphy->bands[i];

		if (sband)
			for (j = 0; j < sband->n_channels; j++) {
				ch = &sband->channels[j];

				if (ch)
					ch->flags = IEEE80211_CHAN_DISABLED;
			}
	}

	for (i = 0; i < 37; i++) {
		channel = channels[i];
		freq = rtw_ch2freq(channel);

		ch = ieee80211_get_channel(wiphy, freq);
		if (ch) {
			if (channel <= 11)
				ch->flags = 0;
			else
				ch->flags = 0;	/* IEEE80211_CHAN_PASSIVE_SCAN; */
		}
		/* printk("%s: freq %d(%d) flag 0x%02X\n", __func__, freq, channel, ch->flags); */
	}
#endif
}