mirror of https://gitee.com/openkylin/linux.git
orinoco: enable cfg80211 "set_channel" operation
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
91b092d734
commit
7e2ce646fc
|
@ -156,7 +156,48 @@ static int orinoco_scan(struct wiphy *wiphy, struct net_device *dev,
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int orinoco_set_channel(struct wiphy *wiphy,
|
||||||
|
struct ieee80211_channel *chan,
|
||||||
|
enum nl80211_channel_type channel_type)
|
||||||
|
{
|
||||||
|
struct orinoco_private *priv = wiphy_priv(wiphy);
|
||||||
|
int err = 0;
|
||||||
|
unsigned long flags;
|
||||||
|
int channel;
|
||||||
|
|
||||||
|
if (!chan)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (channel_type != NL80211_CHAN_NO_HT)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (chan->band != IEEE80211_BAND_2GHZ)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
channel = ieee80211_freq_to_dsss_chan(chan->center_freq);
|
||||||
|
|
||||||
|
if ((channel < 1) || (channel > NUM_CHANNELS) ||
|
||||||
|
!(priv->channel_mask & (1 << (channel-1))))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (orinoco_lock(priv, &flags) != 0)
|
||||||
|
return -EBUSY;
|
||||||
|
|
||||||
|
priv->channel = channel;
|
||||||
|
if (priv->iw_mode == NL80211_IFTYPE_MONITOR) {
|
||||||
|
/* Fast channel change - no commit if successful */
|
||||||
|
hermes_t *hw = &priv->hw;
|
||||||
|
err = hermes_docmd_wait(hw, HERMES_CMD_TEST |
|
||||||
|
HERMES_TEST_SET_CHANNEL,
|
||||||
|
channel, NULL);
|
||||||
|
}
|
||||||
|
orinoco_unlock(priv, &flags);
|
||||||
|
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
const struct cfg80211_ops orinoco_cfg_ops = {
|
const struct cfg80211_ops orinoco_cfg_ops = {
|
||||||
.change_virtual_intf = orinoco_change_vif,
|
.change_virtual_intf = orinoco_change_vif,
|
||||||
|
.set_channel = orinoco_set_channel,
|
||||||
.scan = orinoco_scan,
|
.scan = orinoco_scan,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue