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

Commit 82cad2a0 authored by Pontus Fuchs's avatar Pontus Fuchs Committed by John W. Linville
Browse files

wcn36xx: Track dpu signature per sta



This fixes problems seen with multiple softap clients and reconnecting
softap clients.

Signed-off-by: default avatarPontus Fuchs <pontus.fuchs@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 2ba0b461
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -902,11 +902,12 @@ static int wcn36xx_smd_config_sta_rsp(struct wcn36xx *wcn,

	sta_priv->sta_index = params->sta_index;
	sta_priv->dpu_desc_index = params->dpu_index;
	sta_priv->ucast_dpu_sign = params->uc_ucast_sig;

	wcn36xx_dbg(WCN36XX_DBG_HAL,
		    "hal config sta rsp status %d sta_index %d bssid_index %d p2p %d\n",
		    "hal config sta rsp status %d sta_index %d bssid_index %d uc_ucast_sig %d p2p %d\n",
		    params->status, params->sta_index, params->bssid_index,
		    params->p2p);
		    params->uc_ucast_sig, params->p2p);

	return 0;
}
+2 −2
Original line number Diff line number Diff line
@@ -131,6 +131,7 @@ static void wcn36xx_set_tx_data(struct wcn36xx_tx_bd *bd,
				   struct ieee80211_vif,
				   drv_priv);

		bd->dpu_sign = sta_priv->ucast_dpu_sign;
		if (vif->type == NL80211_IFTYPE_STATION) {
			bd->sta_index = sta_priv->bss_sta_index;
			bd->dpu_desc_idx = sta_priv->bss_dpu_desc_index;
@@ -144,9 +145,8 @@ static void wcn36xx_set_tx_data(struct wcn36xx_tx_bd *bd,
		__vif_priv = get_vif_by_addr(wcn, hdr->addr2);
		bd->sta_index = __vif_priv->self_sta_index;
		bd->dpu_desc_idx = __vif_priv->self_dpu_desc_index;
	}

		bd->dpu_sign = __vif_priv->self_ucast_dpu_sign;
	}

	if (ieee80211_is_nullfunc(hdr->frame_control) ||
	   (sta_priv && !sta_priv->is_data_encrypted))
+1 −0
Original line number Diff line number Diff line
@@ -159,6 +159,7 @@ struct wcn36xx_sta {
	u16 tid;
	u8 sta_index;
	u8 dpu_desc_index;
	u8 ucast_dpu_sign;
	u8 bss_sta_index;
	u8 bss_dpu_desc_index;
	bool is_data_encrypted;