qcacmn: Updating the bank config in RAW mode
In the case of RAW mode, VAP parameters encap type, dscp_to_tid map id and cipher are not updating in bank register. Added a API to update vdev param. Change-Id: I702bee563e7451f403fa32292bf20680cd66e213 CRs-Fixed: 3078687
This commit is contained in:

committed by
Madan Koyyalamudi

parent
fcebc684e9
commit
45be95484a
@@ -1235,6 +1235,7 @@ enum cdp_pdev_param_type {
|
||||
* @cdp_vdev_param_peer_authorize: set peer authorize
|
||||
* @cdp_vdev_param_peer_tid_latency_enable: set peer tid latency enable flag
|
||||
* @cdp_vdev_param_mesh_tid: config tatency tid on vdev
|
||||
* @cdp_vdev_param_dscp_tid_map_id: set dscp to tid map id
|
||||
*
|
||||
* @cdp_pdev_param_dbg_snf: Enable debug sniffer feature
|
||||
* @cdp_pdev_param_bpr_enable: Enable bcast probe feature
|
||||
@@ -1304,6 +1305,7 @@ typedef union cdp_config_param_t {
|
||||
uint8_t cdp_vdev_param_peer_authorize;
|
||||
uint8_t cdp_vdev_param_peer_tid_latency_enable;
|
||||
uint8_t cdp_vdev_param_mesh_tid;
|
||||
uint8_t cdp_vdev_param_dscp_tid_map_id;
|
||||
|
||||
/* pdev params */
|
||||
bool cdp_pdev_param_cptr_latcy;
|
||||
@@ -1421,6 +1423,7 @@ enum cdp_pdev_bpr_param {
|
||||
* @CDP_ENABLE_PEER_AUTHORIZE: enable peer authorize flag
|
||||
* @CDP_ENABLE_PEER_TID_LATENCY: set peer tid latency enable flag
|
||||
* @CDP_SET_VAP_MESH_TID : Set latency tid in vap
|
||||
* @CDP_UPDATE_DSCP_TO_TID_MAP: Set DSCP to TID map id
|
||||
*/
|
||||
enum cdp_vdev_param_type {
|
||||
CDP_ENABLE_NAWDS,
|
||||
@@ -1458,6 +1461,7 @@ enum cdp_vdev_param_type {
|
||||
#ifdef WLAN_VENDOR_SPECIFIC_BAR_UPDATE
|
||||
CDP_SKIP_BAR_UPDATE_AP,
|
||||
#endif
|
||||
CDP_UPDATE_DSCP_TO_TID_MAP
|
||||
};
|
||||
|
||||
/*
|
||||
|
@@ -1314,6 +1314,31 @@ static bool dp_reo_remap_config_be(struct dp_soc *soc,
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_STATUS dp_txrx_set_vdev_param_be(struct dp_soc *soc,
|
||||
struct dp_vdev *vdev,
|
||||
enum cdp_vdev_param_type param,
|
||||
cdp_config_param_type val)
|
||||
{
|
||||
struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
|
||||
struct dp_vdev_be *be_vdev = dp_get_be_vdev_from_dp_vdev(vdev);
|
||||
|
||||
switch (param) {
|
||||
case CDP_TX_ENCAP_TYPE:
|
||||
case CDP_UPDATE_DSCP_TO_TID_MAP:
|
||||
dp_tx_update_bank_profile(be_soc, be_vdev);
|
||||
break;
|
||||
case CDP_ENABLE_CIPHER:
|
||||
if (vdev->tx_encap_type == htt_cmn_pkt_type_raw)
|
||||
dp_tx_update_bank_profile(be_soc, be_vdev);
|
||||
break;
|
||||
default:
|
||||
dp_warn("invalid param %d", param);
|
||||
break;
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
|
||||
{
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
@@ -1351,6 +1376,7 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
|
||||
arch_ops->tx_implicit_rbm_set = dp_tx_implicit_rbm_set_be;
|
||||
arch_ops->peer_get_reo_hash = dp_peer_get_reo_hash_be;
|
||||
arch_ops->reo_remap_config = dp_reo_remap_config_be;
|
||||
arch_ops->txrx_set_vdev_param = dp_txrx_set_vdev_param_be;
|
||||
|
||||
#ifdef WLAN_FEATURE_11BE_MLO
|
||||
arch_ops->mlo_peer_find_hash_detach =
|
||||
@@ -1361,5 +1387,6 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
|
||||
arch_ops->mlo_peer_find_hash_remove = dp_mlo_peer_find_hash_remove_be;
|
||||
arch_ops->mlo_peer_find_hash_find = dp_mlo_peer_find_hash_find_be;
|
||||
#endif
|
||||
|
||||
dp_init_near_full_arch_ops_be(arch_ops);
|
||||
}
|
||||
|
@@ -187,7 +187,7 @@ struct dp_tx_bank_profile {
|
||||
struct dp_soc_be {
|
||||
struct dp_soc soc;
|
||||
uint8_t num_bank_profiles;
|
||||
qdf_mutex_t tx_bank_lock;
|
||||
qdf_spinlock_t tx_bank_lock;
|
||||
struct dp_tx_bank_profile *bank_profiles;
|
||||
struct dp_spt_page_desc *page_desc_base;
|
||||
uint32_t cc_cmem_base;
|
||||
@@ -617,4 +617,19 @@ void dp_pdev_mlo_fill_params(struct dp_pdev *pdev,
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* dp_txrx_set_vdev_param_be: target specific ops while setting vdev params
|
||||
* @soc : DP soc handle
|
||||
* @vdev: pointer to vdev structure
|
||||
* @param: parameter type to get value
|
||||
* @val: value
|
||||
*
|
||||
* return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS dp_txrx_set_vdev_param_be(struct dp_soc *soc,
|
||||
struct dp_vdev *vdev,
|
||||
enum cdp_vdev_param_type param,
|
||||
cdp_config_param_type val);
|
||||
|
||||
#endif
|
||||
|
@@ -286,7 +286,7 @@ QDF_STATUS dp_tx_init_bank_profiles(struct dp_soc_be *be_soc)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
|
||||
qdf_mutex_create(&be_soc->tx_bank_lock);
|
||||
qdf_spinlock_create(&be_soc->tx_bank_lock);
|
||||
|
||||
for (i = 0; i < num_tcl_banks; i++) {
|
||||
be_soc->bank_profiles[i].is_configured = false;
|
||||
@@ -299,7 +299,7 @@ QDF_STATUS dp_tx_init_bank_profiles(struct dp_soc_be *be_soc)
|
||||
void dp_tx_deinit_bank_profiles(struct dp_soc_be *be_soc)
|
||||
{
|
||||
qdf_mem_free(be_soc->bank_profiles);
|
||||
qdf_mutex_destroy(&be_soc->tx_bank_lock);
|
||||
qdf_spinlock_destroy(&be_soc->tx_bank_lock);
|
||||
}
|
||||
|
||||
static
|
||||
@@ -364,7 +364,7 @@ int dp_tx_get_bank_profile(struct dp_soc_be *be_soc,
|
||||
/* convert vdev params into hal_tx_bank_config */
|
||||
dp_tx_get_vdev_bank_config(be_vdev, &vdev_config);
|
||||
|
||||
qdf_mutex_acquire(&be_soc->tx_bank_lock);
|
||||
qdf_spin_lock_bh(&be_soc->tx_bank_lock);
|
||||
/* go over all banks and find a matching/unconfigured/unsed bank */
|
||||
for (i = 0; i < be_soc->num_bank_profiles; i++) {
|
||||
if (be_soc->bank_profiles[i].is_configured &&
|
||||
@@ -410,7 +410,7 @@ configure_and_return:
|
||||
bank_id);
|
||||
inc_ref_and_return:
|
||||
qdf_atomic_inc(&be_soc->bank_profiles[bank_id].ref_count);
|
||||
qdf_mutex_release(&be_soc->tx_bank_lock);
|
||||
qdf_spin_unlock_bh(&be_soc->tx_bank_lock);
|
||||
|
||||
dp_info("found %s slot at index %d, input:0x%x match:0x%x ref_count %u",
|
||||
temp_str, bank_id, vdev_config.val,
|
||||
@@ -436,9 +436,9 @@ inc_ref_and_return:
|
||||
void dp_tx_put_bank_profile(struct dp_soc_be *be_soc,
|
||||
struct dp_vdev_be *be_vdev)
|
||||
{
|
||||
qdf_mutex_acquire(&be_soc->tx_bank_lock);
|
||||
qdf_spin_lock_bh(&be_soc->tx_bank_lock);
|
||||
qdf_atomic_dec(&be_soc->bank_profiles[be_vdev->bank_id].ref_count);
|
||||
qdf_mutex_release(&be_soc->tx_bank_lock);
|
||||
qdf_spin_unlock_bh(&be_soc->tx_bank_lock);
|
||||
}
|
||||
|
||||
void dp_tx_update_bank_profile(struct dp_soc_be *be_soc,
|
||||
|
@@ -9287,6 +9287,7 @@ dp_set_vdev_param(struct cdp_soc_t *cdp_soc, uint8_t vdev_id,
|
||||
break;
|
||||
}
|
||||
|
||||
dsoc->arch_ops.txrx_set_vdev_param(dsoc, vdev, param, val);
|
||||
dp_tx_vdev_update_search_flags((struct dp_vdev *)vdev);
|
||||
dp_vdev_unref_delete(dsoc, vdev, DP_MOD_ID_CDP);
|
||||
|
||||
@@ -9396,11 +9397,17 @@ static QDF_STATUS dp_set_vdev_dscp_tid_map_wifi3(ol_txrx_soc_handle cdp_soc,
|
||||
uint8_t vdev_id,
|
||||
uint8_t map_id)
|
||||
{
|
||||
cdp_config_param_type val;
|
||||
struct dp_soc *soc = cdp_soc_t_to_dp_soc(cdp_soc);
|
||||
struct dp_vdev *vdev = dp_vdev_get_ref_by_id(soc, vdev_id,
|
||||
DP_MOD_ID_CDP);
|
||||
if (vdev) {
|
||||
vdev->dscp_tid_map_id = map_id;
|
||||
val.cdp_vdev_param_dscp_tid_map_id = map_id;
|
||||
soc->arch_ops.txrx_set_vdev_param(soc,
|
||||
vdev,
|
||||
CDP_UPDATE_DSCP_TO_TID_MAP,
|
||||
val);
|
||||
/* Updatr flag for transmit tid classification */
|
||||
if (vdev->dscp_tid_map_id < soc->num_hw_dscp_tid_map)
|
||||
vdev->skip_sw_tid_classification |=
|
||||
|
@@ -358,6 +358,14 @@ static bool dp_reo_remap_config_li(struct dp_soc *soc,
|
||||
return dp_reo_remap_config(soc, remap0, remap1, remap2);
|
||||
}
|
||||
|
||||
static QDF_STATUS dp_txrx_set_vdev_param_li(struct dp_soc *soc,
|
||||
struct dp_vdev *vdev,
|
||||
enum cdp_vdev_param_type param,
|
||||
cdp_config_param_type val)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
void dp_initialize_arch_ops_li(struct dp_arch_ops *arch_ops)
|
||||
{
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
@@ -401,5 +409,6 @@ void dp_initialize_arch_ops_li(struct dp_arch_ops *arch_ops)
|
||||
arch_ops->tx_implicit_rbm_set = dp_tx_implicit_rbm_set_li;
|
||||
arch_ops->peer_get_reo_hash = dp_peer_get_reo_hash_li;
|
||||
arch_ops->reo_remap_config = dp_reo_remap_config_li;
|
||||
arch_ops->txrx_set_vdev_param = dp_txrx_set_vdev_param_li;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user