qcacmn: Process mon dest buffer via nr_frag

Process mon destination buffer via nr_frags
if RX_MON_MEM_FRAG is enabled.

Change-Id: If49132b129e01f6a248544134ac9d9457aa2072d
CRs-Fixed: 2741789
This commit is contained in:
Ankit Kumar
2020-07-27 14:42:02 +05:30
committed by snandini
parent 526bbe81de
commit 1f948cbb6b
3 changed files with 1055 additions and 71 deletions

View File

@@ -74,6 +74,34 @@ struct hal_wbm_err_desc_info {
reserved_2:2;
};
/**
* hal_rx_mon_dest_buf_info: Structure to hold rx mon dest buffer info
* @first_buffer: First buffer of MSDU
* @last_buffer: Last buffer of MSDU
* @is_decap_raw: Is RAW Frame
* @reserved_1: Reserved
*
* MSDU with continuation:
* -----------------------------------------------------------
* | first_buffer:1 | first_buffer: 0 | ... | first_buffer: 0 |
* | last_buffer :0 | last_buffer : 0 | ... | last_buffer : 0 |
* | is_decap_raw:1/0 | Same as earlier | Same as earlier|
* -----------------------------------------------------------
*
* Single buffer MSDU:
* ------------------
* | first_buffer:1 |
* | last_buffer :1 |
* | is_decap_raw:1/0 |
* ------------------
*/
struct hal_rx_mon_dest_buf_info {
uint8_t first_buffer:1,
last_buffer:1,
is_decap_raw:1,
reserved_1:5;
};
/**
* struct hal_rx_msdu_metadata:Structure to hold rx fast path information.
*
@@ -3035,6 +3063,42 @@ static inline void hal_rx_wbm_err_info_get_from_tlv(uint8_t *buf,
sizeof(struct hal_wbm_err_desc_info));
}
/**
* hal_rx_mon_dest_set_buffer_info_to_tlv(): Save the mon dest frame info
* into the reserved bytes of rx_tlv_hdr.
* @buf: start of rx_tlv_hdr
* @buf_info: hal_rx_mon_dest_buf_info structure
*
* Return: void
*/
static inline
void hal_rx_mon_dest_set_buffer_info_to_tlv(uint8_t *buf,
struct hal_rx_mon_dest_buf_info *buf_info)
{
struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf;
qdf_mem_copy(pkt_tlvs->rx_padding0, buf_info,
sizeof(struct hal_rx_mon_dest_buf_info));
}
/**
* hal_rx_mon_dest_get_buffer_info_from_tlv(): Retrieve mon dest frame info
* from the reserved bytes of rx_tlv_hdr.
* @buf: start of rx_tlv_hdr
* @buf_info: hal_rx_mon_dest_buf_info structure
*
* Return: void
*/
static inline
void hal_rx_mon_dest_get_buffer_info_from_tlv(uint8_t *buf,
struct hal_rx_mon_dest_buf_info *buf_info)
{
struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf;
qdf_mem_copy(buf_info, pkt_tlvs->rx_padding0,
sizeof(struct hal_rx_mon_dest_buf_info));
}
/**
* hal_rx_wbm_err_msdu_continuation_get(): Get wbm msdu continuation
* bit from wbm release ring descriptor