qcacmn: Clean up asserts in Spectral module - Part 6

Modify functions to return QDF_STATUS to handle assert conditions and
return appropriate status to the caller
1. target_if_spectral_phyerr.c

Change-Id: I8f9d320b774ef172bc3dd3609581b13694e1edfd
CRs-Fixed: 3591197
This commit is contained in:
Nagasai Bharat Gatkeshwar Sainoji 2023-08-28 14:45:14 +05:30 committed by Rahul Choudhary
parent 5e70737f80
commit 843a02da37

View File

@ -85,7 +85,11 @@ static inline void target_if_spectral_hexdump(unsigned char *_buf, int _len)
if (!mod) {
if (i) {
qdf_assert_always(loc < sizeof(hexdump_line));
if (loc >= sizeof(hexdump_line)) {
spectral_err("loc index is %u, greater than hexdump_line array size",
loc);
return;
}
loc += snprintf(&hexdump_line[loc],
sizeof(hexdump_line) - loc,
" %s", ascii);
@ -96,7 +100,11 @@ static inline void target_if_spectral_hexdump(unsigned char *_buf, int _len)
}
}
qdf_assert_always(loc < sizeof(hexdump_line));
if (loc >= sizeof(hexdump_line)) {
spectral_err("loc index is %u, greater than hexdump_line array size",
loc);
return;
}
loc += snprintf(&hexdump_line[loc], sizeof(hexdump_line) - loc,
" %02x", pc[i]);
@ -108,13 +116,21 @@ static inline void target_if_spectral_hexdump(unsigned char *_buf, int _len)
}
while ((i % SPECTRAL_HEXDUMP_NUM_OCTETS_PER_LINE) != 0) {
qdf_assert_always(loc < sizeof(hexdump_line));
if (loc >= sizeof(hexdump_line)) {
spectral_err("loc index is %u, greater than hexdump_line array size",
loc);
return;
}
loc += snprintf(&hexdump_line[loc], sizeof(hexdump_line) - loc,
" ");
i++;
}
qdf_assert_always(loc < sizeof(hexdump_line));
if (loc >= sizeof(hexdump_line)) {
spectral_err("loc index is %u, greater than hexdump_line array size",
loc);
return;
}
snprintf(&hexdump_line[loc], sizeof(hexdump_line) - loc, " %s", ascii);
spectral_debug("%s", hexdump_line);
}
@ -2657,25 +2673,30 @@ target_if_160mhz_delivery_state_change(struct target_if_spectral *spectral,
* target_if_get_detector_id_sscan_summary_report_gen3() - Get Spectral detector
* ID from Spectral summary report
* @data: Pointer to Spectral summary report
* @detector_id: Pointer to detector id
*
* Return: Detector ID
* Return: QDF_STATUS
*/
static uint8_t
target_if_get_detector_id_sscan_summary_report_gen3(uint8_t *data) {
static QDF_STATUS
target_if_get_detector_id_sscan_summary_report_gen3(uint8_t *data,
uint8_t *detector_id)
{
struct spectral_sscan_summary_report_gen3 *psscan_summary_report;
uint8_t detector_id;
qdf_assert_always(data);
if (!data) {
spectral_err("Argument(data) is null.");
return QDF_STATUS_E_NULL_VALUE;
}
psscan_summary_report =
(struct spectral_sscan_summary_report_gen3 *)data;
detector_id = get_bitfield(
*detector_id = get_bitfield(
psscan_summary_report->hdr_a,
SSCAN_SUMMARY_REPORT_HDR_A_DETECTOR_ID_SIZE_GEN3,
SSCAN_SUMMARY_REPORT_HDR_A_DETECTOR_ID_POS_GEN3);
return detector_id;
return QDF_STATUS_SUCCESS;
}
#ifndef OPTIMIZED_SAMP_MESSAGE
@ -2697,9 +2718,11 @@ target_if_consume_sscan_summary_report_gen3(
struct spectral_report_params *rparams) {
struct spectral_sscan_summary_report_gen3 *psscan_summary_report;
qdf_assert_always(data);
qdf_assert_always(fields);
qdf_assert_always(rparams);
if (!data || !fields || !rparams) {
spectral_err("null arguments: data %pK, fields %pK, rparams %pK.",
data, fields, rparams);
return;
}
psscan_summary_report =
(struct spectral_sscan_summary_report_gen3 *)data;
@ -2731,7 +2754,9 @@ target_if_consume_sscan_summary_report_gen3(
SSCAN_SUMMARY_REPORT_HDR_C_GAINCHANGE_POS_GEN3_V2);
break;
default:
qdf_assert_always(0);
spectral_err("Invalid spectral report format version: %d.",
rparams->version);
return;
}
}
#endif
@ -2937,17 +2962,23 @@ static void target_if_spectral_verify_ts(struct target_if_spectral *spectral,
* @raw_timestamp: Spectral time stamp reported by target
* @reset_delay: Reset delay at target
* @smode: Spectral scan mode
* @tstamp: Pointer to adjusted timestamp
*
* Correct time stamp to account for reset in time stamp due to target reset
*
* Return: Adjusted time stamp
* Return: QDF_STATUS
*/
static uint32_t
static QDF_STATUS
target_if_spectral_get_adjusted_timestamp(struct spectral_timestamp_war *twar,
uint32_t raw_timestamp,
uint32_t reset_delay,
enum spectral_scan_mode smode) {
qdf_assert_always(smode < SPECTRAL_SCAN_MODE_MAX);
enum spectral_scan_mode smode,
uint32_t *tstamp)
{
if (smode >= SPECTRAL_SCAN_MODE_MAX) {
spectral_err("Invalid spectral scan mode: %d", smode);
return QDF_STATUS_E_INVAL;
}
if (reset_delay) {
enum spectral_scan_mode m =
@ -2965,7 +2996,9 @@ target_if_spectral_get_adjusted_timestamp(struct spectral_timestamp_war *twar,
}
twar->last_fft_timestamp[smode] = raw_timestamp;
return raw_timestamp + twar->timestamp_war_offset[smode];
*tstamp = raw_timestamp + twar->timestamp_war_offset[smode];
return QDF_STATUS_SUCCESS;
}
#ifdef BIG_ENDIAN_HOST
@ -3043,7 +3076,7 @@ QDF_STATUS target_if_byte_swap_spectral_fft_bins_gen3(
*
* Consume Spectral summary report for gen3
*
* Return: Success/Failure
* Return: QDF_STATUS
*/
static QDF_STATUS
target_if_consume_sscan_summary_report_gen3(
@ -3054,6 +3087,8 @@ target_if_consume_sscan_summary_report_gen3(
struct spectral_sscan_summary_report_gen3 *psscan_summary_report;
struct spectral_sscan_summary_report_padding_gen3_v2 *padding;
bool scan_radio_blanking;
QDF_STATUS ret;
uint8_t dtr_id;
if (!data) {
spectral_err_rl("Summary report buffer is null");
@ -3078,8 +3113,12 @@ target_if_consume_sscan_summary_report_gen3(
return QDF_STATUS_E_FAILURE;
}
fields->sscan_detector_id =
target_if_get_detector_id_sscan_summary_report_gen3(*data);
ret = target_if_get_detector_id_sscan_summary_report_gen3(*data,
&dtr_id);
if (QDF_IS_STATUS_ERROR(ret))
return QDF_STATUS_E_FAILURE;
fields->sscan_detector_id = dtr_id;
if (fields->sscan_detector_id >=
spectral->rparams.num_spectral_detectors) {
spectral->diag_stats.spectral_invalid_detector_id++;
@ -3184,6 +3223,7 @@ target_if_process_sfft_report_gen3(
int32_t peak_sidx = 0;
int32_t peak_mag;
int fft_hdr_length = 0;
uint32_t tstamp;
struct target_if_spectral_ops *p_sops;
enum spectral_scan_mode spectral_mode;
QDF_STATUS ret;
@ -3265,11 +3305,17 @@ target_if_process_sfft_report_gen3(
p_sfft->timestamp = p_fft_report->fft_timestamp;
p_sfft->last_raw_timestamp = spectral->timestamp_war.
last_fft_timestamp[spectral_mode];
p_sfft->adjusted_timestamp = target_if_spectral_get_adjusted_timestamp(
ret = target_if_spectral_get_adjusted_timestamp(
&spectral->timestamp_war,
p_sfft->timestamp,
reset_delay,
spectral_mode);
spectral_mode,
&tstamp);
if (QDF_IS_STATUS_ERROR(ret))
return QDF_STATUS_E_FAILURE;
p_sfft->adjusted_timestamp = tstamp;
/* Timestamp verification */
target_if_spectral_verify_ts(spectral, data,
p_sfft->adjusted_timestamp,
@ -3709,10 +3755,12 @@ target_if_consume_spectral_report_gen3(
uint8_t vdev_rxchainmask;
struct sscan_report_fields_gen3 sscan_report_fields = {0};
enum spectral_detector_id detector_id;
uint8_t dtr_id;
QDF_STATUS ret;
enum spectral_scan_mode spectral_mode = SPECTRAL_SCAN_MODE_INVALID;
uint8_t *temp;
bool finite_scan = false;
uint32_t tstamp;
/* Apply byte-swap on the headers */
if (p_sops->byte_swap_headers) {
@ -3731,7 +3779,12 @@ target_if_consume_spectral_report_gen3(
goto fail;
}
detector_id = target_if_get_detector_id_sscan_summary_report_gen3(data);
ret = target_if_get_detector_id_sscan_summary_report_gen3(data,
&dtr_id);
if (QDF_IS_STATUS_ERROR(ret))
goto fail;
detector_id = dtr_id;
if (detector_id >= spectral->rparams.num_spectral_detectors) {
spectral->diag_stats.spectral_invalid_detector_id++;
spectral_err("Invalid detector id %u, expected is 0/1/2",
@ -3835,10 +3888,14 @@ target_if_consume_spectral_report_gen3(
last_fft_timestamp[spectral_mode];
params.reset_delay = report->reset_delay;
params.raw_timestamp = p_sfft->timestamp;
params.tstamp = target_if_spectral_get_adjusted_timestamp(
ret = target_if_spectral_get_adjusted_timestamp(
&spectral->timestamp_war,
p_sfft->timestamp, report->reset_delay,
spectral_mode);
spectral_mode, &tstamp);
if (QDF_IS_STATUS_ERROR(ret))
goto fail;
params.tstamp = tstamp;
params.timestamp_war_offset = spectral->timestamp_war.
timestamp_war_offset[spectral_mode];
params.target_reset_count = spectral->timestamp_war.