qcacmn: separate dp_rx_tid functionality
As of today, dp_peer.c has the peer management and rx_tid functionality(create/setup/remove) which is used by the REO HW. WCN6450 does not have REO HW and dp_rx_tid functionality is not required for WCN6450. Hence, separate out dp rx tid functionality from dp_peer.c so that we can avoid compiling unnecessary code for WCN6450. Change-Id: I322823704f38ff72e485f050941be6b1254bad09 CRs-Fixed: 3383330
This commit is contained in:

committed by
Madan Koyyalamudi

parent
5b3d70f9a2
commit
76e5c1f345
@@ -22,6 +22,7 @@
|
||||
|
||||
#include "dp_types.h"
|
||||
#include "dp_htt.h"
|
||||
#include "dp_rx_tid.h"
|
||||
|
||||
#define RX_BUFFER_SIZE_PKTLOG_LITE 1024
|
||||
|
||||
@@ -2293,14 +2294,6 @@ void dp_peer_rx_init(struct dp_pdev *pdev, struct dp_peer *peer);
|
||||
*/
|
||||
void dp_peer_cleanup(struct dp_vdev *vdev, struct dp_peer *peer);
|
||||
|
||||
/**
|
||||
* dp_peer_rx_cleanup() - Cleanup receive TID state
|
||||
* @vdev: Datapath vdev
|
||||
* @peer: Datapath peer
|
||||
*
|
||||
*/
|
||||
void dp_peer_rx_cleanup(struct dp_vdev *vdev, struct dp_peer *peer);
|
||||
|
||||
#ifdef DP_PEER_EXTENDED_API
|
||||
/**
|
||||
* dp_register_peer() - Register peer into physical device
|
||||
@@ -2502,130 +2495,6 @@ void dp_set_peer_as_tdls_peer(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
|
||||
bool dp_find_peer_exist(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
|
||||
uint8_t *peer_addr);
|
||||
|
||||
/**
|
||||
* dp_addba_resp_tx_completion_wifi3() - Update Rx Tid State
|
||||
*
|
||||
* @cdp_soc: Datapath soc handle
|
||||
* @peer_mac: Datapath peer mac address
|
||||
* @vdev_id: id of atapath vdev
|
||||
* @tid: TID number
|
||||
* @status: tx completion status
|
||||
* Return: 0 on success, error code on failure
|
||||
*/
|
||||
int dp_addba_resp_tx_completion_wifi3(struct cdp_soc_t *cdp_soc,
|
||||
uint8_t *peer_mac, uint16_t vdev_id,
|
||||
uint8_t tid,
|
||||
int status);
|
||||
|
||||
/**
|
||||
* dp_addba_requestprocess_wifi3() - Process ADDBA request from peer
|
||||
* @cdp_soc: Datapath soc handle
|
||||
* @peer_mac: Datapath peer mac address
|
||||
* @vdev_id: id of atapath vdev
|
||||
* @dialogtoken: dialogtoken from ADDBA frame
|
||||
* @tid: TID number
|
||||
* @batimeout: BA timeout
|
||||
* @buffersize: BA window size
|
||||
* @startseqnum: Start seq. number received in BA sequence control
|
||||
*
|
||||
* Return: 0 on success, error code on failure
|
||||
*/
|
||||
int dp_addba_requestprocess_wifi3(struct cdp_soc_t *cdp_soc,
|
||||
uint8_t *peer_mac, uint16_t vdev_id,
|
||||
uint8_t dialogtoken, uint16_t tid,
|
||||
uint16_t batimeout,
|
||||
uint16_t buffersize,
|
||||
uint16_t startseqnum);
|
||||
|
||||
/**
|
||||
* dp_addba_responsesetup_wifi3() - Process ADDBA request from peer
|
||||
* @cdp_soc: Datapath soc handle
|
||||
* @peer_mac: Datapath peer mac address
|
||||
* @vdev_id: id of atapath vdev
|
||||
* @tid: TID number
|
||||
* @dialogtoken: output dialogtoken
|
||||
* @statuscode: output dialogtoken
|
||||
* @buffersize: Output BA window size
|
||||
* @batimeout: Output BA timeout
|
||||
*/
|
||||
QDF_STATUS dp_addba_responsesetup_wifi3(struct cdp_soc_t *cdp_soc,
|
||||
uint8_t *peer_mac, uint16_t vdev_id,
|
||||
uint8_t tid, uint8_t *dialogtoken,
|
||||
uint16_t *statuscode,
|
||||
uint16_t *buffersize,
|
||||
uint16_t *batimeout);
|
||||
|
||||
/**
|
||||
* dp_set_addba_response() - Set a user defined ADDBA response status code
|
||||
* @cdp_soc: Datapath soc handle
|
||||
* @peer_mac: Datapath peer mac address
|
||||
* @vdev_id: id of atapath vdev
|
||||
* @tid: TID number
|
||||
* @statuscode: response status code to be set
|
||||
*/
|
||||
QDF_STATUS dp_set_addba_response(struct cdp_soc_t *cdp_soc,
|
||||
uint8_t *peer_mac,
|
||||
uint16_t vdev_id, uint8_t tid,
|
||||
uint16_t statuscode);
|
||||
|
||||
/**
|
||||
* dp_delba_process_wifi3() - Process DELBA from peer
|
||||
* @cdp_soc: Datapath soc handle
|
||||
* @peer_mac: Datapath peer mac address
|
||||
* @vdev_id: id of atapath vdev
|
||||
* @tid: TID number
|
||||
* @reasoncode: Reason code received in DELBA frame
|
||||
*
|
||||
* Return: 0 on success, error code on failure
|
||||
*/
|
||||
int dp_delba_process_wifi3(struct cdp_soc_t *cdp_soc, uint8_t *peer_mac,
|
||||
uint16_t vdev_id, int tid,
|
||||
uint16_t reasoncode);
|
||||
|
||||
/**
|
||||
* dp_rx_tid_update_ba_win_size() - Update the DP tid BA window size
|
||||
* @cdp_soc: soc handle
|
||||
* @peer_mac: mac address of peer handle
|
||||
* @vdev_id: id of vdev handle
|
||||
* @tid: tid
|
||||
* @buffersize: BA window size
|
||||
*
|
||||
* Return: success/failure of tid update
|
||||
*/
|
||||
QDF_STATUS dp_rx_tid_update_ba_win_size(struct cdp_soc_t *cdp_soc,
|
||||
uint8_t *peer_mac, uint16_t vdev_id,
|
||||
uint8_t tid, uint16_t buffersize);
|
||||
|
||||
/**
|
||||
* dp_delba_tx_completion_wifi3() - Handle delba tx completion
|
||||
* @cdp_soc: soc handle
|
||||
* @peer_mac: peer mac address
|
||||
* @vdev_id: id of the vdev handle
|
||||
* @tid: Tid number
|
||||
* @status: Tx completion status
|
||||
*
|
||||
* Indicate status of delba Tx to DP for stats update and retry
|
||||
* delba if tx failed.
|
||||
*
|
||||
* Return: 0 on success, error code on failure
|
||||
*/
|
||||
int dp_delba_tx_completion_wifi3(struct cdp_soc_t *cdp_soc, uint8_t *peer_mac,
|
||||
uint16_t vdev_id, uint8_t tid,
|
||||
int status);
|
||||
|
||||
/**
|
||||
* dp_rx_tid_setup_wifi3() - Setup receive TID state
|
||||
* @peer: Datapath peer handle
|
||||
* @tid: TID
|
||||
* @ba_window_size: BlockAck window size
|
||||
* @start_seq: Starting sequence number
|
||||
*
|
||||
* Return: QDF_STATUS code
|
||||
*/
|
||||
QDF_STATUS dp_rx_tid_setup_wifi3(struct dp_peer *peer, int tid,
|
||||
uint32_t ba_window_size,
|
||||
uint32_t start_seq);
|
||||
|
||||
#ifdef DP_UMAC_HW_RESET_SUPPORT
|
||||
/**
|
||||
* dp_pause_reo_send_cmd() - Pause Reo send commands.
|
||||
@@ -2803,9 +2672,6 @@ uint32_t dp_reo_status_ring_handler(struct dp_intr *int_ctx,
|
||||
void dp_aggregate_vdev_stats(struct dp_vdev *vdev,
|
||||
struct cdp_vdev_stats *vdev_stats);
|
||||
|
||||
void dp_rx_tid_stats_cb(struct dp_soc *soc, void *cb_ctxt,
|
||||
union hal_reo_status *reo_status);
|
||||
|
||||
/**
|
||||
* dp_rx_bar_stats_cb() - BAR received stats callback
|
||||
* @soc: SOC handle
|
||||
@@ -2887,27 +2753,6 @@ void dp_htt_stats_copy_tag(struct dp_pdev *pdev, uint8_t tag_type, uint32_t *tag
|
||||
*/
|
||||
QDF_STATUS dp_h2t_3tuple_config_send(struct dp_pdev *pdev, uint32_t tuple_mask,
|
||||
uint8_t mac_id);
|
||||
/**
|
||||
* typedef dp_rxtid_stats_cmd_cb() - function pointer for peer
|
||||
* rx tid stats cmd call_back
|
||||
* @soc:
|
||||
* @cb_ctxt:
|
||||
* @reo_status:
|
||||
*/
|
||||
typedef void (*dp_rxtid_stats_cmd_cb)(struct dp_soc *soc, void *cb_ctxt,
|
||||
union hal_reo_status *reo_status);
|
||||
|
||||
/**
|
||||
* dp_peer_rxtid_stats() - Retried Rx TID (REO queue) stats from HW
|
||||
* @peer: DP peer handle
|
||||
* @dp_stats_cmd_cb: REO command callback function
|
||||
* @cb_ctxt: Callback context
|
||||
*
|
||||
* Return: count of tid stats cmd send succeeded
|
||||
*/
|
||||
int dp_peer_rxtid_stats(struct dp_peer *peer,
|
||||
dp_rxtid_stats_cmd_cb dp_stats_cmd_cb,
|
||||
void *cb_ctxt);
|
||||
|
||||
#ifdef IPA_OFFLOAD
|
||||
/**
|
||||
@@ -2944,20 +2789,6 @@ static inline void dp_peer_aggregate_tid_stats(struct dp_peer *peer)
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dp_set_pn_check_wifi3() - enable PN check in REO for security
|
||||
* @soc: Datapath soc handle
|
||||
* @vdev_id: id of atapath vdev
|
||||
* @peer_mac: Datapath peer mac address
|
||||
* @sec_type: security type
|
||||
* @rx_pn: Receive pn starting number
|
||||
*
|
||||
*/
|
||||
QDF_STATUS
|
||||
dp_set_pn_check_wifi3(struct cdp_soc_t *soc, uint8_t vdev_id,
|
||||
uint8_t *peer_mac, enum cdp_sec_type sec_type,
|
||||
uint32_t *rx_pn);
|
||||
|
||||
/**
|
||||
* dp_set_key_sec_type_wifi3() - set security mode of key
|
||||
* @soc: Datapath soc handle
|
||||
@@ -4065,20 +3896,6 @@ dp_get_pdev_from_soc_pdev_id_wifi3(struct dp_soc *soc,
|
||||
return soc->pdev_list[pdev_id];
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_rx_tid_update_wifi3() - Update receive TID state
|
||||
* @peer: Datapath peer handle
|
||||
* @tid: TID
|
||||
* @ba_window_size: BlockAck window size
|
||||
* @start_seq: Starting sequence number
|
||||
* @bar_update: BAR update triggered
|
||||
*
|
||||
* Return: QDF_STATUS code
|
||||
*/
|
||||
QDF_STATUS dp_rx_tid_update_wifi3(struct dp_peer *peer, int tid,
|
||||
uint32_t ba_window_size, uint32_t start_seq,
|
||||
bool bar_update);
|
||||
|
||||
/**
|
||||
* dp_get_peer_mac_list(): function to get peer mac list of vdev
|
||||
* @soc: Datapath soc handle
|
||||
|
1957
dp/wifi3.0/dp_peer.c
1957
dp/wifi3.0/dp_peer.c
File diff suppressed because it is too large
Load Diff
@@ -133,9 +133,6 @@ struct dp_peer *dp_peer_find_hash_find(struct dp_soc *soc,
|
||||
*/
|
||||
bool dp_peer_find_by_id_valid(struct dp_soc *soc, uint16_t peer_id);
|
||||
|
||||
#ifdef DP_UMAC_HW_RESET_SUPPORT
|
||||
void dp_reset_tid_q_setup(struct dp_soc *soc);
|
||||
#endif
|
||||
/**
|
||||
* dp_peer_get_ref() - Returns peer object given the peer id
|
||||
*
|
||||
@@ -693,9 +690,6 @@ void dp_rx_sec_ind_handler(struct dp_soc *soc, uint16_t peer_id,
|
||||
enum cdp_sec_type sec_type, int is_unicast,
|
||||
u_int32_t *michael_key, u_int32_t *rx_pn);
|
||||
|
||||
QDF_STATUS dp_rx_delba_ind_handler(void *soc_handle, uint16_t peer_id,
|
||||
uint8_t tid, uint16_t win_sz);
|
||||
|
||||
uint8_t dp_get_peer_mac_addr_frm_id(struct cdp_soc_t *soc_handle,
|
||||
uint16_t peer_id, uint8_t *peer_mac);
|
||||
|
||||
@@ -1061,18 +1055,6 @@ void dp_peer_ast_index_flow_queue_map_create(void *soc_hdl,
|
||||
struct dp_ast_flow_override_info *ast_info);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dp_rx_tid_delete_cb() - Callback to flush reo descriptor HW cache
|
||||
* after deleting the entries (ie., setting valid=0)
|
||||
*
|
||||
* @soc: DP SOC handle
|
||||
* @cb_ctxt: Callback context
|
||||
* @reo_status: REO command status
|
||||
*/
|
||||
void dp_rx_tid_delete_cb(struct dp_soc *soc,
|
||||
void *cb_ctxt,
|
||||
union hal_reo_status *reo_status);
|
||||
|
||||
#ifdef QCA_PEER_EXT_STATS
|
||||
/**
|
||||
* dp_peer_delay_stats_ctx_alloc() - Allocate peer delay stats content
|
||||
@@ -1381,57 +1363,6 @@ static inline void dp_peer_mec_flush_entries(struct dp_soc *soc)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef DUMP_REO_QUEUE_INFO_IN_DDR
|
||||
/**
|
||||
* dp_send_cache_flush_for_rx_tid() - Send cache flush cmd to REO per tid
|
||||
* @soc: dp_soc handle
|
||||
* @peer: peer
|
||||
*
|
||||
* This function is used to send cache flush cmd to reo and
|
||||
* to register the callback to handle the dumping of the reo
|
||||
* queue stas from DDR
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void dp_send_cache_flush_for_rx_tid(
|
||||
struct dp_soc *soc, struct dp_peer *peer);
|
||||
|
||||
/**
|
||||
* dp_get_rx_reo_queue_info() - Handler to get rx tid info
|
||||
* @soc_hdl: cdp_soc_t handle
|
||||
* @vdev_id: vdev id
|
||||
*
|
||||
* Handler to get rx tid info from DDR after h/w cache is
|
||||
* invalidated first using the cache flush cmd.
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void dp_get_rx_reo_queue_info(
|
||||
struct cdp_soc_t *soc_hdl, uint8_t vdev_id);
|
||||
|
||||
/**
|
||||
* dp_dump_rx_reo_queue_info() - Callback function to dump reo queue stats
|
||||
* @soc: dp_soc handle
|
||||
* @cb_ctxt: callback context
|
||||
* @reo_status: vdev id
|
||||
*
|
||||
* This is the callback function registered after sending the reo cmd
|
||||
* to flush the h/w cache and invalidate it. In the callback the reo
|
||||
* queue desc info is dumped from DDR.
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void dp_dump_rx_reo_queue_info(
|
||||
struct dp_soc *soc, void *cb_ctxt, union hal_reo_status *reo_status);
|
||||
|
||||
#else /* DUMP_REO_QUEUE_INFO_IN_DDR */
|
||||
|
||||
static inline void dp_get_rx_reo_queue_info(
|
||||
struct cdp_soc_t *soc_hdl, uint8_t vdev_id)
|
||||
{
|
||||
}
|
||||
#endif /* DUMP_REO_QUEUE_INFO_IN_DDR */
|
||||
|
||||
static inline int dp_peer_find_mac_addr_cmp(
|
||||
union dp_align_mac_addr *mac_addr1,
|
||||
union dp_align_mac_addr *mac_addr2)
|
||||
@@ -2277,53 +2208,6 @@ static inline void dp_print_mlo_ast_stats_be(struct dp_soc *soc)
|
||||
}
|
||||
#endif /* WLAN_FEATURE_11BE_MLO */
|
||||
|
||||
static inline
|
||||
QDF_STATUS dp_peer_rx_tids_create(struct dp_peer *peer)
|
||||
{
|
||||
uint8_t i;
|
||||
|
||||
if (IS_MLO_DP_MLD_PEER(peer)) {
|
||||
dp_peer_info("skip for mld peer");
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
if (peer->rx_tid) {
|
||||
QDF_BUG(0);
|
||||
dp_peer_err("peer rx_tid mem already exist");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
peer->rx_tid = qdf_mem_malloc(DP_MAX_TIDS *
|
||||
sizeof(struct dp_rx_tid));
|
||||
|
||||
if (!peer->rx_tid) {
|
||||
dp_err("fail to alloc tid for peer" QDF_MAC_ADDR_FMT,
|
||||
QDF_MAC_ADDR_REF(peer->mac_addr.raw));
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
|
||||
qdf_mem_zero(peer->rx_tid, DP_MAX_TIDS * sizeof(struct dp_rx_tid));
|
||||
for (i = 0; i < DP_MAX_TIDS; i++)
|
||||
qdf_spinlock_create(&peer->rx_tid[i].tid_lock);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline
|
||||
void dp_peer_rx_tids_destroy(struct dp_peer *peer)
|
||||
{
|
||||
uint8_t i;
|
||||
|
||||
if (!IS_MLO_DP_LINK_PEER(peer)) {
|
||||
for (i = 0; i < DP_MAX_TIDS; i++)
|
||||
qdf_spinlock_destroy(&peer->rx_tid[i].tid_lock);
|
||||
|
||||
qdf_mem_free(peer->rx_tid);
|
||||
}
|
||||
|
||||
peer->rx_tid = NULL;
|
||||
}
|
||||
|
||||
static inline
|
||||
void dp_peer_defrag_rx_tids_init(struct dp_txrx_peer *txrx_peer)
|
||||
{
|
||||
|
2051
dp/wifi3.0/dp_rx_tid.c
Normal file
2051
dp/wifi3.0/dp_rx_tid.c
Normal file
File diff suppressed because it is too large
Load Diff
387
dp/wifi3.0/dp_rx_tid.h
Normal file
387
dp/wifi3.0/dp_rx_tid.h
Normal file
@@ -0,0 +1,387 @@
|
||||
/*
|
||||
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2023 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 _DP_RX_TID_H_
|
||||
#define _DP_RX_TID_H_
|
||||
|
||||
#include "dp_types.h"
|
||||
|
||||
/*
|
||||
* dp_rxtid_stats_cmd_cb - function pointer for peer
|
||||
* rx tid stats cmd call_back
|
||||
* @soc:
|
||||
* @cb_ctxt:
|
||||
* @reo_status:
|
||||
*/
|
||||
typedef void (*dp_rxtid_stats_cmd_cb)(struct dp_soc *soc, void *cb_ctxt,
|
||||
union hal_reo_status *reo_status);
|
||||
|
||||
#ifndef WLAN_SOFTUMAC_SUPPORT
|
||||
void dp_rx_tid_stats_cb(struct dp_soc *soc, void *cb_ctxt,
|
||||
union hal_reo_status *reo_status);
|
||||
|
||||
/**
|
||||
* dp_peer_rx_cleanup() - Cleanup receive TID state
|
||||
* @vdev: Datapath vdev
|
||||
* @peer: Datapath peer
|
||||
*
|
||||
*/
|
||||
void dp_peer_rx_cleanup(struct dp_vdev *vdev, struct dp_peer *peer);
|
||||
|
||||
/**
|
||||
* dp_rx_tid_setup_wifi3() - Setup receive TID state
|
||||
* @peer: Datapath peer handle
|
||||
* @tid: TID
|
||||
* @ba_window_size: BlockAck window size
|
||||
* @start_seq: Starting sequence number
|
||||
*
|
||||
* Return: QDF_STATUS code
|
||||
*/
|
||||
QDF_STATUS dp_rx_tid_setup_wifi3(struct dp_peer *peer, int tid,
|
||||
uint32_t ba_window_size, uint32_t start_seq);
|
||||
|
||||
/**
|
||||
* dp_rx_tid_update_wifi3() - Update receive TID state
|
||||
* @peer: Datapath peer handle
|
||||
* @tid: TID
|
||||
* @ba_window_size: BlockAck window size
|
||||
* @start_seq: Starting sequence number
|
||||
* @bar_update: BAR update triggered
|
||||
*
|
||||
* Return: QDF_STATUS code
|
||||
*/
|
||||
QDF_STATUS dp_rx_tid_update_wifi3(struct dp_peer *peer, int tid,
|
||||
uint32_t ba_window_size, uint32_t start_seq,
|
||||
bool bar_update);
|
||||
|
||||
/*
|
||||
* dp_rx_tid_delete_cb() - Callback to flush reo descriptor HW cache
|
||||
* after deleting the entries (ie., setting valid=0)
|
||||
*
|
||||
* @soc: DP SOC handle
|
||||
* @cb_ctxt: Callback context
|
||||
* @reo_status: REO command status
|
||||
*/
|
||||
void dp_rx_tid_delete_cb(struct dp_soc *soc,
|
||||
void *cb_ctxt,
|
||||
union hal_reo_status *reo_status);
|
||||
|
||||
#ifdef IPA_OFFLOAD
|
||||
void dp_peer_update_tid_stats_from_reo(struct dp_soc *soc, void *cb_ctxt,
|
||||
union hal_reo_status *reo_status);
|
||||
int dp_peer_get_rxtid_stats_ipa(struct dp_peer *peer,
|
||||
dp_rxtid_stats_cmd_cb dp_stats_cmd_cb);
|
||||
#endif
|
||||
|
||||
#ifdef DP_UMAC_HW_RESET_SUPPORT
|
||||
void dp_reset_tid_q_setup(struct dp_soc *soc);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dp_addba_resp_tx_completion_wifi3() - Update Rx Tid State
|
||||
*
|
||||
* @cdp_soc: Datapath soc handle
|
||||
* @peer_mac: Datapath peer mac address
|
||||
* @vdev_id: id of atapath vdev
|
||||
* @tid: TID number
|
||||
* @status: tx completion status
|
||||
* Return: 0 on success, error code on failure
|
||||
*/
|
||||
int dp_addba_resp_tx_completion_wifi3(struct cdp_soc_t *cdp_soc,
|
||||
uint8_t *peer_mac,
|
||||
uint16_t vdev_id,
|
||||
uint8_t tid, int status);
|
||||
|
||||
/**
|
||||
* dp_addba_responsesetup_wifi3() - Process ADDBA request from peer
|
||||
* @cdp_soc: Datapath soc handle
|
||||
* @peer_mac: Datapath peer mac address
|
||||
* @vdev_id: id of atapath vdev
|
||||
* @tid: TID number
|
||||
* @dialogtoken: output dialogtoken
|
||||
* @statuscode: output dialogtoken
|
||||
* @buffersize: Output BA window size
|
||||
* @batimeout: Output BA timeout
|
||||
*/
|
||||
QDF_STATUS
|
||||
dp_addba_responsesetup_wifi3(struct cdp_soc_t *cdp_soc, uint8_t *peer_mac,
|
||||
uint16_t vdev_id, uint8_t tid,
|
||||
uint8_t *dialogtoken, uint16_t *statuscode,
|
||||
uint16_t *buffersize, uint16_t *batimeout);
|
||||
|
||||
/**
|
||||
* dp_rx_tid_update_ba_win_size() - Update the DP tid BA window size
|
||||
* @cdp_soc: soc handle
|
||||
* @peer_mac: mac address of peer handle
|
||||
* @vdev_id: id of vdev handle
|
||||
* @tid: tid
|
||||
* @buffersize: BA window size
|
||||
*
|
||||
* Return: success/failure of tid update
|
||||
*/
|
||||
QDF_STATUS dp_rx_tid_update_ba_win_size(struct cdp_soc_t *cdp_soc,
|
||||
uint8_t *peer_mac, uint16_t vdev_id,
|
||||
uint8_t tid, uint16_t buffersize);
|
||||
|
||||
/**
|
||||
* dp_addba_requestprocess_wifi3() - Process ADDBA request from peer
|
||||
* @cdp_soc: Datapath soc handle
|
||||
* @peer_mac: Datapath peer mac address
|
||||
* @vdev_id: id of atapath vdev
|
||||
* @dialogtoken: dialogtoken from ADDBA frame
|
||||
* @tid: TID number
|
||||
* @batimeout: BA timeout
|
||||
* @buffersize: BA window size
|
||||
* @startseqnum: Start seq. number received in BA sequence control
|
||||
*
|
||||
* Return: 0 on success, error code on failure
|
||||
*/
|
||||
int dp_addba_requestprocess_wifi3(struct cdp_soc_t *cdp_soc,
|
||||
uint8_t *peer_mac,
|
||||
uint16_t vdev_id,
|
||||
uint8_t dialogtoken,
|
||||
uint16_t tid, uint16_t batimeout,
|
||||
uint16_t buffersize,
|
||||
uint16_t startseqnum);
|
||||
|
||||
/**
|
||||
* dp_set_addba_response() - Set a user defined ADDBA response status code
|
||||
* @cdp_soc: Datapath soc handle
|
||||
* @peer_mac: Datapath peer mac address
|
||||
* @vdev_id: id of atapath vdev
|
||||
* @tid: TID number
|
||||
* @statuscode: response status code to be set
|
||||
*/
|
||||
QDF_STATUS
|
||||
dp_set_addba_response(struct cdp_soc_t *cdp_soc, uint8_t *peer_mac,
|
||||
uint16_t vdev_id, uint8_t tid, uint16_t statuscode);
|
||||
|
||||
/**
|
||||
* dp_delba_process_wifi3() - Process DELBA from peer
|
||||
* @cdp_soc: Datapath soc handle
|
||||
* @peer_mac: Datapath peer mac address
|
||||
* @vdev_id: id of atapath vdev
|
||||
* @tid: TID number
|
||||
* @reasoncode: Reason code received in DELBA frame
|
||||
*
|
||||
* Return: 0 on success, error code on failure
|
||||
*/
|
||||
int dp_delba_process_wifi3(struct cdp_soc_t *cdp_soc, uint8_t *peer_mac,
|
||||
uint16_t vdev_id, int tid, uint16_t reasoncode);
|
||||
|
||||
/**
|
||||
* dp_delba_tx_completion_wifi3() - Handle delba tx completion
|
||||
* @cdp_soc: soc handle
|
||||
* @peer_mac: peer mac address
|
||||
* @vdev_id: id of the vdev handle
|
||||
* @tid: Tid number
|
||||
* @status: Tx completion status
|
||||
*
|
||||
* Indicate status of delba Tx to DP for stats update and retry
|
||||
* delba if tx failed.
|
||||
*
|
||||
* Return: 0 on success, error code on failure
|
||||
*/
|
||||
int dp_delba_tx_completion_wifi3(struct cdp_soc_t *cdp_soc, uint8_t *peer_mac,
|
||||
uint16_t vdev_id,
|
||||
uint8_t tid, int status);
|
||||
|
||||
/**
|
||||
* dp_set_pn_check_wifi3() - enable PN check in REO for security
|
||||
* @soc: Datapath soc handle
|
||||
* @vdev_id: id of atapath vdev
|
||||
* @peer_mac: Datapath peer mac address
|
||||
* @sec_type: security type
|
||||
* @rx_pn: Receive pn starting number
|
||||
*
|
||||
*/
|
||||
QDF_STATUS
|
||||
dp_set_pn_check_wifi3(struct cdp_soc_t *soc, uint8_t vdev_id,
|
||||
uint8_t *peer_mac, enum cdp_sec_type sec_type,
|
||||
uint32_t *rx_pn);
|
||||
QDF_STATUS
|
||||
dp_rx_delba_ind_handler(void *soc_handle, uint16_t peer_id,
|
||||
uint8_t tid, uint16_t win_sz);
|
||||
|
||||
/**
|
||||
* dp_peer_rxtid_stats() - Retried Rx TID (REO queue) stats from HW
|
||||
* @peer: DP peer handle
|
||||
* @dp_stats_cmd_cb: REO command callback function
|
||||
* @cb_ctxt: Callback context
|
||||
*
|
||||
* Return: count of tid stats cmd send succeeded
|
||||
*/
|
||||
int dp_peer_rxtid_stats(struct dp_peer *peer,
|
||||
dp_rxtid_stats_cmd_cb dp_stats_cmd_cb,
|
||||
void *cb_ctxt);
|
||||
QDF_STATUS dp_peer_rx_tids_create(struct dp_peer *peer);
|
||||
void dp_peer_rx_tids_destroy(struct dp_peer *peer);
|
||||
|
||||
#ifdef DUMP_REO_QUEUE_INFO_IN_DDR
|
||||
/**
|
||||
* dp_send_cache_flush_for_rx_tid() - Send cache flush cmd to REO per tid
|
||||
* @soc : dp_soc handle
|
||||
* @peer: peer
|
||||
*
|
||||
* This function is used to send cache flush cmd to reo and
|
||||
* to register the callback to handle the dumping of the reo
|
||||
* queue stas from DDR
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void dp_send_cache_flush_for_rx_tid(struct dp_soc *soc, struct dp_peer *peer);
|
||||
|
||||
/**
|
||||
* dp_get_rx_reo_queue_info() - Handler to get rx tid info
|
||||
* @soc_hdl : cdp_soc_t handle
|
||||
* @vdev_id: vdev id
|
||||
*
|
||||
* Handler to get rx tid info from DDR after h/w cache is
|
||||
* invalidated first using the cache flush cmd.
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void dp_get_rx_reo_queue_info(struct cdp_soc_t *soc_hdl, uint8_t vdev_id);
|
||||
|
||||
/**
|
||||
* dp_dump_rx_reo_queue_info() - Callback function to dump reo queue stats
|
||||
* @soc : dp_soc handle
|
||||
* @cb_ctxt: callback context
|
||||
* @reo_status: vdev id
|
||||
*
|
||||
* This is the callback function registered after sending the reo cmd
|
||||
* to flush the h/w cache and invalidate it. In the callback the reo
|
||||
* queue desc info is dumped from DDR.
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void dp_dump_rx_reo_queue_info(struct dp_soc *soc, void *cb_ctxt,
|
||||
union hal_reo_status *reo_status);
|
||||
|
||||
#else /* DUMP_REO_QUEUE_INFO_IN_DDR */
|
||||
|
||||
static inline void dp_get_rx_reo_queue_info(struct cdp_soc_t *soc_hdl,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
}
|
||||
#endif /* DUMP_REO_QUEUE_INFO_IN_DDR */
|
||||
void dp_peer_rx_tid_setup(struct dp_peer *peer);
|
||||
#else
|
||||
static inline void dp_rx_tid_stats_cb(struct dp_soc *soc, void *cb_ctxt,
|
||||
union hal_reo_status *reo_status) {}
|
||||
static inline void dp_peer_rx_cleanup(struct dp_vdev *vdev,
|
||||
struct dp_peer *peer) {}
|
||||
static inline int dp_addba_resp_tx_completion_wifi3(struct cdp_soc_t *cdp_soc,
|
||||
uint8_t *peer_mac,
|
||||
uint16_t vdev_id,
|
||||
uint8_t tid, int status)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
dp_addba_responsesetup_wifi3(struct cdp_soc_t *cdp_soc, uint8_t *peer_mac,
|
||||
uint16_t vdev_id, uint8_t tid,
|
||||
uint8_t *dialogtoken, uint16_t *statuscode,
|
||||
uint16_t *buffersize, uint16_t *batimeout)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
dp_rx_tid_update_ba_win_size(struct cdp_soc_t *cdp_soc,
|
||||
uint8_t *peer_mac, uint16_t vdev_id,
|
||||
uint8_t tid, uint16_t buffersize)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline int
|
||||
dp_addba_requestprocess_wifi3(struct cdp_soc_t *cdp_soc, uint8_t *peer_mac,
|
||||
uint16_t vdev_id, uint8_t dialogtoken,
|
||||
uint16_t tid, uint16_t batimeout,
|
||||
uint16_t buffersize, uint16_t startseqnum)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
dp_set_addba_response(struct cdp_soc_t *cdp_soc, uint8_t *peer_mac,
|
||||
uint16_t vdev_id, uint8_t tid, uint16_t statuscode)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline int
|
||||
dp_delba_process_wifi3(struct cdp_soc_t *cdp_soc, uint8_t *peer_mac,
|
||||
uint16_t vdev_id, int tid, uint16_t reasoncode)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline int dp_delba_tx_completion_wifi3(struct cdp_soc_t *cdp_soc,
|
||||
uint8_t *peer_mac,
|
||||
uint16_t vdev_id,
|
||||
uint8_t tid, int status)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
dp_set_pn_check_wifi3(struct cdp_soc_t *soc, uint8_t vdev_id,
|
||||
uint8_t *peer_mac, enum cdp_sec_type sec_type,
|
||||
uint32_t *rx_pn)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
dp_rx_delba_ind_handler(void *soc_handle, uint16_t peer_id,
|
||||
uint8_t tid, uint16_t win_sz)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline int
|
||||
dp_peer_rxtid_stats(struct dp_peer *peer,
|
||||
dp_rxtid_stats_cmd_cb dp_stats_cmd_cb,
|
||||
void *cb_ctxt)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS dp_peer_rx_tids_create(struct dp_peer *peer)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline void dp_peer_rx_tids_destroy(struct dp_peer *peer) {}
|
||||
|
||||
static inline void dp_get_rx_reo_queue_info(struct cdp_soc_t *soc_hdl,
|
||||
uint8_t vdev_id) {}
|
||||
static inline void dp_peer_rx_tid_setup(struct dp_peer *peer) {}
|
||||
|
||||
static inline QDF_STATUS
|
||||
dp_rx_tid_setup_wifi3(struct dp_peer *peer, int tid,
|
||||
uint32_t ba_window_size, uint32_t start_seq)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
#endif /* _DP_RX_TID_H_ */
|
Reference in New Issue
Block a user