Commit 16ad7b4b authored by Kalle Valo's avatar Kalle Valo
Browse files
ath.git patches for v5.12. Major changes:

wil6210

* add support for extended DMG MCS 12.1 rate
parents 30357f6a d5395a54
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ enum ath10k_debug_mask {
	ATH10K_DBG_USB_BULK	= 0x00080000,
	ATH10K_DBG_SNOC		= 0x00100000,
	ATH10K_DBG_QMI		= 0x00200000,
	ATH10K_DBG_STA		= 0x00400000,
	ATH10K_DBG_ANY		= 0xffffffff,
};

+2 −0
Original line number Diff line number Diff line
@@ -569,6 +569,8 @@ void ath10k_htt_htc_tx_complete(struct ath10k *ar, struct sk_buff *skb)
			desc_hdr = (struct htt_data_tx_desc *)
				(skb->data + sizeof(*htt_hdr));
			flags1 = __le16_to_cpu(desc_hdr->flags1);
			skb_pull(skb, sizeof(struct htt_cmd_hdr));
			skb_pull(skb, sizeof(struct htt_data_tx_desc));
		}
	}

+14 −13
Original line number Diff line number Diff line
@@ -4115,8 +4115,7 @@ void ath10k_offchan_tx_work(struct work_struct *work)
		spin_unlock_bh(&ar->data_lock);

		if (peer)
			/* FIXME: should this use ath10k_warn()? */
			ath10k_dbg(ar, ATH10K_DBG_MAC, "peer %pM on vdev %d already present\n",
			ath10k_warn(ar, "peer %pM on vdev %d already present\n",
				    peer_addr, vdev_id);

		if (!peer) {
@@ -6667,7 +6666,7 @@ static void ath10k_sta_rc_update_wk(struct work_struct *wk)
		enum wmi_phy_mode mode;

		mode = chan_to_phymode(&def);
		ath10k_dbg(ar, ATH10K_DBG_MAC, "mac update sta %pM peer bw %d phymode %d\n",
		ath10k_dbg(ar, ATH10K_DBG_STA, "mac update sta %pM peer bw %d phymode %d\n",
			   sta->addr, bw, mode);

		err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
@@ -6686,7 +6685,7 @@ static void ath10k_sta_rc_update_wk(struct work_struct *wk)
	}

	if (changed & IEEE80211_RC_NSS_CHANGED) {
		ath10k_dbg(ar, ATH10K_DBG_MAC, "mac update sta %pM nss %d\n",
		ath10k_dbg(ar, ATH10K_DBG_STA, "mac update sta %pM nss %d\n",
			   sta->addr, nss);

		err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
@@ -6697,7 +6696,7 @@ static void ath10k_sta_rc_update_wk(struct work_struct *wk)
	}

	if (changed & IEEE80211_RC_SMPS_CHANGED) {
		ath10k_dbg(ar, ATH10K_DBG_MAC, "mac update sta %pM smps %d\n",
		ath10k_dbg(ar, ATH10K_DBG_STA, "mac update sta %pM smps %d\n",
			   sta->addr, smps);

		err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
@@ -6708,7 +6707,7 @@ static void ath10k_sta_rc_update_wk(struct work_struct *wk)
	}

	if (changed & IEEE80211_RC_SUPP_RATES_CHANGED) {
		ath10k_dbg(ar, ATH10K_DBG_MAC, "mac update sta %pM supp rates\n",
		ath10k_dbg(ar, ATH10K_DBG_STA, "mac update sta %pM supp rates\n",
			   sta->addr);

		err = ath10k_station_assoc(ar, arvif->vif, sta, true);
@@ -7404,7 +7403,7 @@ static int ath10k_sta_state(struct ieee80211_hw *hw,
		enum wmi_peer_type peer_type = WMI_PEER_TYPE_DEFAULT;
		u32 num_tdls_stations;

		ath10k_dbg(ar, ATH10K_DBG_MAC,
		ath10k_dbg(ar, ATH10K_DBG_STA,
			   "mac vdev %d peer create %pM (new sta) sta %d / %d peer %d / %d\n",
			   arvif->vdev_id, sta->addr,
			   ar->num_stations + 1, ar->max_num_stations,
@@ -7504,7 +7503,7 @@ static int ath10k_sta_state(struct ieee80211_hw *hw,
		/*
		 * Existing station deletion.
		 */
		ath10k_dbg(ar, ATH10K_DBG_MAC,
		ath10k_dbg(ar, ATH10K_DBG_STA,
			   "mac vdev %d peer delete %pM sta %pK (sta gone)\n",
			   arvif->vdev_id, sta->addr, sta);

@@ -7576,7 +7575,7 @@ static int ath10k_sta_state(struct ieee80211_hw *hw,
		/*
		 * New association.
		 */
		ath10k_dbg(ar, ATH10K_DBG_MAC, "mac sta %pM associated\n",
		ath10k_dbg(ar, ATH10K_DBG_STA, "mac sta %pM associated\n",
			   sta->addr);

		ret = ath10k_station_assoc(ar, vif, sta, false);
@@ -7589,7 +7588,7 @@ static int ath10k_sta_state(struct ieee80211_hw *hw,
		/*
		 * Tdls station authorized.
		 */
		ath10k_dbg(ar, ATH10K_DBG_MAC, "mac tdls sta %pM authorized\n",
		ath10k_dbg(ar, ATH10K_DBG_STA, "mac tdls sta %pM authorized\n",
			   sta->addr);

		ret = ath10k_station_assoc(ar, vif, sta, false);
@@ -7612,7 +7611,7 @@ static int ath10k_sta_state(struct ieee80211_hw *hw,
		/*
		 * Disassociation.
		 */
		ath10k_dbg(ar, ATH10K_DBG_MAC, "mac sta %pM disassociated\n",
		ath10k_dbg(ar, ATH10K_DBG_STA, "mac sta %pM disassociated\n",
			   sta->addr);

		ret = ath10k_station_disassoc(ar, vif, sta);
@@ -8429,7 +8428,7 @@ static void ath10k_sta_rc_update(struct ieee80211_hw *hw,
		return;
	}

	ath10k_dbg(ar, ATH10K_DBG_MAC,
	ath10k_dbg(ar, ATH10K_DBG_STA,
		   "mac sta rc update for %pM changed %08x bw %d nss %d smps %d\n",
		   sta->addr, changed, sta->bandwidth, sta->rx_nss,
		   sta->smps_mode);
@@ -9219,7 +9218,9 @@ static void ath10k_sta_statistics(struct ieee80211_hw *hw,
	if (!ath10k_peer_stats_enabled(ar))
		return;

	mutex_lock(&ar->conf_mutex);
	ath10k_debug_fw_stats_request(ar);
	mutex_unlock(&ar->conf_mutex);

	sinfo->rx_duration = arsta->rx_duration;
	sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_DURATION);
+8 −2
Original line number Diff line number Diff line
@@ -240,8 +240,10 @@ static int ath10k_wmi_tlv_parse_peer_stats_info(struct ath10k *ar, u16 tag, u16
		   __le32_to_cpu(stat->last_tx_rate_code),
		   __le32_to_cpu(stat->last_tx_bitrate_kbps));

	rcu_read_lock();
	sta = ieee80211_find_sta_by_ifaddr(ar->hw, stat->peer_macaddr.addr, NULL);
	if (!sta) {
		rcu_read_unlock();
		ath10k_warn(ar, "not found station for peer stats\n");
		return -EINVAL;
	}
@@ -251,6 +253,7 @@ static int ath10k_wmi_tlv_parse_peer_stats_info(struct ath10k *ar, u16 tag, u16
	arsta->rx_bitrate_kbps = __le32_to_cpu(stat->last_rx_bitrate_kbps);
	arsta->tx_rate_code = __le32_to_cpu(stat->last_tx_rate_code);
	arsta->tx_bitrate_kbps = __le32_to_cpu(stat->last_tx_bitrate_kbps);
	rcu_read_unlock();

	return 0;
}
@@ -573,13 +576,13 @@ static void ath10k_wmi_event_tdls_peer(struct ath10k *ar, struct sk_buff *skb)
	case WMI_TDLS_TEARDOWN_REASON_TX:
	case WMI_TDLS_TEARDOWN_REASON_RSSI:
	case WMI_TDLS_TEARDOWN_REASON_PTR_TIMEOUT:
		rcu_read_lock();
		station = ieee80211_find_sta_by_ifaddr(ar->hw,
						       ev->peer_macaddr.addr,
						       NULL);
		if (!station) {
			ath10k_warn(ar, "did not find station from tdls peer event");
			kfree(tb);
			return;
			goto exit;
		}
		arvif = ath10k_get_arvif(ar, __le32_to_cpu(ev->vdev_id));
		ieee80211_tdls_oper_request(
@@ -590,6 +593,9 @@ static void ath10k_wmi_event_tdls_peer(struct ath10k *ar, struct sk_buff *skb)
					);
		break;
	}

exit:
	rcu_read_unlock();
	kfree(tb);
}

+2 −2
Original line number Diff line number Diff line
@@ -3497,7 +3497,7 @@ void ath10k_wmi_event_peer_sta_kickout(struct ath10k *ar, struct sk_buff *skb)
		return;
	}

	ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi event peer sta kickout %pM\n",
	ath10k_dbg(ar, ATH10K_DBG_STA, "wmi event peer sta kickout %pM\n",
		   arg.mac_addr);

	rcu_read_lock();
@@ -7506,7 +7506,7 @@ ath10k_wmi_op_gen_set_sta_ps(struct ath10k *ar, u32 vdev_id,
	cmd->param_id    = __cpu_to_le32(param_id);
	cmd->param_value = __cpu_to_le32(value);

	ath10k_dbg(ar, ATH10K_DBG_WMI,
	ath10k_dbg(ar, ATH10K_DBG_STA,
		   "wmi sta ps param vdev_id 0x%x param %d value %d\n",
		   vdev_id, param_id, value);
	return skb;
Loading