From 27da15777b756ccb85a7d6678a4d55030b81d1ab Mon Sep 17 00:00:00 2001 From: Tallapragada Kalyan Date: Mon, 19 Sep 2022 23:03:53 +0530 Subject: [PATCH] qcacmn: initialize BE specific HAL API callbacks certain BE specific HAL APIs were only initialized for KIWI chipset but not for WKK. Now moved all these APIs under beryllium generic initialization. These APIs are mainly used in de-frag pkt handling. CRs-Fixed: 3294784 Change-Id: I6611f1b7ef80b432d24a490ba65880dd55539137 --- dp/wifi3.0/dp_rx_defrag.c | 5 +++-- hal/wifi3.0/be/hal_be_generic_api.c | 15 ++++++++++++++- hal/wifi3.0/hal_internal.h | 4 +++- hal/wifi3.0/hal_rx.h | 6 ++++-- hal/wifi3.0/kiwi/hal_kiwi.c | 8 -------- hal/wifi3.0/li/hal_li_generic_api.c | 4 +++- 6 files changed, 27 insertions(+), 15 deletions(-) diff --git a/dp/wifi3.0/dp_rx_defrag.c b/dp/wifi3.0/dp_rx_defrag.c index 5bd76af3f1..73ccd4e41e 100644 --- a/dp/wifi3.0/dp_rx_defrag.c +++ b/dp/wifi3.0/dp_rx_defrag.c @@ -1386,9 +1386,10 @@ static QDF_STATUS dp_rx_defrag_reo_reinject(struct dp_txrx_peer *txrx_peer, qdf_mem_zero(ent_mpdu_desc_info, sizeof(uint32_t)); mpdu_wrd = (uint32_t *)dst_mpdu_desc_info; - seq_no = hal_rx_get_rx_sequence(soc->hal_soc, qdf_nbuf_data(head)); + seq_no = hal_rx_get_rx_sequence(soc->hal_soc, rx_desc->rx_buf_start); - hal_mpdu_desc_info_set(soc->hal_soc, ent_mpdu_desc_info, seq_no); + hal_mpdu_desc_info_set(soc->hal_soc, ent_ring_desc, ent_mpdu_desc_info, + seq_no); /* qdesc addr */ ent_qdesc_addr = hal_get_reo_ent_desc_qdesc_addr(soc->hal_soc, (uint8_t *)ent_ring_desc); diff --git a/hal/wifi3.0/be/hal_be_generic_api.c b/hal/wifi3.0/be/hal_be_generic_api.c index e67d182370..b8f027f8ee 100644 --- a/hal/wifi3.0/be/hal_be_generic_api.c +++ b/hal/wifi3.0/be/hal_be_generic_api.c @@ -24,6 +24,7 @@ #include "hal_tx.h" //HAL_SET_FLD #include "hal_be_rx.h" //HAL_RX_BUF_RBM_GET #include "rx_reo_queue_1k.h" +#include "hal_be_rx_tlv.h" /* * The 4 bits REO destination ring value is defined as: 0: TCL @@ -640,10 +641,16 @@ hal_msdu_desc_info_set_be(hal_soc_handle_t hal_soc_hdl, static inline void hal_mpdu_desc_info_set_be(hal_soc_handle_t hal_soc_hdl, - void *mpdu_desc, uint32_t seq_no) + void *ent_desc, + void *mpdu_desc, + uint32_t seq_no) { struct rx_mpdu_desc_info *mpdu_desc_info = (struct rx_mpdu_desc_info *)mpdu_desc; + uint8_t *desc = (uint8_t *)ent_desc; + + HAL_RX_FLD_SET(desc, REO_ENTRANCE_RING, + MPDU_SEQUENCE_NUMBER, seq_no); HAL_RX_MPDU_DESC_INFO_SET(mpdu_desc_info, MSDU_COUNT, 0x1); @@ -958,4 +965,10 @@ void hal_hw_txrx_default_ops_attach_be(struct hal_soc *hal_soc) hal_soc->ops->hal_register_reo_send_cmd = hal_register_reo_send_cmd_be; hal_soc->ops->hal_reset_rx_reo_tid_q = hal_reset_rx_reo_tid_q_be; #endif + hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_be; + hal_soc->ops->hal_rx_get_qdesc_addr = hal_rx_get_qdesc_addr_be; + hal_soc->ops->hal_set_reo_ent_desc_reo_dest_ind = + hal_set_reo_ent_desc_reo_dest_ind_be; + hal_soc->ops->hal_get_reo_ent_desc_qdesc_addr = + hal_get_reo_ent_desc_qdesc_addr_be; } diff --git a/hal/wifi3.0/hal_internal.h b/hal/wifi3.0/hal_internal.h index 6a68be4b39..42e1d6c555 100644 --- a/hal/wifi3.0/hal_internal.h +++ b/hal/wifi3.0/hal_internal.h @@ -1084,7 +1084,9 @@ struct hal_hw_txrx_ops { void *msdu_desc_info, uint32_t dst_ind, uint32_t nbuf_len); void (*hal_mpdu_desc_info_set)(hal_soc_handle_t hal_soc_hdl, - void *mpdu_desc_info, uint32_t seq_no); + void *ent_desc, + void *mpdu_desc_info, + uint32_t seq_no); #ifdef DP_UMAC_HW_RESET_SUPPORT void (*hal_unregister_reo_send_cmd)(struct hal_soc *hal_soc); void (*hal_register_reo_send_cmd)(struct hal_soc *hal_soc); diff --git a/hal/wifi3.0/hal_rx.h b/hal/wifi3.0/hal_rx.h index dc1091eb2f..7035ad252b 100644 --- a/hal/wifi3.0/hal_rx.h +++ b/hal/wifi3.0/hal_rx.h @@ -2710,13 +2710,15 @@ hal_rx_tlv_get_freq(hal_soc_handle_t hal_soc_hdl, uint8_t *buf) } static inline void hal_mpdu_desc_info_set(hal_soc_handle_t hal_soc_hdl, - void *mpdu_desc_info, uint32_t val) + void *desc, + void *mpdu_desc_info, + uint32_t val) { struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl; if (hal_soc->ops->hal_mpdu_desc_info_set) return hal_soc->ops->hal_mpdu_desc_info_set( - hal_soc_hdl, mpdu_desc_info, val); + hal_soc_hdl, desc, mpdu_desc_info, val); } static inline void hal_msdu_desc_info_set(hal_soc_handle_t hal_soc_hdl, diff --git a/hal/wifi3.0/kiwi/hal_kiwi.c b/hal/wifi3.0/kiwi/hal_kiwi.c index e0f7344121..dfe893c055 100644 --- a/hal/wifi3.0/kiwi/hal_kiwi.c +++ b/hal/wifi3.0/kiwi/hal_kiwi.c @@ -2265,14 +2265,6 @@ static void hal_hw_txrx_ops_attach_kiwi(struct hal_soc *hal_soc) hal_rx_msdu_start_msdu_len_set_be; hal_soc->ops->hal_rx_tlv_populate_mpdu_desc_info = hal_rx_tlv_populate_mpdu_desc_info_kiwi; - hal_soc->ops->hal_rx_tlv_get_pn_num = - hal_rx_tlv_get_pn_num_be; - hal_soc->ops->hal_get_reo_ent_desc_qdesc_addr = - hal_get_reo_ent_desc_qdesc_addr_be; - hal_soc->ops->hal_rx_get_qdesc_addr = - hal_rx_get_qdesc_addr_be; - hal_soc->ops->hal_set_reo_ent_desc_reo_dest_ind = - hal_set_reo_ent_desc_reo_dest_ind_be; hal_soc->ops->hal_get_idle_link_bm_id = hal_get_idle_link_bm_id_kiwi; #ifdef WLAN_FEATURE_MARK_FIRST_WAKEUP_PACKET hal_soc->ops->hal_get_first_wow_wakeup_packet = diff --git a/hal/wifi3.0/li/hal_li_generic_api.c b/hal/wifi3.0/li/hal_li_generic_api.c index ed50305b2b..da2159cb71 100644 --- a/hal/wifi3.0/li/hal_li_generic_api.c +++ b/hal/wifi3.0/li/hal_li_generic_api.c @@ -1022,7 +1022,9 @@ hal_rx_msdu_reo_dst_ind_get_li(hal_soc_handle_t hal_soc_hdl, static inline void hal_mpdu_desc_info_set_li(hal_soc_handle_t hal_soc_hdl, - void *mpdu_desc, uint32_t seq_no) + void *ent_desc, + void *mpdu_desc, + uint32_t seq_no) { struct rx_mpdu_desc_info *mpdu_desc_info = (struct rx_mpdu_desc_info *)mpdu_desc;