qcacmn: Fix dp/wifi3.0/dp_tx_desc.* documentation

The kernel-doc script identified a large number of documentation
issues in dp/wifi3.0/dp_tx_desc.[ch], so fix those issues. In
addition, there are a number of instances where public functions have
their implementation documented instead of having their interface
documented, so move that documentation.

Change-Id: I349f0e9d9336ae632fb31e88ddc34ecacc4a1f68
CRs-Fixed: 3373161
This commit is contained in:
Jeff Johnson
2023-01-04 17:52:16 -08:00
committed by Madan Koyyalamudi
parent 4c4c5b1326
commit b2294c287e
2 changed files with 224 additions and 219 deletions

View File

@@ -42,8 +42,8 @@ do { \
/** /**
* dp_tx_desc_pool_counter_initialize() - Initialize counters * dp_tx_desc_pool_counter_initialize() - Initialize counters
* @tx_desc_pool Handle to DP tx_desc_pool structure * @tx_desc_pool: Handle to DP tx_desc_pool structure
* @num_elem Number of descriptor elements per pool * @num_elem: Number of descriptor elements per pool
* *
* Return: None * Return: None
*/ */
@@ -95,12 +95,6 @@ static void dp_tx_desc_clean_up(void *ctxt, void *elem, void *elem_list)
} }
} }
/**
* dp_tx_desc_pool_cleanup() - Clean up the tx dexcriptor pools
* @soc: Handle to DP SoC structure
* @nbuf_list: nbuf list for delayed free
*
*/
void dp_tx_desc_pool_cleanup(struct dp_soc *soc, qdf_nbuf_t *nbuf_list) void dp_tx_desc_pool_cleanup(struct dp_soc *soc, qdf_nbuf_t *nbuf_list)
{ {
int i; int i;
@@ -121,34 +115,6 @@ void dp_tx_desc_pool_cleanup(struct dp_soc *soc, qdf_nbuf_t *nbuf_list)
} }
#endif #endif
/**
* dp_tx_desc_pool_alloc() - Allocate Tx Descriptor pool(s)
* @soc Handle to DP SoC structure
* @pool_id pool to allocate
* @num_elem Number of descriptor elements per pool
*
* This function allocates memory for SW tx descriptors
* (used within host for tx data path).
* The number of tx descriptors required will be large
* since based on number of clients (1024 clients x 3 radios),
* outstanding MSDUs stored in TQM queues and LMAC queues will be significantly
* large.
*
* To avoid allocating a large contiguous memory, it uses multi_page_alloc qdf
* function to allocate memory
* in multiple pages. It then iterates through the memory allocated across pages
* and links each descriptor
* to next descriptor, taking care of page boundaries.
*
* Since WiFi 3.0 HW supports multiple Tx rings, multiple pools are allocated,
* one for each ring;
* This minimizes lock contention when hard_start_xmit is called
* from multiple CPUs.
* Alternately, multiple pools can be used for multiple VDEVs for VDEV level
* flow control.
*
* Return: Status code. 0 for success.
*/
QDF_STATUS dp_tx_desc_pool_alloc(struct dp_soc *soc, uint8_t pool_id, QDF_STATUS dp_tx_desc_pool_alloc(struct dp_soc *soc, uint8_t pool_id,
uint32_t num_elem) uint32_t num_elem)
{ {
@@ -170,12 +136,6 @@ QDF_STATUS dp_tx_desc_pool_alloc(struct dp_soc *soc, uint8_t pool_id,
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
} }
/**
* dp_tx_desc_pool_free() - Free the tx dexcriptor pools
* @soc: Handle to DP SoC structure
* @pool_id: pool to free
*
*/
void dp_tx_desc_pool_free(struct dp_soc *soc, uint8_t pool_id) void dp_tx_desc_pool_free(struct dp_soc *soc, uint8_t pool_id)
{ {
struct dp_tx_desc_pool_s *tx_desc_pool; struct dp_tx_desc_pool_s *tx_desc_pool;
@@ -188,15 +148,6 @@ void dp_tx_desc_pool_free(struct dp_soc *soc, uint8_t pool_id)
true); true);
} }
/**
* dp_tx_desc_pool_init() - Initialize Tx Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @pool_id: pool to allocate
* @num_elem: Number of descriptor elements per pool
*
* Return: QDF_STATUS_SUCCESS
* QDF_STATUS_E_FAULT
*/
QDF_STATUS dp_tx_desc_pool_init(struct dp_soc *soc, uint8_t pool_id, QDF_STATUS dp_tx_desc_pool_init(struct dp_soc *soc, uint8_t pool_id,
uint32_t num_elem) uint32_t num_elem)
{ {
@@ -230,12 +181,6 @@ QDF_STATUS dp_tx_desc_pool_init(struct dp_soc *soc, uint8_t pool_id,
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
} }
/**
* dp_tx_desc_pool_deinit() - de-initialize Tx Descriptor pool(s)
* @soc Handle to DP SoC structure
* @pool_id: pool to de-initialize
*
*/
void dp_tx_desc_pool_deinit(struct dp_soc *soc, uint8_t pool_id) void dp_tx_desc_pool_deinit(struct dp_soc *soc, uint8_t pool_id)
{ {
struct dp_tx_desc_pool_s *tx_desc_pool; struct dp_tx_desc_pool_s *tx_desc_pool;
@@ -246,15 +191,6 @@ void dp_tx_desc_pool_deinit(struct dp_soc *soc, uint8_t pool_id)
TX_DESC_LOCK_DESTROY(&tx_desc_pool->lock); TX_DESC_LOCK_DESTROY(&tx_desc_pool->lock);
} }
/**
* dp_tx_ext_desc_pool_alloc() - allocate Tx extension Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @num_pool: Number of pools to allocate
* @num_elem: Number of descriptor elements per pool
*
* Return - QDF_STATUS_SUCCESS
* QDF_STATUS_E_NOMEM
*/
QDF_STATUS dp_tx_ext_desc_pool_alloc(struct dp_soc *soc, uint8_t num_pool, QDF_STATUS dp_tx_ext_desc_pool_alloc(struct dp_soc *soc, uint8_t num_pool,
uint32_t num_elem) uint32_t num_elem)
{ {
@@ -335,15 +271,6 @@ fail_exit:
return status; return status;
} }
/**
* dp_tx_ext_desc_pool_init() - initialize Tx extension Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @num_pool: Number of pools to initialize
* @num_elem: Number of descriptor elements per pool
*
* Return - QDF_STATUS_SUCCESS
* QDF_STATUS_E_NOMEM
*/
QDF_STATUS dp_tx_ext_desc_pool_init(struct dp_soc *soc, uint8_t num_pool, QDF_STATUS dp_tx_ext_desc_pool_init(struct dp_soc *soc, uint8_t num_pool,
uint32_t num_elem) uint32_t num_elem)
{ {
@@ -386,7 +313,7 @@ QDF_STATUS dp_tx_ext_desc_pool_init(struct dp_soc *soc, uint8_t num_pool,
p_elem = c_elem; p_elem = c_elem;
for (i = 0; i < dp_tx_ext_desc_pool->elem_count; i++) { for (i = 0; i < dp_tx_ext_desc_pool->elem_count; i++) {
if (!(i % pages->num_element_per_page)) { if (!(i % pages->num_element_per_page)) {
/** /*
* First element for new page, * First element for new page,
* should point next page * should point next page
*/ */
@@ -422,12 +349,6 @@ fail:
return status; return status;
} }
/**
* dp_tx_ext_desc_pool_free() - free Tx extension Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @num_pool: Number of pools to free
*
*/
void dp_tx_ext_desc_pool_free(struct dp_soc *soc, uint8_t num_pool) void dp_tx_ext_desc_pool_free(struct dp_soc *soc, uint8_t num_pool)
{ {
uint8_t pool_id; uint8_t pool_id;
@@ -450,12 +371,6 @@ void dp_tx_ext_desc_pool_free(struct dp_soc *soc, uint8_t num_pool)
} }
} }
/**
* dp_tx_ext_desc_pool_deinit() - deinit Tx extension Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @num_pool: Number of pools to de-initialize
*
*/
void dp_tx_ext_desc_pool_deinit(struct dp_soc *soc, uint8_t num_pool) void dp_tx_ext_desc_pool_deinit(struct dp_soc *soc, uint8_t num_pool)
{ {
uint8_t pool_id; uint8_t pool_id;
@@ -468,15 +383,6 @@ void dp_tx_ext_desc_pool_deinit(struct dp_soc *soc, uint8_t num_pool)
} }
#if defined(FEATURE_TSO) #if defined(FEATURE_TSO)
/**
* dp_tx_tso_desc_pool_alloc() - allocate TSO Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @num_pool: Number of pools to allocate
* @num_elem: Number of descriptor elements per pool
*
* Return - QDF_STATUS_SUCCESS
* QDF_STATUS_E_NOMEM
*/
QDF_STATUS dp_tx_tso_desc_pool_alloc(struct dp_soc *soc, uint8_t num_pool, QDF_STATUS dp_tx_tso_desc_pool_alloc(struct dp_soc *soc, uint8_t num_pool,
uint32_t num_elem) uint32_t num_elem)
{ {
@@ -511,12 +417,6 @@ fail:
return QDF_STATUS_E_NOMEM; return QDF_STATUS_E_NOMEM;
} }
/**
* dp_tx_tso_desc_pool_free() - free TSO Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @num_pool: Number of pools to free
*
*/
void dp_tx_tso_desc_pool_free(struct dp_soc *soc, uint8_t num_pool) void dp_tx_tso_desc_pool_free(struct dp_soc *soc, uint8_t num_pool)
{ {
struct dp_tx_tso_seg_pool_s *tso_desc_pool; struct dp_tx_tso_seg_pool_s *tso_desc_pool;
@@ -530,15 +430,6 @@ void dp_tx_tso_desc_pool_free(struct dp_soc *soc, uint8_t num_pool)
} }
} }
/**
* dp_tx_tso_desc_pool_init() - initialize TSO Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @num_pool: Number of pools to initialize
* @num_elem: Number of descriptor elements per pool
*
* Return - QDF_STATUS_SUCCESS
* QDF_STATUS_E_NOMEM
*/
QDF_STATUS dp_tx_tso_desc_pool_init(struct dp_soc *soc, uint8_t num_pool, QDF_STATUS dp_tx_tso_desc_pool_init(struct dp_soc *soc, uint8_t num_pool,
uint32_t num_elem) uint32_t num_elem)
{ {
@@ -571,12 +462,6 @@ QDF_STATUS dp_tx_tso_desc_pool_init(struct dp_soc *soc, uint8_t num_pool,
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
} }
/**
* dp_tx_tso_desc_pool_deinit() - deinitialize TSO Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @num_pool: Number of pools to free
*
*/
void dp_tx_tso_desc_pool_deinit(struct dp_soc *soc, uint8_t num_pool) void dp_tx_tso_desc_pool_deinit(struct dp_soc *soc, uint8_t num_pool)
{ {
struct dp_tx_tso_seg_pool_s *tso_desc_pool; struct dp_tx_tso_seg_pool_s *tso_desc_pool;
@@ -594,17 +479,6 @@ void dp_tx_tso_desc_pool_deinit(struct dp_soc *soc, uint8_t num_pool)
} }
} }
/**
* dp_tx_tso_num_seg_pool_alloc() - Allocate descriptors that tracks the
* fragments in each tso segment
*
* @soc: handle to dp soc structure
* @num_pool: number of pools to allocate
* @num_elem: total number of descriptors to be allocated
*
* Return - QDF_STATUS_SUCCESS
* QDF_STATUS_E_NOMEM
*/
QDF_STATUS dp_tx_tso_num_seg_pool_alloc(struct dp_soc *soc, uint8_t num_pool, QDF_STATUS dp_tx_tso_num_seg_pool_alloc(struct dp_soc *soc, uint8_t num_pool,
uint32_t num_elem) uint32_t num_elem)
{ {
@@ -638,13 +512,6 @@ fail:
return QDF_STATUS_E_NOMEM; return QDF_STATUS_E_NOMEM;
} }
/**
* dp_tx_tso_num_seg_pool_free() - free descriptors that tracks the
* fragments in each tso segment
*
* @soc: handle to dp soc structure
* @num_pool: number of pools to free
*/
void dp_tx_tso_num_seg_pool_free(struct dp_soc *soc, uint8_t num_pool) void dp_tx_tso_num_seg_pool_free(struct dp_soc *soc, uint8_t num_pool)
{ {
struct dp_tx_tso_num_seg_pool_s *tso_num_seg_pool; struct dp_tx_tso_num_seg_pool_s *tso_num_seg_pool;
@@ -658,17 +525,6 @@ void dp_tx_tso_num_seg_pool_free(struct dp_soc *soc, uint8_t num_pool)
} }
} }
/**
* dp_tx_tso_num_seg_pool_init() - Initialize descriptors that tracks the
* fragments in each tso segment
*
* @soc: handle to dp soc structure
* @num_pool: number of pools to initialize
* @num_elem: total number of descriptors to be initialized
*
* Return - QDF_STATUS_SUCCESS
* QDF_STATUS_E_FAULT
*/
QDF_STATUS dp_tx_tso_num_seg_pool_init(struct dp_soc *soc, uint8_t num_pool, QDF_STATUS dp_tx_tso_num_seg_pool_init(struct dp_soc *soc, uint8_t num_pool,
uint32_t num_elem) uint32_t num_elem)
{ {
@@ -698,16 +554,6 @@ QDF_STATUS dp_tx_tso_num_seg_pool_init(struct dp_soc *soc, uint8_t num_pool,
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
} }
/**
* dp_tx_tso_num_seg_pool_deinit() - de-initialize descriptors that tracks the
* fragments in each tso segment
*
* @soc: handle to dp soc structure
* @num_pool: number of pools to de-initialize
*
* Return - QDF_STATUS_SUCCESS
* QDF_STATUS_E_FAULT
*/
void dp_tx_tso_num_seg_pool_deinit(struct dp_soc *soc, uint8_t num_pool) void dp_tx_tso_num_seg_pool_deinit(struct dp_soc *soc, uint8_t num_pool)
{ {
struct dp_tx_tso_num_seg_pool_s *tso_num_seg_pool; struct dp_tx_tso_num_seg_pool_s *tso_num_seg_pool;

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. 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 * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -24,7 +24,7 @@
#include "dp_tx.h" #include "dp_tx.h"
#include "dp_internal.h" #include "dp_internal.h"
/** /*
* 21 bits cookie * 21 bits cookie
* 2 bits pool id 0 ~ 3, * 2 bits pool id 0 ~ 3,
* 10 bits page id 0 ~ 1023 * 10 bits page id 0 ~ 1023
@@ -38,7 +38,7 @@
#define DP_TX_DESC_ID_OFFSET_MASK 0x00001F #define DP_TX_DESC_ID_OFFSET_MASK 0x00001F
#define DP_TX_DESC_ID_OFFSET_OS 0 #define DP_TX_DESC_ID_OFFSET_OS 0
/** /*
* Compilation assert on tx desc size * Compilation assert on tx desc size
* *
* if assert is hit please update POOL_MASK, * if assert is hit please update POOL_MASK,
@@ -107,35 +107,201 @@ static inline void dp_tx_desc_set_magic(struct dp_tx_desc_s *tx_desc,
} }
#endif #endif
/**
* dp_tx_desc_pool_alloc() - Allocate Tx Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @pool_id: pool to allocate
* @num_elem: Number of descriptor elements per pool
*
* This function allocates memory for SW tx descriptors
* (used within host for tx data path).
* The number of tx descriptors required will be large
* since based on number of clients (1024 clients x 3 radios),
* outstanding MSDUs stored in TQM queues and LMAC queues will be significantly
* large.
*
* To avoid allocating a large contiguous memory, it uses multi_page_alloc qdf
* function to allocate memory
* in multiple pages. It then iterates through the memory allocated across pages
* and links each descriptor
* to next descriptor, taking care of page boundaries.
*
* Since WiFi 3.0 HW supports multiple Tx rings, multiple pools are allocated,
* one for each ring;
* This minimizes lock contention when hard_start_xmit is called
* from multiple CPUs.
* Alternately, multiple pools can be used for multiple VDEVs for VDEV level
* flow control.
*
* Return: Status code. 0 for success.
*/
QDF_STATUS dp_tx_desc_pool_alloc(struct dp_soc *soc, uint8_t pool_id, QDF_STATUS dp_tx_desc_pool_alloc(struct dp_soc *soc, uint8_t pool_id,
uint32_t num_elem); uint32_t num_elem);
/**
* dp_tx_desc_pool_init() - Initialize Tx Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @pool_id: pool to allocate
* @num_elem: Number of descriptor elements per pool
*
* Return: QDF_STATUS_SUCCESS
* QDF_STATUS_E_FAULT
*/
QDF_STATUS dp_tx_desc_pool_init(struct dp_soc *soc, uint8_t pool_id, QDF_STATUS dp_tx_desc_pool_init(struct dp_soc *soc, uint8_t pool_id,
uint32_t num_elem); uint32_t num_elem);
/**
* dp_tx_desc_pool_free() - Free the tx dexcriptor pools
* @soc: Handle to DP SoC structure
* @pool_id: pool to free
*
*/
void dp_tx_desc_pool_free(struct dp_soc *soc, uint8_t pool_id); void dp_tx_desc_pool_free(struct dp_soc *soc, uint8_t pool_id);
/**
* dp_tx_desc_pool_deinit() - de-initialize Tx Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @pool_id: pool to de-initialize
*
*/
void dp_tx_desc_pool_deinit(struct dp_soc *soc, uint8_t pool_id); void dp_tx_desc_pool_deinit(struct dp_soc *soc, uint8_t pool_id);
QDF_STATUS dp_tx_ext_desc_pool_alloc(struct dp_soc *soc, uint8_t pool_id, /**
* dp_tx_ext_desc_pool_alloc() - allocate Tx extension Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @num_pool: Number of pools to allocate
* @num_elem: Number of descriptor elements per pool
*
* Return: QDF_STATUS_SUCCESS
* QDF_STATUS_E_NOMEM
*/
QDF_STATUS dp_tx_ext_desc_pool_alloc(struct dp_soc *soc, uint8_t num_pool,
uint32_t num_elem); uint32_t num_elem);
QDF_STATUS dp_tx_ext_desc_pool_init(struct dp_soc *soc, uint8_t pool_id,
uint32_t num_elem);
void dp_tx_ext_desc_pool_free(struct dp_soc *soc, uint8_t pool_id);
void dp_tx_ext_desc_pool_deinit(struct dp_soc *soc, uint8_t pool_id);
QDF_STATUS dp_tx_tso_desc_pool_alloc(struct dp_soc *soc, uint8_t pool_id, /**
* dp_tx_ext_desc_pool_init() - initialize Tx extension Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @num_pool: Number of pools to initialize
* @num_elem: Number of descriptor elements per pool
*
* Return: QDF_STATUS_SUCCESS
* QDF_STATUS_E_NOMEM
*/
QDF_STATUS dp_tx_ext_desc_pool_init(struct dp_soc *soc, uint8_t num_pool,
uint32_t num_elem); uint32_t num_elem);
QDF_STATUS dp_tx_tso_desc_pool_init(struct dp_soc *soc, uint8_t pool_id,
uint32_t num_elem);
void dp_tx_tso_desc_pool_free(struct dp_soc *soc, uint8_t pool_id);
void dp_tx_tso_desc_pool_deinit(struct dp_soc *soc, uint8_t pool_id);
QDF_STATUS dp_tx_tso_num_seg_pool_alloc(struct dp_soc *soc, uint8_t pool_id, /**
* dp_tx_ext_desc_pool_free() - free Tx extension Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @num_pool: Number of pools to free
*
*/
void dp_tx_ext_desc_pool_free(struct dp_soc *soc, uint8_t num_pool);
/**
* dp_tx_ext_desc_pool_deinit() - deinit Tx extension Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @num_pool: Number of pools to de-initialize
*
*/
void dp_tx_ext_desc_pool_deinit(struct dp_soc *soc, uint8_t num_pool);
/**
* dp_tx_tso_desc_pool_alloc() - allocate TSO Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @num_pool: Number of pools to allocate
* @num_elem: Number of descriptor elements per pool
*
* Return: QDF_STATUS_SUCCESS
* QDF_STATUS_E_NOMEM
*/
QDF_STATUS dp_tx_tso_desc_pool_alloc(struct dp_soc *soc, uint8_t num_pool,
uint32_t num_elem); uint32_t num_elem);
QDF_STATUS dp_tx_tso_num_seg_pool_init(struct dp_soc *soc, uint8_t pool_id,
/**
* dp_tx_tso_desc_pool_init() - initialize TSO Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @num_pool: Number of pools to initialize
* @num_elem: Number of descriptor elements per pool
*
* Return: QDF_STATUS_SUCCESS
* QDF_STATUS_E_NOMEM
*/
QDF_STATUS dp_tx_tso_desc_pool_init(struct dp_soc *soc, uint8_t num_pool,
uint32_t num_elem); uint32_t num_elem);
void dp_tx_tso_num_seg_pool_free(struct dp_soc *soc, uint8_t pool_id);
void dp_tx_tso_num_seg_pool_deinit(struct dp_soc *soc, uint8_t pool_id); /**
* dp_tx_tso_desc_pool_free() - free TSO Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @num_pool: Number of pools to free
*
*/
void dp_tx_tso_desc_pool_free(struct dp_soc *soc, uint8_t num_pool);
/**
* dp_tx_tso_desc_pool_deinit() - deinitialize TSO Descriptor pool(s)
* @soc: Handle to DP SoC structure
* @num_pool: Number of pools to free
*
*/
void dp_tx_tso_desc_pool_deinit(struct dp_soc *soc, uint8_t num_pool);
/**
* dp_tx_tso_num_seg_pool_alloc() - Allocate descriptors that tracks the
* fragments in each tso segment
*
* @soc: handle to dp soc structure
* @num_pool: number of pools to allocate
* @num_elem: total number of descriptors to be allocated
*
* Return: QDF_STATUS_SUCCESS
* QDF_STATUS_E_NOMEM
*/
QDF_STATUS dp_tx_tso_num_seg_pool_alloc(struct dp_soc *soc, uint8_t num_pool,
uint32_t num_elem);
/**
* dp_tx_tso_num_seg_pool_init() - Initialize descriptors that tracks the
* fragments in each tso segment
*
* @soc: handle to dp soc structure
* @num_pool: number of pools to initialize
* @num_elem: total number of descriptors to be initialized
*
* Return: QDF_STATUS_SUCCESS
* QDF_STATUS_E_FAULT
*/
QDF_STATUS dp_tx_tso_num_seg_pool_init(struct dp_soc *soc, uint8_t num_pool,
uint32_t num_elem);
/**
* dp_tx_tso_num_seg_pool_free() - free descriptors that tracks the
* fragments in each tso segment
*
* @soc: handle to dp soc structure
* @num_pool: number of pools to free
*/
void dp_tx_tso_num_seg_pool_free(struct dp_soc *soc, uint8_t num_pool);
/**
* dp_tx_tso_num_seg_pool_deinit() - de-initialize descriptors that tracks the
* fragments in each tso segment
*
* @soc: handle to dp soc structure
* @num_pool: number of pools to de-initialize
*
* Return: QDF_STATUS_SUCCESS
* QDF_STATUS_E_FAULT
*/
void dp_tx_tso_num_seg_pool_deinit(struct dp_soc *soc, uint8_t num_pool);
#ifdef DP_UMAC_HW_RESET_SUPPORT #ifdef DP_UMAC_HW_RESET_SUPPORT
/**
* dp_tx_desc_pool_cleanup() - Clean up the tx dexcriptor pools
* @soc: Handle to DP SoC structure
* @nbuf_list: nbuf list for delayed free
*
*/
void dp_tx_desc_pool_cleanup(struct dp_soc *soc, qdf_nbuf_t *nbuf_list); void dp_tx_desc_pool_cleanup(struct dp_soc *soc, qdf_nbuf_t *nbuf_list);
#endif #endif
@@ -177,7 +343,7 @@ struct dp_tx_desc_s *dp_tx_get_desc_flow_pool(struct dp_tx_desc_pool_s *pool)
} }
/** /**
* ol_tx_put_desc_flow_pool() - put descriptor to flow pool freelist * dp_tx_put_desc_flow_pool() - put descriptor to flow pool freelist
* @pool: flow pool * @pool: flow pool
* @tx_desc: tx descriptor * @tx_desc: tx descriptor
* *
@@ -198,7 +364,6 @@ void dp_tx_put_desc_flow_pool(struct dp_tx_desc_pool_s *pool,
/** /**
* dp_tx_flow_pool_member_clean() - Clean the members of TX flow pool * dp_tx_flow_pool_member_clean() - Clean the members of TX flow pool
*
* @pool: flow pool * @pool: flow pool
* *
* Return: None * Return: None
@@ -217,7 +382,6 @@ dp_tx_flow_pool_member_clean(struct dp_tx_desc_pool_s *pool)
/** /**
* dp_tx_is_threshold_reached() - Check if current avail desc meet threshold * dp_tx_is_threshold_reached() - Check if current avail desc meet threshold
*
* @pool: flow pool * @pool: flow pool
* @avail_desc: available descriptor number * @avail_desc: available descriptor number
* *
@@ -240,7 +404,6 @@ dp_tx_is_threshold_reached(struct dp_tx_desc_pool_s *pool, uint16_t avail_desc)
/** /**
* dp_tx_adjust_flow_pool_state() - Adjust flow pool state * dp_tx_adjust_flow_pool_state() - Adjust flow pool state
*
* @soc: dp soc * @soc: dp soc
* @pool: flow pool * @pool: flow pool
*/ */
@@ -295,7 +458,6 @@ dp_tx_adjust_flow_pool_state(struct dp_soc *soc,
/** /**
* dp_tx_desc_alloc() - Allocate a Software Tx descriptor from given pool * dp_tx_desc_alloc() - Allocate a Software Tx descriptor from given pool
*
* @soc: Handle to DP SoC structure * @soc: Handle to DP SoC structure
* @desc_pool_id: ID of the flow control fool * @desc_pool_id: ID of the flow control fool
* *
@@ -390,11 +552,10 @@ dp_tx_desc_alloc(struct dp_soc *soc, uint8_t desc_pool_id)
} }
/** /**
* dp_tx_desc_free() - Fee a tx descriptor and attach it to free list * dp_tx_desc_free() - Free a tx descriptor and attach it to free list
*
* @soc: Handle to DP SoC structure * @soc: Handle to DP SoC structure
* @tx_desc: the tx descriptor to be freed * @tx_desc: the tx descriptor to be freed
* @desc_pool_id: ID of the flow control fool * @desc_pool_id: ID of the flow control pool
* *
* Return: None * Return: None
*/ */
@@ -505,11 +666,10 @@ dp_tx_is_threshold_reached(struct dp_tx_desc_pool_s *pool, uint16_t avail_desc)
/** /**
* dp_tx_desc_alloc() - Allocate a Software Tx Descriptor from given pool * dp_tx_desc_alloc() - Allocate a Software Tx Descriptor from given pool
* @soc: Handle to DP SoC structure
* @desc_pool_id:
* *
* @soc Handle to DP SoC structure * Return: Tx descriptor or NULL
* @pool_id
*
* Return:
*/ */
static inline struct dp_tx_desc_s * static inline struct dp_tx_desc_s *
dp_tx_desc_alloc(struct dp_soc *soc, uint8_t desc_pool_id) dp_tx_desc_alloc(struct dp_soc *soc, uint8_t desc_pool_id)
@@ -548,11 +708,10 @@ dp_tx_desc_alloc(struct dp_soc *soc, uint8_t desc_pool_id)
} }
/** /**
* dp_tx_desc_free() - Fee a tx descriptor and attach it to free list * dp_tx_desc_free() - Free a tx descriptor and attach it to free list
* * @soc: Handle to DP SoC structure
* @soc Handle to DP SoC structure * @tx_desc: Descriptor to free
* @pool_id * @desc_pool_id: Descriptor pool Id
* @tx_desc
* *
* Return: None * Return: None
*/ */
@@ -657,11 +816,10 @@ void dp_tx_prefetch_desc(struct dp_tx_desc_s *tx_desc)
/** /**
* dp_tx_desc_alloc() - Allocate a Software Tx Descriptor from given pool * dp_tx_desc_alloc() - Allocate a Software Tx Descriptor from given pool
* @soc: Handle to DP SoC structure
* @desc_pool_id: pool id
* *
* @param soc Handle to DP SoC structure * Return: Tx Descriptor or NULL
* @param pool_id
*
* Return:
*/ */
static inline struct dp_tx_desc_s *dp_tx_desc_alloc(struct dp_soc *soc, static inline struct dp_tx_desc_s *dp_tx_desc_alloc(struct dp_soc *soc,
uint8_t desc_pool_id) uint8_t desc_pool_id)
@@ -695,12 +853,12 @@ static inline struct dp_tx_desc_s *dp_tx_desc_alloc(struct dp_soc *soc,
* dp_tx_desc_alloc_multiple() - Allocate batch of software Tx Descriptors * dp_tx_desc_alloc_multiple() - Allocate batch of software Tx Descriptors
* from given pool * from given pool
* @soc: Handle to DP SoC structure * @soc: Handle to DP SoC structure
* @pool_id: pool id should pick up * @desc_pool_id: pool id should pick up
* @num_requested: number of required descriptor * @num_requested: number of required descriptor
* *
* allocate multiple tx descriptor and make a link * allocate multiple tx descriptor and make a link
* *
* Return: h_desc first descriptor pointer * Return: first descriptor pointer or NULL
*/ */
static inline struct dp_tx_desc_s *dp_tx_desc_alloc_multiple( static inline struct dp_tx_desc_s *dp_tx_desc_alloc_multiple(
struct dp_soc *soc, uint8_t desc_pool_id, uint8_t num_requested) struct dp_soc *soc, uint8_t desc_pool_id, uint8_t num_requested)
@@ -741,11 +899,10 @@ static inline struct dp_tx_desc_s *dp_tx_desc_alloc_multiple(
} }
/** /**
* dp_tx_desc_free() - Fee a tx descriptor and attach it to free list * dp_tx_desc_free() - Free a tx descriptor and attach it to free list
* * @soc: Handle to DP SoC structure
* @soc Handle to DP SoC structure * @tx_desc: descriptor to free
* @pool_id * @desc_pool_id: ID of the free pool
* @tx_desc
*/ */
static inline void static inline void
dp_tx_desc_free(struct dp_soc *soc, struct dp_tx_desc_s *tx_desc, dp_tx_desc_free(struct dp_soc *soc, struct dp_tx_desc_s *tx_desc,
@@ -770,9 +927,8 @@ dp_tx_desc_free(struct dp_soc *soc, struct dp_tx_desc_s *tx_desc,
#ifdef QCA_DP_TX_DESC_ID_CHECK #ifdef QCA_DP_TX_DESC_ID_CHECK
/** /**
* dp_tx_is_desc_id_valid() - check is the tx desc id valid * dp_tx_is_desc_id_valid() - check is the tx desc id valid
* * @soc: Handle to DP SoC structure
* @soc Handle to DP SoC structure * @tx_desc_id:
* @tx_desc_id
* *
* Return: true or false * Return: true or false
*/ */
@@ -874,13 +1030,16 @@ static inline void dp_tx_desc_update_fast_comp_flag(struct dp_soc *soc,
#endif /* QCA_DP_TX_DESC_FAST_COMP_ENABLE */ #endif /* QCA_DP_TX_DESC_FAST_COMP_ENABLE */
/** /**
* dp_tx_desc_find() - find dp tx descriptor from cokie * dp_tx_desc_find() - find dp tx descriptor from pool/page/offset
* @soc - handle for the device sending the data * @soc: handle for the device sending the data
* @tx_desc_id - the ID of the descriptor in question * @pool_id:
* @return the descriptor object that has the specified ID * @page_id:
* @offset:
* *
* Use a tx descriptor ID to find the corresponding descriptor object. * Use page and offset to find the corresponding descriptor object in
* the given descriptor pool.
* *
* Return: the descriptor object that has the specified ID
*/ */
static inline struct dp_tx_desc_s *dp_tx_desc_find(struct dp_soc *soc, static inline struct dp_tx_desc_s *dp_tx_desc_find(struct dp_soc *soc,
uint8_t pool_id, uint16_t page_id, uint16_t offset) uint8_t pool_id, uint16_t page_id, uint16_t offset)
@@ -894,7 +1053,7 @@ static inline struct dp_tx_desc_s *dp_tx_desc_find(struct dp_soc *soc,
/** /**
* dp_tx_ext_desc_alloc() - Get tx extension descriptor from pool * dp_tx_ext_desc_alloc() - Get tx extension descriptor from pool
* @soc: handle for the device sending the data * @soc: handle for the device sending the data
* @pool_id: target pool id * @desc_pool_id: target pool id
* *
* Return: None * Return: None
*/ */
@@ -920,8 +1079,8 @@ struct dp_tx_ext_desc_elem_s *dp_tx_ext_desc_alloc(struct dp_soc *soc,
/** /**
* dp_tx_ext_desc_free() - Release tx extension descriptor to the pool * dp_tx_ext_desc_free() - Release tx extension descriptor to the pool
* @soc: handle for the device sending the data * @soc: handle for the device sending the data
* @pool_id: target pool id
* @elem: ext descriptor pointer should release * @elem: ext descriptor pointer should release
* @desc_pool_id: target pool id
* *
* Return: None * Return: None
*/ */
@@ -937,7 +1096,7 @@ static inline void dp_tx_ext_desc_free(struct dp_soc *soc,
} }
/** /**
* dp_tx_ext_desc_free_multiple() - Fee multiple tx extension descriptor and * dp_tx_ext_desc_free_multiple() - Free multiple tx extension descriptor and
* attach it to free list * attach it to free list
* @soc: Handle to DP SoC structure * @soc: Handle to DP SoC structure
* @desc_pool_id: pool id should pick up * @desc_pool_id: pool id should pick up
@@ -1056,11 +1215,11 @@ void dp_tso_num_seg_free(struct dp_soc *soc,
} }
#endif #endif
/* /**
* dp_tx_me_alloc_buf() Alloc descriptor from me pool * dp_tx_me_alloc_buf() - Alloc descriptor from me pool
* @pdev DP_PDEV handle for datapath * @pdev: DP_PDEV handle for datapath
* *
* Return:dp_tx_me_buf_t(buf) * Return: tx descriptor on success, NULL on error
*/ */
static inline struct dp_tx_me_buf_t* static inline struct dp_tx_me_buf_t*
dp_tx_me_alloc_buf(struct dp_pdev *pdev) dp_tx_me_alloc_buf(struct dp_pdev *pdev)
@@ -1081,7 +1240,7 @@ dp_tx_me_alloc_buf(struct dp_pdev *pdev)
return buf; return buf;
} }
/* /**
* dp_tx_me_free_buf() - Unmap the buffer holding the dest * dp_tx_me_free_buf() - Unmap the buffer holding the dest
* address, free me descriptor and add it to the free-pool * address, free me descriptor and add it to the free-pool
* @pdev: DP_PDEV handle for datapath * @pdev: DP_PDEV handle for datapath