qcacmn: Move edge extrabins at the end of bin_pwr array
Move the left band and right band edge extra bins to the end of the Spectral bin_pwr array. CRs-Fixed: 3002177 Change-Id: Iea93879763a7e2c56cdb5f4d3d163e2d4b082b26
This commit is contained in:

gecommit door
Madan Koyyalamudi

bovenliggende
9165949820
commit
e59d430af2
@@ -102,6 +102,7 @@ target_if_spectral_fill_samp_msg(struct target_if_spectral *spectral,
|
||||
uint16_t *binptr_16;
|
||||
uint16_t pwr_16;
|
||||
size_t pwr_count;
|
||||
uint16_t num_edge_bins;
|
||||
uint16_t idx;
|
||||
uint16_t start_bin_index;
|
||||
|
||||
@@ -127,10 +128,7 @@ target_if_spectral_fill_samp_msg(struct target_if_spectral *spectral,
|
||||
rb_edge_bins->start_bin_idx =
|
||||
map_det_info->rb_extrabins_start_idx;
|
||||
rb_edge_bins->num_bins = map_det_info->rb_extrabins_num;
|
||||
if (lb_edge_bins->num_bins)
|
||||
start_bin_index = lb_edge_bins->start_bin_idx;
|
||||
else
|
||||
start_bin_index = detector_info->start_bin_idx;
|
||||
start_bin_index = detector_info->start_bin_idx;
|
||||
|
||||
detector_info->rssi = params->rssi;
|
||||
|
||||
@@ -155,10 +153,9 @@ target_if_spectral_fill_samp_msg(struct target_if_spectral *spectral,
|
||||
bin_pwr_data = ¶ms->bin_pwr_data
|
||||
[map_det_info->src_start_bin_idx];
|
||||
pwr_count = detector_info->end_bin_idx -
|
||||
detector_info->start_bin_idx +
|
||||
lb_edge_bins->num_bins +
|
||||
rb_edge_bins->num_bins + 1;
|
||||
spec_samp_msg->bin_pwr_count += pwr_count;
|
||||
detector_info->start_bin_idx + 1;
|
||||
num_edge_bins = lb_edge_bins->num_bins +
|
||||
rb_edge_bins->num_bins;
|
||||
/*
|
||||
* To check whether FFT bin values exceed 8 bits, we add a
|
||||
* check before copying values to samp_data->bin_pwr.
|
||||
@@ -171,6 +168,19 @@ target_if_spectral_fill_samp_msg(struct target_if_spectral *spectral,
|
||||
if (swar->fftbin_size_war ==
|
||||
SPECTRAL_FFTBIN_SIZE_WAR_4BYTE_TO_1BYTE) {
|
||||
binptr_32 = (uint32_t *)bin_pwr_data;
|
||||
if (lb_edge_bins->num_bins > 0) {
|
||||
for (idx = 0; idx < lb_edge_bins->num_bins;
|
||||
idx++) {
|
||||
/* Read only the first 2 bytes of the DWORD */
|
||||
pwr_16 = *((uint16_t *)binptr_32++);
|
||||
if (qdf_unlikely(pwr_16 >
|
||||
MAX_FFTBIN_VALUE))
|
||||
pwr_16 = MAX_FFTBIN_VALUE;
|
||||
spec_samp_msg->bin_pwr
|
||||
[lb_edge_bins->start_bin_idx + idx]
|
||||
= pwr_16;
|
||||
}
|
||||
}
|
||||
for (idx = 0; idx < pwr_count; idx++) {
|
||||
/* Read only the first 2 bytes of the DWORD */
|
||||
pwr_16 = *((uint16_t *)binptr_32++);
|
||||
@@ -179,9 +189,34 @@ target_if_spectral_fill_samp_msg(struct target_if_spectral *spectral,
|
||||
spec_samp_msg->bin_pwr[start_bin_index + idx]
|
||||
= pwr_16;
|
||||
}
|
||||
if (rb_edge_bins->num_bins > 0) {
|
||||
for (idx = 0; idx < rb_edge_bins->num_bins;
|
||||
idx++) {
|
||||
/* Read only the first 2 bytes of the DWORD */
|
||||
pwr_16 = *((uint16_t *)binptr_32++);
|
||||
if (qdf_unlikely(pwr_16 >
|
||||
MAX_FFTBIN_VALUE))
|
||||
pwr_16 = MAX_FFTBIN_VALUE;
|
||||
spec_samp_msg->bin_pwr
|
||||
[rb_edge_bins->start_bin_idx + idx]
|
||||
= pwr_16;
|
||||
}
|
||||
}
|
||||
} else if (swar->fftbin_size_war ==
|
||||
SPECTRAL_FFTBIN_SIZE_WAR_2BYTE_TO_1BYTE) {
|
||||
binptr_16 = (uint16_t *)bin_pwr_data;
|
||||
if (lb_edge_bins->num_bins > 0) {
|
||||
for (idx = 0; idx < lb_edge_bins->num_bins;
|
||||
idx++) {
|
||||
pwr_16 = *(binptr_16++);
|
||||
if (qdf_unlikely(pwr_16 >
|
||||
MAX_FFTBIN_VALUE))
|
||||
pwr_16 = MAX_FFTBIN_VALUE;
|
||||
spec_samp_msg->bin_pwr
|
||||
[lb_edge_bins->start_bin_idx + idx]
|
||||
= pwr_16;
|
||||
}
|
||||
}
|
||||
for (idx = 0; idx < pwr_count; idx++) {
|
||||
pwr_16 = *(binptr_16++);
|
||||
if (qdf_unlikely(pwr_16 > MAX_FFTBIN_VALUE))
|
||||
@@ -189,10 +224,35 @@ target_if_spectral_fill_samp_msg(struct target_if_spectral *spectral,
|
||||
spec_samp_msg->bin_pwr[start_bin_index + idx]
|
||||
= pwr_16;
|
||||
}
|
||||
if (rb_edge_bins->num_bins > 0) {
|
||||
for (idx = 0; idx < rb_edge_bins->num_bins;
|
||||
idx++) {
|
||||
pwr_16 = *(binptr_16++);
|
||||
if (qdf_unlikely(pwr_16 >
|
||||
MAX_FFTBIN_VALUE))
|
||||
pwr_16 = MAX_FFTBIN_VALUE;
|
||||
spec_samp_msg->bin_pwr
|
||||
[rb_edge_bins->start_bin_idx + idx]
|
||||
= pwr_16;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (lb_edge_bins->num_bins > 0)
|
||||
qdf_mem_copy(&spec_samp_msg->bin_pwr
|
||||
[lb_edge_bins->start_bin_idx],
|
||||
&bin_pwr_data[0],
|
||||
lb_edge_bins->num_bins);
|
||||
qdf_mem_copy(&spec_samp_msg->bin_pwr[start_bin_index],
|
||||
bin_pwr_data, pwr_count);
|
||||
&bin_pwr_data[lb_edge_bins->num_bins],
|
||||
pwr_count);
|
||||
if (rb_edge_bins->num_bins > 0)
|
||||
qdf_mem_copy(&spec_samp_msg->bin_pwr
|
||||
[rb_edge_bins->start_bin_idx],
|
||||
&bin_pwr_data[pwr_count +
|
||||
lb_edge_bins->num_bins],
|
||||
rb_edge_bins->num_bins);
|
||||
}
|
||||
spec_samp_msg->bin_pwr_count += (pwr_count + num_edge_bins);
|
||||
}
|
||||
|
||||
if (det_map->send_to_upper_layers) {
|
||||
|
@@ -1069,6 +1069,8 @@ target_if_populate_fft_bins_info(struct target_if_spectral *spectral,
|
||||
detector_list = &spectral->detector_list[smode][ch_width];
|
||||
|
||||
for (det = 0; det < detector_list->num_detectors; det++) {
|
||||
uint16_t lb_extrabins_offset = 0;
|
||||
|
||||
det_map = &spectral->det_map
|
||||
[detector_list->detectors[det]];
|
||||
dest_det_info = &det_map->dest_det_info[0];
|
||||
@@ -1079,12 +1081,14 @@ target_if_populate_fft_bins_info(struct target_if_spectral *spectral,
|
||||
if (ch_width == CH_WIDTH_160MHZ &&
|
||||
is_fragmentation_160 &&
|
||||
spectral->report_info[smode].pri20_freq >
|
||||
spectral->report_info[smode].sscan_cfreq1)
|
||||
start_bin = num_fft_bins +
|
||||
spectral->report_info[smode].sscan_cfreq1) {
|
||||
start_bin = num_fft_bins;
|
||||
lb_extrabins_offset =
|
||||
dest_det_info->lb_extrabins_num +
|
||||
dest_det_info->rb_extrabins_num;
|
||||
else
|
||||
} else {
|
||||
start_bin = 0;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (ch_width == CH_WIDTH_160MHZ &&
|
||||
@@ -1092,24 +1096,34 @@ target_if_populate_fft_bins_info(struct target_if_spectral *spectral,
|
||||
spectral->report_info[smode].pri20_freq >
|
||||
spectral->report_info[smode].sscan_cfreq1)
|
||||
start_bin = 0;
|
||||
else
|
||||
start_bin = num_fft_bins +
|
||||
else {
|
||||
start_bin = num_fft_bins;
|
||||
lb_extrabins_offset =
|
||||
dest_det_info->lb_extrabins_num +
|
||||
dest_det_info->rb_extrabins_num;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
dest_det_info->dest_start_bin_idx = start_bin +
|
||||
dest_det_info->lb_extrabins_num;
|
||||
dest_det_info->dest_start_bin_idx = start_bin;
|
||||
dest_det_info->dest_end_bin_idx =
|
||||
dest_det_info->dest_start_bin_idx +
|
||||
num_fft_bins - 1;
|
||||
if (dest_det_info->lb_extrabins_num)
|
||||
dest_det_info->lb_extrabins_start_idx = start_bin;
|
||||
if (dest_det_info->lb_extrabins_num) {
|
||||
if (is_ch_width_160_or_80p80(ch_width)) {
|
||||
dest_det_info->lb_extrabins_start_idx =
|
||||
2 * num_fft_bins +
|
||||
lb_extrabins_offset;
|
||||
} else {
|
||||
dest_det_info->lb_extrabins_start_idx =
|
||||
num_fft_bins;
|
||||
}
|
||||
}
|
||||
if (dest_det_info->rb_extrabins_num)
|
||||
dest_det_info->rb_extrabins_start_idx = 1 +
|
||||
dest_det_info->dest_end_bin_idx;
|
||||
dest_det_info->rb_extrabins_start_idx =
|
||||
dest_det_info->lb_extrabins_start_idx +
|
||||
dest_det_info->lb_extrabins_num;
|
||||
dest_det_info->src_start_bin_idx = 0;
|
||||
}
|
||||
|
||||
|
Verwijs in nieuw issue
Block a user