mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 17:08:10 +00:00
p54: implement rfkill
This patch implements a basic rfkill support for p54 hardware and removes a rfkill related WARNING: fwio.c: In function ‘p54_setup_mac’: fwio.c:323: warning: ‘radio_enabled’ is deprecated. by abandoning radio_enable in flavour for IEEE80211_CONF_CHANGE_IDLE. Tested-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
718126a75e
commit
6208f8b22c
3 changed files with 14 additions and 2 deletions
|
@ -320,7 +320,7 @@ int p54_setup_mac(struct p54_common *priv)
|
|||
return -ENOMEM;
|
||||
|
||||
setup = (struct p54_setup_mac *) skb_put(skb, sizeof(*setup));
|
||||
if (priv->hw->conf.radio_enabled) {
|
||||
if (!(priv->hw->conf.flags & IEEE80211_CONF_IDLE)) {
|
||||
switch (priv->mode) {
|
||||
case NL80211_IFTYPE_STATION:
|
||||
mode = P54_FILTER_TYPE_STATION;
|
||||
|
@ -348,8 +348,9 @@ int p54_setup_mac(struct p54_common *priv)
|
|||
(priv->filter_flags & FIF_OTHER_BSS)) &&
|
||||
(mode != P54_FILTER_TYPE_PROMISCUOUS))
|
||||
mode |= P54_FILTER_TYPE_TRANSPARENT;
|
||||
} else
|
||||
} else {
|
||||
mode = P54_FILTER_TYPE_HIBERNATE;
|
||||
}
|
||||
|
||||
setup->mac_mode = cpu_to_le16(mode);
|
||||
memcpy(setup->mac_addr, priv->mac_addr, ETH_ALEN);
|
||||
|
|
|
@ -288,6 +288,11 @@ static int p54_config(struct ieee80211_hw *dev, u32 changed)
|
|||
if (ret)
|
||||
goto out;
|
||||
}
|
||||
if (changed & IEEE80211_CONF_CHANGE_IDLE) {
|
||||
ret = p54_setup_mac(priv);
|
||||
if (ret)
|
||||
goto out;
|
||||
}
|
||||
|
||||
out:
|
||||
mutex_unlock(&priv->conf_mutex);
|
||||
|
|
|
@ -552,6 +552,12 @@ static void p54_rx_trap(struct p54_common *priv, struct sk_buff *skb)
|
|||
break;
|
||||
case P54_TRAP_TIMER:
|
||||
break;
|
||||
case P54_TRAP_FAA_RADIO_OFF:
|
||||
wiphy_rfkill_set_hw_state(priv->hw->wiphy, true);
|
||||
break;
|
||||
case P54_TRAP_FAA_RADIO_ON:
|
||||
wiphy_rfkill_set_hw_state(priv->hw->wiphy, false);
|
||||
break;
|
||||
default:
|
||||
printk(KERN_INFO "%s: received event:%x freq:%d\n",
|
||||
wiphy_name(priv->hw->wiphy), event, freq);
|
||||
|
|
Loading…
Reference in a new issue