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

The kernel-doc script identified a large number of documentation
issues in dp/wifi3.0/dp_rx_defrag.[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: I4080e4b614c5d1f0253afd06fc4eb650142b76d4
CRs-Fixed: 3373163
Цей коміт міститься в:
Jeff Johnson
2023-01-04 18:04:33 -08:00
зафіксовано Madan Koyyalamudi
джерело 058c19c08b
коміт 8b86e068ec
2 змінених файлів з 164 додано та 150 видалено

Переглянути файл

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2017-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
* any purpose with or without fee is hereby granted, provided that the
@@ -68,12 +68,12 @@ const struct dp_rx_defrag_cipher dp_f_gcmp = {
WLAN_IEEE80211_GCMP_MICLEN,
};
/*
* dp_rx_defrag_frames_free(): Free fragment chain
/**
* dp_rx_defrag_frames_free() - Free fragment chain
* @frames: Fragment chain
*
* Iterates through the fragment chain and frees them
* Returns: None
* Return: None
*/
static void dp_rx_defrag_frames_free(qdf_nbuf_t frames)
{
@@ -86,15 +86,15 @@ static void dp_rx_defrag_frames_free(qdf_nbuf_t frames)
}
}
/*
* dp_rx_clear_saved_desc_info(): Clears descriptor info
* @txrx peer: Pointer to the peer data structure
/**
* dp_rx_clear_saved_desc_info() - Clears descriptor info
* @txrx_peer: Pointer to the peer data structure
* @tid: Transmit ID (TID)
*
* Saves MPDU descriptor info and MSDU link pointer from REO
* ring descriptor. The cache is created per peer, per TID
*
* Returns: None
* Return: None
*/
static void dp_rx_clear_saved_desc_info(struct dp_txrx_peer *txrx_peer,
unsigned int tid)
@@ -141,15 +141,6 @@ static void dp_rx_return_head_frag_desc(struct dp_txrx_peer *txrx_peer,
}
}
/*
* dp_rx_reorder_flush_frag(): Flush the frag list
* @txrx_peer: Pointer to the peer data structure
* @tid: Transmit ID (TID)
*
* Flush the per-TID frag list
*
* Returns: None
*/
void dp_rx_reorder_flush_frag(struct dp_txrx_peer *txrx_peer,
unsigned int tid)
{
@@ -165,14 +156,6 @@ void dp_rx_reorder_flush_frag(struct dp_txrx_peer *txrx_peer,
dp_rx_defrag_cleanup(txrx_peer, tid);
}
/*
* dp_rx_defrag_waitlist_flush(): Flush SOC defrag wait list
* @soc: DP SOC
*
* Flush fragments of all waitlisted TID's
*
* Returns: None
*/
void dp_rx_defrag_waitlist_flush(struct dp_soc *soc)
{
struct dp_rx_tid_defrag *waitlist_elem = NULL;
@@ -244,14 +227,14 @@ void dp_rx_defrag_waitlist_flush(struct dp_soc *soc)
}
}
/*
* dp_rx_defrag_waitlist_add(): Update per-PDEV defrag wait list
/**
* dp_rx_defrag_waitlist_add() - Update per-PDEV defrag wait list
* @txrx_peer: Pointer to the peer data structure
* @tid: Transmit ID (TID)
*
* Appends per-tid fragments to global fragment wait list
*
* Returns: None
* Return: None
*/
static void dp_rx_defrag_waitlist_add(struct dp_txrx_peer *txrx_peer,
unsigned int tid)
@@ -274,15 +257,6 @@ static void dp_rx_defrag_waitlist_add(struct dp_txrx_peer *txrx_peer,
qdf_spin_unlock_bh(&psoc->rx.defrag.defrag_lock);
}
/*
* dp_rx_defrag_waitlist_remove(): Remove fragments from waitlist
* @txrx peer: Pointer to the peer data structure
* @tid: Transmit ID (TID)
*
* Remove fragments from waitlist
*
* Returns: None
*/
void dp_rx_defrag_waitlist_remove(struct dp_txrx_peer *txrx_peer,
unsigned int tid)
{
@@ -317,8 +291,8 @@ void dp_rx_defrag_waitlist_remove(struct dp_txrx_peer *txrx_peer,
qdf_spin_unlock_bh(&soc->rx.defrag.defrag_lock);
}
/*
* dp_rx_defrag_fraglist_insert(): Create a per-sequence fragment list
/**
* dp_rx_defrag_fraglist_insert() - Create a per-sequence fragment list
* @txrx_peer: Pointer to the peer data structure
* @tid: Transmit ID (TID)
* @head_addr: Pointer to head list
@@ -328,7 +302,7 @@ void dp_rx_defrag_waitlist_remove(struct dp_txrx_peer *txrx_peer,
*
* Build a per-tid, per-sequence fragment list.
*
* Returns: Success, if inserted
* Return: Success, if inserted
*/
static QDF_STATUS
dp_rx_defrag_fraglist_insert(struct dp_txrx_peer *txrx_peer, unsigned int tid,
@@ -442,14 +416,15 @@ insert_fail:
}
/*
* dp_rx_defrag_tkip_decap(): decap tkip encrypted fragment
/**
* dp_rx_defrag_tkip_decap() - decap tkip encrypted fragment
* @soc: DP SOC
* @msdu: Pointer to the fragment
* @hdrlen: 802.11 header length (mostly useful in 4 addr frames)
*
* decap tkip encrypted fragment
*
* Returns: QDF_STATUS
* Return: QDF_STATUS
*/
static QDF_STATUS
dp_rx_defrag_tkip_decap(struct dp_soc *soc,
@@ -474,14 +449,15 @@ dp_rx_defrag_tkip_decap(struct dp_soc *soc,
return QDF_STATUS_SUCCESS;
}
/*
* dp_rx_defrag_ccmp_demic(): Remove MIC information from CCMP fragment
/**
* dp_rx_defrag_ccmp_demic() - Remove MIC information from CCMP fragment
* @soc: DP SOC
* @nbuf: Pointer to the fragment buffer
* @hdrlen: 802.11 header length (mostly useful in 4 addr frames)
*
* Remove MIC information from CCMP fragment
*
* Returns: QDF_STATUS
* Return: QDF_STATUS
*/
static QDF_STATUS
dp_rx_defrag_ccmp_demic(struct dp_soc *soc, qdf_nbuf_t nbuf, uint16_t hdrlen)
@@ -502,14 +478,15 @@ dp_rx_defrag_ccmp_demic(struct dp_soc *soc, qdf_nbuf_t nbuf, uint16_t hdrlen)
return QDF_STATUS_SUCCESS;
}
/*
* dp_rx_defrag_ccmp_decap(): decap CCMP encrypted fragment
/**
* dp_rx_defrag_ccmp_decap() - decap CCMP encrypted fragment
* @soc: DP SOC
* @nbuf: Pointer to the fragment
* @hdrlen: length of the header information
*
* decap CCMP encrypted fragment
*
* Returns: QDF_STATUS
* Return: QDF_STATUS
*/
static QDF_STATUS
dp_rx_defrag_ccmp_decap(struct dp_soc *soc, qdf_nbuf_t nbuf, uint16_t hdrlen)
@@ -526,14 +503,15 @@ dp_rx_defrag_ccmp_decap(struct dp_soc *soc, qdf_nbuf_t nbuf, uint16_t hdrlen)
return QDF_STATUS_SUCCESS;
}
/*
* dp_rx_defrag_wep_decap(): decap WEP encrypted fragment
/**
* dp_rx_defrag_wep_decap() - decap WEP encrypted fragment
* @soc: DP SOC
* @msdu: Pointer to the fragment
* @hdrlen: length of the header information
*
* decap WEP encrypted fragment
*
* Returns: QDF_STATUS
* Return: QDF_STATUS
*/
static QDF_STATUS
dp_rx_defrag_wep_decap(struct dp_soc *soc, qdf_nbuf_t msdu, uint16_t hdrlen)
@@ -549,14 +527,14 @@ dp_rx_defrag_wep_decap(struct dp_soc *soc, qdf_nbuf_t msdu, uint16_t hdrlen)
return QDF_STATUS_SUCCESS;
}
/*
* dp_rx_defrag_hdrsize(): Calculate the header size of the received fragment
/**
* dp_rx_defrag_hdrsize() - Calculate the header size of the received fragment
* @soc: soc handle
* @nbuf: Pointer to the fragment
*
* Calculate the header size of the received fragment
*
* Returns: header size (uint16_t)
* Return: header size (uint16_t)
*/
static uint16_t dp_rx_defrag_hdrsize(struct dp_soc *soc, qdf_nbuf_t nbuf)
{
@@ -592,14 +570,14 @@ static uint16_t dp_rx_defrag_hdrsize(struct dp_soc *soc, qdf_nbuf_t nbuf)
return size;
}
/*
* dp_rx_defrag_michdr(): Calculate a pseudo MIC header
/**
* dp_rx_defrag_michdr() - Calculate a pseudo MIC header
* @wh0: Pointer to the wireless header of the fragment
* @hdr: Array to hold the pseudo header
*
* Calculate a pseudo MIC header
*
* Returns: None
* Return: None
*/
static void dp_rx_defrag_michdr(const struct ieee80211_frame *wh0,
uint8_t hdr[])
@@ -653,8 +631,9 @@ static void dp_rx_defrag_michdr(const struct ieee80211_frame *wh0,
hdr[13] = hdr[14] = hdr[15] = 0; /* reserved */
}
/*
* dp_rx_defrag_mic(): Calculate MIC header
/**
* dp_rx_defrag_mic() - Calculate MIC header
* @soc: DP SOC
* @key: Pointer to the key
* @wbuf: fragment buffer
* @off: Offset
@@ -663,7 +642,7 @@ static void dp_rx_defrag_michdr(const struct ieee80211_frame *wh0,
*
* Calculate a pseudo MIC header
*
* Returns: QDF_STATUS
* Return: QDF_STATUS
*/
static QDF_STATUS dp_rx_defrag_mic(struct dp_soc *soc, const uint8_t *key,
qdf_nbuf_t wbuf, uint16_t off,
@@ -779,15 +758,16 @@ static QDF_STATUS dp_rx_defrag_mic(struct dp_soc *soc, const uint8_t *key,
return QDF_STATUS_SUCCESS;
}
/*
* dp_rx_defrag_tkip_demic(): Remove MIC header from the TKIP frame
/**
* dp_rx_defrag_tkip_demic() - Remove MIC header from the TKIP frame
* @soc: DP SOC
* @key: Pointer to the key
* @msdu: fragment buffer
* @hdrlen: Length of the header information
*
* Remove MIC information from the TKIP frame
*
* Returns: QDF_STATUS
* Return: QDF_STATUS
*/
static QDF_STATUS dp_rx_defrag_tkip_demic(struct dp_soc *soc,
const uint8_t *key,
@@ -855,14 +835,15 @@ static QDF_STATUS dp_rx_defrag_tkip_demic(struct dp_soc *soc,
return QDF_STATUS_SUCCESS;
}
/*
* dp_rx_frag_pull_hdr(): Pulls the RXTLV & the 802.11 headers
/**
* dp_rx_frag_pull_hdr() - Pulls the RXTLV & the 802.11 headers
* @soc: DP SOC
* @nbuf: buffer pointer
* @hdrsize: size of the header to be pulled
*
* Pull the RXTLV & the 802.11 headers
*
* Returns: None
* Return: None
*/
static void dp_rx_frag_pull_hdr(struct dp_soc *soc,
qdf_nbuf_t nbuf, uint16_t hdrsize)
@@ -875,13 +856,14 @@ static void dp_rx_frag_pull_hdr(struct dp_soc *soc,
(uint32_t)qdf_nbuf_len(nbuf), hdrsize);
}
/*
* dp_rx_defrag_pn_check(): Check the PN of current fragmented with prev PN
/**
* dp_rx_defrag_pn_check() - Check the PN of current fragmented with prev PN
* @soc: DP SOC
* @msdu: msdu to get the current PN
* @cur_pn128: PN extracted from current msdu
* @prev_pn128: Prev PN
*
* Returns: 0 on success, non zero on failure
* Return: 0 on success, non zero on failure
*/
static int dp_rx_defrag_pn_check(struct dp_soc *soc, qdf_nbuf_t msdu,
uint64_t *cur_pn128, uint64_t *prev_pn128)
@@ -898,15 +880,16 @@ static int dp_rx_defrag_pn_check(struct dp_soc *soc, qdf_nbuf_t msdu,
return out_of_order;
}
/*
* dp_rx_construct_fraglist(): Construct a nbuf fraglist
* @txrx peer: Pointer to the txrx peer
/**
* dp_rx_construct_fraglist() - Construct a nbuf fraglist
* @txrx_peer: Pointer to the txrx peer
* @tid: Transmit ID (TID)
* @head: Pointer to list of fragments
* @hdrsize: Size of the header to be pulled
*
* Construct a nbuf fraglist
*
* Returns: None
* Return: None
*/
static int
dp_rx_construct_fraglist(struct dp_txrx_peer *txrx_peer, int tid,
@@ -980,16 +963,9 @@ dp_rx_construct_fraglist(struct dp_txrx_peer *txrx_peer, int tid,
}
/**
* dp_rx_defrag_err() - rx err handler
* @pdev: handle to pdev object
* @vdev_id: vdev id
* @peer_mac_addr: peer mac address
* @tid: TID
* @tsf32: TSF
* @err_type: error type
* @rx_frame: rx frame
* @pn: PN Number
* @key_id: key id
* dp_rx_defrag_err() - rx defragmentation error handler
* @vdev: handle to vdev object
* @nbuf: packet buffer
*
* This function handles rx error and send MIC error notification
*
@@ -1026,16 +1002,17 @@ static void dp_rx_defrag_err(struct dp_vdev *vdev, qdf_nbuf_t nbuf)
}
/*
* dp_rx_defrag_nwifi_to_8023(): Transcap 802.11 to 802.3
/**
* dp_rx_defrag_nwifi_to_8023() - Transcap 802.11 to 802.3
* @soc: dp soc handle
* @txrx_peer: txrx_peer handle
* @tid: Transmit ID (TID)
* @nbuf: Pointer to the fragment buffer
* @hdrsize: Size of headers
*
* Transcap the fragment from 802.11 to 802.3
*
* Returns: None
* Return: None
*/
static void
dp_rx_defrag_nwifi_to_8023(struct dp_soc *soc, struct dp_txrx_peer *txrx_peer,
@@ -1139,13 +1116,13 @@ dp_rx_defrag_nwifi_to_8023(struct dp_soc *soc, struct dp_txrx_peer *txrx_peer,
}
#ifdef RX_DEFRAG_DO_NOT_REINJECT
/*
* dp_rx_defrag_deliver(): Deliver defrag packet to stack
* @peer: Pointer to the peer
/**
* dp_rx_defrag_deliver() - Deliver defrag packet to stack
* @txrx_peer: Pointer to the peer
* @tid: Transmit Identifier
* @head: Nbuf to be delivered
*
* Returns: None
* Return: None
*/
static inline void dp_rx_defrag_deliver(struct dp_txrx_peer *txrx_peer,
unsigned int tid,
@@ -1169,15 +1146,15 @@ static inline void dp_rx_defrag_deliver(struct dp_txrx_peer *txrx_peer,
deliver_list_tail);
}
/*
* dp_rx_defrag_reo_reinject(): Reinject the fragment chain back into REO
* @txrx peer: Pointer to the peer
/**
* dp_rx_defrag_reo_reinject() - Reinject the fragment chain back into REO
* @txrx_peer: Pointer to the peer
* @tid: Transmit Identifier
* @head: Buffer to be reinjected back
*
* Reinject the fragment chain back into REO
*
* Returns: QDF_STATUS
* Return: QDF_STATUS
*/
static QDF_STATUS dp_rx_defrag_reo_reinject(struct dp_txrx_peer *txrx_peer,
unsigned int tid, qdf_nbuf_t head)
@@ -1202,7 +1179,7 @@ static QDF_STATUS dp_rx_defrag_reo_reinject(struct dp_txrx_peer *txrx_peer,
* @sw_cookie: SW cookie of the buffer reinjected to SW2REO ring
* @rbm: Return buffer manager of the buffer reinjected to SW2REO ring
*
* Returns: None
* Return: None
*/
static inline void
dp_rx_reinject_ring_record_entry(struct dp_soc *soc, uint64_t paddr,
@@ -1233,15 +1210,15 @@ dp_rx_reinject_ring_record_entry(struct dp_soc *soc, uint64_t paddr,
}
#endif
/*
* dp_rx_defrag_reo_reinject(): Reinject the fragment chain back into REO
/**
* dp_rx_defrag_reo_reinject() - Reinject the fragment chain back into REO
* @txrx_peer: Pointer to the txrx_peer
* @tid: Transmit Identifier
* @head: Buffer to be reinjected back
*
* Reinject the fragment chain back into REO
*
* Returns: QDF_STATUS
* Return: QDF_STATUS
*/
static QDF_STATUS dp_rx_defrag_reo_reinject(struct dp_txrx_peer *txrx_peer,
unsigned int tid, qdf_nbuf_t head)
@@ -1420,15 +1397,15 @@ static QDF_STATUS dp_rx_defrag_reo_reinject(struct dp_txrx_peer *txrx_peer,
}
#endif
/*
* dp_rx_defrag_gcmp_demic(): Remove MIC information from GCMP fragment
/**
* dp_rx_defrag_gcmp_demic() - Remove MIC information from GCMP fragment
* @soc: Datapath soc structure
* @nbuf: Pointer to the fragment buffer
* @hdrlen: 802.11 header length
*
* Remove MIC information from GCMP fragment
*
* Returns: QDF_STATUS
* Return: QDF_STATUS
*/
static QDF_STATUS dp_rx_defrag_gcmp_demic(struct dp_soc *soc, qdf_nbuf_t nbuf,
uint16_t hdrlen)
@@ -1452,16 +1429,16 @@ static QDF_STATUS dp_rx_defrag_gcmp_demic(struct dp_soc *soc, qdf_nbuf_t nbuf,
return QDF_STATUS_SUCCESS;
}
/*
* dp_rx_defrag(): Defragment the fragment chain
* @txrx peer: Pointer to the peer
/**
* dp_rx_defrag() - Defragment the fragment chain
* @txrx_peer: Pointer to the peer
* @tid: Transmit Identifier
* @frag_list_head: Pointer to head list
* @frag_list_tail: Pointer to tail list
*
* Defragment the fragment chain
*
* Returns: QDF_STATUS
* Return: QDF_STATUS
*/
static QDF_STATUS dp_rx_defrag(struct dp_txrx_peer *txrx_peer, unsigned int tid,
qdf_nbuf_t frag_list_head,
@@ -1617,13 +1594,6 @@ static QDF_STATUS dp_rx_defrag(struct dp_txrx_peer *txrx_peer, unsigned int tid,
return QDF_STATUS_SUCCESS;
}
/*
* dp_rx_defrag_cleanup(): Clean up activities
* @txrx_peer: Pointer to the peer
* @tid: Transmit Identifier
*
* Returns: None
*/
void dp_rx_defrag_cleanup(struct dp_txrx_peer *txrx_peer, unsigned int tid)
{
struct dp_rx_reorder_array_elem *rx_reorder_array_elem =
@@ -1647,14 +1617,15 @@ void dp_rx_defrag_cleanup(struct dp_txrx_peer *txrx_peer, unsigned int tid)
txrx_peer->rx_tid[tid].curr_seq_num = 0;
}
/*
* dp_rx_defrag_save_info_from_ring_desc(): Save info from REO ring descriptor
/**
* dp_rx_defrag_save_info_from_ring_desc() - Save info from REO ring descriptor
* @soc: Pointer to the SOC data structure
* @ring_desc: Pointer to the dst ring descriptor
* @rx_desc: Pointer to rx descriptor
* @txrx_peer: Pointer to the peer
* @tid: Transmit Identifier
*
* Returns: None
* Return: None
*/
static QDF_STATUS
dp_rx_defrag_save_info_from_ring_desc(struct dp_soc *soc,
@@ -1686,7 +1657,7 @@ dp_rx_defrag_save_info_from_ring_desc(struct dp_soc *soc,
#ifdef DP_RX_DEFRAG_ADDR1_CHECK_WAR
#ifdef WLAN_FEATURE_11BE_MLO
/*
/**
* dp_rx_defrag_vdev_mac_addr_cmp() - function to check whether mac address
* matches VDEV mac
* @vdev: dp_vdev object of the VDEV on which this data packet is received
@@ -1751,16 +1722,18 @@ static inline bool dp_rx_defrag_addr1_check(struct dp_soc *soc,
}
#endif
/*
* dp_rx_defrag_store_fragment(): Store incoming fragments
/**
* dp_rx_defrag_store_fragment() - Store incoming fragments
* @soc: Pointer to the SOC data structure
* @ring_desc: Pointer to the ring descriptor
* @head:
* @tail:
* @mpdu_desc_info: MPDU descriptor info
* @tid: Traffic Identifier
* @rx_desc: Pointer to rx descriptor
* @rx_bfs: Number of bfs consumed
*
* Returns: QDF_STATUS
* Return: QDF_STATUS
*/
static QDF_STATUS
dp_rx_defrag_store_fragment(struct dp_soc *soc,
@@ -2065,25 +2038,6 @@ end:
return QDF_STATUS_E_DEFRAG_ERROR;
}
/**
* dp_rx_frag_handle() - Handles fragmented Rx frames
*
* @soc: core txrx main context
* @ring_desc: opaque pointer to the REO error ring descriptor
* @mpdu_desc_info: MPDU descriptor information from ring descriptor
* @head: head of the local descriptor free-list
* @tail: tail of the local descriptor free-list
* @quota: No. of units (packets) that can be serviced in one shot.
*
* This function implements RX 802.11 fragmentation handling
* The handling is mostly same as legacy fragmentation handling.
* If required, this function can re-inject the frames back to
* REO ring (with proper setting to by-pass fragmentation check
* but use duplicate detection / re-ordering and routing these frames
* to a different core.
*
* Return: uint32_t: No. of elements processed
*/
uint32_t dp_rx_frag_handle(struct dp_soc *soc, hal_ring_desc_t ring_desc,
struct hal_rx_mpdu_desc_info *mpdu_desc_info,
struct dp_rx_desc *rx_desc,

Переглянути файл

@@ -1,6 +1,6 @@
/*
* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2022-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
@@ -49,14 +49,34 @@ struct dp_rx_defrag_cipher {
uint8_t ic_miclen;
};
/**
* dp_rx_frag_handle() - Handles fragmented Rx frames
*
* @soc: core txrx main context
* @ring_desc: opaque pointer to the REO error ring descriptor
* @mpdu_desc_info: MPDU descriptor information from ring descriptor
* @rx_desc:
* @mac_id:
* @quota: No. of units (packets) that can be serviced in one shot.
*
* This function implements RX 802.11 fragmentation handling
* The handling is mostly same as legacy fragmentation handling.
* If required, this function can re-inject the frames back to
* REO ring (with proper setting to by-pass fragmentation check
* but use duplicate detection / re-ordering and routing these frames
* to a different core.
*
* Return: uint32_t: No. of elements processed
*/
uint32_t dp_rx_frag_handle(struct dp_soc *soc, hal_ring_desc_t ring_desc,
struct hal_rx_mpdu_desc_info *mpdu_desc_info,
struct dp_rx_desc *rx_desc,
uint8_t *mac_id,
uint32_t quota);
/*
/**
* dp_rx_frag_get_mac_hdr() - Return pointer to the mac hdr
* @soc: DP SOC
* @rx_desc_info: Pointer to the pkt_tlvs in the
* nbuf (pkt_tlvs->mac_hdr->data)
*
@@ -65,7 +85,7 @@ uint32_t dp_rx_frag_handle(struct dp_soc *soc, hal_ring_desc_t ring_desc,
* 802.11 fields that hardware does not populate in the
* rx meta data.
*
* Returns: pointer to ieee80211_frame
* Return: pointer to ieee80211_frame
*/
static inline struct ieee80211_frame *
dp_rx_frag_get_mac_hdr(struct dp_soc *soc, uint8_t *rx_desc_info)
@@ -74,12 +94,13 @@ dp_rx_frag_get_mac_hdr(struct dp_soc *soc, uint8_t *rx_desc_info)
return (struct ieee80211_frame *)(rx_desc_info + rx_desc_len);
}
/*
/**
* dp_rx_frag_get_mpdu_seq_number() - Get mpdu sequence number
* @soc: DP SOC
* @rx_desc_info: Pointer to the pkt_tlvs in the
* nbuf (pkt_tlvs->mac_hdr->data)
*
* Returns: uint16_t, rx sequence number
* Return: uint16_t, rx sequence number
*/
static inline uint16_t
dp_rx_frag_get_mpdu_seq_number(struct dp_soc *soc, int8_t *rx_desc_info)
@@ -91,12 +112,13 @@ dp_rx_frag_get_mpdu_seq_number(struct dp_soc *soc, int8_t *rx_desc_info)
IEEE80211_SEQ_SEQ_SHIFT;
}
/*
/**
* dp_rx_frag_get_mpdu_frag_number() - Get mpdu fragment number
* @soc: DP SOC
* @rx_desc_info: Pointer to the pkt_tlvs in the
* nbuf (pkt_tlvs->mac_hdr->data)
*
* Returns: uint8_t, receive fragment number
* Return: uint8_t, receive fragment number
*/
static inline uint8_t
dp_rx_frag_get_mpdu_frag_number(struct dp_soc *soc, uint8_t *rx_desc_info)
@@ -108,12 +130,13 @@ dp_rx_frag_get_mpdu_frag_number(struct dp_soc *soc, uint8_t *rx_desc_info)
IEEE80211_SEQ_FRAG_MASK;
}
/*
/**
* dp_rx_frag_get_more_frag_bit() - Get more fragment bit
* @soc: DP SOC
* @rx_desc_info: Pointer to the pkt_tlvs in the
* nbuf (pkt_tlvs->mac_hdr->data)
*
* Returns: uint8_t, get more fragment bit
* Return: uint8_t, get more fragment bit
*/
static inline
uint8_t dp_rx_frag_get_more_frag_bit(struct dp_soc *soc, uint8_t *rx_desc_info)
@@ -133,11 +156,48 @@ uint8_t dp_rx_get_pkt_dir(struct dp_soc *soc, uint8_t *rx_desc_info)
return mac_hdr->i_fc[1] & IEEE80211_FC1_DIR_MASK;
}
/**
* dp_rx_defrag_waitlist_flush() - Flush SOC defrag wait list
* @soc: DP SOC
*
* Flush fragments of all waitlisted TID's
*
* Return: None
*/
void dp_rx_defrag_waitlist_flush(struct dp_soc *soc);
/**
* dp_rx_reorder_flush_frag() - Flush the frag list
* @txrx_peer: Pointer to the peer data structure
* @tid: Transmit ID (TID)
*
* Flush the per-TID frag list
*
* Return: None
*/
void dp_rx_reorder_flush_frag(struct dp_txrx_peer *txrx_peer,
unsigned int tid);
void dp_rx_defrag_waitlist_remove(struct dp_txrx_peer *peer, unsigned int tid);
void dp_rx_defrag_cleanup(struct dp_txrx_peer *peer, unsigned int tid);
/**
* dp_rx_defrag_waitlist_remove() - Remove fragments from waitlist
* @txrx_peer: Pointer to the peer data structure
* @tid: Transmit ID (TID)
*
* Remove fragments from waitlist
*
* Return: None
*/
void dp_rx_defrag_waitlist_remove(struct dp_txrx_peer *txrx_peer,
unsigned int tid);
/**
* dp_rx_defrag_cleanup() - Clean up activities
* @txrx_peer: Pointer to the peer
* @tid: Transmit Identifier
*
* Return: None
*/
void dp_rx_defrag_cleanup(struct dp_txrx_peer *txrx_peer, unsigned int tid);
QDF_STATUS dp_rx_defrag_add_last_frag(struct dp_soc *soc,
struct dp_txrx_peer *peer, uint16_t tid,