]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: ath12k: Move hal_rx_ops callbacks to hal_ops
authorPavankumar Nandeshwar <quic_pnandesh@quicinc.com>
Wed, 10 Sep 2025 18:14:11 +0000 (23:44 +0530)
committerJeff Johnson <jeff.johnson@oss.qualcomm.com>
Thu, 11 Sep 2025 14:26:54 +0000 (07:26 -0700)
Move the following callbacks from hal_rx_ops to hal_ops for use in
non-performance-critical paths:

rx_desc_set_msdu_len
rx_desc_get_dot11_hdr
rx_desc_get_crypto_header
rx_desc_copy_end_tlv
rx_desc_get_msdu_src_link_id
rx_desc_get_desc_size

hal_rx_ops currently includes callbacks used in both critical and
non-critical Rx paths. To reduce function pointer indirection in hot
path, performance-critical ops will be consolidated into a single
extraction API in a follow-up patch.

Begin cleanup by migrating non-performance-critical callbacks from
hal_rx_ops to hal_ops. Once the extraction API is in place, remove
hal_rx_ops entirely to simplify the HAL interface.

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3

Signed-off-by: Pavankumar Nandeshwar <quic_pnandesh@quicinc.com>
Signed-off-by: Ripan Deuri <quic_rdeuri@quicinc.com>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
Reviewed-by: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
Link: https://patch.msgid.link/20250910181414.2062280-6-quic_rdeuri@quicinc.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
drivers/net/wireless/ath/ath12k/dp.c
drivers/net/wireless/ath/ath12k/dp_rx.h
drivers/net/wireless/ath/ath12k/hal.c
drivers/net/wireless/ath/ath12k/hal.h

index 83d41154c115fe55b6f5979edb81bdf996f0d671..9dd602311433da8d2c4de7305fdc2dca9389e4ee 100644 (file)
@@ -897,7 +897,7 @@ void ath12k_dp_pdev_pre_alloc(struct ath12k *ar)
 
 void ath12k_dp_hal_rx_desc_init(struct ath12k_base *ab)
 {
-       ab->hal.hal_desc_sz = ab->hal_rx_ops->rx_desc_get_desc_size();
+       ab->hal.hal_desc_sz = ab->hw_params->hal_ops->rx_desc_get_desc_size();
 }
 
 int ath12k_dp_pdev_alloc(struct ath12k_base *ab)
index 6f56a56db09781390a09f32b47062099bfafed81..150f4b1dbfbb5a4a6d7b7d6b59028a687aef0941 100644 (file)
@@ -269,14 +269,14 @@ static inline void ath12k_dp_rx_desc_end_tlv_copy(struct ath12k_base *ab,
                                                  struct hal_rx_desc *fdesc,
                                                  struct hal_rx_desc *ldesc)
 {
-       ab->hal_rx_ops->rx_desc_copy_end_tlv(fdesc, ldesc);
+       ab->hw_params->hal_ops->rx_desc_copy_end_tlv(fdesc, ldesc);
 }
 
 static inline void ath12k_dp_rxdesc_set_msdu_len(struct ath12k_base *ab,
                                                 struct hal_rx_desc *desc,
                                                 u16 len)
 {
-       ab->hal_rx_ops->rx_desc_set_msdu_len(desc, len);
+       ab->hw_params->hal_ops->rx_desc_set_msdu_len(desc, len);
 }
 
 static inline u32 ath12k_dp_rxdesc_get_ppduid(struct ath12k_base *ab,
@@ -318,7 +318,7 @@ static inline void ath12k_dp_rx_desc_get_dot11_hdr(struct ath12k_base *ab,
                                                   struct hal_rx_desc *desc,
                                                   struct ieee80211_hdr *hdr)
 {
-       ab->hal_rx_ops->rx_desc_get_dot11_hdr(desc, hdr);
+       ab->hw_params->hal_ops->rx_desc_get_dot11_hdr(desc, hdr);
 }
 
 static inline void ath12k_dp_rx_desc_get_crypto_header(struct ath12k_base *ab,
@@ -326,13 +326,13 @@ static inline void ath12k_dp_rx_desc_get_crypto_header(struct ath12k_base *ab,
                                                       u8 *crypto_hdr,
                                                       enum hal_encrypt_type enctype)
 {
-       ab->hal_rx_ops->rx_desc_get_crypto_header(desc, crypto_hdr, enctype);
+       ab->hw_params->hal_ops->rx_desc_get_crypto_header(desc, crypto_hdr, enctype);
 }
 
 static inline u8 ath12k_dp_rx_get_msdu_src_link(struct ath12k_base *ab,
                                                struct hal_rx_desc *desc)
 {
-       return ab->hal_rx_ops->rx_desc_get_msdu_src_link_id(desc);
+       return ab->hw_params->hal_ops->rx_desc_get_msdu_src_link_id(desc);
 }
 
 static inline void ath12k_dp_clean_up_skb_list(struct sk_buff_head *skb_list)
index 329c458d1fe253e4030ff3e73d86ee29a2c0fedc..60a4e5766f513dc731c408c80cec58e479e81432 100644 (file)
@@ -428,29 +428,28 @@ const struct hal_rx_ops hal_rx_qcn9274_compact_ops = {
        .rx_desc_get_msdu_nss = ath12k_hal_rx_desc_get_msdu_nss_qcn9274,
        .rx_desc_get_mpdu_tid = ath12k_hal_rx_desc_get_mpdu_tid_qcn9274,
        .rx_desc_get_mpdu_peer_id = ath12k_hal_rx_desc_get_mpdu_peer_id_qcn9274,
-       .rx_desc_copy_end_tlv = ath12k_hal_rx_desc_copy_end_tlv_qcn9274,
        .rx_desc_get_mpdu_ppdu_id = ath12k_hal_rx_desc_get_mpdu_ppdu_id_qcn9274,
-       .rx_desc_set_msdu_len = ath12k_hal_rx_desc_set_msdu_len_qcn9274,
        .rx_desc_get_msdu_payload = ath12k_hal_rx_desc_get_msdu_payload_qcn9274,
        .rx_desc_mac_addr2_valid = ath12k_hal_rx_desc_mac_addr2_valid_qcn9274,
        .rx_desc_mpdu_start_addr2 = ath12k_hal_rx_desc_mpdu_start_addr2_qcn9274,
        .rx_desc_is_da_mcbc = ath12k_hal_rx_desc_is_da_mcbc_qcn9274,
-       .rx_desc_get_dot11_hdr = ath12k_hal_rx_desc_get_dot11_hdr_qcn9274,
-       .rx_desc_get_crypto_header = ath12k_hal_rx_desc_get_crypto_hdr_qcn9274,
        .dp_rx_h_msdu_done = ath12k_hal_rx_h_msdu_done_qcn9274,
        .dp_rx_h_l4_cksum_fail = ath12k_hal_rx_h_l4_cksum_fail_qcn9274,
        .dp_rx_h_ip_cksum_fail = ath12k_hal_rx_h_ip_cksum_fail_qcn9274,
        .dp_rx_h_is_decrypted = ath12k_hal_rx_h_is_decrypted_qcn9274,
        .dp_rx_h_mpdu_err = ath12k_hal_rx_h_mpdu_err_qcn9274,
-       .rx_desc_get_desc_size = ath12k_hal_get_rx_desc_size_qcn9274,
-       .rx_desc_get_msdu_src_link_id =
-               ath12k_hal_rx_desc_get_msdu_src_link_qcn9274,
 };
 EXPORT_SYMBOL(hal_rx_qcn9274_compact_ops);
 
 const struct hal_ops hal_qcn9274_ops = {
        .create_srng_config = ath12k_hal_srng_create_config_qcn9274,
        .tcl_to_wbm_rbm_map = ath12k_hal_qcn9274_tcl_to_wbm_rbm_map,
+       .rx_desc_set_msdu_len = ath12k_hal_rx_desc_set_msdu_len_qcn9274,
+       .rx_desc_get_dot11_hdr = ath12k_hal_rx_desc_get_dot11_hdr_qcn9274,
+       .rx_desc_get_crypto_header = ath12k_hal_rx_desc_get_crypto_hdr_qcn9274,
+       .rx_desc_copy_end_tlv = ath12k_hal_rx_desc_copy_end_tlv_qcn9274,
+       .rx_desc_get_msdu_src_link_id = ath12k_hal_rx_desc_get_msdu_src_link_qcn9274,
+       .rx_desc_get_desc_size = ath12k_hal_get_rx_desc_size_qcn9274,
 };
 EXPORT_SYMBOL(hal_qcn9274_ops);
 
@@ -598,29 +597,29 @@ const struct hal_rx_ops hal_rx_wcn7850_ops = {
        .rx_desc_get_msdu_nss = ath12k_hal_rx_desc_get_msdu_nss_wcn7850,
        .rx_desc_get_mpdu_tid = ath12k_hal_rx_desc_get_mpdu_tid_wcn7850,
        .rx_desc_get_mpdu_peer_id = ath12k_hal_rx_desc_get_mpdu_peer_id_wcn7850,
-       .rx_desc_copy_end_tlv = ath12k_hal_rx_desc_copy_end_tlv_wcn7850,
        .rx_desc_get_mpdu_start_tag = ath12k_hal_rx_desc_get_mpdu_start_tag_wcn7850,
        .rx_desc_get_mpdu_ppdu_id = ath12k_hal_rx_desc_get_mpdu_ppdu_id_wcn7850,
-       .rx_desc_set_msdu_len = ath12k_hal_rx_desc_set_msdu_len_wcn7850,
        .rx_desc_get_msdu_payload = ath12k_hal_rx_desc_get_msdu_payload_wcn7850,
        .rx_desc_mac_addr2_valid = ath12k_hal_rx_desc_mac_addr2_valid_wcn7850,
        .rx_desc_mpdu_start_addr2 = ath12k_hal_rx_desc_mpdu_start_addr2_wcn7850,
        .rx_desc_is_da_mcbc = ath12k_hal_rx_desc_is_da_mcbc_wcn7850,
-       .rx_desc_get_dot11_hdr = ath12k_hal_rx_desc_get_dot11_hdr_wcn7850,
-       .rx_desc_get_crypto_header = ath12k_hal_rx_desc_get_crypto_hdr_wcn7850,
        .dp_rx_h_msdu_done = ath12k_hal_rx_h_msdu_done_wcn7850,
        .dp_rx_h_l4_cksum_fail = ath12k_hal_rx_h_l4_cksum_fail_wcn7850,
        .dp_rx_h_ip_cksum_fail = ath12k_hal_rx_h_ip_cksum_fail_wcn7850,
        .dp_rx_h_is_decrypted = ath12k_hal_rx_h_is_decrypted_wcn7850,
        .dp_rx_h_mpdu_err = ath12k_hal_rx_h_mpdu_err_wcn7850,
-       .rx_desc_get_desc_size = ath12k_hal_get_rx_desc_size_wcn7850,
-       .rx_desc_get_msdu_src_link_id = ath12k_hal_rx_desc_get_msdu_src_link_wcn7850,
 };
 EXPORT_SYMBOL(hal_rx_wcn7850_ops);
 
 const struct hal_ops hal_wcn7850_ops = {
        .create_srng_config = ath12k_hal_srng_create_config_wcn7850,
        .tcl_to_wbm_rbm_map = ath12k_hal_wcn7850_tcl_to_wbm_rbm_map,
+       .rx_desc_set_msdu_len = ath12k_hal_rx_desc_set_msdu_len_wcn7850,
+       .rx_desc_get_dot11_hdr = ath12k_hal_rx_desc_get_dot11_hdr_wcn7850,
+       .rx_desc_get_crypto_header = ath12k_hal_rx_desc_get_crypto_hdr_wcn7850,
+       .rx_desc_copy_end_tlv = ath12k_hal_rx_desc_copy_end_tlv_wcn7850,
+       .rx_desc_get_msdu_src_link_id = ath12k_hal_rx_desc_get_msdu_src_link_wcn7850,
+       .rx_desc_get_desc_size = ath12k_hal_get_rx_desc_size_wcn7850,
 };
 EXPORT_SYMBOL(hal_wcn7850_ops);
 
index ee0c22d65d2cc447e3c25d86106d4ab7cb85a2bc..553d93dcc268c0cd243d87e96703ff6dcbbaeaa8 100644 (file)
@@ -1569,33 +1569,33 @@ struct hal_rx_ops {
        u8 (*rx_desc_get_msdu_nss)(struct hal_rx_desc *desc);
        u8 (*rx_desc_get_mpdu_tid)(struct hal_rx_desc *desc);
        u16 (*rx_desc_get_mpdu_peer_id)(struct hal_rx_desc *desc);
-       void (*rx_desc_copy_end_tlv)(struct hal_rx_desc *fdesc,
-                                    struct hal_rx_desc *ldesc);
        u32 (*rx_desc_get_mpdu_start_tag)(struct hal_rx_desc *desc);
        u32 (*rx_desc_get_mpdu_ppdu_id)(struct hal_rx_desc *desc);
-       void (*rx_desc_set_msdu_len)(struct hal_rx_desc *desc, u16 len);
        struct rx_attention *(*rx_desc_get_attention)(struct hal_rx_desc *desc);
        u8 *(*rx_desc_get_msdu_payload)(struct hal_rx_desc *desc);
        bool (*rx_desc_mac_addr2_valid)(struct hal_rx_desc *desc);
        u8* (*rx_desc_mpdu_start_addr2)(struct hal_rx_desc *desc);
        bool (*rx_desc_is_da_mcbc)(struct hal_rx_desc *desc);
-       void (*rx_desc_get_dot11_hdr)(struct hal_rx_desc *desc,
-                                     struct ieee80211_hdr *hdr);
-       void (*rx_desc_get_crypto_header)(struct hal_rx_desc *desc,
-                                         u8 *crypto_hdr,
-                                         enum hal_encrypt_type enctype);
        bool (*dp_rx_h_msdu_done)(struct hal_rx_desc *desc);
        bool (*dp_rx_h_l4_cksum_fail)(struct hal_rx_desc *desc);
        bool (*dp_rx_h_ip_cksum_fail)(struct hal_rx_desc *desc);
        bool (*dp_rx_h_is_decrypted)(struct hal_rx_desc *desc);
        u32 (*dp_rx_h_mpdu_err)(struct hal_rx_desc *desc);
-       u32 (*rx_desc_get_desc_size)(void);
-       u8 (*rx_desc_get_msdu_src_link_id)(struct hal_rx_desc *desc);
 };
 
 struct hal_ops {
        int (*create_srng_config)(struct ath12k_base *ab);
        const struct ath12k_hal_tcl_to_wbm_rbm_map *tcl_to_wbm_rbm_map;
+       void (*rx_desc_set_msdu_len)(struct hal_rx_desc *desc, u16 len);
+       void (*rx_desc_get_dot11_hdr)(struct hal_rx_desc *desc,
+                                     struct ieee80211_hdr *hdr);
+       void (*rx_desc_get_crypto_header)(struct hal_rx_desc *desc,
+                                         u8 *crypto_hdr,
+                                         enum hal_encrypt_type enctype);
+       void (*rx_desc_copy_end_tlv)(struct hal_rx_desc *fdesc,
+                                    struct hal_rx_desc *ldesc);
+       u8 (*rx_desc_get_msdu_src_link_id)(struct hal_rx_desc *desc);
+       u32 (*rx_desc_get_desc_size)(void);
 };
 
 extern const struct hal_ops hal_qcn9274_ops;