ath10k: Add peer param map for tlv and non-tlv
The peer param id for PEER_PARAM_USE_FIXED_PWR is different for tlv and non-tlv firmware. This causes incorrect peer param to be set by the driver to the firmware(tlv/non-tlv). Create seperate peer param map for tlv and non-tlv firmware and attach the peer param id based on the firmware type during the init. Tested HW: WCN3990 Tested FW: WLAN.HL.3.1-00784-QCAHLSWMTPLZ-1 Signed-off-by: Rakesh Pillai <pillair@codeaurora.org> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:

committed by
Kalle Valo

parent
3f14b73c38
commit
c0e33fe6fb
@@ -2773,7 +2773,7 @@ static int ath10k_setup_peer_smps(struct ath10k *ar, struct ath10k_vif *arvif,
|
||||
return -EINVAL;
|
||||
|
||||
return ath10k_wmi_peer_set_param(ar, arvif->vdev_id, addr,
|
||||
WMI_PEER_SMPS_STATE,
|
||||
ar->wmi.peer_param->smps_state,
|
||||
ath10k_smps_map[smps]);
|
||||
}
|
||||
|
||||
@@ -2930,7 +2930,7 @@ static void ath10k_bss_assoc(struct ieee80211_hw *hw,
|
||||
* poked with peer param command.
|
||||
*/
|
||||
ret = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, arvif->bssid,
|
||||
WMI_PEER_DUMMY_VAR, 1);
|
||||
ar->wmi.peer_param->dummy_var, 1);
|
||||
if (ret) {
|
||||
ath10k_warn(ar, "failed to poke peer %pM param for ps workaround on vdev %i: %d\n",
|
||||
arvif->bssid, arvif->vdev_id, ret);
|
||||
@@ -6249,7 +6249,7 @@ static int ath10k_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
|
||||
|
||||
if (sta && sta->tdls)
|
||||
ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
|
||||
WMI_PEER_AUTHORIZE, 1);
|
||||
ar->wmi.peer_param->authorize, 1);
|
||||
|
||||
exit:
|
||||
mutex_unlock(&ar->conf_mutex);
|
||||
@@ -6340,7 +6340,7 @@ static void ath10k_sta_rc_update_wk(struct work_struct *wk)
|
||||
sta->addr, bw, mode);
|
||||
|
||||
err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
|
||||
WMI_PEER_PHYMODE, mode);
|
||||
ar->wmi.peer_param->phymode, mode);
|
||||
if (err) {
|
||||
ath10k_warn(ar, "failed to update STA %pM peer phymode %d: %d\n",
|
||||
sta->addr, mode, err);
|
||||
@@ -6348,7 +6348,7 @@ static void ath10k_sta_rc_update_wk(struct work_struct *wk)
|
||||
}
|
||||
|
||||
err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
|
||||
WMI_PEER_CHAN_WIDTH, bw);
|
||||
ar->wmi.peer_param->chan_width, bw);
|
||||
if (err)
|
||||
ath10k_warn(ar, "failed to update STA %pM peer bw %d: %d\n",
|
||||
sta->addr, bw, err);
|
||||
@@ -6359,7 +6359,7 @@ static void ath10k_sta_rc_update_wk(struct work_struct *wk)
|
||||
sta->addr, nss);
|
||||
|
||||
err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
|
||||
WMI_PEER_NSS, nss);
|
||||
ar->wmi.peer_param->nss, nss);
|
||||
if (err)
|
||||
ath10k_warn(ar, "failed to update STA %pM nss %d: %d\n",
|
||||
sta->addr, nss, err);
|
||||
@@ -6370,7 +6370,7 @@ static void ath10k_sta_rc_update_wk(struct work_struct *wk)
|
||||
sta->addr, smps);
|
||||
|
||||
err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
|
||||
WMI_PEER_SMPS_STATE, smps);
|
||||
ar->wmi.peer_param->smps_state, smps);
|
||||
if (err)
|
||||
ath10k_warn(ar, "failed to update STA %pM smps %d: %d\n",
|
||||
sta->addr, smps, err);
|
||||
@@ -6444,7 +6444,7 @@ static int ath10k_sta_set_txpwr(struct ieee80211_hw *hw,
|
||||
mutex_lock(&ar->conf_mutex);
|
||||
|
||||
ret = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
|
||||
WMI_PEER_USE_FIXED_PWR, txpwr);
|
||||
ar->wmi.peer_param->use_fixed_power, txpwr);
|
||||
if (ret) {
|
||||
ath10k_warn(ar, "failed to set tx power for station ret: %d\n",
|
||||
ret);
|
||||
|
Reference in New Issue
Block a user