qcacmn: Add API to update peer channel width and puncture parameter
Add API to send peer param WMI_PEER_CHWIDTH_PUNCTURE_20MHZ_BITMAP Change-Id: Id05629b12059ff2258e196b3e9aa78f5fb52bda4 CRs-Fixed: 3269745
This commit is contained in:

committed by
Madan Koyyalamudi

parent
15e2647ec7
commit
cb2c6707f6
@@ -1268,6 +1268,106 @@ static void target_if_vdev_register_set_mac_address(
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* target_if_phy_ch_width_to_wmi_chan_width() - convert channel width from
|
||||
* phy_ch_width to
|
||||
* wmi_host_channel_width
|
||||
* @ch_width: enum phy_ch_width
|
||||
*
|
||||
* return: wmi_host_channel_width
|
||||
*/
|
||||
static wmi_host_channel_width
|
||||
target_if_phy_ch_width_to_wmi_chan_width(enum phy_ch_width ch_width)
|
||||
{
|
||||
switch (ch_width) {
|
||||
case CH_WIDTH_20MHZ:
|
||||
return WMI_HOST_CHAN_WIDTH_20;
|
||||
case CH_WIDTH_40MHZ:
|
||||
return WMI_HOST_CHAN_WIDTH_40;
|
||||
case CH_WIDTH_80MHZ:
|
||||
return WMI_HOST_CHAN_WIDTH_80;
|
||||
case CH_WIDTH_160MHZ:
|
||||
return WMI_HOST_CHAN_WIDTH_160;
|
||||
case CH_WIDTH_80P80MHZ:
|
||||
return WMI_HOST_CHAN_WIDTH_80P80;
|
||||
case CH_WIDTH_5MHZ:
|
||||
return WMI_HOST_CHAN_WIDTH_5;
|
||||
case CH_WIDTH_10MHZ:
|
||||
return WMI_HOST_CHAN_WIDTH_10;
|
||||
case CH_WIDTH_320MHZ:
|
||||
return WMI_HOST_CHAN_WIDTH_320;
|
||||
default:
|
||||
return WMI_HOST_CHAN_WIDTH_20;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* target_if_vdev_peer_mlme_param_2_wmi() - convert peer parameter from mlme to
|
||||
* wmi
|
||||
* @mlme_id: peer parameter id in mlme layer
|
||||
* @param_value: peer parameter value in mlme layer
|
||||
* @param: pointer to peer_set_params
|
||||
*
|
||||
* Return: peer parameter id in wmi layer
|
||||
*/
|
||||
static void
|
||||
target_if_vdev_peer_mlme_param_2_wmi(enum wlan_mlme_peer_param_id mlme_id,
|
||||
uint32_t param_value,
|
||||
struct peer_set_params *param)
|
||||
{
|
||||
enum phy_ch_width bw;
|
||||
|
||||
switch (mlme_id) {
|
||||
case WLAN_MLME_PEER_BW_PUNCTURE:
|
||||
param->param_id = WMI_HOST_PEER_CHWIDTH_PUNCTURE_20MHZ_BITMAP;
|
||||
param->param_value = param_value;
|
||||
bw = QDF_GET_BITS(param_value, 0, 8);
|
||||
QDF_SET_BITS(param->param_value, 0, 8,
|
||||
target_if_phy_ch_width_to_wmi_chan_width(bw));
|
||||
break;
|
||||
default:
|
||||
param->param_id = mlme_id;
|
||||
param->param_value = param_value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* target_if_vdev_peer_set_param_send() - send peer param
|
||||
* @vdev: Pointer to vdev object.
|
||||
* @peer_mac_addr: peer mac address
|
||||
* @param_id: peer param id
|
||||
* @param_value: peer param value
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
static QDF_STATUS target_if_vdev_peer_set_param_send(
|
||||
struct wlan_objmgr_vdev *vdev,
|
||||
uint8_t *peer_mac_addr,
|
||||
uint32_t param_id,
|
||||
uint32_t param_value)
|
||||
{
|
||||
struct peer_set_params param;
|
||||
wmi_unified_t wmi_handle;
|
||||
|
||||
if (!peer_mac_addr || !vdev) {
|
||||
mlme_err("invalid input");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
wmi_handle = target_if_vdev_mgr_wmi_handle_get(vdev);
|
||||
if (!wmi_handle) {
|
||||
mlme_err("Failed to get WMI handle!");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
qdf_mem_zero(¶m, sizeof(param));
|
||||
|
||||
target_if_vdev_peer_mlme_param_2_wmi(param_id, param_value, ¶m);
|
||||
param.vdev_id = wlan_vdev_get_id(vdev);
|
||||
|
||||
return wmi_set_peer_param_send(wmi_handle, peer_mac_addr, ¶m);
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
target_if_vdev_mgr_register_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops)
|
||||
{
|
||||
@@ -1337,5 +1437,7 @@ target_if_vdev_mgr_register_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops)
|
||||
mlme_tx_ops->vdev_mgr_rsp_timer_stop =
|
||||
target_if_vdev_mgr_rsp_timer_stop;
|
||||
target_if_vdev_register_set_mac_address(mlme_tx_ops);
|
||||
mlme_tx_ops->vdev_peer_set_param_send =
|
||||
target_if_vdev_peer_set_param_send;
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
@@ -461,6 +461,7 @@ enum wlan_mlme_cfg_id;
|
||||
* @psoc_wake_lock_deinit: De-Initialize psoc wake lock for vdev response timer
|
||||
* @get_hw_link_id: Get hw_link_id for pdev
|
||||
* @vdev_send_set_mac_addr: API to send set MAC address request to FW
|
||||
* @vdev_peer_set_param_send: API to send peer param to FW
|
||||
*/
|
||||
struct wlan_lmac_if_mlme_tx_ops {
|
||||
uint32_t (*get_wifi_iface_id) (struct wlan_objmgr_pdev *pdev);
|
||||
@@ -559,6 +560,10 @@ QDF_STATUS (*vdev_send_set_mac_addr)(struct qdf_mac_addr mac_addr,
|
||||
struct qdf_mac_addr mld_addr,
|
||||
struct wlan_objmgr_vdev *vdev);
|
||||
#endif
|
||||
QDF_STATUS (*vdev_peer_set_param_send)(struct wlan_objmgr_vdev *vdev,
|
||||
uint8_t *peer_mac_addr,
|
||||
uint32_t param_id,
|
||||
uint32_t param_value);
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -475,4 +475,23 @@ struct reduced_neighbor_report *wlan_cm_get_rnr(struct wlan_objmgr_vdev *vdev,
|
||||
QDF_STATUS
|
||||
wlan_cm_disc_cont_after_rso_stop(struct wlan_objmgr_vdev *vdev,
|
||||
struct wlan_cm_vdev_discon_req *req);
|
||||
|
||||
#ifdef WLAN_FEATURE_11BE
|
||||
/**
|
||||
* wlan_cm_sta_update_puncture() - update puncture and channel width for sta
|
||||
* @vdev: vdev
|
||||
* @peer_mac: peer mac address
|
||||
* @ori_punc: original puncture bitmap from EHT operation IE
|
||||
* @ori_bw: bandwidth information according to EHT operation IE
|
||||
* @ccfs0: EHT Channel Centre Frequency Segment0 information
|
||||
* @ccfs1: EHT Channel Centre Frequency Segment1 information
|
||||
* @new_bw: bandwidth to be set
|
||||
*/
|
||||
QDF_STATUS wlan_cm_sta_update_bw_puncture(struct wlan_objmgr_vdev *vdev,
|
||||
uint8_t *peer_mac,
|
||||
uint16_t ori_punc,
|
||||
enum phy_ch_width ori_bw,
|
||||
uint8_t ccfs0, uint8_t ccfs1,
|
||||
enum phy_ch_width new_bw);
|
||||
#endif /* WLAN_FEATURE_11BE */
|
||||
#endif /* __WLAN_CM_UCFG_API_H */
|
||||
|
@@ -24,6 +24,7 @@
|
||||
#include <wlan_cm_api.h>
|
||||
#include "connection_mgr/core/src/wlan_cm_main_api.h"
|
||||
#include "connection_mgr/core/src/wlan_cm_roam.h"
|
||||
#include <wlan_vdev_mgr_utils_api.h>
|
||||
|
||||
QDF_STATUS wlan_cm_start_connect(struct wlan_objmgr_vdev *vdev,
|
||||
struct wlan_cm_connect_req *req)
|
||||
@@ -378,3 +379,108 @@ wlan_cm_disc_cont_after_rso_stop(struct wlan_objmgr_vdev *vdev,
|
||||
{
|
||||
return cm_handle_rso_stop_rsp(vdev, req);
|
||||
}
|
||||
|
||||
#ifdef WLAN_FEATURE_11BE
|
||||
QDF_STATUS wlan_cm_sta_update_bw_puncture(struct wlan_objmgr_vdev *vdev,
|
||||
uint8_t *peer_mac,
|
||||
uint16_t ori_punc,
|
||||
enum phy_ch_width ori_bw,
|
||||
uint8_t ccfs0, uint8_t ccfs1,
|
||||
enum phy_ch_width new_bw)
|
||||
{
|
||||
struct wlan_channel *des_chan;
|
||||
uint16_t curr_punc = 0;
|
||||
uint16_t new_punc = 0;
|
||||
enum phy_ch_width curr_bw;
|
||||
uint16_t primary_puncture_bitmap = 0;
|
||||
struct wlan_objmgr_pdev *pdev;
|
||||
struct reg_channel_list chan_list;
|
||||
qdf_freq_t sec_ch_2g_freq = 0;
|
||||
qdf_freq_t center_freq_320 = 0;
|
||||
qdf_freq_t center_freq_40 = 0;
|
||||
uint8_t band_mask;
|
||||
uint32_t bw_puncture = 0;
|
||||
|
||||
if (!vdev || !peer_mac) {
|
||||
mlme_err("invalid input parameters");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
pdev = wlan_vdev_get_pdev(vdev);
|
||||
des_chan = wlan_vdev_mlme_get_des_chan(vdev);
|
||||
if (!des_chan || !pdev) {
|
||||
mlme_err("invalid des chan");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
if (ori_bw == CH_WIDTH_320MHZ) {
|
||||
if (WLAN_REG_IS_6GHZ_CHAN_FREQ(des_chan->ch_freq))
|
||||
band_mask = BIT(REG_BAND_6G);
|
||||
else
|
||||
band_mask = BIT(REG_BAND_5G);
|
||||
center_freq_320 = wlan_reg_chan_band_to_freq(pdev, ccfs1,
|
||||
band_mask);
|
||||
} else if (ori_bw == CH_WIDTH_40MHZ) {
|
||||
if (WLAN_REG_IS_24GHZ_CH_FREQ(des_chan->ch_freq)) {
|
||||
band_mask = BIT(REG_BAND_2G);
|
||||
center_freq_40 = wlan_reg_chan_band_to_freq(pdev,
|
||||
ccfs0,
|
||||
band_mask);
|
||||
if (center_freq_40 == des_chan->ch_freq + BW_10_MHZ)
|
||||
sec_ch_2g_freq = des_chan->ch_freq + BW_20_MHZ;
|
||||
if (center_freq_40 == des_chan->ch_freq - BW_10_MHZ)
|
||||
sec_ch_2g_freq = des_chan->ch_freq - BW_20_MHZ;
|
||||
}
|
||||
}
|
||||
qdf_mem_zero(&chan_list, sizeof(chan_list));
|
||||
curr_punc = des_chan->puncture_bitmap;
|
||||
curr_bw = des_chan->ch_width;
|
||||
wlan_reg_extract_puncture_by_bw(ori_bw, ori_punc,
|
||||
des_chan->ch_freq,
|
||||
center_freq_320,
|
||||
CH_WIDTH_20MHZ,
|
||||
&primary_puncture_bitmap);
|
||||
if (primary_puncture_bitmap) {
|
||||
mlme_err("sta vdev %d freq %d RX bw %d puncture 0x%x primary chan is punctured",
|
||||
wlan_vdev_get_id(vdev), des_chan->ch_freq,
|
||||
ori_bw, ori_punc);
|
||||
return QDF_STATUS_E_FAULT;
|
||||
}
|
||||
if (new_bw == ori_bw)
|
||||
new_punc = ori_punc;
|
||||
else
|
||||
wlan_reg_extract_puncture_by_bw(ori_bw, ori_punc,
|
||||
des_chan->ch_freq,
|
||||
center_freq_320,
|
||||
new_bw,
|
||||
&new_punc);
|
||||
if (curr_bw == new_bw) {
|
||||
if (curr_punc != new_punc)
|
||||
des_chan->puncture_bitmap = new_punc;
|
||||
else
|
||||
return QDF_STATUS_SUCCESS;
|
||||
} else {
|
||||
if (new_bw != CH_WIDTH_320MHZ)
|
||||
center_freq_320 = 0;
|
||||
wlan_reg_fill_channel_list(pdev, des_chan->ch_freq,
|
||||
sec_ch_2g_freq, new_bw,
|
||||
center_freq_320, &chan_list,
|
||||
true);
|
||||
des_chan->ch_freq_seg1 =
|
||||
chan_list.chan_param[0].center_freq_seg0;
|
||||
des_chan->ch_freq_seg2 =
|
||||
chan_list.chan_param[0].center_freq_seg1;
|
||||
des_chan->ch_cfreq1 = chan_list.chan_param[0].mhz_freq_seg0;
|
||||
des_chan->ch_cfreq2 = chan_list.chan_param[1].mhz_freq_seg1;
|
||||
des_chan->puncture_bitmap = new_punc;
|
||||
des_chan->ch_width = new_bw;
|
||||
}
|
||||
mlme_debug("sta vdev %d freq %d bw %d puncture 0x%x ch_cfreq1 %d ch_cfreq2 %d",
|
||||
wlan_vdev_get_id(vdev), des_chan->ch_freq,
|
||||
des_chan->ch_width, des_chan->puncture_bitmap,
|
||||
des_chan->ch_cfreq1, des_chan->ch_cfreq2);
|
||||
QDF_SET_BITS(bw_puncture, 0, 8, des_chan->ch_width);
|
||||
QDF_SET_BITS(bw_puncture, 8, 16, des_chan->puncture_bitmap);
|
||||
return wlan_util_vdev_peer_set_param_send(vdev, peer_mac,
|
||||
WLAN_MLME_PEER_BW_PUNCTURE,
|
||||
bw_puncture);
|
||||
}
|
||||
#endif /* WLAN_FEATURE_11BE */
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2019, 2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -346,4 +346,18 @@ QDF_STATUS tgt_vdev_mgr_cdp_vdev_attach(struct vdev_mlme_obj *mlme_obj);
|
||||
*/
|
||||
QDF_STATUS tgt_vdev_mgr_cdp_vdev_detach(struct vdev_mlme_obj *mlme_obj);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* tgt_vdev_peer_set_param_send() - API to send peer param
|
||||
* @vdev: Pointer to object manager VDEV
|
||||
* @peer_mac_addr: pointer to peer mac address
|
||||
* @param_id: peer param id
|
||||
* @param_value: peer param value
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS tgt_vdev_peer_set_param_send(struct wlan_objmgr_vdev *vdev,
|
||||
uint8_t *peer_mac_addr,
|
||||
uint32_t param_id,
|
||||
uint32_t param_value);
|
||||
#endif /* __WLAN_VDEV_MGR_TX_OPS_API_H__ */
|
||||
|
@@ -183,4 +183,18 @@ QDF_STATUS wlan_util_vdev_mgr_quiet_offload(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
struct vdev_sta_quiet_event *quiet_event);
|
||||
#endif /* WLAN_FEATURE_11BE_MLO */
|
||||
|
||||
/**
|
||||
* wlan_util_vdev_peer_set_param_send() - send peer param
|
||||
* @vdev: Pointer to vdev object.
|
||||
* @peer_mac_addr: peer mac address
|
||||
* @param_id: peer param id
|
||||
* @param_value: peer param value
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS wlan_util_vdev_peer_set_param_send(struct wlan_objmgr_vdev *vdev,
|
||||
uint8_t *peer_mac_addr,
|
||||
uint32_t param_id,
|
||||
uint32_t param_value);
|
||||
#endif /* __WLAN_VDEV_MGR_UTILS_API_H__ */
|
||||
|
@@ -23,6 +23,16 @@
|
||||
#define _WLAN_VDEV_MLME_API_H_
|
||||
|
||||
#include <wlan_ext_mlme_obj_types.h>
|
||||
|
||||
/**
|
||||
* wlan_mlme_peer_param_id - peer param id in mlme layer
|
||||
* @WLAN_MLME_PEER_BW_PUNCTURE: update puncture 20 MHz bitmap
|
||||
*/
|
||||
enum wlan_mlme_peer_param_id {
|
||||
WLAN_MLME_PEER_BW_PUNCTURE,
|
||||
WLAN_MLME_PEER_MAX
|
||||
};
|
||||
|
||||
/**
|
||||
* wlan_vdev_mlme_get_cmpt_obj - Retrieves MLME component object
|
||||
* from VDEV object
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
@@ -792,3 +792,29 @@ QDF_STATUS tgt_vdev_mgr_send_set_mac_addr(struct qdf_mac_addr mac_addr,
|
||||
return status;
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_STATUS tgt_vdev_peer_set_param_send(struct wlan_objmgr_vdev *vdev,
|
||||
uint8_t *peer_mac_addr,
|
||||
uint32_t param_id,
|
||||
uint32_t param_value)
|
||||
{
|
||||
struct wlan_lmac_if_mlme_tx_ops *txops;
|
||||
uint8_t vdev_id;
|
||||
QDF_STATUS status;
|
||||
|
||||
vdev_id = wlan_vdev_get_id(vdev);
|
||||
txops = wlan_vdev_mlme_get_lmac_txops(vdev);
|
||||
if (!txops || !txops->vdev_peer_set_param_send) {
|
||||
mlme_err("VDEV_%d: No Tx Ops", vdev_id);
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
status = txops->vdev_peer_set_param_send(vdev, peer_mac_addr,
|
||||
param_id, param_value);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
mlme_err("VDEV_%d: peer " QDF_MAC_ADDR_FMT " param_id %d param_value %d Error %d",
|
||||
vdev_id, QDF_MAC_ADDR_REF(peer_mac_addr), param_id,
|
||||
param_value, status);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
@@ -892,3 +892,12 @@ QDF_STATUS wlan_util_vdev_mgr_quiet_offload(
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif /* WLAN_FEATURE_11BE_MLO */
|
||||
|
||||
QDF_STATUS wlan_util_vdev_peer_set_param_send(struct wlan_objmgr_vdev *vdev,
|
||||
uint8_t *peer_mac_addr,
|
||||
uint32_t param_id,
|
||||
uint32_t param_value)
|
||||
{
|
||||
return tgt_vdev_peer_set_param_send(vdev, peer_mac_addr,
|
||||
param_id, param_value);
|
||||
}
|
||||
|
@@ -1630,6 +1630,87 @@ static inline uint32_t convert_host_peer_param_id_to_target_id_tlv(
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* wmi_host_chan_bw_to_target_chan_bw - convert wmi_host_channel_width to
|
||||
* wmi_channel_width
|
||||
* @bw: wmi_host_channel_width channel width
|
||||
*
|
||||
* Return: wmi_channel_width
|
||||
*/
|
||||
static wmi_channel_width wmi_host_chan_bw_to_target_chan_bw(
|
||||
wmi_host_channel_width bw)
|
||||
{
|
||||
wmi_channel_width target_bw = WMI_CHAN_WIDTH_20;
|
||||
|
||||
switch (bw) {
|
||||
case WMI_HOST_CHAN_WIDTH_20:
|
||||
target_bw = WMI_CHAN_WIDTH_20;
|
||||
break;
|
||||
case WMI_HOST_CHAN_WIDTH_40:
|
||||
target_bw = WMI_CHAN_WIDTH_40;
|
||||
break;
|
||||
case WMI_HOST_CHAN_WIDTH_80:
|
||||
target_bw = WMI_CHAN_WIDTH_80;
|
||||
break;
|
||||
case WMI_HOST_CHAN_WIDTH_160:
|
||||
target_bw = WMI_CHAN_WIDTH_160;
|
||||
break;
|
||||
case WMI_HOST_CHAN_WIDTH_80P80:
|
||||
target_bw = WMI_CHAN_WIDTH_80P80;
|
||||
break;
|
||||
case WMI_HOST_CHAN_WIDTH_5:
|
||||
target_bw = WMI_CHAN_WIDTH_5;
|
||||
break;
|
||||
case WMI_HOST_CHAN_WIDTH_10:
|
||||
target_bw = WMI_CHAN_WIDTH_10;
|
||||
break;
|
||||
case WMI_HOST_CHAN_WIDTH_165:
|
||||
target_bw = WMI_CHAN_WIDTH_165;
|
||||
break;
|
||||
case WMI_HOST_CHAN_WIDTH_160P160:
|
||||
target_bw = WMI_CHAN_WIDTH_160P160;
|
||||
break;
|
||||
case WMI_HOST_CHAN_WIDTH_320:
|
||||
target_bw = WMI_CHAN_WIDTH_320;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return target_bw;
|
||||
}
|
||||
|
||||
/**
|
||||
* convert_host_peer_param_value_to_target_value_tlv() - convert host peer
|
||||
* param value to target
|
||||
* @param_id: target param id
|
||||
* @param_value: host param value
|
||||
*
|
||||
* @Return: target param value
|
||||
*/
|
||||
static uint32_t convert_host_peer_param_value_to_target_value_tlv(
|
||||
uint32_t param_id, uint32_t param_value)
|
||||
{
|
||||
uint32_t fw_param_value = 0;
|
||||
wmi_host_channel_width bw;
|
||||
uint16_t punc;
|
||||
|
||||
switch (param_id) {
|
||||
case WMI_PEER_CHWIDTH_PUNCTURE_20MHZ_BITMAP:
|
||||
bw = QDF_GET_BITS(param_value, 0, 8);
|
||||
punc = QDF_GET_BITS(param_value, 8, 16);
|
||||
QDF_SET_BITS(fw_param_value, 0, 8,
|
||||
wmi_host_chan_bw_to_target_chan_bw(bw));
|
||||
QDF_SET_BITS(fw_param_value, 8, 16, ~punc);
|
||||
break;
|
||||
default:
|
||||
fw_param_value = param_value;
|
||||
break;
|
||||
}
|
||||
|
||||
return fw_param_value;
|
||||
}
|
||||
|
||||
#ifdef WLAN_SUPPORT_PPEDS
|
||||
/**
|
||||
* peer_ppe_ds_param_send_tlv() - Set peer PPE DS config
|
||||
@@ -1709,13 +1790,15 @@ static QDF_STATUS send_peer_param_cmd_tlv(wmi_unified_t wmi,
|
||||
wmi_buf_t buf;
|
||||
int32_t err;
|
||||
uint32_t param_id;
|
||||
uint32_t param_value;
|
||||
|
||||
param_id = convert_host_peer_param_id_to_target_id_tlv(param->param_id);
|
||||
if (param_id == WMI_UNAVAILABLE_PARAM) {
|
||||
wmi_err("Unavailable param %d", param->param_id);
|
||||
return QDF_STATUS_E_NOSUPPORT;
|
||||
}
|
||||
|
||||
param_value = convert_host_peer_param_value_to_target_value_tlv(
|
||||
param_id, param->param_value);
|
||||
buf = wmi_buf_alloc(wmi, sizeof(*cmd));
|
||||
if (!buf)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
@@ -1728,7 +1811,7 @@ static QDF_STATUS send_peer_param_cmd_tlv(wmi_unified_t wmi,
|
||||
cmd->vdev_id = param->vdev_id;
|
||||
WMI_CHAR_ARRAY_TO_MAC_ADDR(peer_addr, &cmd->peer_macaddr);
|
||||
cmd->param_id = param_id;
|
||||
cmd->param_value = param->param_value;
|
||||
cmd->param_value = param_value;
|
||||
|
||||
wmi_debug("vdev_id %d peer_mac: "QDF_MAC_ADDR_FMT" param_id: %u param_value: %x",
|
||||
cmd->vdev_id,
|
||||
|
Reference in New Issue
Block a user