
Currently, data stall detection is without control over individual data stall events. INI variable, gEnableDataStallDetection is converted from boolean to unsigned int which provides control over events across FW and host with each bit corresponding to different data stall events. Bit 0: Enable all data stall events if set. Bit 1-30: mapped to data stall events. Used when Bit 0 is 0 Bit 31: Enable aggressive timeout for WLM Mode. Change-Id: I4656520accd1589e77d5054eaa0a3cb8e63b14b2 CRs-Fixed: 3174906
509 linhas
16 KiB
C
509 linhas
16 KiB
C
/*
|
|
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
|
|
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
*
|
|
* Permission to use, copy, modify, and/or distribute this software for
|
|
* any purpose with or without fee is hereby granted, provided that the
|
|
* above copyright notice and this permission notice appear in all
|
|
* copies.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
|
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
|
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
|
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
|
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
* PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
|
|
#ifndef __CDP_TXRX_MOB_DEF_H
|
|
#define __CDP_TXRX_MOB_DEF_H
|
|
#include <sir_types.h>
|
|
#include <htt.h>
|
|
|
|
#define TX_WMM_AC_NUM 4
|
|
#define ENABLE_DP_HIST_STATS
|
|
#define DP_MEMORY_OPT
|
|
#ifndef CONFIG_BERYLLIUM
|
|
#define DP_USE_SINGLE_TCL
|
|
#endif
|
|
|
|
#define DP_RX_DISABLE_NDI_MDNS_FORWARDING
|
|
|
|
#define OL_TXQ_PAUSE_REASON_FW (1 << 0)
|
|
#define OL_TXQ_PAUSE_REASON_PEER_UNAUTHORIZED (1 << 1)
|
|
#define OL_TXQ_PAUSE_REASON_TX_ABORT (1 << 2)
|
|
#define OL_TXQ_PAUSE_REASON_VDEV_STOP (1 << 3)
|
|
#define OL_TXQ_PAUSE_REASON_THERMAL_MITIGATION (1 << 4)
|
|
|
|
#define OL_TXRX_INVALID_NUM_PEERS (-1)
|
|
|
|
|
|
/* Maximum number of station supported by data path, including BC. */
|
|
#define WLAN_MAX_STA_COUNT (HAL_NUM_STA)
|
|
|
|
/* The symbolic station ID return to HDD to specify the packet is bc/mc */
|
|
#define WLAN_RX_BCMC_STA_ID (WLAN_MAX_STA_COUNT + 1)
|
|
|
|
/* The symbolic station ID return to HDD to specify the packet is
|
|
to soft-AP itself */
|
|
#define WLAN_RX_SAP_SELF_STA_ID (WLAN_MAX_STA_COUNT + 2)
|
|
|
|
/* is 802.11 address multicast/broadcast? */
|
|
#define IEEE80211_IS_MULTICAST(_a) (*(_a) & 0x01)
|
|
|
|
#define MAX_PEERS 32
|
|
|
|
/*
|
|
* Bins used for reporting delay histogram:
|
|
* bin 0: 0 - 10 ms delay
|
|
* bin 1: 10 - 20 ms delay
|
|
* bin 2: 20 - 40 ms delay
|
|
* bin 3: 40 - 80 ms delay
|
|
* bin 4: 80 - 160 ms delay
|
|
* bin 5: > 160 ms delay
|
|
*/
|
|
#define QCA_TX_DELAY_HIST_REPORT_BINS 6
|
|
|
|
/* BA actions */
|
|
#define IEEE80211_ACTION_BA_ADDBA_REQUEST 0 /* ADDBA request */
|
|
#define IEEE80211_ACTION_BA_ADDBA_RESPONSE 1 /* ADDBA response */
|
|
#define IEEE80211_ACTION_BA_DELBA 2 /* DELBA */
|
|
|
|
#define IEEE80211_BA_POLICY_DELAYED 0
|
|
#define IEEE80211_BA_POLICY_IMMEDIATE 1
|
|
#define IEEE80211_BA_AMSDU_SUPPORTED 1
|
|
|
|
/**
|
|
* enum netif_action_type - Type of actions on netif queues
|
|
* @WLAN_STOP_ALL_NETIF_QUEUE: stop all netif queues
|
|
* @WLAN_START_ALL_NETIF_QUEUE: start all netif queues
|
|
* @WLAN_WAKE_ALL_NETIF_QUEUE: wake all netif queues
|
|
* @WLAN_STOP_ALL_NETIF_QUEUE_N_CARRIER: stop all queues and off carrier
|
|
* @WLAN_START_ALL_NETIF_QUEUE_N_CARRIER: start all queues and on carrier
|
|
* @WLAN_NETIF_TX_DISABLE: disable tx
|
|
* @WLAN_NETIF_TX_DISABLE_N_CARRIER: disable tx and off carrier
|
|
* @WLAN_NETIF_CARRIER_ON: on carrier
|
|
* @WLAN_NETIF_CARRIER_OFF: off carrier
|
|
* @WLAN_NETIF_PRIORITY_QUEUE_ON: start priority netif queues
|
|
* @WLAN_NETIF_PRIORITY_QUEUE_OFF: stop priority netif queues
|
|
* @WLAN_WAKE_NON_PRIORITY_QUEUE: wake non priority netif queues
|
|
* @WLAN_STOP_NON_PRIORITY_QUEUE: stop non priority netif queues
|
|
*/
|
|
enum netif_action_type {
|
|
WLAN_NETIF_ACTION_TYPE_NONE = 0,
|
|
WLAN_STOP_ALL_NETIF_QUEUE = 1,
|
|
WLAN_START_ALL_NETIF_QUEUE = 2,
|
|
WLAN_WAKE_ALL_NETIF_QUEUE = 3,
|
|
WLAN_STOP_ALL_NETIF_QUEUE_N_CARRIER = 4,
|
|
WLAN_START_ALL_NETIF_QUEUE_N_CARRIER = 5,
|
|
WLAN_NETIF_TX_DISABLE = 6,
|
|
WLAN_NETIF_TX_DISABLE_N_CARRIER = 7,
|
|
WLAN_NETIF_CARRIER_ON = 8,
|
|
WLAN_NETIF_CARRIER_OFF = 9,
|
|
WLAN_NETIF_PRIORITY_QUEUE_ON = 10,
|
|
WLAN_NETIF_PRIORITY_QUEUE_OFF = 11,
|
|
WLAN_NETIF_VO_QUEUE_ON = 12,
|
|
WLAN_NETIF_VO_QUEUE_OFF = 13,
|
|
WLAN_NETIF_VI_QUEUE_ON = 14,
|
|
WLAN_NETIF_VI_QUEUE_OFF = 15,
|
|
WLAN_NETIF_BE_BK_QUEUE_OFF = 16,
|
|
WLAN_NETIF_BE_BK_QUEUE_ON = 17,
|
|
WLAN_WAKE_NON_PRIORITY_QUEUE = 18,
|
|
WLAN_STOP_NON_PRIORITY_QUEUE = 19,
|
|
WLAN_NETIF_ACTION_TYPE_MAX,
|
|
};
|
|
|
|
/**
|
|
* enum netif_reason_type - reason for netif queue action
|
|
* @WLAN_CONTROL_PATH: action from control path
|
|
* @WLAN_DATA_FLOW_CONTROL: because of flow control
|
|
* @WLAN_FW_PAUSE: because of firmware pause
|
|
* @WLAN_TX_ABORT: because of tx abort
|
|
* @WLAN_VDEV_STOP: because of vdev stop
|
|
* @WLAN_PEER_UNAUTHORISED: because of peer is unauthorised
|
|
* @WLAN_THERMAL_MITIGATION: because of thermal mitigation
|
|
*/
|
|
enum netif_reason_type {
|
|
WLAN_CONTROL_PATH = 1,
|
|
WLAN_DATA_FLOW_CONTROL,
|
|
WLAN_FW_PAUSE,
|
|
WLAN_TX_ABORT,
|
|
WLAN_VDEV_STOP,
|
|
WLAN_PEER_UNAUTHORISED,
|
|
WLAN_THERMAL_MITIGATION,
|
|
WLAN_DATA_FLOW_CONTROL_PRIORITY,
|
|
WLAN_DATA_FLOW_CTRL_BE_BK,
|
|
WLAN_DATA_FLOW_CTRL_VI,
|
|
WLAN_DATA_FLOW_CTRL_VO,
|
|
WLAN_DATA_FLOW_CTRL_PRI,
|
|
WLAN_REASON_TYPE_MAX,
|
|
};
|
|
|
|
enum ol_rx_err_type {
|
|
OL_RX_ERR_DEFRAG_MIC,
|
|
OL_RX_ERR_PN,
|
|
OL_RX_ERR_UNKNOWN_PEER,
|
|
OL_RX_ERR_MALFORMED,
|
|
OL_RX_ERR_TKIP_MIC,
|
|
OL_RX_ERR_DECRYPT,
|
|
OL_RX_ERR_MPDU_LENGTH,
|
|
OL_RX_ERR_ENCRYPT_REQUIRED,
|
|
OL_RX_ERR_DUP,
|
|
OL_RX_ERR_UNKNOWN,
|
|
OL_RX_ERR_FCS,
|
|
OL_RX_ERR_PRIVACY,
|
|
OL_RX_ERR_NONE_FRAG,
|
|
OL_RX_ERR_NONE = 0xFF
|
|
};
|
|
|
|
enum throttle_level {
|
|
THROTTLE_LEVEL_0,
|
|
THROTTLE_LEVEL_1,
|
|
THROTTLE_LEVEL_2,
|
|
THROTTLE_LEVEL_3,
|
|
/* Invalid */
|
|
THROTTLE_LEVEL_MAX,
|
|
};
|
|
|
|
enum {
|
|
OL_TX_WMM_AC_BE,
|
|
OL_TX_WMM_AC_BK,
|
|
OL_TX_WMM_AC_VI,
|
|
OL_TX_WMM_AC_VO,
|
|
OL_TX_NUM_WMM_AC
|
|
};
|
|
|
|
/**
|
|
* @enum ol_tx_spec
|
|
* @brief indicate what non-standard transmission actions to apply
|
|
* @details
|
|
* Indicate one or more of the following:
|
|
* - The tx frame already has a complete 802.11 header.
|
|
* Thus, skip 802.3/native-WiFi to 802.11 header encapsulation and
|
|
* A-MSDU aggregation.
|
|
* - The tx frame should not be aggregated (A-MPDU or A-MSDU)
|
|
* - The tx frame is already encrypted - don't attempt encryption.
|
|
* - The tx frame is a segment of a TCP jumbo frame.
|
|
* - This tx frame should not be unmapped and freed by the txrx layer
|
|
* after transmission, but instead given to a registered tx completion
|
|
* callback.
|
|
* More than one of these specification can apply, though typically
|
|
* only a single specification is applied to a tx frame.
|
|
* A compound specification can be created, as a bit-OR of these
|
|
* specifications.
|
|
*/
|
|
enum ol_tx_spec {
|
|
OL_TX_SPEC_STD = 0x0, /* do regular processing */
|
|
OL_TX_SPEC_RAW = 0x1, /* skip encap + A-MSDU aggr */
|
|
OL_TX_SPEC_NO_AGGR = 0x2, /* skip encap + all aggr */
|
|
OL_TX_SPEC_NO_ENCRYPT = 0x4, /* skip encap + encrypt */
|
|
OL_TX_SPEC_TSO = 0x8, /* TCP segmented */
|
|
OL_TX_SPEC_NWIFI_NO_ENCRYPT = 0x10, /* skip encrypt for nwifi */
|
|
OL_TX_SPEC_NO_FREE = 0x20, /* give to cb rather than free */
|
|
};
|
|
|
|
/**
|
|
* @enum peer_debug_id_type: debug ids to track peer get_ref and release_ref
|
|
* @brief Unique peer debug IDs to track the callers. Each new usage can add to
|
|
* this enum list to create a new "PEER_DEBUG_ID_".
|
|
* @PEER_DEBUG_ID_OL_INTERNAL: debug id for OL internal usage
|
|
* @PEER_DEBUG_ID_WMA_PKT_DROP: debug id for wma_is_pkt_drop_candidate API
|
|
* @PEER_DEBUG_ID_WMA_ADDBA_REQ: debug id for ADDBA request
|
|
* @PEER_DEBUG_ID_WMA_DELBA_REQ: debug id for DELBA request
|
|
* @PEER_DEBUG_ID_LIM_SEND_ADDBA_RESP: debug id for send ADDBA response
|
|
* @PEER_DEBUG_ID_OL_RX_THREAD: debug id for rx thread
|
|
* @PEER_DEBUG_ID_WMA_CCMP_REPLAY_ATTACK: debug id for CCMP replay
|
|
* @PEER_DEBUG_ID_WMA_DEL_BSS:debug id for remove BSS
|
|
* @PEER_DEBUG_ID_WMA_VDEV_STOP_RESP:debug id for vdev stop response handler
|
|
* @PEER_DEBUG_ID_OL_PEER_MAP:debug id for peer map/unmap
|
|
* @PEER_DEBUG_ID_OL_PEER_ATTACH: debug id for peer attach/detach
|
|
* @PEER_DEBUG_ID_OL_TXQ_VDEV_FL: debug id for vdev flush
|
|
* @PEER_DEBUG_ID_OL_HASH_ERS:debug id for peer find hash erase
|
|
* @PEER_DEBUG_ID_MAX: debug id MAX
|
|
*/
|
|
enum peer_debug_id_type {
|
|
PEER_DEBUG_ID_OL_INTERNAL,
|
|
PEER_DEBUG_ID_WMA_PKT_DROP,
|
|
PEER_DEBUG_ID_WMA_ADDBA_REQ,
|
|
PEER_DEBUG_ID_WMA_DELBA_REQ,
|
|
PEER_DEBUG_ID_LIM_SEND_ADDBA_RESP,
|
|
PEER_DEBUG_ID_OL_RX_THREAD,
|
|
PEER_DEBUG_ID_WMA_CCMP_REPLAY_ATTACK,
|
|
PEER_DEBUG_ID_WMA_DEL_BSS,
|
|
PEER_DEBUG_ID_WMA_VDEV_STOP_RESP,
|
|
PEER_DEBUG_ID_OL_PEER_MAP,
|
|
PEER_DEBUG_ID_OL_PEER_ATTACH,
|
|
PEER_DEBUG_ID_OL_TXQ_VDEV_FL,
|
|
PEER_DEBUG_ID_OL_HASH_ERS,
|
|
PEER_DEBUG_ID_OL_UNMAP_TIMER_WORK,
|
|
PEER_DEBUG_ID_MAX
|
|
};
|
|
|
|
/**
|
|
* struct ol_txrx_desc_type - txrx descriptor type
|
|
* @is_qos_enabled: is station qos enabled
|
|
* @is_wapi_supported: is station wapi supported
|
|
* @peer_addr: peer mac address
|
|
*/
|
|
struct ol_txrx_desc_type {
|
|
uint8_t is_qos_enabled;
|
|
uint8_t is_wapi_supported;
|
|
struct qdf_mac_addr peer_addr;
|
|
};
|
|
|
|
/**
|
|
* struct ol_tx_sched_wrr_ac_specs_t - the wrr ac specs params structure
|
|
* @wrr_skip_weight: map to ol_tx_sched_wrr_adv_category_info_t.specs.
|
|
* wrr_skip_weight
|
|
* @credit_threshold: map to ol_tx_sched_wrr_adv_category_info_t.specs.
|
|
* credit_threshold
|
|
* @send_limit: map to ol_tx_sched_wrr_adv_category_info_t.specs.
|
|
* send_limit
|
|
* @credit_reserve: map to ol_tx_sched_wrr_adv_category_info_t.specs.
|
|
* credit_reserve
|
|
* @discard_weight: map to ol_tx_sched_wrr_adv_category_info_t.specs.
|
|
* discard_weight
|
|
*
|
|
* This structure is for wrr ac specs params set from user, it will update
|
|
* its content corresponding to the ol_tx_sched_wrr_adv_category_info_t.specs.
|
|
*/
|
|
struct ol_tx_sched_wrr_ac_specs_t {
|
|
int wrr_skip_weight;
|
|
uint32_t credit_threshold;
|
|
uint16_t send_limit;
|
|
int credit_reserve;
|
|
int discard_weight;
|
|
};
|
|
|
|
/**
|
|
* struct txrx_pdev_cfg_param_t - configuration information
|
|
* passed to the data path
|
|
*/
|
|
struct txrx_pdev_cfg_param_t {
|
|
uint8_t is_full_reorder_offload;
|
|
/* IPA Micro controller data path offload enable flag */
|
|
uint8_t is_uc_offload_enabled;
|
|
/* IPA Micro controller data path offload TX buffer count */
|
|
uint32_t uc_tx_buffer_count;
|
|
/* IPA Micro controller data path offload TX buffer size */
|
|
uint32_t uc_tx_buffer_size;
|
|
/* IPA Micro controller data path offload RX indication ring count */
|
|
uint32_t uc_rx_indication_ring_count;
|
|
/* IPA Micro controller data path offload TX partition base */
|
|
uint32_t uc_tx_partition_base;
|
|
/* IP, TCP and UDP checksum offload */
|
|
bool ip_tcp_udp_checksum_offload;
|
|
/* IP, TCP and UDP checksum offload for NAN Mode */
|
|
bool nan_ip_tcp_udp_checksum_offload;
|
|
/* IP, TCP and UDP checksum offload for P2P Mode*/
|
|
bool p2p_ip_tcp_udp_checksum_offload;
|
|
/* Checksum offload override flag for Legcay modes */
|
|
bool legacy_mode_csum_disable;
|
|
/* Rx processing in thread from TXRX */
|
|
bool enable_rxthread;
|
|
/* CE classification enabled through INI */
|
|
bool ce_classify_enabled;
|
|
#if defined(QCA_LL_TX_FLOW_CONTROL_V2) || defined(QCA_LL_PDEV_TX_FLOW_CONTROL)
|
|
/* Threshold to stop queue in percentage */
|
|
uint32_t tx_flow_stop_queue_th;
|
|
/* Start queue offset in percentage */
|
|
uint32_t tx_flow_start_queue_offset;
|
|
#endif
|
|
|
|
#ifdef QCA_SUPPORT_TXRX_DRIVER_TCP_DEL_ACK
|
|
/* enable the tcp delay ack feature in the driver */
|
|
bool del_ack_enable;
|
|
/* timeout if no more tcp ack frames, unit is ms */
|
|
uint16_t del_ack_timer_value;
|
|
/* the maximum number of replaced tcp ack frames */
|
|
uint16_t del_ack_pkt_count;
|
|
#endif
|
|
|
|
struct ol_tx_sched_wrr_ac_specs_t ac_specs[TX_WMM_AC_NUM];
|
|
bool gro_enable;
|
|
bool tso_enable;
|
|
bool lro_enable;
|
|
bool sg_enable;
|
|
uint32_t enable_data_stall_detection;
|
|
bool enable_flow_steering;
|
|
bool disable_intra_bss_fwd;
|
|
|
|
#ifdef WLAN_SUPPORT_TXRX_HL_BUNDLE
|
|
uint16_t bundle_timer_value;
|
|
uint16_t bundle_size;
|
|
#endif
|
|
uint8_t pktlog_buffer_size;
|
|
};
|
|
|
|
#ifdef IPA_OFFLOAD
|
|
/**
|
|
* ol_txrx_ipa_resources - Resources needed for IPA
|
|
*/
|
|
struct ol_txrx_ipa_resources {
|
|
qdf_shared_mem_t *ce_sr;
|
|
uint32_t ce_sr_ring_size;
|
|
qdf_dma_addr_t ce_reg_paddr;
|
|
|
|
qdf_shared_mem_t *tx_comp_ring;
|
|
uint32_t tx_num_alloc_buffer;
|
|
|
|
qdf_shared_mem_t *rx_rdy_ring;
|
|
qdf_shared_mem_t *rx_proc_done_idx;
|
|
|
|
qdf_shared_mem_t *rx2_rdy_ring;
|
|
qdf_shared_mem_t *rx2_proc_done_idx;
|
|
|
|
/* IPA UC doorbell registers paddr */
|
|
qdf_dma_addr_t tx_comp_doorbell_dmaaddr;
|
|
qdf_dma_addr_t rx_ready_doorbell_dmaaddr;
|
|
|
|
uint32_t tx_pipe_handle;
|
|
uint32_t rx_pipe_handle;
|
|
};
|
|
#endif
|
|
|
|
struct ol_txrx_ocb_chan_info {
|
|
uint32_t chan_freq;
|
|
uint16_t disable_rx_stats_hdr:1;
|
|
};
|
|
|
|
/**
|
|
* ol_mic_error_info - carries the information associated with
|
|
* a MIC error
|
|
* @vdev_id: virtual device ID
|
|
* @key_id: Key ID
|
|
* @pn: packet number
|
|
* @sa: source address
|
|
* @da: destination address
|
|
* @ta: transmitter address
|
|
*/
|
|
struct ol_mic_error_info {
|
|
uint8_t vdev_id;
|
|
uint32_t key_id;
|
|
uint64_t pn;
|
|
uint8_t sa[QDF_MAC_ADDR_SIZE];
|
|
uint8_t da[QDF_MAC_ADDR_SIZE];
|
|
uint8_t ta[QDF_MAC_ADDR_SIZE];
|
|
};
|
|
|
|
/**
|
|
* ol_error_info - carries the information associated with an
|
|
* error indicated by the firmware
|
|
* @mic_err: MIC error information
|
|
*/
|
|
struct ol_error_info {
|
|
union {
|
|
struct ol_mic_error_info mic_err;
|
|
} u;
|
|
};
|
|
|
|
|
|
/**
|
|
* struct ol_txrx_ocb_set_chan - txrx OCB channel info
|
|
* @ocb_channel_count: Channel count
|
|
* @ocb_channel_info: OCB channel info
|
|
*/
|
|
struct ol_txrx_ocb_set_chan {
|
|
uint32_t ocb_channel_count;
|
|
struct ol_txrx_ocb_chan_info *ocb_channel_info;
|
|
};
|
|
|
|
/**
|
|
* @brief Parameter type to pass WMM setting to ol_txrx_set_wmm_param
|
|
* @details
|
|
* The struct is used to specify informaiton to update TX WMM scheduler.
|
|
*/
|
|
struct ol_tx_ac_param_t {
|
|
uint32_t aifs;
|
|
uint32_t cwmin;
|
|
uint32_t cwmax;
|
|
};
|
|
|
|
struct ol_tx_wmm_param_t {
|
|
struct ol_tx_ac_param_t ac[OL_TX_NUM_WMM_AC];
|
|
};
|
|
|
|
struct ieee80211_ba_parameterset {
|
|
#if _BYTE_ORDER == _BIG_ENDIAN
|
|
uint16_t buffersize:10, /* B6-15 buffer size */
|
|
tid:4, /* B2-5 TID */
|
|
bapolicy:1, /* B1 block ack policy */
|
|
amsdusupported:1; /* B0 amsdu supported */
|
|
#else
|
|
uint16_t amsdusupported:1, /* B0 amsdu supported */
|
|
bapolicy:1, /* B1 block ack policy */
|
|
tid:4, /* B2-5 TID */
|
|
buffersize:10; /* B6-15 buffer size */
|
|
#endif
|
|
} __packed;
|
|
|
|
struct ieee80211_ba_seqctrl {
|
|
#if _BYTE_ORDER == _BIG_ENDIAN
|
|
uint16_t startseqnum:12, /* B4-15 starting sequence number */
|
|
fragnum:4; /* B0-3 fragment number */
|
|
#else
|
|
uint16_t fragnum:4, /* B0-3 fragment number */
|
|
startseqnum:12; /* B4-15 starting sequence number */
|
|
#endif
|
|
} __packed;
|
|
|
|
struct ieee80211_delba_parameterset {
|
|
#if _BYTE_ORDER == _BIG_ENDIAN
|
|
uint16_t tid:4, /* B12-15 tid */
|
|
initiator:1, /* B11 initiator */
|
|
reserved0:11; /* B0-10 reserved */
|
|
#else
|
|
uint16_t reserved0:11, /* B0-10 reserved */
|
|
initiator:1, /* B11 initiator */
|
|
tid:4; /* B12-15 tid */
|
|
#endif
|
|
} __packed;
|
|
|
|
/**
|
|
* ol_txrx_vdev_peer_remove_cb - wma_remove_peer callback
|
|
*/
|
|
typedef void (*ol_txrx_vdev_peer_remove_cb)(void *handle, uint8_t *bssid,
|
|
uint8_t vdev_id, void *peer);
|
|
|
|
/**
|
|
* @typedef tx_pause_callback
|
|
* @brief OSIF function registered with the data path
|
|
*/
|
|
typedef void (*tx_pause_callback)(uint8_t vdev_id,
|
|
enum netif_action_type action,
|
|
enum netif_reason_type reason);
|
|
|
|
/**
|
|
* struct ol_rx_inv_peer_params - rx invalid peer data parameters
|
|
* @vdev_id: Virtual device ID
|
|
* @ra: RX data receiver MAC address
|
|
* @ta: RX data transmitter MAC address
|
|
*/
|
|
struct ol_rx_inv_peer_params {
|
|
uint8_t vdev_id;
|
|
uint8_t ra[QDF_MAC_ADDR_SIZE];
|
|
uint8_t ta[QDF_MAC_ADDR_SIZE];
|
|
};
|
|
|
|
/**
|
|
* cdp_txrx_ext_stats: dp extended stats
|
|
* tx_msdu_enqueue: tx msdu queued to hw
|
|
* tx_msdu_overflow: tx msdu overflow
|
|
* rx_mpdu_received: rx mpdu processed by hw
|
|
* rx_mpdu_delivered: rx mpdu received from hw
|
|
* rx_mpdu_error: rx mpdu error count
|
|
* rx_mpdu_missed: rx mpdu missed by hw
|
|
*/
|
|
struct cdp_txrx_ext_stats {
|
|
uint32_t tx_msdu_enqueue;
|
|
uint32_t tx_msdu_overflow;
|
|
uint32_t rx_mpdu_received;
|
|
uint32_t rx_mpdu_delivered;
|
|
uint32_t rx_mpdu_error;
|
|
uint32_t rx_mpdu_missed;
|
|
};
|
|
|
|
#endif /* __CDP_TXRX_MOB_DEF_H */
|