qcacmn: Add 6GHz support for chan/freq/band usage in mesh mode
Currently mesh mode uses channel numbering which is derived from APIs that don't support 6GHz channels numbering due to the overloading of 6GHz channels with 2.4GHz and 5GHz. Add support to obtain the correct channel number (and auxiliary information like band and frequency) through the new APIs that support 6GHz. Change-Id: Ib0b39ebae2a22bd6b2b5d17b9058c3c2100e0d59 CRs-Fixed: 2605229
This commit is contained in:
@@ -1052,7 +1052,10 @@ struct ol_if_ops {
|
|||||||
uint16_t hdr_space);
|
uint16_t hdr_space);
|
||||||
|
|
||||||
uint8_t (*freq_to_channel)(struct cdp_ctrl_objmgr_psoc *psoc,
|
uint8_t (*freq_to_channel)(struct cdp_ctrl_objmgr_psoc *psoc,
|
||||||
uint8_t vdev_id, uint16_t freq);
|
uint8_t pdev_id, uint16_t freq);
|
||||||
|
|
||||||
|
uint8_t (*freq_to_band)(struct cdp_ctrl_objmgr_psoc *psoc,
|
||||||
|
uint8_t pdev_id, uint16_t freq);
|
||||||
|
|
||||||
#ifdef ATH_SUPPORT_NAC_RSSI
|
#ifdef ATH_SUPPORT_NAC_RSSI
|
||||||
int (*config_fw_for_nac_rssi)(struct cdp_ctrl_objmgr_psoc *psoc,
|
int (*config_fw_for_nac_rssi)(struct cdp_ctrl_objmgr_psoc *psoc,
|
||||||
|
@@ -2136,10 +2136,18 @@ static void dp_process_ppdu_stats_common_tlv(struct dp_pdev *pdev,
|
|||||||
if (freq != ppdu_desc->channel) {
|
if (freq != ppdu_desc->channel) {
|
||||||
soc = pdev->soc;
|
soc = pdev->soc;
|
||||||
ppdu_desc->channel = freq;
|
ppdu_desc->channel = freq;
|
||||||
|
pdev->operating_channel.freq = freq;
|
||||||
if (soc && soc->cdp_soc.ol_ops->freq_to_channel)
|
if (soc && soc->cdp_soc.ol_ops->freq_to_channel)
|
||||||
pdev->operating_channel =
|
pdev->operating_channel.num =
|
||||||
soc->cdp_soc.ol_ops->freq_to_channel(soc->ctrl_psoc,
|
soc->cdp_soc.ol_ops->freq_to_channel(soc->ctrl_psoc,
|
||||||
pdev->pdev_id, freq);
|
pdev->pdev_id,
|
||||||
|
freq);
|
||||||
|
|
||||||
|
if (soc && soc->cdp_soc.ol_ops->freq_to_band)
|
||||||
|
pdev->operating_channel.band =
|
||||||
|
soc->cdp_soc.ol_ops->freq_to_band(soc->ctrl_psoc,
|
||||||
|
pdev->pdev_id,
|
||||||
|
freq);
|
||||||
}
|
}
|
||||||
|
|
||||||
ppdu_desc->phy_mode = HTT_PPDU_STATS_COMMON_TLV_PHY_MODE_GET(*tag_buf);
|
ppdu_desc->phy_mode = HTT_PPDU_STATS_COMMON_TLV_PHY_MODE_GET(*tag_buf);
|
||||||
|
@@ -546,6 +546,9 @@ void dp_rx_fill_mesh_stats(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
|
|||||||
uint32_t nss;
|
uint32_t nss;
|
||||||
uint32_t rate_mcs;
|
uint32_t rate_mcs;
|
||||||
uint32_t bw;
|
uint32_t bw;
|
||||||
|
uint8_t primary_chan_num;
|
||||||
|
uint32_t center_chan_freq;
|
||||||
|
struct dp_soc *soc;
|
||||||
|
|
||||||
/* fill recv mesh stats */
|
/* fill recv mesh stats */
|
||||||
rx_info = qdf_mem_malloc(sizeof(struct mesh_recv_hdr_s));
|
rx_info = qdf_mem_malloc(sizeof(struct mesh_recv_hdr_s));
|
||||||
@@ -577,7 +580,18 @@ void dp_rx_fill_mesh_stats(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
|
|||||||
}
|
}
|
||||||
|
|
||||||
rx_info->rs_rssi = hal_rx_msdu_start_get_rssi(rx_tlv_hdr);
|
rx_info->rs_rssi = hal_rx_msdu_start_get_rssi(rx_tlv_hdr);
|
||||||
rx_info->rs_channel = hal_rx_msdu_start_get_freq(rx_tlv_hdr);
|
|
||||||
|
soc = vdev->pdev->soc;
|
||||||
|
primary_chan_num = hal_rx_msdu_start_get_freq(rx_tlv_hdr);
|
||||||
|
center_chan_freq = hal_rx_msdu_start_get_freq(rx_tlv_hdr) >> 16;
|
||||||
|
|
||||||
|
if (soc->cdp_soc.ol_ops && soc->cdp_soc.ol_ops->freq_to_band) {
|
||||||
|
rx_info->rs_band = soc->cdp_soc.ol_ops->freq_to_band(
|
||||||
|
soc->ctrl_psoc,
|
||||||
|
vdev->pdev->pdev_id,
|
||||||
|
center_chan_freq);
|
||||||
|
}
|
||||||
|
rx_info->rs_channel = primary_chan_num;
|
||||||
pkt_type = hal_rx_msdu_start_get_pkt_type(rx_tlv_hdr);
|
pkt_type = hal_rx_msdu_start_get_pkt_type(rx_tlv_hdr);
|
||||||
rate_mcs = hal_rx_msdu_start_rate_mcs_get(rx_tlv_hdr);
|
rate_mcs = hal_rx_msdu_start_rate_mcs_get(rx_tlv_hdr);
|
||||||
bw = hal_rx_msdu_start_bw_get(rx_tlv_hdr);
|
bw = hal_rx_msdu_start_bw_get(rx_tlv_hdr);
|
||||||
|
@@ -2834,7 +2834,8 @@ void dp_tx_comp_fill_tx_completion_stats(struct dp_tx_desc_s *tx_desc,
|
|||||||
|
|
||||||
mhdr = (struct meta_hdr_s *)qdf_nbuf_data(netbuf);
|
mhdr = (struct meta_hdr_s *)qdf_nbuf_data(netbuf);
|
||||||
mhdr->rssi = ts->ack_frame_rssi;
|
mhdr->rssi = ts->ack_frame_rssi;
|
||||||
mhdr->channel = tx_desc->pdev->operating_channel;
|
mhdr->band = tx_desc->pdev->operating_channel.band;
|
||||||
|
mhdr->channel = tx_desc->pdev->operating_channel.num;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
@@ -1581,7 +1581,11 @@ struct dp_pdev {
|
|||||||
struct hal_rx_ppdu_info ppdu_info;
|
struct hal_rx_ppdu_info ppdu_info;
|
||||||
|
|
||||||
/* operating channel */
|
/* operating channel */
|
||||||
uint8_t operating_channel;
|
struct {
|
||||||
|
uint8_t num;
|
||||||
|
uint8_t band;
|
||||||
|
uint16_t freq;
|
||||||
|
} operating_channel;
|
||||||
|
|
||||||
qdf_nbuf_queue_t rx_status_q;
|
qdf_nbuf_queue_t rx_status_q;
|
||||||
uint32_t mon_ppdu_status;
|
uint32_t mon_ppdu_status;
|
||||||
|
Reference in New Issue
Block a user