Loading dp/inc/cdp_txrx_stats_struct.h +48 −2 Original line number Diff line number Diff line /* * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2021 The Linux Foundation. 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 Loading Loading @@ -465,8 +465,46 @@ struct cdp_tidq_stats { * @rtt_che_buffer_pointer_low32 : The low 32 bits of the 40 bits pointer to * external RTT channel information buffer * * @rtt_cfo_measurement : raw cfo data extracted from hardware, which is 14 bit * signed number. The first bit used for sign representation and 13 bits for * fractional part. * * @agc_gain_info0: Chain 0 & chain 1 agc gain information reported by PHY * * @agc_gain_info1: Chain 2 & chain 3 agc gain information reported by PHY * * @agc_gain_info2: Chain 4 & chain 5 agc gain information reported by PHY * * @agc_gain_info3: Chain 6 & chain 7 agc gain information reported by PHY * * @rx_start_ts: Rx packet timestamp, the time the first L-STF ADC sample * arrived at Rx antenna. * * @mcs_rate: Indicates the mcs/rate in which packet is received. * If HT, * 0-7: MCS0-MCS7 * If VHT, * 0-9: MCS0 to MCS9 * If HE, * 0-11: MCS0 to MCS11, * 12-13: 4096QAM, * 14-15: reserved * If Legacy, * 0: 48 Mbps * 1: 24 Mbps * 2: 12 Mbps * 3: 6 Mbps * 4: 54 Mbps * 5: 36 Mbps * 6: 18 Mbps * 7: 9 Mbps * * @gi_type: Indicates the gaurd interval. * 0: 0.8 us * 1: 0.4 us * 2: 1.6 us * 3: 3.2 us */ struct cdp_rx_ppdu_cfr_info { bool bb_captured_channel; bool bb_captured_timeout; Loading @@ -475,6 +513,14 @@ struct cdp_rx_ppdu_cfr_info { uint8_t chan_capture_status; uint8_t rtt_che_buffer_pointer_high8; uint32_t rtt_che_buffer_pointer_low32; int16_t rtt_cfo_measurement; uint32_t agc_gain_info0; uint32_t agc_gain_info1; uint32_t agc_gain_info2; uint32_t agc_gain_info3; uint32_t rx_start_ts; uint32_t mcs_rate; uint32_t gi_type; }; #endif /* Loading dp/wifi3.0/dp_rx_mon_status.c +77 −2 Original line number Diff line number Diff line /* * Copyright (c) 2017-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2017-2021 The Linux Foundation. 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 Loading Loading @@ -489,6 +489,16 @@ dp_rx_populate_cdp_indication_ppdu(struct dp_pdev *pdev, cdp_rx_ppdu->lsig_a = ppdu_info->rx_status.rate; cdp_rx_ppdu->u.ltf_size = ppdu_info->rx_status.ltf_size; if (ppdu_info->rx_status.preamble_type == HAL_RX_PKT_TYPE_11AC) { cdp_rx_ppdu->u.stbc = ppdu_info->rx_status.is_stbc; } else if (ppdu_info->rx_status.preamble_type == HAL_RX_PKT_TYPE_11AX) { cdp_rx_ppdu->u.stbc = (ppdu_info->rx_status.he_data3 >> QDF_MON_STATUS_STBC_SHIFT) & 0x1; cdp_rx_ppdu->u.dcm = (ppdu_info->rx_status.he_data3 >> QDF_MON_STATUS_DCM_SHIFT) & 0x1; } dp_rx_populate_rx_rssi_chain(ppdu_info, cdp_rx_ppdu); dp_rx_populate_su_evm_details(ppdu_info, cdp_rx_ppdu); cdp_rx_ppdu->rx_antenna = ppdu_info->rx_status.rx_antenna; Loading Loading @@ -1187,17 +1197,66 @@ dp_rx_mon_populate_cfr_ppdu_info(struct dp_pdev *pdev, struct hal_rx_ppdu_info *ppdu_info, struct cdp_rx_indication_ppdu *cdp_rx_ppdu) { struct dp_peer *peer; struct dp_ast_entry *ast_entry; struct dp_soc *soc = pdev->soc; uint32_t ast_index; int chain; cdp_rx_ppdu->ppdu_id = ppdu_info->com_info.ppdu_id; cdp_rx_ppdu->timestamp = ppdu_info->rx_status.tsft; cdp_rx_ppdu->u.ppdu_type = ppdu_info->rx_status.reception_type; cdp_rx_ppdu->num_users = ppdu_info->com_info.num_users; for (chain = 0; chain < MAX_CHAIN; chain++) cdp_rx_ppdu->per_chain_rssi[chain] = ppdu_info->rx_status.rssi[chain]; cdp_rx_ppdu->u.ltf_size = ppdu_info->rx_status.ltf_size; cdp_rx_ppdu->beamformed = ppdu_info->rx_status.beamformed; cdp_rx_ppdu->u.ldpc = ppdu_info->rx_status.ldpc; if ((ppdu_info->rx_status.sgi == VHT_SGI_NYSM) && (ppdu_info->rx_status.preamble_type == HAL_RX_PKT_TYPE_11AC)) cdp_rx_ppdu->u.gi = CDP_SGI_0_4_US; else cdp_rx_ppdu->u.gi = ppdu_info->rx_status.sgi; if (ppdu_info->rx_status.preamble_type == HAL_RX_PKT_TYPE_11AC) { cdp_rx_ppdu->u.stbc = ppdu_info->rx_status.is_stbc; } else if (ppdu_info->rx_status.preamble_type == HAL_RX_PKT_TYPE_11AX) { cdp_rx_ppdu->u.stbc = (ppdu_info->rx_status.he_data3 >> QDF_MON_STATUS_STBC_SHIFT) & 0x1; cdp_rx_ppdu->u.dcm = (ppdu_info->rx_status.he_data3 >> QDF_MON_STATUS_DCM_SHIFT) & 0x1; } dp_rx_mon_handle_cfr_mu_info(pdev, ppdu_info, cdp_rx_ppdu); ast_index = ppdu_info->rx_status.ast_index; if (ast_index >= wlan_cfg_get_max_ast_idx(soc->wlan_cfg_ctx)) { cdp_rx_ppdu->peer_id = HTT_INVALID_PEER; cdp_rx_ppdu->num_users = 0; return; } ast_entry = soc->ast_table[ast_index]; if (!ast_entry || ast_entry->peer_id == HTT_INVALID_PEER) { cdp_rx_ppdu->peer_id = HTT_INVALID_PEER; cdp_rx_ppdu->num_users = 0; return; } peer = dp_peer_get_ref_by_id(soc, ast_entry->peer_id, DP_MOD_ID_RX_PPDU_STATS); if (!peer) { cdp_rx_ppdu->peer_id = HTT_INVALID_PEER; cdp_rx_ppdu->num_users = 0; return; } cdp_rx_ppdu->peer_id = peer->peer_id; cdp_rx_ppdu->vdev_id = peer->vdev->vdev_id; cdp_rx_ppdu->num_users = ppdu_info->com_info.num_users; } /** Loading Loading @@ -1247,6 +1306,22 @@ dp_rx_mon_populate_cfr_info(struct dp_pdev *pdev, = ppdu_info->cfr_info.rtt_che_buffer_pointer_high8; cfr_info->rtt_che_buffer_pointer_low32 = ppdu_info->cfr_info.rtt_che_buffer_pointer_low32; cfr_info->rtt_cfo_measurement = (int16_t)ppdu_info->cfr_info.rtt_cfo_measurement; cfr_info->agc_gain_info0 = ppdu_info->cfr_info.agc_gain_info0; cfr_info->agc_gain_info1 = ppdu_info->cfr_info.agc_gain_info1; cfr_info->agc_gain_info2 = ppdu_info->cfr_info.agc_gain_info2; cfr_info->agc_gain_info3 = ppdu_info->cfr_info.agc_gain_info3; cfr_info->rx_start_ts = ppdu_info->cfr_info.rx_start_ts; cfr_info->mcs_rate = ppdu_info->cfr_info.mcs_rate; cfr_info->gi_type = ppdu_info->cfr_info.gi_type; } /** Loading dp/wifi3.0/dp_tx_desc.h +3 −0 Original line number Diff line number Diff line Loading @@ -251,16 +251,19 @@ dp_tx_adjust_flow_pool_state(struct dp_soc *soc, soc->pause_cb(pool->flow_pool_id, WLAN_NETIF_PRIORITY_QUEUE_OFF, WLAN_DATA_FLOW_CTRL_PRI); /* fallthrough */ case FLOW_POOL_VO_PAUSED: soc->pause_cb(pool->flow_pool_id, WLAN_NETIF_VO_QUEUE_OFF, WLAN_DATA_FLOW_CTRL_VO); /* fallthrough */ case FLOW_POOL_VI_PAUSED: soc->pause_cb(pool->flow_pool_id, WLAN_NETIF_VI_QUEUE_OFF, WLAN_DATA_FLOW_CTRL_VI); /* fallthrough */ case FLOW_POOL_BE_BK_PAUSED: soc->pause_cb(pool->flow_pool_id, Loading dp/wifi3.0/dp_tx_flow_control.c +4 −0 Original line number Diff line number Diff line Loading @@ -137,21 +137,25 @@ dp_tx_flow_ctrl_reset_subqueues(struct dp_soc *soc, soc->pause_cb(pool->flow_pool_id, WLAN_NETIF_PRIORITY_QUEUE_ON, WLAN_DATA_FLOW_CTRL_PRI); /* fallthrough */ case FLOW_POOL_VO_PAUSED: soc->pause_cb(pool->flow_pool_id, WLAN_NETIF_VO_QUEUE_ON, WLAN_DATA_FLOW_CTRL_VO); /* fallthrough */ case FLOW_POOL_VI_PAUSED: soc->pause_cb(pool->flow_pool_id, WLAN_NETIF_VI_QUEUE_ON, WLAN_DATA_FLOW_CTRL_VI); /* fallthrough */ case FLOW_POOL_BE_BK_PAUSED: soc->pause_cb(pool->flow_pool_id, WLAN_NETIF_BE_BK_QUEUE_ON, WLAN_DATA_FLOW_CTRL_BE_BK); /* fallthrough */ default: break; } Loading hal/wifi3.0/hal_api_mon.h +49 −2 Original line number Diff line number Diff line /* * Copyright (c) 2017-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2017-2021 The Linux Foundation. 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 Loading Loading @@ -590,8 +590,47 @@ struct hal_rx_ppdu_cfr_user_info { * d. CAPTURE_NO_BUFFER: next buffer in IPC ring not available * * @cfr_user_info: Peer mac for upto 4 MU users * * @rtt_cfo_measurement : raw cfo data extracted from hardware, which is 14 bit * signed number. The first bit used for sign representation and 13 bits for * fractional part. * * @agc_gain_info0: Chain 0 & chain 1 agc gain information reported by PHY * * @agc_gain_info1: Chain 2 & chain 3 agc gain information reported by PHY * * @agc_gain_info2: Chain 4 & chain 5 agc gain information reported by PHY * * @agc_gain_info3: Chain 6 & chain 7 agc gain information reported by PHY * * @rx_start_ts: Rx packet timestamp, the time the first L-STF ADC sample * arrived at Rx antenna. * * @mcs_rate: Indicates the mcs/rate in which packet is received. * If HT, * 0-7: MCS0-MCS7 * If VHT, * 0-9: MCS0 to MCS9 * If HE, * 0-11: MCS0 to MCS11, * 12-13: 4096QAM, * 14-15: reserved * If Legacy, * 0: 48 Mbps * 1: 24 Mbps * 2: 12 Mbps * 3: 6 Mbps * 4: 54 Mbps * 5: 36 Mbps * 6: 18 Mbps * 7: 9 Mbps * * @gi_type: Indicates the gaurd interval. * 0: 0.8 us * 1: 0.4 us * 2: 1.6 us * 3: 3.2 us */ struct hal_rx_ppdu_cfr_info { bool bb_captured_channel; bool bb_captured_timeout; Loading @@ -601,6 +640,14 @@ struct hal_rx_ppdu_cfr_info { uint8_t rtt_che_buffer_pointer_high8; uint32_t rtt_che_buffer_pointer_low32; struct hal_rx_ppdu_cfr_user_info cfr_user_info[HAL_MAX_UL_MU_USERS]; int16_t rtt_cfo_measurement; uint32_t agc_gain_info0; uint32_t agc_gain_info1; uint32_t agc_gain_info2; uint32_t agc_gain_info3; uint32_t rx_start_ts; uint32_t mcs_rate; uint32_t gi_type; }; #else struct hal_rx_ppdu_cfr_info {}; Loading Loading
dp/inc/cdp_txrx_stats_struct.h +48 −2 Original line number Diff line number Diff line /* * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2016-2021 The Linux Foundation. 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 Loading Loading @@ -465,8 +465,46 @@ struct cdp_tidq_stats { * @rtt_che_buffer_pointer_low32 : The low 32 bits of the 40 bits pointer to * external RTT channel information buffer * * @rtt_cfo_measurement : raw cfo data extracted from hardware, which is 14 bit * signed number. The first bit used for sign representation and 13 bits for * fractional part. * * @agc_gain_info0: Chain 0 & chain 1 agc gain information reported by PHY * * @agc_gain_info1: Chain 2 & chain 3 agc gain information reported by PHY * * @agc_gain_info2: Chain 4 & chain 5 agc gain information reported by PHY * * @agc_gain_info3: Chain 6 & chain 7 agc gain information reported by PHY * * @rx_start_ts: Rx packet timestamp, the time the first L-STF ADC sample * arrived at Rx antenna. * * @mcs_rate: Indicates the mcs/rate in which packet is received. * If HT, * 0-7: MCS0-MCS7 * If VHT, * 0-9: MCS0 to MCS9 * If HE, * 0-11: MCS0 to MCS11, * 12-13: 4096QAM, * 14-15: reserved * If Legacy, * 0: 48 Mbps * 1: 24 Mbps * 2: 12 Mbps * 3: 6 Mbps * 4: 54 Mbps * 5: 36 Mbps * 6: 18 Mbps * 7: 9 Mbps * * @gi_type: Indicates the gaurd interval. * 0: 0.8 us * 1: 0.4 us * 2: 1.6 us * 3: 3.2 us */ struct cdp_rx_ppdu_cfr_info { bool bb_captured_channel; bool bb_captured_timeout; Loading @@ -475,6 +513,14 @@ struct cdp_rx_ppdu_cfr_info { uint8_t chan_capture_status; uint8_t rtt_che_buffer_pointer_high8; uint32_t rtt_che_buffer_pointer_low32; int16_t rtt_cfo_measurement; uint32_t agc_gain_info0; uint32_t agc_gain_info1; uint32_t agc_gain_info2; uint32_t agc_gain_info3; uint32_t rx_start_ts; uint32_t mcs_rate; uint32_t gi_type; }; #endif /* Loading
dp/wifi3.0/dp_rx_mon_status.c +77 −2 Original line number Diff line number Diff line /* * Copyright (c) 2017-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2017-2021 The Linux Foundation. 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 Loading Loading @@ -489,6 +489,16 @@ dp_rx_populate_cdp_indication_ppdu(struct dp_pdev *pdev, cdp_rx_ppdu->lsig_a = ppdu_info->rx_status.rate; cdp_rx_ppdu->u.ltf_size = ppdu_info->rx_status.ltf_size; if (ppdu_info->rx_status.preamble_type == HAL_RX_PKT_TYPE_11AC) { cdp_rx_ppdu->u.stbc = ppdu_info->rx_status.is_stbc; } else if (ppdu_info->rx_status.preamble_type == HAL_RX_PKT_TYPE_11AX) { cdp_rx_ppdu->u.stbc = (ppdu_info->rx_status.he_data3 >> QDF_MON_STATUS_STBC_SHIFT) & 0x1; cdp_rx_ppdu->u.dcm = (ppdu_info->rx_status.he_data3 >> QDF_MON_STATUS_DCM_SHIFT) & 0x1; } dp_rx_populate_rx_rssi_chain(ppdu_info, cdp_rx_ppdu); dp_rx_populate_su_evm_details(ppdu_info, cdp_rx_ppdu); cdp_rx_ppdu->rx_antenna = ppdu_info->rx_status.rx_antenna; Loading Loading @@ -1187,17 +1197,66 @@ dp_rx_mon_populate_cfr_ppdu_info(struct dp_pdev *pdev, struct hal_rx_ppdu_info *ppdu_info, struct cdp_rx_indication_ppdu *cdp_rx_ppdu) { struct dp_peer *peer; struct dp_ast_entry *ast_entry; struct dp_soc *soc = pdev->soc; uint32_t ast_index; int chain; cdp_rx_ppdu->ppdu_id = ppdu_info->com_info.ppdu_id; cdp_rx_ppdu->timestamp = ppdu_info->rx_status.tsft; cdp_rx_ppdu->u.ppdu_type = ppdu_info->rx_status.reception_type; cdp_rx_ppdu->num_users = ppdu_info->com_info.num_users; for (chain = 0; chain < MAX_CHAIN; chain++) cdp_rx_ppdu->per_chain_rssi[chain] = ppdu_info->rx_status.rssi[chain]; cdp_rx_ppdu->u.ltf_size = ppdu_info->rx_status.ltf_size; cdp_rx_ppdu->beamformed = ppdu_info->rx_status.beamformed; cdp_rx_ppdu->u.ldpc = ppdu_info->rx_status.ldpc; if ((ppdu_info->rx_status.sgi == VHT_SGI_NYSM) && (ppdu_info->rx_status.preamble_type == HAL_RX_PKT_TYPE_11AC)) cdp_rx_ppdu->u.gi = CDP_SGI_0_4_US; else cdp_rx_ppdu->u.gi = ppdu_info->rx_status.sgi; if (ppdu_info->rx_status.preamble_type == HAL_RX_PKT_TYPE_11AC) { cdp_rx_ppdu->u.stbc = ppdu_info->rx_status.is_stbc; } else if (ppdu_info->rx_status.preamble_type == HAL_RX_PKT_TYPE_11AX) { cdp_rx_ppdu->u.stbc = (ppdu_info->rx_status.he_data3 >> QDF_MON_STATUS_STBC_SHIFT) & 0x1; cdp_rx_ppdu->u.dcm = (ppdu_info->rx_status.he_data3 >> QDF_MON_STATUS_DCM_SHIFT) & 0x1; } dp_rx_mon_handle_cfr_mu_info(pdev, ppdu_info, cdp_rx_ppdu); ast_index = ppdu_info->rx_status.ast_index; if (ast_index >= wlan_cfg_get_max_ast_idx(soc->wlan_cfg_ctx)) { cdp_rx_ppdu->peer_id = HTT_INVALID_PEER; cdp_rx_ppdu->num_users = 0; return; } ast_entry = soc->ast_table[ast_index]; if (!ast_entry || ast_entry->peer_id == HTT_INVALID_PEER) { cdp_rx_ppdu->peer_id = HTT_INVALID_PEER; cdp_rx_ppdu->num_users = 0; return; } peer = dp_peer_get_ref_by_id(soc, ast_entry->peer_id, DP_MOD_ID_RX_PPDU_STATS); if (!peer) { cdp_rx_ppdu->peer_id = HTT_INVALID_PEER; cdp_rx_ppdu->num_users = 0; return; } cdp_rx_ppdu->peer_id = peer->peer_id; cdp_rx_ppdu->vdev_id = peer->vdev->vdev_id; cdp_rx_ppdu->num_users = ppdu_info->com_info.num_users; } /** Loading Loading @@ -1247,6 +1306,22 @@ dp_rx_mon_populate_cfr_info(struct dp_pdev *pdev, = ppdu_info->cfr_info.rtt_che_buffer_pointer_high8; cfr_info->rtt_che_buffer_pointer_low32 = ppdu_info->cfr_info.rtt_che_buffer_pointer_low32; cfr_info->rtt_cfo_measurement = (int16_t)ppdu_info->cfr_info.rtt_cfo_measurement; cfr_info->agc_gain_info0 = ppdu_info->cfr_info.agc_gain_info0; cfr_info->agc_gain_info1 = ppdu_info->cfr_info.agc_gain_info1; cfr_info->agc_gain_info2 = ppdu_info->cfr_info.agc_gain_info2; cfr_info->agc_gain_info3 = ppdu_info->cfr_info.agc_gain_info3; cfr_info->rx_start_ts = ppdu_info->cfr_info.rx_start_ts; cfr_info->mcs_rate = ppdu_info->cfr_info.mcs_rate; cfr_info->gi_type = ppdu_info->cfr_info.gi_type; } /** Loading
dp/wifi3.0/dp_tx_desc.h +3 −0 Original line number Diff line number Diff line Loading @@ -251,16 +251,19 @@ dp_tx_adjust_flow_pool_state(struct dp_soc *soc, soc->pause_cb(pool->flow_pool_id, WLAN_NETIF_PRIORITY_QUEUE_OFF, WLAN_DATA_FLOW_CTRL_PRI); /* fallthrough */ case FLOW_POOL_VO_PAUSED: soc->pause_cb(pool->flow_pool_id, WLAN_NETIF_VO_QUEUE_OFF, WLAN_DATA_FLOW_CTRL_VO); /* fallthrough */ case FLOW_POOL_VI_PAUSED: soc->pause_cb(pool->flow_pool_id, WLAN_NETIF_VI_QUEUE_OFF, WLAN_DATA_FLOW_CTRL_VI); /* fallthrough */ case FLOW_POOL_BE_BK_PAUSED: soc->pause_cb(pool->flow_pool_id, Loading
dp/wifi3.0/dp_tx_flow_control.c +4 −0 Original line number Diff line number Diff line Loading @@ -137,21 +137,25 @@ dp_tx_flow_ctrl_reset_subqueues(struct dp_soc *soc, soc->pause_cb(pool->flow_pool_id, WLAN_NETIF_PRIORITY_QUEUE_ON, WLAN_DATA_FLOW_CTRL_PRI); /* fallthrough */ case FLOW_POOL_VO_PAUSED: soc->pause_cb(pool->flow_pool_id, WLAN_NETIF_VO_QUEUE_ON, WLAN_DATA_FLOW_CTRL_VO); /* fallthrough */ case FLOW_POOL_VI_PAUSED: soc->pause_cb(pool->flow_pool_id, WLAN_NETIF_VI_QUEUE_ON, WLAN_DATA_FLOW_CTRL_VI); /* fallthrough */ case FLOW_POOL_BE_BK_PAUSED: soc->pause_cb(pool->flow_pool_id, WLAN_NETIF_BE_BK_QUEUE_ON, WLAN_DATA_FLOW_CTRL_BE_BK); /* fallthrough */ default: break; } Loading
hal/wifi3.0/hal_api_mon.h +49 −2 Original line number Diff line number Diff line /* * Copyright (c) 2017-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2017-2021 The Linux Foundation. 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 Loading Loading @@ -590,8 +590,47 @@ struct hal_rx_ppdu_cfr_user_info { * d. CAPTURE_NO_BUFFER: next buffer in IPC ring not available * * @cfr_user_info: Peer mac for upto 4 MU users * * @rtt_cfo_measurement : raw cfo data extracted from hardware, which is 14 bit * signed number. The first bit used for sign representation and 13 bits for * fractional part. * * @agc_gain_info0: Chain 0 & chain 1 agc gain information reported by PHY * * @agc_gain_info1: Chain 2 & chain 3 agc gain information reported by PHY * * @agc_gain_info2: Chain 4 & chain 5 agc gain information reported by PHY * * @agc_gain_info3: Chain 6 & chain 7 agc gain information reported by PHY * * @rx_start_ts: Rx packet timestamp, the time the first L-STF ADC sample * arrived at Rx antenna. * * @mcs_rate: Indicates the mcs/rate in which packet is received. * If HT, * 0-7: MCS0-MCS7 * If VHT, * 0-9: MCS0 to MCS9 * If HE, * 0-11: MCS0 to MCS11, * 12-13: 4096QAM, * 14-15: reserved * If Legacy, * 0: 48 Mbps * 1: 24 Mbps * 2: 12 Mbps * 3: 6 Mbps * 4: 54 Mbps * 5: 36 Mbps * 6: 18 Mbps * 7: 9 Mbps * * @gi_type: Indicates the gaurd interval. * 0: 0.8 us * 1: 0.4 us * 2: 1.6 us * 3: 3.2 us */ struct hal_rx_ppdu_cfr_info { bool bb_captured_channel; bool bb_captured_timeout; Loading @@ -601,6 +640,14 @@ struct hal_rx_ppdu_cfr_info { uint8_t rtt_che_buffer_pointer_high8; uint32_t rtt_che_buffer_pointer_low32; struct hal_rx_ppdu_cfr_user_info cfr_user_info[HAL_MAX_UL_MU_USERS]; int16_t rtt_cfo_measurement; uint32_t agc_gain_info0; uint32_t agc_gain_info1; uint32_t agc_gain_info2; uint32_t agc_gain_info3; uint32_t rx_start_ts; uint32_t mcs_rate; uint32_t gi_type; }; #else struct hal_rx_ppdu_cfr_info {}; Loading