qcacld-3.0: Add Rx thread feature support for Dp component

Add Rx thread and Rx refill thread support for
DP componentization.

Change-Id: I2c0a0f7780280a0c2304f026d2580a81123de312
CRs-Fixed: 3316814
Esse commit está contido em:
Roopavathi Lingampalli
2022-10-25 11:59:18 +05:30
commit de Madan Koyyalamudi
commit b81f52931c
14 arquivos alterados com 984 adições e 835 exclusões

Ver arquivo

@@ -33,6 +33,7 @@
#include "cdp_txrx_ops.h"
#include <qdf_defer.h>
#include <qdf_types.h>
#include "wlan_dp_rx_thread.h"
#define DP_MAX_SUBTYPES_TRACKED 4
@@ -204,17 +205,18 @@ struct dp_dns_stats {
/**
* struct dp_tcp_stats - tcp debug stats count
* @tx_tcp_syn_count: no. of tcp syn received from network stack
* @@tx_tcp_ack_count: no. of tcp ack received from network stack
* @tx_tcp_ack_count: no. of tcp ack received from network stack
* @rx_tcp_syn_ack_count: no. of tcp syn ack received from FW
* @tx_tcp_syn_dropped: no. of tcp syn dropped at hdd layer
* @tx_tcp_ack_dropped: no. of tcp ack dropped at hdd layer
* @rx_delivered: no. of tcp syn ack delivered to network stack
* @rx_refused: no of tcp syn ack refused (not delivered) to network stack
* @tx_tcp_syn_host_fw_sent: no of tcp syn sent by FW OTA
* @@tx_tcp_ack_host_fw_sent: no of tcp ack sent by FW OTA
* @tx_tcp_ack_host_fw_sent: no of tcp ack sent by FW OTA
* @rx_host_drop: no of tcp syn ack dropped by host
* @rx_fw_cnt: no of tcp res received by FW
* @tx_tcp_syn_ack_cnt: no of tcp syn acked by FW
* @tx_tcp_syn_ack_cnt: no of tcp ack acked by FW
* @tx_tcp_ack_ack_cnt: no of tcp ack acked by FW
* @is_tcp_syn_ack_rcv: flag to check tcp syn ack received or not
* @is_tcp_ack_sent: flag to check tcp ack sent or not
*/
@@ -263,6 +265,7 @@ struct dp_icmpv4_stats {
/**
* struct dp_rsp_stats - arp packet stats
* @vdev_id: session id
* @arp_req_enqueue: fw tx count
* @arp_req_tx_success: tx ack count
* @arp_req_tx_failure: tx ack fail count
@@ -351,7 +354,7 @@ struct dp_dhcp_ind {
};
/**
* struct dp_mic_info - mic error info in dp
* struct dp_mic_error_info - mic error info in dp
* @ta_mac_addr: transmitter mac address
* @multicast: Flag for multicast
* @key_id: Key ID
@@ -376,7 +379,7 @@ enum dp_mic_work_status {
/**
* struct dp_mic_work - mic work info in dp
* @mic_error_work: mic error work
* @work: mic error work
* @status: sattus of mic error work
* @info: Pointer to mic error information
* @lock: lock to synchronixe mic error work
@@ -402,6 +405,7 @@ enum dp_nud_state {
DP_NUD_STATE_INVALID
};
struct opaque_hdd_callback_handle;
/**
* typedef hdd_cb_handle - HDD Handle
*
@@ -412,13 +416,11 @@ enum dp_nud_state {
*
* The HDD must be able to derive it's internal instance structure
* pointer through this handle.
*/
/*
*
* NOTE WELL: struct opaque_hdd_callback_handle is not defined anywhere. This
* reference is used to help ensure that a hdd_cb_handle is never used
* where a different handle type is expected
*/
struct opaque_hdd_callback_handle;
typedef struct opaque_hdd_callback_handle *hdd_cb_handle;
/**
@@ -432,6 +434,8 @@ typedef struct opaque_hdd_callback_handle *hdd_cb_handle;
* @BUS_BW_LEVEL_5: vote for level-5 bus bandwidth
* @BUS_BW_LEVEL_6: vote for level-6 bus bandwidth
* @BUS_BW_LEVEL_7: vote for level-7 bus bandwidth
* @BUS_BW_LEVEL_8: vote for level-8 bus bandwidth
* @BUS_BW_LEVEL_MAX: vote for max level bus bandwidth
*/
enum bus_bw_level {
BUS_BW_LEVEL_NONE,
@@ -459,6 +463,7 @@ enum bus_bw_level {
* @TPUT_LEVEL_VERY_HIGH: very high throughput level
* @TPUT_LEVEL_ULTRA_HIGH: ultra high throughput level
* @TPUT_LEVEL_SUPER_HIGH: super high throughput level
* @TPUT_LEVEL_MAX: maximum throughput level
*/
enum tput_level {
TPUT_LEVEL_NONE,
@@ -477,6 +482,7 @@ enum tput_level {
*
* @BBM_APPS_RESUME: system resume flag
* @BBM_APPS_SUSPEND: system suspend flag
* @BBM_FLAG_MAX: maximum flag
*/
enum bbm_non_per_flag {
BBM_APPS_RESUME,
@@ -496,6 +502,7 @@ enum bbm_non_per_flag {
* is set without taking other policy vote levels into consideration.
* @BBM_SELECT_TABLE_POLICY: policy where bus bw table is selected based on
* the latency level.
* @BBM_MAX_POLICY: max policy
*/
enum bbm_policy {
BBM_DRIVER_MODE_POLICY,
@@ -511,6 +518,7 @@ enum bbm_policy {
*
* @WLM_LL_NORMAL: normal latency level
* @WLM_LL_LOW: low latency level
* @WLM_LL_MAX: max latency level
*/
enum wlm_ll_level {
WLM_LL_NORMAL,
@@ -528,6 +536,7 @@ enum wlm_ll_level {
* @wlm_level: latency level. valid for BBM_WLM_POLICY.
* @user_level: user bus bandwidth vote. valid for BBM_USER_POLICY.
* @set: set or reset user level. valid for BBM_USER_POLICY.
* @usr: user specific info
*/
union bbm_policy_info {
enum QDF_GLOBAL_MODE driver_mode;
@@ -541,7 +550,7 @@ union bbm_policy_info {
};
/**
* struct bbm_params - BBM params
* struct bbm_params: BBM params
*
* @policy: BBM policy
* @policy_info: policy related info
@@ -552,7 +561,9 @@ struct bbm_params {
};
/**
* wlan_tp_data : union of TCP msg for Tx and Rx Dir
* union wlan_tp_data: union of TCP msg for Tx and Rx Dir
* @tx_tp_data: msg to TCP for Tx Dir
* @rx_tp_data: msg to TCP for Rx Dir
*/
union wlan_tp_data {
struct wlan_tx_tp_data tx_tp_data;
@@ -564,6 +575,24 @@ union wlan_tp_data {
* to non-converged driver
* @callback_ctx : Opaque callback context
* @dp_get_netdev_by_vdev_mac: Callback to get netdev from vdev mac address
* @dp_get_tx_flow_low_watermark: Callback to get TX flow low watermark info
* @dp_get_tx_resource: Callback to check tx resources and take action
* @dp_get_tsf_time: Callback to get TSF time
* @dp_tsf_timestamp_rx: Callback to set rx packet timestamp
* @dp_nbuf_push_pkt: Callback to push rx pkt to network
* @dp_rx_napi_gro_flush: OS IF Callback to GRO RX/flush function.
* @dp_rx_thread_napi_gro_flush: OS IF Callback to do gro flush
* @dp_rx_napi_gro_receive: OS IF Callback for GRO RX receive function.
* @dp_lro_rx_cb: OS IF Callback for LRO receive function
* @dp_gro_rx_legacy_get_napi: Callback to get napi in legacy gro case
* @dp_register_rx_offld_flush_cb: OS IF Callback to get rx offld flush cb
* @dp_rx_check_qdisc_configured: OS IF Callback to check if any ingress qdisc
* configured
* @dp_is_gratuitous_arp_unsolicited_na: OS IF Callback to check gratuitous arp
* unsolicited na
* @dp_send_rx_pkt_over_nl: OS IF Callback to send rx pkt over nl
* @dp_disable_rx_ol_for_low_tput: Callback to disable Rx offload in low TPUT
* scenario
* @wlan_dp_sta_get_dot11mode: Callback to get dot11 mode
* @wlan_dp_get_ap_client_count: Callback to get client count connected to AP
* @wlan_dp_sta_ndi_connected: Callback to get NDI connected status
@@ -581,7 +610,8 @@ union wlan_tp_data {
* @dp_is_ap_active:Callback to check if AP is active
* @dp_napi_apply_throughput_policy:Callback to apply NAPI throughput policy
* @wlan_dp_display_tx_multiq_stats: Callback to display Tx Mulit queue stats
* @wlan_dp_display_netif_queue_history: Callback to display Netif queue history
* @wlan_dp_display_netif_queue_history: Callback to display Netif queue
* history
* @osif_dp_process_mic_error: osif callback to process MIC error
* @dp_is_link_adapter: Callback API to check if adapter is link adapter
* @os_if_dp_nud_stats_info: osif callback to print nud stats info
@@ -607,6 +637,9 @@ struct wlan_dp_psoc_callbacks {
QDF_STATUS (*dp_rx_napi_gro_flush)(qdf_napi_struct *napi_to_use,
qdf_nbuf_t nbuf,
uint8_t *force_flush);
void
(*dp_rx_thread_napi_gro_flush)(qdf_napi_struct *napi,
enum dp_rx_gro_flush_code flush_code);
QDF_STATUS (*dp_rx_napi_gro_receive)(qdf_napi_struct *napi_to_use,
qdf_nbuf_t nbuf);
@@ -714,6 +747,7 @@ struct wlan_dp_psoc_nb_ops {
/**
* struct wlan_dp_user_config - DP component user config
* @ipa_enable: IPA enabled/disabled config
* @arp_connectivity_map: ARP connectiviy map
*/
struct wlan_dp_user_config {
bool ipa_enable;

Ver arquivo

@@ -53,7 +53,7 @@ ucfg_dp_is_roam_after_nud_enabled(struct wlan_objmgr_psoc *psoc)
#endif
/**
* ucfg_dp_create_intf() - update DP interface MAC address
* ucfg_dp_update_inf_mac() - update DP interface MAC address
* @psoc: psoc handle
* @cur_mac: Current MAC address
* @new_mac: new MAC address
@@ -180,7 +180,7 @@ void ucfg_dp_conn_info_set_arp_service(struct wlan_objmgr_vdev *vdev,
/**
* ucfg_dp_conn_info_set_peer_authenticate() - set Peer authenticated state
* @vdev: vdev mapped to STA DP interface
* is_authenticated: Peer authenticated info
* @is_authenticated: Peer authenticated info
*
* Return: None
*/
@@ -190,7 +190,7 @@ void ucfg_dp_conn_info_set_peer_authenticate(struct wlan_objmgr_vdev *vdev,
/**
* ucfg_dp_conn_info_set_peer_mac() - set peer mac info in DP intf
* @vdev: vdev mapped to STA DP interface
* peer_mac: Peer MAC information
* @peer_mac: Peer MAC information
*
* Return: None
*/
@@ -200,7 +200,7 @@ void ucfg_dp_conn_info_set_peer_mac(struct wlan_objmgr_vdev *vdev,
/**
* ucfg_dp_softap_check_wait_for_tx_eap_pkt() - wait for TX EAP pkt in SAP
* @vdev: vdev mapped to SAP DP interface
* mac_addr: Peer MAC address info
* @mac_addr: Peer MAC address info
*
* Return: None
*/
@@ -210,7 +210,7 @@ void ucfg_dp_softap_check_wait_for_tx_eap_pkt(struct wlan_objmgr_vdev *vdev,
/**
* ucfg_dp_update_dhcp_state_on_disassoc() - update DHCP during disassoc
* @vdev: vdev mapped to SAP DP interface
* mac_addr: Peer MAC address info
* @mac_addr: Peer MAC address info
*
* Return: None
*/
@@ -220,7 +220,7 @@ void ucfg_dp_update_dhcp_state_on_disassoc(struct wlan_objmgr_vdev *vdev,
/**
* ucfg_dp_set_dfs_cac_tx() - update DFS CAC TX block info
* @vdev: vdev mapped to SAP DP interface
* tx_block: true if TX need to be blocked
* @tx_block: true if TX need to be blocked
*
* Return: None
*/
@@ -230,7 +230,7 @@ void ucfg_dp_set_dfs_cac_tx(struct wlan_objmgr_vdev *vdev,
/**
* ucfg_dp_set_bss_state_start() - update BSS state for SAP intf
* @vdev: vdev mapped to SAP DP interface
* start: true if BSS state is started
* @start: true if BSS state is started
*
* Return: None
*/
@@ -239,7 +239,7 @@ void ucfg_dp_set_bss_state_start(struct wlan_objmgr_vdev *vdev, bool start);
/**
* ucfg_dp_lro_set_reset() - LRO set/reset in DP
* @vdev: vdev mapped to DP interface
* enable_flag: Enable/disable LRO feature
* @enable_flag: Enable/disable LRO feature
*
* Return: 0 on success and non zero on failure.
*/
@@ -288,6 +288,7 @@ bool ucfg_dp_is_rx_threads_enabled(struct wlan_objmgr_psoc *psoc);
/**
* ucfg_dp_rx_ol_init() - Initialize Rx offload mode (LRO or GRO)
* @psoc: PSOC mapped to DP context
* @is_wifi3_0_target: true if it wifi3.0 target
*
* Return: 0 on success and non zero on failure.
*/
@@ -383,7 +384,8 @@ qdf_net_dev_stats *ucfg_dp_get_dev_stats(qdf_netdev_t dev);
/**
* ucfg_dp_inc_rx_pkt_stats() - DP increment RX pkt stats
* @vdev: VDEV mapped to DP interface
* pkt_len: packet length to be incremented in stats
* @pkt_len: packet length to be incremented in stats
* @delivered: pkts delivered or not
*
* Return: None
*/
@@ -457,6 +459,7 @@ QDF_STATUS ucfg_dp_mon_register_txrx_ops(struct wlan_objmgr_vdev *vdev)
/**
* ucfg_dp_softap_register_txrx_ops() - Register ops for TX/RX operations
* @vdev: vdev mapped to SAP mode DP interface
* @txrx_ops: Tx and Rx data transfer ops
*
* Return: 0 on success and non zero on failure.
*/
@@ -504,7 +507,7 @@ void ucfg_dp_bbm_apply_independent_policy(struct wlan_objmgr_psoc *psoc,
/**
* ucfg_dp_periodic_sta_stats_start() - Start displaying periodic stats for STA
* @adapter: Pointer to the station adapter
* @vdev: Pointer to the vdev
*
* Return: none
*/
@@ -512,7 +515,7 @@ void ucfg_dp_periodic_sta_stats_start(struct wlan_objmgr_vdev *vdev);
/**
* ucfg_dp_periodic_sta_stats_stop() - Stop displaying periodic stats for STA
* @adapter: Pointer to the station adapter
* @vdev: Pointer to the vdev
*
* Return: none
*/
@@ -542,8 +545,7 @@ void ucfg_dp_try_send_rps_ind(struct wlan_objmgr_vdev *vdev);
/**
* ucfg_dp_reg_ipa_rsp_ind() - Resiter RSP IND cb with IPA component
* @psoc: psoc handle
* @cb_obj: Callback object
* @pdev: pdev handle
*
* Returns: None
*/
@@ -710,7 +712,7 @@ void ucfg_dp_nud_set_gateway_addr(struct wlan_objmgr_vdev *vdev,
/**
* ucfg_dp_nud_event() - netevent callback
* @netdev_addr: netdev_addr
* @netdev_mac_addr: netdev MAC addr
* @gw_mac_addr: Gateway MAC address
* @nud_state : NUD State
*
@@ -809,6 +811,7 @@ void ucfg_dp_clear_dns_payload_value(struct wlan_objmgr_vdev *vdev);
/**
* ucfg_dp_set_pkt_type_bitmap_value() - Set Packet type bitmap value
* @vdev: vdev context
* @value: bitmap value
*
* Return: None
*/
@@ -826,6 +829,7 @@ uint32_t ucfg_dp_intf_get_pkt_type_bitmap_value(void *intf_ctx);
/**
* ucfg_dp_set_track_dest_ipv4_value() - Set track_dest_ipv4 value
* @vdev: vdev context
* @value: dest ipv4 value
*
* Return: None
*/
@@ -835,6 +839,7 @@ void ucfg_dp_set_track_dest_ipv4_value(struct wlan_objmgr_vdev *vdev,
/**
* ucfg_dp_set_track_dest_port_value() - Set track_dest_port value
* @vdev: vdev context
* @value: dest port value
*
* Return: None
*/
@@ -844,6 +849,7 @@ void ucfg_dp_set_track_dest_port_value(struct wlan_objmgr_vdev *vdev,
/**
* ucfg_dp_set_track_src_port_value() - Set track_dest_port value
* @vdev: vdev context
* @value: src port value
*
* Return: None
*/
@@ -853,6 +859,7 @@ void ucfg_dp_set_track_src_port_value(struct wlan_objmgr_vdev *vdev,
/**
* ucfg_dp_set_track_dns_domain_len_value() - Set track_dns_domain_len value
* @vdev: vdev context
* @value: dns domain len value
*
* Return: None
*/
@@ -862,6 +869,7 @@ void ucfg_dp_set_track_dns_domain_len_value(struct wlan_objmgr_vdev *vdev,
/**
* ucfg_dp_set_track_arp_ip_value() - Set track_arp_ip value
* @vdev: vdev context
* @value: ARP IP value
*
* Return: None
*/
@@ -880,6 +888,7 @@ uint32_t ucfg_dp_get_pkt_type_bitmap_value(struct wlan_objmgr_vdev *vdev);
* ucfg_dp_get_dns_payload_value() - Get dns_payload value
* @vdev: vdev context
* @dns_query : DNS query pointer
*
* Return: None
*/
void ucfg_dp_get_dns_payload_value(struct wlan_objmgr_vdev *vdev,
@@ -1150,7 +1159,7 @@ void ucfg_dp_set_tc_based_dyn_gro(struct wlan_objmgr_psoc *psoc, bool value);
/**
* ucfg_dp_runtime_disable_rx_thread() - Disable rx thread
* @psoc: psoc handle
* @vdev: vdev handle
* @value : value to be set (true/false)
*
* Return: None
@@ -1203,7 +1212,6 @@ uint32_t ucfg_dp_get_bus_bw_high_threshold(struct wlan_objmgr_psoc *psoc);
* ucfg_dp_event_eapol_log() - send event to wlan diag
* @nbuf: Network buffer ptr
* @dir: direction
* @eapol_key_info: eapol key info
*
* Return: None
*/
@@ -1448,4 +1456,43 @@ QDF_STATUS ucfg_dp_config_direct_link(struct wlan_objmgr_vdev *vdev,
return QDF_STATUS_SUCCESS;
}
#endif
#endif /* _WLAN_DP_UCFG_API_H_ */
/**
* ucfg_dp_txrx_init() - initialize DP TXRX module
* @soc: ol_txrx_soc_handle
* @pdev_id: id of dp pdev handle
* @config: configuration for DP TXRX modules
*
* Return: QDF_STATUS_SUCCESS on success, error qdf status on failure
*/
QDF_STATUS ucfg_dp_txrx_init(ol_txrx_soc_handle soc, uint8_t pdev_id,
struct dp_txrx_config *config);
/**
* ucfg_dp_txrx_deinit() - de-initialize DP TXRX module
* @soc: ol_txrx_soc_handle
*
* Return: QDF_STATUS_SUCCESS on success, error qdf status on failure
*/
QDF_STATUS ucfg_dp_txrx_deinit(ol_txrx_soc_handle soc);
/**
* ucfg_dp_txrx_ext_dump_stats() - dump txrx external module stats
* @soc: ol_txrx_soc_handle object
* @stats_id: id for the module whose stats are needed
*
* Return: QDF_STATUS_SUCCESS on success, error qdf status on failure
*/
QDF_STATUS ucfg_dp_txrx_ext_dump_stats(ol_txrx_soc_handle soc,
uint8_t stats_id);
/**
* ucfg_dp_txrx_set_cpu_mask() - set CPU mask for RX threads
* @soc: ol_txrx_soc_handle object
* @new_mask: New CPU mask pointer
*
* Return: QDF_STATUS_SUCCESS on success, error qdf status on failure
*/
QDF_STATUS ucfg_dp_txrx_set_cpu_mask(ol_txrx_soc_handle soc,
qdf_cpu_mask *new_mask);
#endif /* _WLAN_DP_UCFGi_API_H_ */

Ver arquivo

@@ -38,6 +38,7 @@
#include <cdp_txrx_ctrl.h>
#include <qdf_net_stats.h>
#include "wlan_dp_prealloc.h"
#include "wlan_dp_rx_thread.h"
void ucfg_dp_update_inf_mac(struct wlan_objmgr_psoc *psoc,
struct qdf_mac_addr *cur_mac,
@@ -330,7 +331,7 @@ ucfg_dp_suspend_handler(struct wlan_objmgr_psoc *psoc, void *arg)
struct wlan_dp_psoc_context *dp_ctx;
struct wlan_dp_intf *dp_intf, *dp_intf_next = NULL;
void *soc = cds_get_context(QDF_MODULE_ID_SOC);
QDF_STATUS status;
dp_ctx = dp_psoc_get_priv(psoc);
if (!dp_ctx) {
dp_err("DP context not found");
@@ -342,6 +343,15 @@ ucfg_dp_suspend_handler(struct wlan_objmgr_psoc *psoc, void *arg)
dp_for_each_intf_held_safe(dp_ctx, dp_intf, dp_intf_next) {
dp_intf->sap_tx_block_mask |= WLAN_DP_SUSPEND;
}
if (dp_ctx->enable_dp_rx_threads) {
status = dp_txrx_suspend(cds_get_context(QDF_MODULE_ID_SOC));
if (status != QDF_STATUS_SUCCESS) {
dp_intf->sap_tx_block_mask &= ~WLAN_DP_SUSPEND;
dp_txrx_resume(cds_get_context(QDF_MODULE_ID_SOC));
return status;
}
}
return QDF_STATUS_SUCCESS;
}
@@ -372,6 +382,8 @@ ucfg_dp_resume_handler(struct wlan_objmgr_psoc *psoc, void *arg)
dp_for_each_intf_held_safe(dp_ctx, dp_intf, dp_intf_next) {
dp_intf->sap_tx_block_mask &= ~WLAN_DP_SUSPEND;
}
if (dp_ctx->enable_dp_rx_threads)
dp_txrx_resume(cds_get_context(QDF_MODULE_ID_SOC));
return QDF_STATUS_SUCCESS;
}
@@ -885,8 +897,6 @@ ucfg_dp_get_rx_softirq_yield_duration(struct wlan_objmgr_psoc *psoc)
/**
* dp_rx_register_fisa_ops() - FISA callback functions
* @txrx_ops: operations handle holding callback functions
* @dp_rx_fisa_cbk: callback for fisa aggregation handle function
* @dp_rx_fisa_flush: callback function to flush fisa aggregation
*
* Return: None
*/
@@ -1931,6 +1941,8 @@ void ucfg_dp_register_hdd_callbacks(struct wlan_objmgr_psoc *psoc,
dp_ctx->dp_ops.dp_nbuf_push_pkt = cb_obj->dp_nbuf_push_pkt;
dp_ctx->dp_ops.dp_rx_napi_gro_flush = cb_obj->dp_rx_napi_gro_flush;
dp_ctx->dp_ops.dp_rx_thread_napi_gro_flush =
cb_obj->dp_rx_thread_napi_gro_flush;
dp_ctx->dp_ops.dp_rx_napi_gro_receive = cb_obj->dp_rx_napi_gro_receive;
dp_ctx->dp_ops.dp_lro_rx_cb = cb_obj->dp_lro_rx_cb;
dp_ctx->dp_ops.dp_register_rx_offld_flush_cb =
@@ -2391,3 +2403,26 @@ QDF_STATUS ucfg_dp_config_direct_link(struct wlan_objmgr_vdev *vdev,
enable_low_latency);
}
#endif
QDF_STATUS ucfg_dp_txrx_init(ol_txrx_soc_handle soc, uint8_t pdev_id,
struct dp_txrx_config *config)
{
return dp_txrx_init(soc, pdev_id, config);
}
QDF_STATUS ucfg_dp_txrx_deinit(ol_txrx_soc_handle soc)
{
return dp_txrx_deinit(soc);
}
QDF_STATUS ucfg_dp_txrx_ext_dump_stats(ol_txrx_soc_handle soc,
uint8_t stats_id)
{
return dp_txrx_ext_dump_stats(soc, stats_id);
}
QDF_STATUS ucfg_dp_txrx_set_cpu_mask(ol_txrx_soc_handle soc,
qdf_cpu_mask *new_mask)
{
return dp_txrx_set_cpu_mask(soc, new_mask);
}