qcacmn: Host Static Memory Optimization (in NSS offload mode)
Low memory profiles like 256M and 16M profiles support only NSS Wi-Fi offload mode and HOST data path APIs are not used in NSS offload mode Disable HOST data path APIs which are not used in both NSS Wi-Fi offload mode and in HOST mode (in NSS offload mode) CRs-Fixed: 2831478 Change-Id: I6895054a6c96bd446c2df7761ce65feef662a3cc
Este cometimento está contido em:

cometido por
snandini

ascendente
21de33ef5d
cometimento
d1bb528ae7
@@ -1957,6 +1957,8 @@ budget_done:
|
||||
return total_budget - budget;
|
||||
}
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
/*
|
||||
* dp_service_srngs() - Top level interrupt handler for DP Ring interrupts
|
||||
* @dp_ctx: DP SOC handle
|
||||
@@ -2093,6 +2095,43 @@ budget_done:
|
||||
return dp_budget - budget;
|
||||
}
|
||||
|
||||
#else /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
/*
|
||||
* dp_service_srngs() - Top level handler for DP Monitor Ring interrupts
|
||||
* @dp_ctx: DP SOC handle
|
||||
* @budget: Number of frames/descriptors that can be processed in one shot
|
||||
*
|
||||
* Return: remaining budget/quota for the soc device
|
||||
*/
|
||||
static uint32_t dp_service_srngs(void *dp_ctx, uint32_t dp_budget)
|
||||
{
|
||||
struct dp_intr *int_ctx = (struct dp_intr *)dp_ctx;
|
||||
struct dp_intr_stats *intr_stats = &int_ctx->intr_stats;
|
||||
struct dp_soc *soc = int_ctx->soc;
|
||||
uint32_t remaining_quota = dp_budget;
|
||||
uint32_t work_done = 0;
|
||||
int budget = dp_budget;
|
||||
|
||||
if (qdf_unlikely(!(soc->mon_vdev_timer_state & MON_VDEV_TIMER_RUNNING))) {
|
||||
work_done = dp_process_lmac_rings(int_ctx, remaining_quota);
|
||||
if (work_done) {
|
||||
budget -= work_done;
|
||||
if (budget <= 0)
|
||||
goto budget_done;
|
||||
remaining_quota = budget;
|
||||
}
|
||||
}
|
||||
|
||||
qdf_lro_flush(int_ctx->lro_ctx);
|
||||
intr_stats->num_masks++;
|
||||
|
||||
budget_done:
|
||||
return dp_budget - budget;
|
||||
}
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
/* dp_mon_vdev_timer()- timer poll for interrupts
|
||||
*
|
||||
* @arg: SoC Handle
|
||||
@@ -5564,6 +5603,7 @@ fail0:
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
/**
|
||||
* dp_vdev_register_tx_handler() - Register Tx handler
|
||||
* @vdev: struct dp_vdev *
|
||||
@@ -5575,7 +5615,6 @@ static inline void dp_vdev_register_tx_handler(struct dp_vdev *vdev,
|
||||
struct ol_txrx_ops *txrx_ops)
|
||||
{
|
||||
/* Enable vdev_id check only for ap, if flag is enabled */
|
||||
|
||||
if (vdev->mesh_vdev)
|
||||
txrx_ops->tx.tx = dp_tx_send_mesh;
|
||||
else if ((wlan_cfg_is_tx_per_pkt_vdev_id_check_enabled(soc->wlan_cfg_ctx)) &&
|
||||
@@ -5595,6 +5634,13 @@ static inline void dp_vdev_register_tx_handler(struct dp_vdev *vdev,
|
||||
wlan_cfg_is_tx_per_pkt_vdev_id_check_enabled(soc->wlan_cfg_ctx),
|
||||
vdev->opmode, vdev->vdev_id);
|
||||
}
|
||||
#else /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
static inline void dp_vdev_register_tx_handler(struct dp_vdev *vdev,
|
||||
struct dp_soc *soc,
|
||||
struct ol_txrx_ops *txrx_ops)
|
||||
{
|
||||
}
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
/**
|
||||
* dp_vdev_register_wifi3() - Register VDEV operations from osif layer
|
||||
@@ -11021,8 +11067,12 @@ static struct cdp_cmn_ops dp_ops_cmn = {
|
||||
.txrx_soc_detach = dp_soc_detach_wifi3,
|
||||
.txrx_soc_deinit = dp_soc_deinit_wifi3,
|
||||
.txrx_soc_init = dp_soc_init_wifi3,
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
.txrx_tso_soc_attach = dp_tso_soc_attach,
|
||||
.txrx_tso_soc_detach = dp_tso_soc_detach,
|
||||
.tx_send = dp_tx_send,
|
||||
.tx_send_exc = dp_tx_send_exception,
|
||||
#endif
|
||||
.txrx_pdev_init = dp_pdev_init_wifi3,
|
||||
.txrx_get_vdev_mac_addr = dp_get_vdev_mac_addr_wifi3,
|
||||
.txrx_get_mon_vdev_from_pdev = dp_get_mon_vdev_from_pdev_wifi3,
|
||||
@@ -11060,7 +11110,6 @@ static struct cdp_cmn_ops dp_ops_cmn = {
|
||||
.set_pdev_status_down = dp_soc_set_pdev_status_down,
|
||||
.txrx_set_ba_aging_timeout = dp_set_ba_aging_timeout,
|
||||
.txrx_get_ba_aging_timeout = dp_get_ba_aging_timeout,
|
||||
.tx_send = dp_tx_send,
|
||||
.txrx_peer_reset_ast = dp_wds_reset_ast_wifi3,
|
||||
.txrx_peer_reset_ast_table = dp_wds_reset_ast_table_wifi3,
|
||||
.txrx_peer_flush_ast_table = dp_wds_flush_ast_table_wifi3,
|
||||
@@ -11085,7 +11134,6 @@ static struct cdp_cmn_ops dp_ops_cmn = {
|
||||
.set_vlan_groupkey = dp_set_vlan_groupkey,
|
||||
#endif
|
||||
.get_peer_mac_list = dp_get_peer_mac_list,
|
||||
.tx_send_exc = dp_tx_send_exception,
|
||||
#ifdef QCA_SUPPORT_WDS_EXTENDED
|
||||
.get_wds_ext_peer_id = dp_wds_ext_get_peer_id,
|
||||
.set_wds_ext_peer_rx = dp_wds_ext_set_peer_rx,
|
||||
@@ -11156,11 +11204,13 @@ static struct cdp_ctrl_ops dp_ops_ctrl = {
|
||||
};
|
||||
|
||||
static struct cdp_me_ops dp_ops_me = {
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
#ifdef ATH_SUPPORT_IQUE
|
||||
.tx_me_alloc_descriptor = dp_tx_me_alloc_descriptor,
|
||||
.tx_me_free_descriptor = dp_tx_me_free_descriptor,
|
||||
.tx_me_convert_ucast = dp_tx_me_send_convert_ucast,
|
||||
#endif
|
||||
#endif
|
||||
};
|
||||
|
||||
static struct cdp_mon_ops dp_ops_mon = {
|
||||
|
@@ -35,6 +35,8 @@
|
||||
#include "dp_hist.h"
|
||||
#include "dp_rx_buffer_pool.h"
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
#ifdef ATH_RX_PRI_SAVE
|
||||
#define DP_RX_TID_SAVE(_nbuf, _tid) \
|
||||
(qdf_nbuf_set_priority(_nbuf, _tid))
|
||||
@@ -65,6 +67,8 @@ static inline bool dp_rx_check_ap_bridge(struct dp_vdev *vdev)
|
||||
return vdev->ap_bridge_enabled;
|
||||
}
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
#ifdef DUP_RX_DESC_WAR
|
||||
void dp_rx_dump_info_and_assert(struct dp_soc *soc,
|
||||
hal_ring_handle_t hal_ring,
|
||||
@@ -91,6 +95,7 @@ void dp_rx_dump_info_and_assert(struct dp_soc *soc,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
#ifdef RX_DESC_SANITY_WAR
|
||||
static inline
|
||||
QDF_STATUS dp_rx_desc_sanity(struct dp_soc *soc, hal_soc_handle_t hal_soc,
|
||||
@@ -136,6 +141,8 @@ QDF_STATUS dp_rx_desc_sanity(struct dp_soc *soc, hal_soc_handle_t hal_soc,
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
/**
|
||||
* dp_pdev_frag_alloc_and_map() - Allocate frag for desc buffer and map
|
||||
*
|
||||
@@ -483,6 +490,8 @@ dp_rx_deliver_raw(struct dp_vdev *vdev, qdf_nbuf_t nbuf_list,
|
||||
vdev->osif_rx(vdev->osif_vdev, deliver_list_head);
|
||||
}
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
#ifndef FEATURE_WDS
|
||||
static void
|
||||
dp_rx_da_learn(struct dp_soc *soc,
|
||||
@@ -652,6 +661,8 @@ end:
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
#ifdef MESH_MODE_SUPPORT
|
||||
|
||||
/**
|
||||
@@ -1090,6 +1101,8 @@ void dp_rx_process_invalid_peer_wrapper(struct dp_soc *soc,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
#ifdef RECEIVE_OFFLOAD
|
||||
/**
|
||||
* dp_rx_print_offload_info() - Print offload info from RX TLV
|
||||
@@ -1288,6 +1301,8 @@ qdf_nbuf_t dp_rx_sg_create(struct dp_soc *soc, qdf_nbuf_t nbuf)
|
||||
return parent;
|
||||
}
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
#ifdef QCA_PEER_EXT_STATS
|
||||
/*
|
||||
* dp_rx_compute_tid_delay - Computer per TID delay stats
|
||||
@@ -1696,6 +1711,8 @@ void dp_rx_deliver_to_stack(struct dp_soc *soc,
|
||||
dp_rx_check_delivery_to_stack(soc, vdev, peer, nbuf_head);
|
||||
}
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
/**
|
||||
* dp_rx_cksum_offload() - set the nbuf checksum as defined by hardware.
|
||||
* @nbuf: pointer to the first msdu of an amsdu.
|
||||
@@ -2078,6 +2095,8 @@ uint32_t dp_rx_srng_get_num_pending(hal_soc_handle_t hal_soc,
|
||||
return num_pending;
|
||||
}
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
#ifdef WLAN_SUPPORT_RX_FISA
|
||||
void dp_rx_skip_tlvs(qdf_nbuf_t nbuf, uint32_t l3_padding)
|
||||
{
|
||||
@@ -2109,6 +2128,8 @@ void dp_rx_set_hdr_pad(qdf_nbuf_t nbuf, uint32_t l3_padding)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
#ifdef DP_RX_DROP_RAW_FRM
|
||||
/**
|
||||
* dp_rx_is_raw_frame_dropped() - if raw frame nbuf, free and drop
|
||||
@@ -2904,6 +2925,8 @@ done:
|
||||
return rx_bufs_used; /* Assume no scale factor for now */
|
||||
}
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
QDF_STATUS dp_rx_vdev_detach(struct dp_vdev *vdev)
|
||||
{
|
||||
QDF_STATUS ret;
|
||||
|
@@ -73,6 +73,7 @@ enum dp_rx_desc_state {
|
||||
RX_DESC_IN_FREELIST,
|
||||
};
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
/**
|
||||
* struct dp_rx_desc_dbg_info
|
||||
*
|
||||
@@ -91,6 +92,8 @@ struct dp_rx_desc_dbg_info {
|
||||
uint64_t replenish_ts;
|
||||
};
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
/**
|
||||
* struct dp_rx_desc
|
||||
*
|
||||
@@ -127,6 +130,8 @@ struct dp_rx_desc {
|
||||
in_err_state:1;
|
||||
};
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
/* RX Descriptor Multi Page memory alloc related */
|
||||
#define DP_RX_DESC_OFFSET_NUM_BITS 8
|
||||
#define DP_RX_DESC_PAGE_ID_NUM_BITS 8
|
||||
@@ -151,6 +156,8 @@ struct dp_rx_desc {
|
||||
#define DP_RX_DESC_MULTI_PAGE_COOKIE_GET_OFFSET(_cookie) \
|
||||
((_cookie) & RX_DESC_MULTI_PAGE_COOKIE_OFFSET_MASK)
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
#define RX_DESC_COOKIE_INDEX_SHIFT 0
|
||||
#define RX_DESC_COOKIE_INDEX_MASK 0x3ffff /* 18 bits */
|
||||
#define RX_DESC_COOKIE_POOL_ID_SHIFT 18
|
||||
@@ -246,6 +253,8 @@ bool dp_rx_deliver_special_frame(struct dp_soc *soc, struct dp_peer *peer,
|
||||
*/
|
||||
#define DP_SKIP_VLAN 8
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
/**
|
||||
* struct dp_rx_cached_buf - rx cached buffer
|
||||
* @list: linked list node
|
||||
@@ -256,6 +265,8 @@ struct dp_rx_cached_buf {
|
||||
qdf_nbuf_t buf;
|
||||
};
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
/*
|
||||
*dp_rx_xor_block() - xor block of data
|
||||
*@b: destination data block
|
||||
@@ -540,6 +551,8 @@ void *dp_rx_cookie_2_va_mon_status(struct dp_soc *soc, uint32_t cookie)
|
||||
}
|
||||
#endif /* RX_DESC_MULTI_PAGE_ALLOC */
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
#ifdef DP_RX_DESC_COOKIE_INVALIDATE
|
||||
static inline QDF_STATUS
|
||||
dp_rx_cookie_check_and_invalidate(hal_ring_desc_t ring_desc)
|
||||
@@ -558,6 +571,8 @@ dp_rx_cookie_check_and_invalidate(hal_ring_desc_t ring_desc)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
QDF_STATUS dp_rx_desc_pool_is_allocated(struct rx_desc_pool *rx_desc_pool);
|
||||
QDF_STATUS dp_rx_desc_pool_alloc(struct dp_soc *soc,
|
||||
uint32_t pool_size,
|
||||
@@ -580,7 +595,6 @@ uint16_t dp_rx_get_free_desc_list(struct dp_soc *soc, uint32_t pool_id,
|
||||
union dp_rx_desc_list_elem_t **desc_list,
|
||||
union dp_rx_desc_list_elem_t **tail);
|
||||
|
||||
|
||||
QDF_STATUS dp_rx_pdev_desc_pool_alloc(struct dp_pdev *pdev);
|
||||
void dp_rx_pdev_desc_pool_free(struct dp_pdev *pdev);
|
||||
|
||||
@@ -606,6 +620,8 @@ void dp_print_napi_stats(struct dp_soc *soc);
|
||||
*/
|
||||
QDF_STATUS dp_rx_vdev_detach(struct dp_vdev *vdev);
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
uint32_t
|
||||
dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl,
|
||||
uint8_t reo_ring_num,
|
||||
@@ -669,6 +685,8 @@ qdf_nbuf_t dp_rx_sg_create(struct dp_soc *soc, qdf_nbuf_t nbuf);
|
||||
void dp_rx_desc_nbuf_and_pool_free(struct dp_soc *soc, uint32_t pool_id,
|
||||
struct rx_desc_pool *rx_desc_pool);
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
/*
|
||||
* dp_rx_desc_nbuf_free() - free the sw rx desc nbufs called during
|
||||
* de-initialization of wifi module.
|
||||
@@ -1017,6 +1035,8 @@ void *dp_rx_cookie_2_mon_link_desc_va(struct dp_pdev *pdev,
|
||||
return link_desc_va;
|
||||
}
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
/**
|
||||
* dp_rx_defrag_concat() - Concatenate the fragments
|
||||
*
|
||||
@@ -1047,6 +1067,8 @@ static inline QDF_STATUS dp_rx_defrag_concat(qdf_nbuf_t dst, qdf_nbuf_t src)
|
||||
return QDF_STATUS_E_DEFRAG_ERROR;
|
||||
}
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
#ifndef FEATURE_WDS
|
||||
static inline QDF_STATUS dp_rx_ast_set_active(struct dp_soc *soc, uint16_t sa_idx, bool is_active)
|
||||
{
|
||||
@@ -1075,6 +1097,8 @@ static inline void dp_rx_desc_dump(struct dp_rx_desc *rx_desc)
|
||||
rx_desc->in_use, rx_desc->unmapped);
|
||||
}
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
/*
|
||||
* check_qwrap_multicast_loopback() - Check if rx packet is a loopback packet.
|
||||
* In qwrap mode, packets originated from
|
||||
@@ -1120,6 +1144,8 @@ static inline bool check_qwrap_multicast_loopback(struct dp_vdev *vdev,
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
#if defined(WLAN_SUPPORT_RX_PROTOCOL_TYPE_TAG) ||\
|
||||
defined(WLAN_SUPPORT_RX_TAG_STATISTICS) ||\
|
||||
defined(WLAN_SUPPORT_RX_FLOW_TAG)
|
||||
@@ -1415,6 +1441,8 @@ bool dp_rx_multipass_process(struct dp_peer *peer, qdf_nbuf_t nbuf,
|
||||
uint8_t tid);
|
||||
#endif
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
#ifndef WLAN_RX_PKT_CAPTURE_ENH
|
||||
static inline
|
||||
QDF_STATUS dp_peer_set_rx_capture_enabled(struct dp_pdev *pdev,
|
||||
@@ -1425,6 +1453,8 @@ QDF_STATUS dp_peer_set_rx_capture_enabled(struct dp_pdev *pdev,
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
/**
|
||||
* dp_rx_deliver_to_stack() - deliver pkts to network stack
|
||||
* Caller to hold peer refcount and check for valid peer
|
||||
@@ -1442,6 +1472,8 @@ void dp_rx_deliver_to_stack(struct dp_soc *soc,
|
||||
qdf_nbuf_t nbuf_head,
|
||||
qdf_nbuf_t nbuf_tail);
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
#ifdef QCA_OL_RX_LOCK_LESS_ACCESS
|
||||
/*
|
||||
* dp_rx_ring_access_start()- Wrapper function to log access start of a hal ring
|
||||
@@ -1488,6 +1520,8 @@ dp_rx_srng_access_end(struct dp_intr *int_ctx, struct dp_soc *soc,
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
/*
|
||||
* dp_rx_wbm_sg_list_reset() - Initialize sg list
|
||||
*
|
||||
@@ -1520,6 +1554,8 @@ static inline void dp_rx_wbm_sg_list_deinit(struct dp_soc *soc)
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
#ifdef WLAN_FEATURE_RX_PREALLOC_BUFFER_POOL
|
||||
#define DP_RX_PROCESS_NBUF(soc, head, tail, ebuf_head, ebuf_tail, rx_desc) \
|
||||
do { \
|
||||
@@ -1542,6 +1578,8 @@ static inline void dp_rx_wbm_sg_list_deinit(struct dp_soc *soc)
|
||||
DP_RX_LIST_APPEND(head, tail, rx_desc->nbuf)
|
||||
#endif /* WLAN_FEATURE_RX_PREALLOC_BUFFER_POOL */
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
/*
|
||||
* dp_rx_link_desc_refill_duplicate_check() - check if link desc duplicate
|
||||
to refill
|
||||
|
@@ -33,6 +33,8 @@
|
||||
#include "qdf_net_types.h"
|
||||
#include "dp_rx_buffer_pool.h"
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
/* Max buffer in invalid peer SG list*/
|
||||
#define DP_MAX_INVALID_BUFFERS 10
|
||||
|
||||
@@ -158,6 +160,8 @@ static inline bool dp_rx_mcast_echo_check(struct dp_soc *soc,
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
void dp_rx_link_desc_refill_duplicate_check(
|
||||
struct dp_soc *soc,
|
||||
struct hal_buf_info *buf_info,
|
||||
@@ -268,6 +272,8 @@ dp_rx_link_desc_return(struct dp_soc *soc, hal_ring_desc_t ring_desc,
|
||||
return dp_rx_link_desc_return_by_addr(soc, buf_addr_info, bm_action);
|
||||
}
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
/**
|
||||
* dp_rx_msdus_drop() - Drops all MSDU's per MPDU
|
||||
*
|
||||
@@ -889,6 +895,8 @@ next:
|
||||
qdf_nbuf_free(nbuf);
|
||||
}
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
/**
|
||||
* dp_2k_jump_handle() - Function to handle 2k jump exception
|
||||
* on WBM ring
|
||||
@@ -1066,6 +1074,8 @@ bool dp_rx_check_pkt_len(struct dp_soc *soc, uint32_t pkt_len)
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
/**
|
||||
* dp_rx_null_q_desc_handle() - Function to handle NULL Queue
|
||||
* descriptor violation on either a
|
||||
@@ -1297,6 +1307,8 @@ drop_nbuf:
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
/**
|
||||
* dp_rx_process_rxdma_err() - Function to deliver rxdma unencrypted_err
|
||||
* frames to OS or wifi parse errors.
|
||||
@@ -1553,6 +1565,8 @@ fail:
|
||||
return;
|
||||
}
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
#ifdef DP_RX_DESC_COOKIE_INVALIDATE
|
||||
/**
|
||||
* dp_rx_link_cookie_check() - Validate link desc cookie
|
||||
@@ -2344,6 +2358,8 @@ done:
|
||||
return rx_bufs_used; /* Assume no scale factor for now */
|
||||
}
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
/**
|
||||
* dup_desc_dbg() - dump and assert if duplicate rx desc found
|
||||
*
|
||||
@@ -2588,6 +2604,8 @@ dp_rxdma_err_process(struct dp_intr *int_ctx, struct dp_soc *soc,
|
||||
return work_done;
|
||||
}
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
static inline uint32_t
|
||||
dp_wbm_int_err_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
|
||||
hal_rxdma_desc_t rxdma_dst_ring_desc,
|
||||
@@ -2744,3 +2762,5 @@ dp_handle_wbm_internal_error(struct dp_soc *soc, void *hal_desc,
|
||||
&head, &tail);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
@@ -310,6 +310,7 @@ static void dp_tx_tso_desc_release(struct dp_soc *soc,
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dp_tx_desc_release() - Release Tx Descriptor
|
||||
* @tx_desc : Tx Descriptor
|
||||
@@ -3355,133 +3356,6 @@ static void dp_tx_inspect_handler(struct dp_soc *soc,
|
||||
dp_tx_desc_release(tx_desc, tx_desc->pool_id);
|
||||
}
|
||||
|
||||
#ifdef FEATURE_PERPKT_INFO
|
||||
/**
|
||||
* dp_get_completion_indication_for_stack() - send completion to stack
|
||||
* @soc : dp_soc handle
|
||||
* @pdev: dp_pdev handle
|
||||
* @peer: dp peer handle
|
||||
* @ts: transmit completion status structure
|
||||
* @netbuf: Buffer pointer for free
|
||||
*
|
||||
* This function is used for indication whether buffer needs to be
|
||||
* sent to stack for freeing or not
|
||||
*/
|
||||
QDF_STATUS
|
||||
dp_get_completion_indication_for_stack(struct dp_soc *soc,
|
||||
struct dp_pdev *pdev,
|
||||
struct dp_peer *peer,
|
||||
struct hal_tx_completion_status *ts,
|
||||
qdf_nbuf_t netbuf,
|
||||
uint64_t time_latency)
|
||||
{
|
||||
struct tx_capture_hdr *ppdu_hdr;
|
||||
uint16_t peer_id = ts->peer_id;
|
||||
uint32_t ppdu_id = ts->ppdu_id;
|
||||
uint8_t first_msdu = ts->first_msdu;
|
||||
uint8_t last_msdu = ts->last_msdu;
|
||||
uint32_t txcap_hdr_size = sizeof(struct tx_capture_hdr);
|
||||
|
||||
if (qdf_unlikely(!pdev->tx_sniffer_enable && !pdev->mcopy_mode &&
|
||||
!pdev->latency_capture_enable))
|
||||
return QDF_STATUS_E_NOSUPPORT;
|
||||
|
||||
if (!peer) {
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
||||
FL("Peer Invalid"));
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
if (pdev->mcopy_mode) {
|
||||
/* If mcopy is enabled and mcopy_mode is M_COPY deliver 1st MSDU
|
||||
* per PPDU. If mcopy_mode is M_COPY_EXTENDED deliver 1st MSDU
|
||||
* for each MPDU
|
||||
*/
|
||||
if (pdev->mcopy_mode == M_COPY) {
|
||||
if ((pdev->m_copy_id.tx_ppdu_id == ppdu_id) &&
|
||||
(pdev->m_copy_id.tx_peer_id == peer_id)) {
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (!first_msdu)
|
||||
return QDF_STATUS_E_INVAL;
|
||||
|
||||
pdev->m_copy_id.tx_ppdu_id = ppdu_id;
|
||||
pdev->m_copy_id.tx_peer_id = peer_id;
|
||||
}
|
||||
|
||||
if (qdf_unlikely(qdf_nbuf_headroom(netbuf) < txcap_hdr_size)) {
|
||||
netbuf = qdf_nbuf_realloc_headroom(netbuf, txcap_hdr_size);
|
||||
if (!netbuf) {
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
||||
FL("No headroom"));
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
}
|
||||
|
||||
if (!qdf_nbuf_push_head(netbuf, txcap_hdr_size)) {
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
||||
FL("No headroom"));
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
|
||||
ppdu_hdr = (struct tx_capture_hdr *)qdf_nbuf_data(netbuf);
|
||||
qdf_mem_copy(ppdu_hdr->ta, peer->vdev->mac_addr.raw,
|
||||
QDF_MAC_ADDR_SIZE);
|
||||
qdf_mem_copy(ppdu_hdr->ra, peer->mac_addr.raw,
|
||||
QDF_MAC_ADDR_SIZE);
|
||||
ppdu_hdr->ppdu_id = ppdu_id;
|
||||
ppdu_hdr->peer_id = peer_id;
|
||||
ppdu_hdr->first_msdu = first_msdu;
|
||||
ppdu_hdr->last_msdu = last_msdu;
|
||||
if (qdf_unlikely(pdev->latency_capture_enable)) {
|
||||
ppdu_hdr->tsf = ts->tsf;
|
||||
ppdu_hdr->time_latency = time_latency;
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* dp_send_completion_to_stack() - send completion to stack
|
||||
* @soc : dp_soc handle
|
||||
* @pdev: dp_pdev handle
|
||||
* @peer_id: peer_id of the peer for which completion came
|
||||
* @ppdu_id: ppdu_id
|
||||
* @netbuf: Buffer pointer for free
|
||||
*
|
||||
* This function is used to send completion to stack
|
||||
* to free buffer
|
||||
*/
|
||||
void dp_send_completion_to_stack(struct dp_soc *soc, struct dp_pdev *pdev,
|
||||
uint16_t peer_id, uint32_t ppdu_id,
|
||||
qdf_nbuf_t netbuf)
|
||||
{
|
||||
dp_wdi_event_handler(WDI_EVENT_TX_DATA, soc,
|
||||
netbuf, peer_id,
|
||||
WDI_NO_VAL, pdev->pdev_id);
|
||||
}
|
||||
#else
|
||||
static QDF_STATUS
|
||||
dp_get_completion_indication_for_stack(struct dp_soc *soc,
|
||||
struct dp_pdev *pdev,
|
||||
struct dp_peer *peer,
|
||||
struct hal_tx_completion_status *ts,
|
||||
qdf_nbuf_t netbuf,
|
||||
uint64_t time_latency)
|
||||
{
|
||||
return QDF_STATUS_E_NOSUPPORT;
|
||||
}
|
||||
|
||||
static void
|
||||
dp_send_completion_to_stack(struct dp_soc *soc, struct dp_pdev *pdev,
|
||||
uint16_t peer_id, uint32_t ppdu_id, qdf_nbuf_t netbuf)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef MESH_MODE_SUPPORT
|
||||
/**
|
||||
* dp_tx_comp_fill_tx_completion_stats() - Fill per packet Tx completion stats
|
||||
@@ -4178,6 +4052,7 @@ void dp_tx_comp_process_tx_status(struct dp_soc *soc,
|
||||
out:
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_tx_comp_process_desc_list() - Tx complete software descriptor handler
|
||||
* @soc: core txrx main context
|
||||
@@ -4739,10 +4614,10 @@ QDF_STATUS dp_tx_vdev_attach(struct dp_vdev *vdev)
|
||||
* Fill HTT TCL Metadata with Vdev ID and MAC ID
|
||||
*/
|
||||
HTT_TX_TCL_METADATA_TYPE_SET(vdev->htt_tcl_metadata,
|
||||
HTT_TCL_METADATA_TYPE_VDEV_BASED);
|
||||
HTT_TCL_METADATA_TYPE_VDEV_BASED);
|
||||
|
||||
HTT_TX_TCL_METADATA_VDEV_ID_SET(vdev->htt_tcl_metadata,
|
||||
vdev->vdev_id);
|
||||
vdev->vdev_id);
|
||||
|
||||
pdev_id =
|
||||
dp_get_target_pdev_id_for_host_pdev_id(vdev->pdev->soc,
|
||||
@@ -4993,29 +4868,6 @@ QDF_STATUS dp_tx_vdev_detach(struct dp_vdev *vdev)
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_tx_pdev_attach() - attach pdev to dp tx
|
||||
* @pdev: physical device instance
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS: success
|
||||
* QDF_STATUS_E_RESOURCES: Error return
|
||||
*/
|
||||
QDF_STATUS dp_tx_pdev_init(struct dp_pdev *pdev)
|
||||
{
|
||||
struct dp_soc *soc = pdev->soc;
|
||||
|
||||
/* Initialize Flow control counters */
|
||||
qdf_atomic_init(&pdev->num_tx_outstanding);
|
||||
pdev->tx_descs_max = 0;
|
||||
if (wlan_cfg_per_pdev_tx_ring(soc->wlan_cfg_ctx)) {
|
||||
/* Initialize descriptors in TCL Ring */
|
||||
hal_tx_init_data_ring(soc->hal_soc,
|
||||
soc->tcl_data_ring[pdev->pdev_id].hal_srng);
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
#ifdef QCA_LL_TX_FLOW_CONTROL_V2
|
||||
/* Pools will be allocated dynamically */
|
||||
static QDF_STATUS dp_tx_alloc_static_pools(struct dp_soc *soc, int num_pool,
|
||||
@@ -5368,4 +5220,3 @@ QDF_STATUS dp_tso_soc_detach(struct cdp_soc_t *txrx_soc)
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
@@ -21,7 +21,10 @@
|
||||
#include <qdf_types.h>
|
||||
#include <qdf_nbuf.h>
|
||||
#include "dp_types.h"
|
||||
|
||||
#if defined(MESH_MODE_SUPPORT) || defined(FEATURE_PERPKT_INFO)
|
||||
#include "if_meta_hdr.h"
|
||||
#endif
|
||||
#include "dp_internal.h"
|
||||
|
||||
#define DP_INVALID_VDEV_ID 0xFF
|
||||
|
||||
@@ -71,6 +74,8 @@ do { \
|
||||
/* number of dwords for htt_tx_msdu_desc_ext2_t */
|
||||
#define DP_TX_MSDU_INFO_META_DATA_DWORDS 7
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
|
||||
/**
|
||||
* struct dp_tx_frag_info_s
|
||||
* @vaddr: hlos vritual address for buffer
|
||||
@@ -101,6 +106,8 @@ struct dp_tx_seg_info_s {
|
||||
struct dp_tx_seg_info_s *next;
|
||||
};
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
/**
|
||||
* struct dp_tx_sg_info_s - Scatter Gather Descriptor
|
||||
* @num_segs: Number of segments (TSO/ME) in the frame
|
||||
@@ -167,6 +174,7 @@ struct dp_tx_msdu_info_s {
|
||||
uint16_t ppdu_cookie;
|
||||
};
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
/**
|
||||
* dp_tx_deinit_pair_by_index() - Deinit TX rings based on index
|
||||
* @soc: core txrx context
|
||||
@@ -180,10 +188,8 @@ struct dp_tx_msdu_info_s {
|
||||
* Return: none
|
||||
*/
|
||||
void dp_tx_deinit_pair_by_index(struct dp_soc *soc, int index);
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
QDF_STATUS dp_tx_vdev_attach(struct dp_vdev *vdev);
|
||||
QDF_STATUS dp_tx_vdev_detach(struct dp_vdev *vdev);
|
||||
void dp_tx_vdev_update_search_flags(struct dp_vdev *vdev);
|
||||
void dp_tx_tso_cmn_desc_pool_deinit(struct dp_soc *soc, uint8_t num_pool);
|
||||
void dp_tx_tso_cmn_desc_pool_free(struct dp_soc *soc, uint8_t num_pool);
|
||||
QDF_STATUS dp_tx_tso_cmn_desc_pool_alloc(struct dp_soc *soc,
|
||||
@@ -195,17 +201,14 @@ QDF_STATUS dp_tx_tso_cmn_desc_pool_init(struct dp_soc *soc,
|
||||
|
||||
void dp_tx_tso_cmn_desc_pool_deinit(struct dp_soc *soc, uint8_t num_pool);
|
||||
void dp_tx_tso_cmn_desc_pool_free(struct dp_soc *soc, uint8_t num_pool);
|
||||
void dp_soc_tx_desc_sw_pools_free(struct dp_soc *soc);
|
||||
void dp_soc_tx_desc_sw_pools_deinit(struct dp_soc *soc);
|
||||
QDF_STATUS dp_tx_tso_cmn_desc_pool_alloc(struct dp_soc *soc,
|
||||
uint8_t num_pool,
|
||||
uint16_t num_desc);
|
||||
QDF_STATUS dp_tx_tso_cmn_desc_pool_init(struct dp_soc *soc,
|
||||
uint8_t num_pool,
|
||||
uint16_t num_desc);
|
||||
QDF_STATUS dp_soc_tx_desc_sw_pools_alloc(struct dp_soc *soc);
|
||||
QDF_STATUS dp_soc_tx_desc_sw_pools_init(struct dp_soc *soc);
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
/**
|
||||
* dp_tso_attach() - TSO Attach handler
|
||||
* @txrx_soc: Opaque Dp handle
|
||||
@@ -228,8 +231,6 @@ QDF_STATUS dp_tso_soc_attach(struct cdp_soc_t *txrx_soc);
|
||||
*/
|
||||
QDF_STATUS dp_tso_soc_detach(struct cdp_soc_t *txrx_soc);
|
||||
|
||||
QDF_STATUS dp_tx_pdev_init(struct dp_pdev *pdev);
|
||||
|
||||
qdf_nbuf_t dp_tx_send(struct cdp_soc_t *soc, uint8_t vdev_id, qdf_nbuf_t nbuf);
|
||||
|
||||
qdf_nbuf_t dp_tx_send_vdev_id_check(struct cdp_soc_t *soc, uint8_t vdev_id,
|
||||
@@ -299,15 +300,41 @@ dp_tx_prepare_send_me(struct dp_vdev *vdev, qdf_nbuf_t nbuf);
|
||||
QDF_STATUS
|
||||
dp_tx_prepare_send_igmp_me(struct dp_vdev *vdev, qdf_nbuf_t nbuf);
|
||||
|
||||
#ifndef FEATURE_WDS
|
||||
static inline void dp_tx_mec_handler(struct dp_vdev *vdev, uint8_t *status)
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
#if defined(QCA_HOST_MODE_WIFI_DISABLED) || !defined(ATH_SUPPORT_IQUE)
|
||||
static inline void dp_tx_me_exit(struct dp_pdev *pdev)
|
||||
{
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef ATH_SUPPORT_IQUE
|
||||
static inline void dp_tx_me_exit(struct dp_pdev *pdev)
|
||||
/**
|
||||
* dp_tx_pdev_init() - dp tx pdev init
|
||||
* @pdev: physical device instance
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS: success
|
||||
* QDF_STATUS_E_RESOURCES: Error return
|
||||
*/
|
||||
static inline QDF_STATUS dp_tx_pdev_init(struct dp_pdev *pdev)
|
||||
{
|
||||
struct dp_soc *soc = pdev->soc;
|
||||
|
||||
/* Initialize Flow control counters */
|
||||
qdf_atomic_init(&pdev->num_tx_outstanding);
|
||||
pdev->tx_descs_max = 0;
|
||||
if (wlan_cfg_per_pdev_tx_ring(soc->wlan_cfg_ctx)) {
|
||||
/* Initialize descriptors in TCL Ring */
|
||||
hal_tx_init_data_ring(soc->hal_soc,
|
||||
soc->tcl_data_ring[pdev->pdev_id].hal_srng);
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
#ifndef FEATURE_WDS
|
||||
static inline void dp_tx_mec_handler(struct dp_vdev *vdev, uint8_t *status)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -356,6 +383,7 @@ static inline enum qdf_dp_tx_rx_status dp_tx_hw_to_qdf(uint16_t status)
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef QCA_HOST_MODE_WIFI_DISABLED
|
||||
/**
|
||||
* dp_tx_get_queue() - Returns Tx queue IDs to be used for this Tx frame
|
||||
* @vdev: DP Virtual device handle
|
||||
@@ -504,20 +532,6 @@ static inline void dp_tx_hal_ring_access_end_reap(struct dp_soc *soc,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_PERPKT_INFO
|
||||
QDF_STATUS
|
||||
dp_get_completion_indication_for_stack(struct dp_soc *soc,
|
||||
struct dp_pdev *pdev,
|
||||
struct dp_peer *peer,
|
||||
struct hal_tx_completion_status *ts,
|
||||
qdf_nbuf_t netbuf,
|
||||
uint64_t time_latency);
|
||||
|
||||
void dp_send_completion_to_stack(struct dp_soc *soc, struct dp_pdev *pdev,
|
||||
uint16_t peer_id, uint32_t ppdu_id,
|
||||
qdf_nbuf_t netbuf);
|
||||
#endif
|
||||
|
||||
void dp_iterate_update_peer_list(struct cdp_pdev *pdev_hdl);
|
||||
|
||||
#ifdef ATH_TX_PRI_OVERRIDE
|
||||
@@ -527,10 +541,6 @@ void dp_iterate_update_peer_list(struct cdp_pdev *pdev_hdl);
|
||||
#define DP_TX_TID_OVERRIDE(_msdu_info, _nbuf)
|
||||
#endif
|
||||
|
||||
void
|
||||
dp_handle_wbm_internal_error(struct dp_soc *soc, void *hal_desc,
|
||||
uint32_t buf_type);
|
||||
|
||||
/* TODO TX_FEATURE_NOT_YET */
|
||||
static inline void dp_tx_comp_process_exception(struct dp_tx_desc_s *tx_desc)
|
||||
{
|
||||
@@ -538,6 +548,94 @@ static inline void dp_tx_comp_process_exception(struct dp_tx_desc_s *tx_desc)
|
||||
}
|
||||
/* TODO TX_FEATURE_NOT_YET */
|
||||
|
||||
void dp_tx_desc_flush(struct dp_pdev *pdev, struct dp_vdev *vdev,
|
||||
bool force_free);
|
||||
QDF_STATUS dp_tx_vdev_attach(struct dp_vdev *vdev);
|
||||
QDF_STATUS dp_tx_vdev_detach(struct dp_vdev *vdev);
|
||||
void dp_tx_vdev_update_search_flags(struct dp_vdev *vdev);
|
||||
QDF_STATUS dp_soc_tx_desc_sw_pools_alloc(struct dp_soc *soc);
|
||||
QDF_STATUS dp_soc_tx_desc_sw_pools_init(struct dp_soc *soc);
|
||||
void dp_soc_tx_desc_sw_pools_free(struct dp_soc *soc);
|
||||
void dp_soc_tx_desc_sw_pools_deinit(struct dp_soc *soc);
|
||||
void
|
||||
dp_handle_wbm_internal_error(struct dp_soc *soc, void *hal_desc,
|
||||
uint32_t buf_type);
|
||||
#else /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
static inline
|
||||
QDF_STATUS dp_soc_tx_desc_sw_pools_alloc(struct dp_soc *soc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline
|
||||
QDF_STATUS dp_soc_tx_desc_sw_pools_init(struct dp_soc *soc)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline void dp_soc_tx_desc_sw_pools_free(struct dp_soc *soc)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void dp_soc_tx_desc_sw_pools_deinit(struct dp_soc *soc)
|
||||
{
|
||||
}
|
||||
|
||||
static inline
|
||||
void dp_tx_desc_flush(struct dp_pdev *pdev, struct dp_vdev *vdev,
|
||||
bool force_free)
|
||||
{
|
||||
}
|
||||
|
||||
static inline QDF_STATUS dp_tx_vdev_attach(struct dp_vdev *vdev)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS dp_tx_vdev_detach(struct dp_vdev *vdev)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline void dp_tx_vdev_update_search_flags(struct dp_vdev *vdev)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* QCA_HOST_MODE_WIFI_DISABLED */
|
||||
|
||||
#ifdef FEATURE_PERPKT_INFO
|
||||
QDF_STATUS
|
||||
dp_get_completion_indication_for_stack(struct dp_soc *soc,
|
||||
struct dp_pdev *pdev,
|
||||
struct dp_peer *peer,
|
||||
struct hal_tx_completion_status *ts,
|
||||
qdf_nbuf_t netbuf,
|
||||
uint64_t time_latency);
|
||||
|
||||
void dp_send_completion_to_stack(struct dp_soc *soc, struct dp_pdev *pdev,
|
||||
uint16_t peer_id, uint32_t ppdu_id,
|
||||
qdf_nbuf_t netbuf);
|
||||
#else
|
||||
static inline
|
||||
QDF_STATUS dp_get_completion_indication_for_stack(struct dp_soc *soc,
|
||||
struct dp_pdev *pdev,
|
||||
struct dp_peer *peer,
|
||||
struct hal_tx_completion_status *ts,
|
||||
qdf_nbuf_t netbuf,
|
||||
uint64_t time_latency)
|
||||
{
|
||||
return QDF_STATUS_E_NOSUPPORT;
|
||||
}
|
||||
|
||||
static inline
|
||||
void dp_send_completion_to_stack(struct dp_soc *soc, struct dp_pdev *pdev,
|
||||
uint16_t peer_id, uint32_t ppdu_id,
|
||||
qdf_nbuf_t netbuf)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef WLAN_TX_PKT_CAPTURE_ENH
|
||||
static inline
|
||||
QDF_STATUS dp_peer_set_tx_capture_enabled(struct dp_pdev *pdev,
|
||||
@@ -547,6 +645,5 @@ QDF_STATUS dp_peer_set_tx_capture_enabled(struct dp_pdev *pdev,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
void dp_tx_desc_flush(struct dp_pdev *pdev, struct dp_vdev *vdev,
|
||||
bool force_free);
|
||||
|
||||
#endif
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador