Commit c605d0ce authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau
Browse files

wifi: mt76: mt7921: move mt792x_mutex_{acquire/release} in mt792x.h



This is a preliminary patch to introduce WiFi7 chipset support

Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: default avatarDeren Wu <deren.wu@mediatek.com>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 1c42e0f2
Loading
Loading
Loading
Loading
+16 −16
Original line number Diff line number Diff line
@@ -8,9 +8,9 @@ mt7921_reg_set(void *data, u64 val)
{
	struct mt792x_dev *dev = data;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	mt76_wr(dev, dev->mt76.debugfs_reg, val);
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return 0;
}
@@ -20,9 +20,9 @@ mt7921_reg_get(void *data, u64 *val)
{
	struct mt792x_dev *dev = data;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	*val = mt76_rr(dev, dev->mt76.debugfs_reg);
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return 0;
}
@@ -34,12 +34,12 @@ mt7921_fw_debug_set(void *data, u64 val)
{
	struct mt792x_dev *dev = data;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	dev->fw_debug = (u8)val;
	mt7921_mcu_fw_log_2_host(dev, dev->fw_debug);

	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return 0;
}
@@ -98,7 +98,7 @@ mt7921_tx_stats_show(struct seq_file *file, void *data)
	struct mt76_mib_stats *mib = &phy->mib;
	int i;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	mt7921_ampdu_stat_read_phy(phy, file);

@@ -113,7 +113,7 @@ mt7921_tx_stats_show(struct seq_file *file, void *data)
			seq_puts(file, "\n");
	}

	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return 0;
}
@@ -126,7 +126,7 @@ mt7921_queues_acq(struct seq_file *s, void *data)
	struct mt792x_dev *dev = dev_get_drvdata(s->private);
	int i;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	for (i = 0; i < 4; i++) {
		u32 ctrl, val, qlen = 0;
@@ -146,7 +146,7 @@ mt7921_queues_acq(struct seq_file *s, void *data)
		seq_printf(s, "AC%d: queued=%d\n", i, qlen);
	}

	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return 0;
}
@@ -215,9 +215,9 @@ mt7921_txpwr(struct seq_file *s, void *data)
	struct mt7921_txpwr txpwr;
	int ret;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	ret = mt7921_get_txpwr_info(dev, &txpwr);
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	if (ret)
		return ret;
@@ -316,7 +316,7 @@ mt7921_deep_sleep_set(void *data, u64 val)
	if (mt76_is_usb(&dev->mt76))
		return -EOPNOTSUPP;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	if (pm->ds_enable_user == enable)
		goto out;

@@ -324,7 +324,7 @@ mt7921_deep_sleep_set(void *data, u64 val)
	pm->ds_enable = enable && !monitor;
	mt76_connac_mcu_set_deep_sleep(&dev->mt76, pm->ds_enable);
out:
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return 0;
}
@@ -400,9 +400,9 @@ static int mt7921_chip_reset(void *data, u64 val)
		break;
	default:
		/* Collect the core dump before reset wifisys. */
		mt7921_mutex_acquire(dev);
		mt792x_mutex_acquire(dev);
		ret = mt76_connac_mcu_chip_config(&dev->mt76);
		mt7921_mutex_release(dev);
		mt792x_mutex_release(dev);
		break;
	}

+4 −4
Original line number Diff line number Diff line
@@ -64,9 +64,9 @@ static ssize_t mt7921_thermal_temp_show(struct device *dev,
		struct mt792x_dev *mdev = phy->dev;
		int temperature;

		mt7921_mutex_acquire(mdev);
		mt792x_mutex_acquire(mdev);
		temperature = mt7921_mcu_get_temperature(phy);
		mt7921_mutex_release(mdev);
		mt792x_mutex_release(mdev);

		if (temperature < 0)
			return temperature;
@@ -116,11 +116,11 @@ mt7921_regd_notifier(struct wiphy *wiphy,
	dev->mt76.region = request->dfs_region;
	dev->country_ie_env = request->country_ie_env;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	mt7921_mcu_set_clc(dev, request->alpha2, request->country_ie_env);
	mt76_connac_mcu_set_channel_domain(hw->priv);
	mt7921_set_tx_sar_pwr(hw, NULL);
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);
}

static int
+6 −6
Original line number Diff line number Diff line
@@ -971,7 +971,7 @@ void mt7921_mac_work(struct work_struct *work)
					       mac_work.work);
	phy = mphy->priv;

	mt7921_mutex_acquire(phy->dev);
	mt792x_mutex_acquire(phy->dev);

	mt76_update_survey(mphy);
	if (++mphy->mac_work_count == 2) {
@@ -980,7 +980,7 @@ void mt7921_mac_work(struct work_struct *work)
		mt7921_mac_update_mib_stats(phy);
	}

	mt7921_mutex_release(phy->dev);
	mt792x_mutex_release(phy->dev);

	mt76_tx_status_check(mphy->dev, false);
	ieee80211_queue_delayed_work(phy->mt76->hw, &mphy->mac_work,
@@ -1191,9 +1191,9 @@ bool mt7921_usb_sdio_tx_status_data(struct mt76_dev *mdev, u8 *update)
{
	struct mt792x_dev *dev = container_of(mdev, struct mt792x_dev, mt76);

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	mt7921_mac_sta_poll(dev);
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return false;
}
@@ -1213,10 +1213,10 @@ void mt7921_set_ipv6_ns_work(struct work_struct *work)
		if (!skb)
			break;

		mt7921_mutex_acquire(dev);
		mt792x_mutex_acquire(dev);
		ret = mt76_mcu_skb_send_msg(&dev->mt76, skb,
					    MCU_UNI_CMD(OFFLOAD), true);
		mt7921_mutex_release(dev);
		mt792x_mutex_release(dev);

	} while (!ret);

+72 −72
Original line number Diff line number Diff line
@@ -255,9 +255,9 @@ static int mt7921_start(struct ieee80211_hw *hw)
	struct mt792x_phy *phy = mt7921_hw_phy(hw);
	int err;

	mt7921_mutex_acquire(phy->dev);
	mt792x_mutex_acquire(phy->dev);
	err = __mt7921_start(phy);
	mt7921_mutex_release(phy->dev);
	mt792x_mutex_release(phy->dev);

	return err;
}
@@ -274,10 +274,10 @@ void mt7921_stop(struct ieee80211_hw *hw)
	cancel_work_sync(&dev->reset_work);
	mt76_connac_free_pending_tx_skbs(&dev->pm, NULL);

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	clear_bit(MT76_STATE_RUNNING, &phy->mt76->state);
	mt76_connac_mcu_set_mac_enable(&dev->mt76, 0, false, false);
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);
}
EXPORT_SYMBOL_GPL(mt7921_stop);

@@ -290,7 +290,7 @@ static int mt7921_add_interface(struct ieee80211_hw *hw,
	struct mt76_txq *mtxq;
	int idx, ret = 0;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	mvif->mt76.idx = __ffs64(~dev->mt76.vif_mask);
	if (mvif->mt76.idx >= MT7921_MAX_INTERFACES) {
@@ -333,7 +333,7 @@ static int mt7921_add_interface(struct ieee80211_hw *hw,

	vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER;
out:
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return ret;
}
@@ -347,7 +347,7 @@ static void mt7921_remove_interface(struct ieee80211_hw *hw,
	struct mt792x_phy *phy = mt7921_hw_phy(hw);
	int idx = msta->wcid.idx;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	mt76_connac_free_pending_tx_skbs(&dev->pm, &msta->wcid);
	mt76_connac_mcu_uni_add_dev(&dev->mphy, vif, &mvif->sta.wcid, false);

@@ -355,7 +355,7 @@ static void mt7921_remove_interface(struct ieee80211_hw *hw,

	dev->mt76.vif_mask &= ~BIT_ULL(mvif->mt76.idx);
	phy->omac_mask &= ~BIT_ULL(mvif->mt76.omac_idx);
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	spin_lock_bh(&dev->mt76.sta_poll_lock);
	if (!list_empty(&msta->wcid.poll_list))
@@ -384,11 +384,11 @@ void mt7921_roc_work(struct work_struct *work)
	if (!test_and_clear_bit(MT76_STATE_ROC, &phy->mt76->state))
		return;

	mt7921_mutex_acquire(phy->dev);
	mt792x_mutex_acquire(phy->dev);
	ieee80211_iterate_active_interfaces(phy->mt76->hw,
					    IEEE80211_IFACE_ITER_RESUME_ALL,
					    mt7921_roc_iter, phy);
	mt7921_mutex_release(phy->dev);
	mt792x_mutex_release(phy->dev);
	ieee80211_remain_on_channel_expired(phy->mt76->hw);
}

@@ -406,10 +406,10 @@ static int mt7921_abort_roc(struct mt792x_phy *phy, struct mt792x_vif *vif)
	del_timer_sync(&phy->roc_timer);
	cancel_work_sync(&phy->roc_work);

	mt7921_mutex_acquire(phy->dev);
	mt792x_mutex_acquire(phy->dev);
	if (test_and_clear_bit(MT76_STATE_ROC, &phy->mt76->state))
		err = mt7921_mcu_abort_roc(phy, vif, phy->roc_token_id);
	mt7921_mutex_release(phy->dev);
	mt792x_mutex_release(phy->dev);

	return err;
}
@@ -454,9 +454,9 @@ static int mt7921_remain_on_channel(struct ieee80211_hw *hw,
	struct mt792x_phy *phy = mt7921_hw_phy(hw);
	int err;

	mt7921_mutex_acquire(phy->dev);
	mt792x_mutex_acquire(phy->dev);
	err = mt7921_set_roc(phy, mvif, chan, duration, MT7921_ROC_REQ_ROC);
	mt7921_mutex_release(phy->dev);
	mt792x_mutex_release(phy->dev);

	return err;
}
@@ -477,7 +477,7 @@ static int mt7921_set_channel(struct mt792x_phy *phy)

	cancel_delayed_work_sync(&phy->mt76->mac_work);

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	set_bit(MT76_RESET, &phy->mt76->state);

	mt76_set_channel(phy->mt76);
@@ -493,7 +493,7 @@ static int mt7921_set_channel(struct mt792x_phy *phy)

out:
	clear_bit(MT76_RESET, &phy->mt76->state);
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	mt76_worker_schedule(&dev->mt76.tx_worker);
	ieee80211_queue_delayed_work(phy->mt76->hw, &phy->mt76->mac_work,
@@ -546,7 +546,7 @@ static int mt7921_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
		return -EOPNOTSUPP;
	}

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	if (cmd == SET_KEY) {
		*wcid_keyidx = idx;
@@ -570,7 +570,7 @@ static int mt7921_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
					      key, MCU_UNI_CMD(STA_REC_UPDATE),
					      &mvif->wep_sta->wcid, cmd);
out:
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return err;
}
@@ -642,7 +642,7 @@ static int mt7921_config(struct ieee80211_hw *hw, u32 changed)
		ieee80211_wake_queues(hw);
	}

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	if (changed & IEEE80211_CONF_CHANGE_POWER) {
		ret = mt7921_set_tx_sar_pwr(hw, NULL);
@@ -657,7 +657,7 @@ static int mt7921_config(struct ieee80211_hw *hw, u32 changed)
	}

out:
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return ret;
}
@@ -698,9 +698,9 @@ static void mt7921_configure_filter(struct ieee80211_hw *hw,
	MT7921_FILTER(FIF_CONTROL, CONTROL);
	MT7921_FILTER(FIF_OTHER_BSS, OTHER_BSS);

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	mt7921_mcu_set_rxfilter(dev, flags, 0, 0);
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	*total_flags &= (FIF_OTHER_BSS | FIF_FCSFAIL | FIF_CONTROL);
}
@@ -713,7 +713,7 @@ static void mt7921_bss_info_changed(struct ieee80211_hw *hw,
	struct mt792x_phy *phy = mt7921_hw_phy(hw);
	struct mt792x_dev *dev = mt7921_hw_dev(hw);

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	if (changed & BSS_CHANGED_ERP_SLOT) {
		int slottime = info->use_short_slot ? 9 : 20;
@@ -749,7 +749,7 @@ static void mt7921_bss_info_changed(struct ieee80211_hw *hw,
						  info);
	}

	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);
}

int mt7921_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif,
@@ -800,7 +800,7 @@ void mt7921_mac_sta_assoc(struct mt76_dev *mdev, struct ieee80211_vif *vif,
	struct mt792x_sta *msta = (struct mt792x_sta *)sta->drv_priv;
	struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	if (vif->type == NL80211_IFTYPE_STATION && !sta->tdls)
		mt76_connac_mcu_uni_add_bss(&dev->mphy, vif, &mvif->sta.wcid,
@@ -814,7 +814,7 @@ void mt7921_mac_sta_assoc(struct mt76_dev *mdev, struct ieee80211_vif *vif,

	mt7921_mcu_sta_update(dev, sta, vif, true, MT76_STA_INFO_STATE_ASSOC);

	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);
}
EXPORT_SYMBOL_GPL(mt7921_mac_sta_assoc);

@@ -909,9 +909,9 @@ static int mt7921_set_rts_threshold(struct ieee80211_hw *hw, u32 val)
{
	struct mt792x_dev *dev = mt7921_hw_dev(hw);

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	mt76_connac_mcu_set_rts_thresh(&dev->mt76, val, 0);
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return 0;
}
@@ -935,7 +935,7 @@ mt7921_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,

	mtxq = (struct mt76_txq *)txq->drv_priv;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	switch (action) {
	case IEEE80211_AMPDU_RX_START:
		mt76_rx_aggr_start(&dev->mt76, &msta->wcid, tid, ssn,
@@ -968,7 +968,7 @@ mt7921_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
		ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);
		break;
	}
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return ret;
}
@@ -982,9 +982,9 @@ static int mt7921_sta_state(struct ieee80211_hw *hw,
	struct mt792x_dev *dev = mt7921_hw_dev(hw);

	if (dev->pm.ds_enable) {
		mt7921_mutex_acquire(dev);
		mt792x_mutex_acquire(dev);
		mt76_connac_sta_state_dp(&dev->mt76, old_state, new_state);
		mt7921_mutex_release(dev);
		mt792x_mutex_release(dev);
	}

	return mt76_sta_state(hw, vif, sta, old_state, new_state);
@@ -997,14 +997,14 @@ mt7921_get_stats(struct ieee80211_hw *hw,
	struct mt792x_phy *phy = mt7921_hw_phy(hw);
	struct mt76_mib_stats *mib = &phy->mib;

	mt7921_mutex_acquire(phy->dev);
	mt792x_mutex_acquire(phy->dev);

	stats->dot11RTSSuccessCount = mib->rts_cnt;
	stats->dot11RTSFailureCount = mib->rts_retries_cnt;
	stats->dot11FCSErrorCount = mib->fcs_err_cnt;
	stats->dot11ACKFailureCount = mib->ack_fail_cnt;

	mt7921_mutex_release(phy->dev);
	mt792x_mutex_release(phy->dev);

	return 0;
}
@@ -1144,7 +1144,7 @@ void mt7921_get_et_stats(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
	};
	int i, ei = 0;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	mt7921_mac_update_mib_stats(phy);

@@ -1184,7 +1184,7 @@ void mt7921_get_et_stats(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
	wi.initial_stat_idx = ei;
	ieee80211_iterate_stations_atomic(hw, mt7921_ethtool_worker, &wi);

	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	if (!wi.sta_count)
		return;
@@ -1212,7 +1212,7 @@ mt7921_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
	} tsf;
	u16 n;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	n = omac_idx > HW_BSSID_MAX ? HW_BSSID_0 : omac_idx;
	/* TSF software read */
@@ -1220,7 +1220,7 @@ mt7921_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
	tsf.t32[0] = mt76_rr(dev, MT_LPON_UTTR0(0));
	tsf.t32[1] = mt76_rr(dev, MT_LPON_UTTR1(0));

	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return tsf.t64;
}
@@ -1238,7 +1238,7 @@ mt7921_set_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
	} tsf = { .t64 = timestamp, };
	u16 n;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	n = omac_idx > HW_BSSID_MAX ? HW_BSSID_0 : omac_idx;
	mt76_wr(dev, MT_LPON_UTTR0(0), tsf.t32[0]);
@@ -1246,7 +1246,7 @@ mt7921_set_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
	/* TSF software overwrite */
	mt76_set(dev, MT_LPON_TCR(0, n), MT_LPON_TCR_SW_WRITE);

	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);
}

static void
@@ -1255,10 +1255,10 @@ mt7921_set_coverage_class(struct ieee80211_hw *hw, s16 coverage_class)
	struct mt792x_phy *phy = mt7921_hw_phy(hw);
	struct mt792x_dev *dev = phy->dev;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	phy->coverage_class = max_t(s16, coverage_class, 0);
	mt7921_mac_set_timing(phy);
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);
}

void mt7921_scan_work(struct work_struct *work)
@@ -1302,9 +1302,9 @@ mt7921_hw_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
	struct mt76_phy *mphy = hw->priv;
	int err;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	err = mt76_connac_mcu_hw_scan(mphy, vif, req);
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return err;
}
@@ -1315,9 +1315,9 @@ mt7921_cancel_hw_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
	struct mt792x_dev *dev = mt7921_hw_dev(hw);
	struct mt76_phy *mphy = hw->priv;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	mt76_connac_mcu_cancel_hw_scan(mphy, vif);
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);
}

static int
@@ -1329,7 +1329,7 @@ mt7921_start_sched_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
	struct mt76_phy *mphy = hw->priv;
	int err;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	err = mt76_connac_mcu_sched_scan_req(mphy, vif, req);
	if (err < 0)
@@ -1337,7 +1337,7 @@ mt7921_start_sched_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif,

	err = mt76_connac_mcu_sched_scan_enable(mphy, vif, true);
out:
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return err;
}
@@ -1349,9 +1349,9 @@ mt7921_stop_sched_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
	struct mt76_phy *mphy = hw->priv;
	int err;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	err = mt76_connac_mcu_sched_scan_enable(mphy, vif, false);
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return err;
}
@@ -1369,7 +1369,7 @@ mt7921_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant)
	if ((BIT(hweight8(tx_ant)) - 1) != tx_ant)
		return -EINVAL;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	phy->mt76->antenna_mask = tx_ant;
	phy->mt76->chainmask = tx_ant;
@@ -1377,7 +1377,7 @@ mt7921_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant)
	mt76_set_stream_caps(phy->mt76, true);
	mt7921_set_stream_he_caps(phy);

	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return 0;
}
@@ -1432,7 +1432,7 @@ static int mt7921_suspend(struct ieee80211_hw *hw,
	cancel_delayed_work_sync(&dev->pm.ps_work);
	mt76_connac_free_pending_tx_skbs(&dev->pm, NULL);

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	clear_bit(MT76_STATE_RUNNING, &phy->mt76->state);
	ieee80211_iterate_active_interfaces(hw,
@@ -1440,7 +1440,7 @@ static int mt7921_suspend(struct ieee80211_hw *hw,
					    mt7921_mcu_set_suspend_iter,
					    &dev->mphy);

	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return 0;
}
@@ -1450,7 +1450,7 @@ static int mt7921_resume(struct ieee80211_hw *hw)
	struct mt792x_dev *dev = mt7921_hw_dev(hw);
	struct mt792x_phy *phy = mt7921_hw_phy(hw);

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	set_bit(MT76_STATE_RUNNING, &phy->mt76->state);
	ieee80211_iterate_active_interfaces(hw,
@@ -1461,7 +1461,7 @@ static int mt7921_resume(struct ieee80211_hw *hw)
	ieee80211_queue_delayed_work(hw, &phy->mt76->mac_work,
				     MT7921_WATCHDOG_TIME);

	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return 0;
}
@@ -1480,9 +1480,9 @@ static void mt7921_set_rekey_data(struct ieee80211_hw *hw,
{
	struct mt792x_dev *dev = mt7921_hw_dev(hw);

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	mt76_connac_mcu_update_gtk_rekey(hw, vif, data);
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);
}
#endif /* CONFIG_PM */

@@ -1503,7 +1503,7 @@ static void mt7921_sta_set_decap_offload(struct ieee80211_hw *hw,
	struct mt792x_sta *msta = (struct mt792x_sta *)sta->drv_priv;
	struct mt792x_dev *dev = mt7921_hw_dev(hw);

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	if (enabled)
		set_bit(MT_WCID_FLAG_HDR_TRANS, &msta->wcid.flags);
@@ -1513,7 +1513,7 @@ static void mt7921_sta_set_decap_offload(struct ieee80211_hw *hw,
	mt76_connac_mcu_sta_update_hdr_trans(&dev->mt76, vif, &msta->wcid,
					     MCU_UNI_CMD(STA_REC_UPDATE));

	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);
}

#if IS_ENABLED(CONFIG_IPV6)
@@ -1601,7 +1601,7 @@ static int mt7921_set_sar_specs(struct ieee80211_hw *hw,
	struct mt792x_dev *dev = mt7921_hw_dev(hw);
	int err;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	err = mt7921_mcu_set_clc(dev, dev->mt76.alpha2,
				 dev->country_ie_env);
	if (err < 0)
@@ -1609,7 +1609,7 @@ static int mt7921_set_sar_specs(struct ieee80211_hw *hw,

	err = mt7921_set_tx_sar_pwr(hw, sar);
out:
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return err;
}
@@ -1621,9 +1621,9 @@ mt7921_channel_switch_beacon(struct ieee80211_hw *hw,
{
	struct mt792x_dev *dev = mt7921_hw_dev(hw);

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	mt7921_mcu_uni_add_beacon_offload(dev, hw, vif, true);
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);
}

static int
@@ -1635,7 +1635,7 @@ mt7921_start_ap(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
	struct mt792x_dev *dev = mt7921_hw_dev(hw);
	int err;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	err = mt76_connac_mcu_uni_add_bss(phy->mt76, vif, &mvif->sta.wcid,
					  true, mvif->ctx);
@@ -1649,7 +1649,7 @@ mt7921_start_ap(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
	err = mt7921_mcu_sta_update(dev, NULL, vif, true,
				    MT76_STA_INFO_STATE_NONE);
out:
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);

	return err;
}
@@ -1663,7 +1663,7 @@ mt7921_stop_ap(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
	struct mt792x_dev *dev = mt7921_hw_dev(hw);
	int err;

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);

	err = mt7921_mcu_set_bss_pm(dev, vif, false);
	if (err)
@@ -1673,7 +1673,7 @@ mt7921_stop_ap(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
				    mvif->ctx);

out:
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);
}

static int
@@ -1711,11 +1711,11 @@ mt7921_change_chanctx(struct ieee80211_hw *hw,
{
	struct mt792x_phy *phy = mt7921_hw_phy(hw);

	mt7921_mutex_acquire(phy->dev);
	mt792x_mutex_acquire(phy->dev);
	ieee80211_iterate_active_interfaces(phy->mt76->hw,
					    IEEE80211_IFACE_ITER_ACTIVE,
					    mt7921_ctx_iter, ctx);
	mt7921_mutex_release(phy->dev);
	mt792x_mutex_release(phy->dev);
}

static int
@@ -1757,10 +1757,10 @@ static void mt7921_mgd_prepare_tx(struct ieee80211_hw *hw,
	u16 duration = info->duration ? info->duration :
		       jiffies_to_msecs(HZ);

	mt7921_mutex_acquire(dev);
	mt792x_mutex_acquire(dev);
	mt7921_set_roc(mvif->phy, mvif, mvif->ctx->def.chan, duration,
		       MT7921_ROC_REQ_JOIN);
	mt7921_mutex_release(dev);
	mt792x_mutex_release(dev);
}

static void mt7921_mgd_complete_tx(struct ieee80211_hw *hw,
+0 −5
Original line number Diff line number Diff line
@@ -224,11 +224,6 @@ mt7921_hw_dev(struct ieee80211_hw *hw)
	return container_of(phy->dev, struct mt792x_dev, mt76);
}

#define mt7921_mutex_acquire(dev)	\
	mt76_connac_mutex_acquire(&(dev)->mt76, &(dev)->pm)
#define mt7921_mutex_release(dev)	\
	mt76_connac_mutex_release(&(dev)->mt76, &(dev)->pm)

extern const struct ieee80211_ops mt7921_ops;

u32 mt7921_reg_map(struct mt792x_dev *dev, u32 addr);
Loading