diff --git a/hal/wifi3.0/hal_generic_api.h b/hal/wifi3.0/hal_generic_api.h index 9597e82a54..75ce9aed0c 100644 --- a/hal/wifi3.0/hal_generic_api.h +++ b/hal/wifi3.0/hal_generic_api.h @@ -1515,3 +1515,51 @@ static inline void hal_srng_dst_hw_init_generic(void *halsoc, } #endif + +/** + * hal_tx_desc_set_search_type - Set the search type value + * @desc: Handle to Tx Descriptor + * @search_type: search type + * 0 – Normal search + * 1 – Index based address search + * 2 – Index based flow search + * + * Return: void + */ +#ifdef TCL_DATA_CMD_2_SEARCH_TYPE_OFFSET +static void hal_tx_desc_set_search_type_generic(void *desc, + uint8_t search_type) +{ + HAL_SET_FLD(desc, TCL_DATA_CMD_2, SEARCH_TYPE) |= + HAL_TX_SM(TCL_DATA_CMD_2, SEARCH_TYPE, search_type); +} +#else +static void hal_tx_desc_set_search_type_generic(void *desc, + uint8_t search_type) +{ +} + +#endif + +/** + * hal_tx_desc_set_search_index - Set the search index value + * @desc: Handle to Tx Descriptor + * @search_index: The index that will be used for index based address or + * flow search. The field is valid when 'search_type' is + * 1 0r 2 + * + * Return: void + */ +#ifdef TCL_DATA_CMD_5_SEARCH_INDEX_OFFSET +static void hal_tx_desc_set_search_index_generic(void *desc, + uint32_t search_index) +{ + HAL_SET_FLD(desc, TCL_DATA_CMD_5, SEARCH_INDEX) |= + HAL_TX_SM(TCL_DATA_CMD_5, SEARCH_INDEX, search_index); +} +#else +static void hal_tx_desc_set_search_index_generic(void *desc, + uint32_t search_index) +{ +} +#endif diff --git a/hal/wifi3.0/hal_internal.h b/hal/wifi3.0/hal_internal.h index 97bc266064..a9a95feaa4 100644 --- a/hal/wifi3.0/hal_internal.h +++ b/hal/wifi3.0/hal_internal.h @@ -307,6 +307,8 @@ struct hal_hw_txrx_ops { uint32_t (*hal_rx_status_get_tlv_info)(void *rx_tlv_hdr, void *ppdu_info, void *hal); + void (*hal_tx_desc_set_search_type)(void *desc, uint8_t search_type); + void (*hal_tx_desc_set_search_index)(void *desc, uint32_t search_index); }; /** diff --git a/hal/wifi3.0/hal_tx.h b/hal/wifi3.0/hal_tx.h index 68e717cf90..66839c6529 100644 --- a/hal/wifi3.0/hal_tx.h +++ b/hal/wifi3.0/hal_tx.h @@ -922,6 +922,38 @@ static inline void hal_tx_desc_set_lmac_id(struct hal_soc *hal_soc, hal_soc->ops->hal_tx_desc_set_lmac_id(desc, lmac_id); } +/** + * hal_tx_desc_set_search_type - Set the search type value + * @desc: Handle to Tx Descriptor + * @search_type: search type + * 0 – Normal search + * 1 – Index based address search + * 2 – Index based flow search + * + * Return: void + */ +static inline void hal_tx_desc_set_search_type(struct hal_soc *hal_soc, + void *desc, uint8_t search_type) +{ + hal_soc->ops->hal_tx_desc_set_search_type(desc, search_type); +} + +/** + * hal_tx_desc_set_search_index - Set the search index value + * @desc: Handle to Tx Descriptor + * @search_index: The index that will be used for index based address or + * flow search. The field is valid when 'search_type' is + * 1 0r 2 + * + * Return: void + */ +static inline void hal_tx_desc_set_search_index(struct hal_soc *hal_soc, + void *desc, + uint32_t search_index) +{ + hal_soc->ops->hal_tx_desc_set_search_index(desc, search_index); +} + /** * hal_tx_comp_get_status() - TQM Release reason * @hal_desc: completion ring Tx status diff --git a/hal/wifi3.0/qca6290/hal_6290.c b/hal/wifi3.0/qca6290/hal_6290.c index 537f6afc12..4b2d16bd65 100644 --- a/hal/wifi3.0/qca6290/hal_6290.c +++ b/hal/wifi3.0/qca6290/hal_6290.c @@ -138,6 +138,8 @@ struct hal_hw_txrx_ops qca6290_hal_hw_txrx_ops = { hal_rx_link_desc_msdu0_ptr_generic, hal_reo_status_get_header_generic, hal_rx_status_get_tlv_info_generic, + hal_tx_desc_set_search_type_generic, + hal_tx_desc_set_search_index_generic, }; struct hal_hw_srng_config hw_srng_table_6290[] = { diff --git a/hal/wifi3.0/qca6390/hal_6390.c b/hal/wifi3.0/qca6390/hal_6390.c index 1fdcdd621e..b704deaab1 100644 --- a/hal/wifi3.0/qca6390/hal_6390.c +++ b/hal/wifi3.0/qca6390/hal_6390.c @@ -138,6 +138,8 @@ struct hal_hw_txrx_ops qca6390_hal_hw_txrx_ops = { hal_rx_link_desc_msdu0_ptr_generic, hal_reo_status_get_header_generic, hal_rx_status_get_tlv_info_generic, + hal_tx_desc_set_search_type_generic, + hal_tx_desc_set_search_index_generic, }; struct hal_hw_srng_config hw_srng_table_6390[] = { diff --git a/hal/wifi3.0/qca8074v1/hal_8074v1.c b/hal/wifi3.0/qca8074v1/hal_8074v1.c index 28361b3f1a..2651462f38 100644 --- a/hal/wifi3.0/qca8074v1/hal_8074v1.c +++ b/hal/wifi3.0/qca8074v1/hal_8074v1.c @@ -134,6 +134,8 @@ struct hal_hw_txrx_ops qca8074_hal_hw_txrx_ops = { hal_rx_link_desc_msdu0_ptr_generic, hal_reo_status_get_header_generic, hal_rx_status_get_tlv_info_generic, + hal_tx_desc_set_search_type_generic, + hal_tx_desc_set_search_index_generic, }; struct hal_hw_srng_config hw_srng_table_8074[] = { diff --git a/hal/wifi3.0/qca8074v2/hal_8074v2.c b/hal/wifi3.0/qca8074v2/hal_8074v2.c index 209f518715..4d40c2e878 100644 --- a/hal/wifi3.0/qca8074v2/hal_8074v2.c +++ b/hal/wifi3.0/qca8074v2/hal_8074v2.c @@ -134,6 +134,8 @@ struct hal_hw_txrx_ops qca8074v2_hal_hw_txrx_ops = { hal_rx_link_desc_msdu0_ptr_generic, hal_reo_status_get_header_generic, hal_rx_status_get_tlv_info_generic, + hal_tx_desc_set_search_type_generic, + hal_tx_desc_set_search_index_generic, }; struct hal_hw_srng_config hw_srng_table_8074v2[] = {