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

Commit b1ecde36 authored by Michal Kazior's avatar Michal Kazior Committed by Kalle Valo
Browse files

ath10k: skip some commands on reassoc



It doesn't make much sense to reconfigure peer
completely upon reassociation. This will make it
easier to have a more uniform association code
across different modes.

Signed-off-by: default avatarMichal Kazior <michal.kazior@tieto.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent 590922a8
Loading
Loading
Loading
Loading
+29 −23
Original line number Diff line number Diff line
@@ -1615,14 +1615,26 @@ static int ath10k_station_assoc(struct ath10k *ar,
		return ret;
	}

	ret = ath10k_setup_peer_smps(ar, arvif, sta->addr, &sta->ht_cap);
	/* Re-assoc is run only to update supported rates for given station. It
	 * doesn't make much sense to reconfigure the peer completely.
	 */
	if (!reassoc) {
		ret = ath10k_setup_peer_smps(ar, arvif, sta->addr,
					     &sta->ht_cap);
		if (ret) {
			ath10k_warn(ar, "failed to setup peer SMPS for vdev %d: %d\n",
				    arvif->vdev_id, ret);
			return ret;
		}

	if (!sta->wme && !reassoc) {
		ret = ath10k_peer_assoc_qos_ap(ar, arvif, sta);
		if (ret) {
			ath10k_warn(ar, "failed to set qos params for STA %pM for vdev %i: %d\n",
				    sta->addr, arvif->vdev_id, ret);
			return ret;
		}

		if (!sta->wme) {
			arvif->num_legacy_stations++;
			ret  = ath10k_recalc_rtscts_prot(arvif);
			if (ret) {
@@ -1638,12 +1650,6 @@ static int ath10k_station_assoc(struct ath10k *ar,
				    arvif->vdev_id, ret);
			return ret;
		}

	ret = ath10k_peer_assoc_qos_ap(ar, arvif, sta);
	if (ret) {
		ath10k_warn(ar, "failed to set qos params for STA %pM for vdev %i: %d\n",
			    sta->addr, arvif->vdev_id, ret);
		return ret;
	}

	return ret;