Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit abd984e6 authored by Sujith's avatar Sujith Committed by John W. Linville
Browse files

ath9k_htc: Use proper station add/remove callbacks



sta_add/sta_remove are the callbacks that can sleep.
Use them instead of sta_notify.

Signed-off-by: default avatarSujith <Sujith.Manoharan@atheros.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 9d1ac34e
Loading
Loading
Loading
Loading
+24 −17
Original line number Diff line number Diff line
@@ -1516,9 +1516,8 @@ static void ath9k_htc_configure_filter(struct ieee80211_hw *hw,
	mutex_unlock(&priv->mutex);
}

static void ath9k_htc_sta_notify(struct ieee80211_hw *hw,
static int ath9k_htc_sta_add(struct ieee80211_hw *hw,
			     struct ieee80211_vif *vif,
				 enum sta_notify_cmd cmd,
			     struct ieee80211_sta *sta)
{
	struct ath9k_htc_priv *priv = hw->priv;
@@ -1526,22 +1525,29 @@ static void ath9k_htc_sta_notify(struct ieee80211_hw *hw,

	mutex_lock(&priv->mutex);
	ath9k_htc_ps_wakeup(priv);

	switch (cmd) {
	case STA_NOTIFY_ADD:
	ret = ath9k_htc_add_station(priv, vif, sta);
	if (!ret)
		ath9k_htc_init_rate(priv, sta);
		break;
	case STA_NOTIFY_REMOVE:
		ath9k_htc_remove_station(priv, vif, sta);
		break;
	default:
		break;
	ath9k_htc_ps_restore(priv);
	mutex_unlock(&priv->mutex);

	return ret;
}

static int ath9k_htc_sta_remove(struct ieee80211_hw *hw,
				struct ieee80211_vif *vif,
				struct ieee80211_sta *sta)
{
	struct ath9k_htc_priv *priv = hw->priv;
	int ret;

	mutex_lock(&priv->mutex);
	ath9k_htc_ps_wakeup(priv);
	ret = ath9k_htc_remove_station(priv, vif, sta);
	ath9k_htc_ps_restore(priv);
	mutex_unlock(&priv->mutex);

	return ret;
}

static int ath9k_htc_conf_tx(struct ieee80211_hw *hw, u16 queue,
@@ -1849,7 +1855,8 @@ struct ieee80211_ops ath9k_htc_ops = {
	.remove_interface   = ath9k_htc_remove_interface,
	.config             = ath9k_htc_config,
	.configure_filter   = ath9k_htc_configure_filter,
	.sta_notify         = ath9k_htc_sta_notify,
	.sta_add            = ath9k_htc_sta_add,
	.sta_remove         = ath9k_htc_sta_remove,
	.conf_tx            = ath9k_htc_conf_tx,
	.bss_info_changed   = ath9k_htc_bss_info_changed,
	.set_key            = ath9k_htc_set_key,