mirror of https://gitee.com/openkylin/linux.git
mac80211: move ieee80211_set_channel function
Move the set_channel function up so it can be used by other code in this file in the future. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
8a2ac260bb
commit
3d9e6e1207
|
@ -674,6 +674,41 @@ static int ieee80211_get_station(struct wiphy *wiphy, struct net_device *dev,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int ieee80211_set_channel(struct wiphy *wiphy,
|
||||||
|
struct net_device *netdev,
|
||||||
|
struct ieee80211_channel *chan,
|
||||||
|
enum nl80211_channel_type channel_type)
|
||||||
|
{
|
||||||
|
struct ieee80211_local *local = wiphy_priv(wiphy);
|
||||||
|
struct ieee80211_sub_if_data *sdata = NULL;
|
||||||
|
|
||||||
|
if (netdev)
|
||||||
|
sdata = IEEE80211_DEV_TO_SUB_IF(netdev);
|
||||||
|
|
||||||
|
switch (ieee80211_get_channel_mode(local, NULL)) {
|
||||||
|
case CHAN_MODE_HOPPING:
|
||||||
|
return -EBUSY;
|
||||||
|
case CHAN_MODE_FIXED:
|
||||||
|
if (local->oper_channel != chan)
|
||||||
|
return -EBUSY;
|
||||||
|
if (!sdata && local->_oper_channel_type == channel_type)
|
||||||
|
return 0;
|
||||||
|
break;
|
||||||
|
case CHAN_MODE_UNDEFINED:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ieee80211_set_channel_type(local, sdata, channel_type))
|
||||||
|
return -EBUSY;
|
||||||
|
|
||||||
|
local->oper_channel = chan;
|
||||||
|
|
||||||
|
/* auto-detects changes */
|
||||||
|
ieee80211_hw_config(local, 0);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int ieee80211_set_probe_resp(struct ieee80211_sub_if_data *sdata,
|
static int ieee80211_set_probe_resp(struct ieee80211_sub_if_data *sdata,
|
||||||
const u8 *resp, size_t resp_len)
|
const u8 *resp, size_t resp_len)
|
||||||
{
|
{
|
||||||
|
@ -1677,41 +1712,6 @@ static int ieee80211_set_txq_params(struct wiphy *wiphy,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ieee80211_set_channel(struct wiphy *wiphy,
|
|
||||||
struct net_device *netdev,
|
|
||||||
struct ieee80211_channel *chan,
|
|
||||||
enum nl80211_channel_type channel_type)
|
|
||||||
{
|
|
||||||
struct ieee80211_local *local = wiphy_priv(wiphy);
|
|
||||||
struct ieee80211_sub_if_data *sdata = NULL;
|
|
||||||
|
|
||||||
if (netdev)
|
|
||||||
sdata = IEEE80211_DEV_TO_SUB_IF(netdev);
|
|
||||||
|
|
||||||
switch (ieee80211_get_channel_mode(local, NULL)) {
|
|
||||||
case CHAN_MODE_HOPPING:
|
|
||||||
return -EBUSY;
|
|
||||||
case CHAN_MODE_FIXED:
|
|
||||||
if (local->oper_channel != chan)
|
|
||||||
return -EBUSY;
|
|
||||||
if (!sdata && local->_oper_channel_type == channel_type)
|
|
||||||
return 0;
|
|
||||||
break;
|
|
||||||
case CHAN_MODE_UNDEFINED:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ieee80211_set_channel_type(local, sdata, channel_type))
|
|
||||||
return -EBUSY;
|
|
||||||
|
|
||||||
local->oper_channel = chan;
|
|
||||||
|
|
||||||
/* auto-detects changes */
|
|
||||||
ieee80211_hw_config(local, 0);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
static int ieee80211_suspend(struct wiphy *wiphy,
|
static int ieee80211_suspend(struct wiphy *wiphy,
|
||||||
struct cfg80211_wowlan *wowlan)
|
struct cfg80211_wowlan *wowlan)
|
||||||
|
|
Loading…
Reference in New Issue