Commit 156d3008 authored by Kalle Valo's avatar Kalle Valo
Browse files
ath.git patches for v6.5. Major changes:

ath11k

* Multiple Basic Service Set Identifier (MBSSID) and Enhanced MBSSID
  Advertisement (EMA) support in AP mode
parents 3f2da9fc df8e3729
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -3643,6 +3643,9 @@ struct ath10k *ath10k_core_create(size_t priv_size, struct device *dev,
	mutex_init(&ar->dump_mutex);
	spin_lock_init(&ar->data_lock);

	for (int ac = 0; ac < IEEE80211_NUM_ACS; ac++)
		spin_lock_init(&ar->queue_lock[ac]);

	INIT_LIST_HEAD(&ar->peers);
	init_waitqueue_head(&ar->peer_mapping_wq);
	init_waitqueue_head(&ar->htt.empty_tx_wq);
+3 −0
Original line number Diff line number Diff line
@@ -1170,6 +1170,9 @@ struct ath10k {
	/* protects shared structure data */
	spinlock_t data_lock;

	/* serialize wake_tx_queue calls per ac */
	spinlock_t queue_lock[IEEE80211_NUM_ACS];

	struct list_head arvifs;
	struct list_head peers;
	struct ath10k_peer *peer_map[ATH10K_MAX_NUM_PEER_IDS];
+2 −2
Original line number Diff line number Diff line
@@ -293,8 +293,8 @@ void ath10k_debug_fw_stats_process(struct ath10k *ar, struct sk_buff *skb)
		goto free;
	}

	num_peers = ath10k_wmi_fw_stats_num_peers(&ar->debug.fw_stats.peers);
	num_vdevs = ath10k_wmi_fw_stats_num_vdevs(&ar->debug.fw_stats.vdevs);
	num_peers = list_count_nodes(&ar->debug.fw_stats.peers);
	num_vdevs = list_count_nodes(&ar->debug.fw_stats.vdevs);
	is_start = (list_empty(&ar->debug.fw_stats.pdevs) &&
		    !list_empty(&stats.pdevs));
	is_end = (!list_empty(&ar->debug.fw_stats.pdevs) &&
+4 −2
Original line number Diff line number Diff line
@@ -4732,13 +4732,14 @@ static void ath10k_mac_op_wake_tx_queue(struct ieee80211_hw *hw,
{
	struct ath10k *ar = hw->priv;
	int ret;
	u8 ac;
	u8 ac = txq->ac;

	ath10k_htt_tx_txq_update(hw, txq);
	if (ar->htt.tx_q_state.mode != HTT_TX_MODE_SWITCH_PUSH)
		return;

	ac = txq->ac;
	spin_lock_bh(&ar->queue_lock[ac]);

	ieee80211_txq_schedule_start(hw, ac);
	txq = ieee80211_next_txq(hw, ac);
	if (!txq)
@@ -4753,6 +4754,7 @@ static void ath10k_mac_op_wake_tx_queue(struct ieee80211_hw *hw,
	ath10k_htt_tx_txq_update(hw, txq);
out:
	ieee80211_txq_schedule_end(hw, ac);
	spin_unlock_bh(&ar->queue_lock[ac]);
}

/* Must not be called with conf_mutex held as workers can use that also. */
+6 −28
Original line number Diff line number Diff line
@@ -8164,28 +8164,6 @@ ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config(struct ath10k *ar, u32 param)
	return skb;
}

size_t ath10k_wmi_fw_stats_num_peers(struct list_head *head)
{
	struct ath10k_fw_stats_peer *i;
	size_t num = 0;

	list_for_each_entry(i, head, list)
		++num;

	return num;
}

size_t ath10k_wmi_fw_stats_num_vdevs(struct list_head *head)
{
	struct ath10k_fw_stats_vdev *i;
	size_t num = 0;

	list_for_each_entry(i, head, list)
		++num;

	return num;
}

static void
ath10k_wmi_fw_pdev_base_stats_fill(const struct ath10k_fw_stats_pdev *pdev,
				   char *buf, u32 *length)
@@ -8462,8 +8440,8 @@ void ath10k_wmi_main_op_fw_stats_fill(struct ath10k *ar,
		goto unlock;
	}

	num_peers = ath10k_wmi_fw_stats_num_peers(&fw_stats->peers);
	num_vdevs = ath10k_wmi_fw_stats_num_vdevs(&fw_stats->vdevs);
	num_peers = list_count_nodes(&fw_stats->peers);
	num_vdevs = list_count_nodes(&fw_stats->vdevs);

	ath10k_wmi_fw_pdev_base_stats_fill(pdev, buf, &len);
	ath10k_wmi_fw_pdev_tx_stats_fill(pdev, buf, &len);
@@ -8520,8 +8498,8 @@ void ath10k_wmi_10x_op_fw_stats_fill(struct ath10k *ar,
		goto unlock;
	}

	num_peers = ath10k_wmi_fw_stats_num_peers(&fw_stats->peers);
	num_vdevs = ath10k_wmi_fw_stats_num_vdevs(&fw_stats->vdevs);
	num_peers = list_count_nodes(&fw_stats->peers);
	num_vdevs = list_count_nodes(&fw_stats->vdevs);

	ath10k_wmi_fw_pdev_base_stats_fill(pdev, buf, &len);
	ath10k_wmi_fw_pdev_extra_stats_fill(pdev, buf, &len);
@@ -8668,8 +8646,8 @@ void ath10k_wmi_10_4_op_fw_stats_fill(struct ath10k *ar,
		goto unlock;
	}

	num_peers = ath10k_wmi_fw_stats_num_peers(&fw_stats->peers);
	num_vdevs = ath10k_wmi_fw_stats_num_vdevs(&fw_stats->vdevs);
	num_peers = list_count_nodes(&fw_stats->peers);
	num_vdevs = list_count_nodes(&fw_stats->vdevs);

	ath10k_wmi_fw_pdev_base_stats_fill(pdev, buf, &len);
	ath10k_wmi_fw_pdev_extra_stats_fill(pdev, buf, &len);
Loading