qcacmn: Add support for Extended Mcopy Mode
Currently, mcopy mode delivers first msdu(fcs_passed 128 bytes) per-ppdu to upper layer, add support for Extended mcopy mode to deliver first msdu(128 bytes) per-MPDU(fcs_passed). Change-Id: Ib345fc14a8d468788b9de78516d27e8dff24caa4 CRs-Fixed: 2644175
This commit is contained in:

committed by
nshrivas

orang tua
a3f17ee459
melakukan
879fd03fe1
@@ -161,6 +161,7 @@
|
||||
/* Max MPDUs per status buffer */
|
||||
#define HAL_RX_MAX_MPDU 256
|
||||
#define HAL_RX_NUM_WORDS_PER_PPDU_BITMAP (HAL_RX_MAX_MPDU >> 5)
|
||||
#define HAL_RX_MAX_MPDU_H_PER_STATUS_BUFFER 16
|
||||
|
||||
/* Max pilot count */
|
||||
#define HAL_RX_MAX_SU_EVM_COUNT 32
|
||||
@@ -476,12 +477,10 @@ struct hal_rx_ppdu_common_info {
|
||||
* struct hal_rx_msdu_payload_info - msdu payload info
|
||||
* @first_msdu_payload: pointer to first msdu payload
|
||||
* @payload_len: payload len
|
||||
* @nbuf: status network buffer to which msdu belongs to
|
||||
*/
|
||||
struct hal_rx_msdu_payload_info {
|
||||
uint8_t *first_msdu_payload;
|
||||
uint32_t payload_len;
|
||||
qdf_nbuf_t nbuf;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -630,8 +629,14 @@ struct hal_rx_ppdu_info {
|
||||
/* Id to indicate how to process mpdu */
|
||||
uint8_t sw_frame_group_id;
|
||||
struct hal_rx_ppdu_msdu_info rx_msdu_info[HAL_MAX_UL_MU_USERS];
|
||||
/* first msdu payload for all mpdus in ppdu */
|
||||
struct hal_rx_msdu_payload_info ppdu_msdu_info[HAL_RX_MAX_MPDU];
|
||||
/* fcs passed mpdu count in rx monitor status buffer */
|
||||
uint8_t fcs_ok_cnt;
|
||||
/* fcs error mpdu count in rx monitor status buffer */
|
||||
uint8_t fcs_err_cnt;
|
||||
/* MPDU FCS passed */
|
||||
bool is_fcs_passed;
|
||||
/* first msdu payload for all mpdus in rx monitor status buffer */
|
||||
struct hal_rx_msdu_payload_info ppdu_msdu_info[HAL_RX_MAX_MPDU_H_PER_STATUS_BUFFER];
|
||||
/* evm info */
|
||||
struct hal_rx_su_evm_info evm_info;
|
||||
/**
|
||||
|
@@ -1513,19 +1513,20 @@ hal_rx_status_get_tlv_info_generic(void *rx_tlv_hdr, void *ppduinfo,
|
||||
case WIFIRX_HEADER_E:
|
||||
{
|
||||
struct hal_rx_ppdu_common_info *com_info = &ppdu_info->com_info;
|
||||
uint16_t mpdu_cnt = com_info->mpdu_cnt;
|
||||
|
||||
if (mpdu_cnt >= HAL_RX_MAX_MPDU) {
|
||||
hal_alert("Number of MPDUs per PPDU exceeded");
|
||||
if (ppdu_info->fcs_ok_cnt >=
|
||||
HAL_RX_MAX_MPDU_H_PER_STATUS_BUFFER) {
|
||||
hal_err("Number of MPDUs(%d) per status buff exceeded",
|
||||
ppdu_info->fcs_ok_cnt);
|
||||
break;
|
||||
}
|
||||
|
||||
/* Update first_msdu_payload for every mpdu and increment
|
||||
* com_info->mpdu_cnt for every WIFIRX_HEADER_E TLV
|
||||
*/
|
||||
ppdu_info->ppdu_msdu_info[mpdu_cnt].first_msdu_payload =
|
||||
ppdu_info->ppdu_msdu_info[ppdu_info->fcs_ok_cnt].first_msdu_payload =
|
||||
rx_tlv;
|
||||
ppdu_info->ppdu_msdu_info[mpdu_cnt].payload_len = tlv_len;
|
||||
ppdu_info->ppdu_msdu_info[mpdu_cnt].nbuf = nbuf;
|
||||
ppdu_info->ppdu_msdu_info[ppdu_info->fcs_ok_cnt].payload_len = tlv_len;
|
||||
ppdu_info->msdu_info.first_msdu_payload = rx_tlv;
|
||||
ppdu_info->msdu_info.payload_len = tlv_len;
|
||||
ppdu_info->user_id = user_id;
|
||||
|
Reference in New Issue
Block a user