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:

commit de
Madan Koyyalamudi

pai
8211f09db9
commit
b81f52931c
@@ -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;
|
||||
|
@@ -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_ */
|
||||
|
@@ -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);
|
||||
}
|
||||
|
Referência em uma nova issue
Block a user