qcacmn: DP Tx changes for QCN9224

Changes for DP tx for QCN9224

Change-Id: I7010aef55dc6e8bedfa1c44fe6baa1baa55c32c9
This commit is contained in:
Chaithanya Garrepalli
2021-08-12 17:06:29 +05:30
committed by Madan Koyyalamudi
parent 9406f72b3d
commit 49e18cfe2a
6 changed files with 55 additions and 24 deletions

View File

@@ -24,6 +24,8 @@
#include "hal_tx.h" #include "hal_tx.h"
#include <hal_be_api.h> #include <hal_be_api.h>
extern uint8_t sec_type_map[MAX_CDP_SEC_TYPE];
#ifdef DP_FEATURE_HW_COOKIE_CONVERSION #ifdef DP_FEATURE_HW_COOKIE_CONVERSION
#ifdef DP_HW_COOKIE_CONVERT_EXCEPTION #ifdef DP_HW_COOKIE_CONVERT_EXCEPTION
void dp_tx_comp_get_params_from_hal_desc_be(struct dp_soc *soc, void dp_tx_comp_get_params_from_hal_desc_be(struct dp_soc *soc,
@@ -120,6 +122,19 @@ dp_tx_hw_enqueue_be(struct dp_soc *soc, struct dp_vdev *vdev,
return QDF_STATUS_E_RESOURCES; return QDF_STATUS_E_RESOURCES;
} }
if (qdf_unlikely(tx_exc_metadata)) {
qdf_assert_always((tx_exc_metadata->tx_encap_type ==
CDP_INVALID_TX_ENCAP_TYPE) ||
(tx_exc_metadata->tx_encap_type ==
vdev->tx_encap_type));
if (tx_exc_metadata->tx_encap_type == htt_cmn_pkt_type_raw)
qdf_assert_always((tx_exc_metadata->sec_type ==
CDP_INVALID_SEC_TYPE) ||
tx_exc_metadata->sec_type ==
vdev->sec_type);
}
hal_tx_desc_cached = (void *)cached_desc; hal_tx_desc_cached = (void *)cached_desc;
hal_tx_desc_set_buf_addr(soc->hal_soc, hal_tx_desc_cached, hal_tx_desc_set_buf_addr(soc->hal_soc, hal_tx_desc_cached,
@@ -249,17 +264,22 @@ void dp_tx_get_vdev_bank_config(struct dp_vdev_be *be_vdev,
bank_config->encap_type = vdev->tx_encap_type; bank_config->encap_type = vdev->tx_encap_type;
/* Only valid for raw frames. Needs work for RAW mode */ /* Only valid for raw frames. Needs work for RAW mode */
bank_config->encrypt_type = 0; if (vdev->tx_encap_type == htt_cmn_pkt_type_raw) {
bank_config->encrypt_type = sec_type_map[vdev->sec_type];
} else {
bank_config->encrypt_type = 0;
}
bank_config->src_buffer_swap = 0; bank_config->src_buffer_swap = 0;
bank_config->link_meta_swap = 0; bank_config->link_meta_swap = 0;
if (soc->is_peer_map_unmap_v2 && vdev->opmode == wlan_op_mode_sta) if (soc->is_peer_map_unmap_v2 && vdev->opmode == wlan_op_mode_sta) {
vdev->search_type = HAL_TX_ADDR_INDEX_SEARCH; bank_config->index_lookup_enable = 1;
else bank_config->mcast_pkt_ctrl = 2;
vdev->search_type = HAL_TX_ADDR_SEARCH_DEFAULT; } else {
bank_config->index_lookup_enable = 0;
bank_config->index_lookup_enable = 0; bank_config->mcast_pkt_ctrl = 0;
}
bank_config->addrx_en = bank_config->addrx_en =
(vdev->hal_desc_addr_search_flags & HAL_TX_DESC_ADDRX_EN) ? (vdev->hal_desc_addr_search_flags & HAL_TX_DESC_ADDRX_EN) ?
@@ -274,8 +294,6 @@ void dp_tx_get_vdev_bank_config(struct dp_vdev_be *be_vdev,
bank_config->vdev_id_check_en = be_vdev->vdev_id_check_en; bank_config->vdev_id_check_en = be_vdev->vdev_id_check_en;
bank_config->pmac_id = vdev->lmac_id; bank_config->pmac_id = vdev->lmac_id;
bank_config->mcast_pkt_ctrl = 0;
} }
int dp_tx_get_bank_profile(struct dp_soc_be *be_soc, int dp_tx_get_bank_profile(struct dp_soc_be *be_soc,

View File

@@ -27,6 +27,7 @@
#include "qdf_mem.h" #include "qdf_mem.h"
#include "qdf_nbuf.h" #include "qdf_nbuf.h"
#include "qdf_net_types.h" #include "qdf_net_types.h"
#include "qdf_module.h"
#include <wlan_cfg.h> #include <wlan_cfg.h>
#include "dp_ipa.h" #include "dp_ipa.h"
#if defined(MESH_MODE_SUPPORT) || defined(FEATURE_PERPKT_INFO) #if defined(MESH_MODE_SUPPORT) || defined(FEATURE_PERPKT_INFO)
@@ -61,6 +62,21 @@
/* invalid peer id for reinject*/ /* invalid peer id for reinject*/
#define DP_INVALID_PEER 0XFFFE #define DP_INVALID_PEER 0XFFFE
/*mapping between hal encrypt type and cdp_sec_type*/
uint8_t sec_type_map[MAX_CDP_SEC_TYPE] = {HAL_TX_ENCRYPT_TYPE_NO_CIPHER,
HAL_TX_ENCRYPT_TYPE_WEP_128,
HAL_TX_ENCRYPT_TYPE_WEP_104,
HAL_TX_ENCRYPT_TYPE_WEP_40,
HAL_TX_ENCRYPT_TYPE_TKIP_WITH_MIC,
HAL_TX_ENCRYPT_TYPE_TKIP_NO_MIC,
HAL_TX_ENCRYPT_TYPE_AES_CCMP_128,
HAL_TX_ENCRYPT_TYPE_WAPI,
HAL_TX_ENCRYPT_TYPE_AES_CCMP_256,
HAL_TX_ENCRYPT_TYPE_AES_GCMP_128,
HAL_TX_ENCRYPT_TYPE_AES_GCMP_256,
HAL_TX_ENCRYPT_TYPE_WAPI_GCM_SM4};
qdf_export_symbol(sec_type_map);
#ifdef CONFIG_WLAN_SYSFS_MEM_STATS #ifdef CONFIG_WLAN_SYSFS_MEM_STATS
/** /**
* dp_update_tx_desc_stats - Update the increase or decrease in * dp_update_tx_desc_stats - Update the increase or decrease in

View File

@@ -75,6 +75,8 @@ do { \
#endif /* TX_PER_PDEV_DESC_POOL */ #endif /* TX_PER_PDEV_DESC_POOL */
#define DP_TX_QUEUE_MASK 0x3 #define DP_TX_QUEUE_MASK 0x3
#define MAX_CDP_SEC_TYPE 12
/* number of dwords for htt_tx_msdu_desc_ext2_t */ /* number of dwords for htt_tx_msdu_desc_ext2_t */
#define DP_TX_MSDU_INFO_META_DATA_DWORDS 7 #define DP_TX_MSDU_INFO_META_DATA_DWORDS 7

View File

@@ -25,20 +25,7 @@
#include <hal_li_api.h> #include <hal_li_api.h>
#include <hal_li_tx.h> #include <hal_li_tx.h>
/*mapping between hal encrypt type and cdp_sec_type*/ extern uint8_t sec_type_map[MAX_CDP_SEC_TYPE];
#define MAX_CDP_SEC_TYPE 12
uint8_t sec_type_map[MAX_CDP_SEC_TYPE] = {HAL_TX_ENCRYPT_TYPE_NO_CIPHER,
HAL_TX_ENCRYPT_TYPE_WEP_128,
HAL_TX_ENCRYPT_TYPE_WEP_104,
HAL_TX_ENCRYPT_TYPE_WEP_40,
HAL_TX_ENCRYPT_TYPE_TKIP_WITH_MIC,
HAL_TX_ENCRYPT_TYPE_TKIP_NO_MIC,
HAL_TX_ENCRYPT_TYPE_AES_CCMP_128,
HAL_TX_ENCRYPT_TYPE_WAPI,
HAL_TX_ENCRYPT_TYPE_AES_CCMP_256,
HAL_TX_ENCRYPT_TYPE_AES_GCMP_128,
HAL_TX_ENCRYPT_TYPE_AES_GCMP_256,
HAL_TX_ENCRYPT_TYPE_WAPI_GCM_SM4};
void dp_tx_comp_get_params_from_hal_desc_li(struct dp_soc *soc, void dp_tx_comp_get_params_from_hal_desc_li(struct dp_soc *soc,
void *tx_comp_hal_desc, void *tx_comp_hal_desc,

View File

@@ -213,6 +213,7 @@ void hal_tx_desc_set_cache_set_num_generic_be(void *desc, uint8_t cache_num)
} }
#endif #endif
#if defined(QCA_WIFI_WCN7850) || defined(CONFIG_WIFI_EMULATION_WIFI_3_0)
static inline uint32_t static inline uint32_t
hal_wbm2sw_release_source_get(void *hal_desc, enum hal_be_wbm_release_dir dir) hal_wbm2sw_release_source_get(void *hal_desc, enum hal_be_wbm_release_dir dir)
{ {
@@ -248,6 +249,13 @@ hal_wbm2sw_release_source_get(void *hal_desc, enum hal_be_wbm_release_dir dir)
return buf_src; return buf_src;
} }
#else
static inline uint32_t
hal_wbm2sw_release_source_get(void *hal_desc, enum hal_be_wbm_release_dir dir)
{
return HAL_WBM2SW_RELEASE_SRC_GET(hal_desc);
}
#endif
uint32_t hal_tx_comp_get_buffer_source_generic_be(void *hal_desc) uint32_t hal_tx_comp_get_buffer_source_generic_be(void *hal_desc)
{ {

View File

@@ -553,7 +553,7 @@ static inline uint32_t hal_tx_comp_get_buffer_type(void *hal_desc)
HAL_TX_COMP_BUFFER_OR_DESC_TYPE_LSB; HAL_TX_COMP_BUFFER_OR_DESC_TYPE_LSB;
} }
#ifdef QCA_WIFI_WCN7850 #if defined(QCA_WIFI_WCN7850) || defined(CONFIG_WIFI_EMULATION_WIFI_3_0)
/** /**
* hal_tx_comp_get_buffer_source() - Get buffer release source value * hal_tx_comp_get_buffer_source() - Get buffer release source value
* @hal_desc: completion ring descriptor pointer * @hal_desc: completion ring descriptor pointer