* [PATCH 1/2] ath11k: fix assignment of struct hal_rx_mon_ppdu_info::ldpc @ 2019-05-07 6:58 Kalle Valo 2019-05-07 6:58 ` [PATCH 2/2] ath11k: qmi: fix frame size warnings Kalle Valo 2019-05-08 9:46 ` [PATCH 1/2] ath11k: fix assignment of struct hal_rx_mon_ppdu_info::ldpc Kalle Valo 0 siblings, 2 replies; 3+ messages in thread From: Kalle Valo @ 2019-05-07 6:58 UTC (permalink / raw) To: ath11k ath11k_dp_rx_update_peer_stats() assumes that struct hal_rx_mon_ppdu_info::ldpc contains the value enum hal_rx_su_mu_coding but way it was assigned in ath11k_hal_rx_parse_mon_status_tlv() was completely broken. Fix that using FIELD_GET(). Fixes GCC warnings: drivers/net/wireless/ath/ath11k/hal_rx.c:932:45: warning: bitwise comparison always evaluates to false [-Wtautological-compare] drivers/net/wireless/ath/ath11k/hal_rx.c:985:50: warning: bitwise comparison always evaluates to false [-Wtautological-compare] drivers/net/wireless/ath/ath11k/hal_rx.c:1026:46: warning: bitwise comparison always evaluates to false [-Wtautological-compare] drivers/net/wireless/ath/ath11k/hal_rx.c:1110:51: warning: bitwise comparison always evaluates to false [-Wtautological-compare] drivers/net/wireless/ath/ath11k/hal_rx.c:1131:51: warning: bitwise comparison always evaluates to false [-Wtautological-compare] Only compile tested and I didn't check if the firmware interface definitions are correct. Signed-off-by: Kalle Valo <kvalo@codeaurora.org> --- drivers/net/wireless/ath/ath11k/hal_rx.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/hal_rx.c b/drivers/net/wireless/ath/ath11k/hal_rx.c index 2bdb53287d8e..b8a3e8714fff 100644 --- a/drivers/net/wireless/ath/ath11k/hal_rx.c +++ b/drivers/net/wireless/ath/ath11k/hal_rx.c @@ -928,9 +928,7 @@ ath11k_hal_rx_parse_mon_status_tlv(struct ath11k_base *ab, ppdu_info->bw = FIELD_GET(HAL_RX_HT_SIG_INFO_INFO0_BW, info0); ppdu_info->is_stbc = FIELD_GET(HAL_RX_HT_SIG_INFO_INFO1_STBC, info1); - ppdu_info->ldpc = (info1 & - HAL_RX_HT_SIG_INFO_INFO1_FEC_CODING) == - HAL_RX_SU_MU_CODING_LDPC; + ppdu_info->ldpc = FIELD_GET(HAL_RX_HT_SIG_INFO_INFO1_FEC_CODING, info1); ppdu_info->gi = info1 & HAL_RX_HT_SIG_INFO_INFO1_GI; switch (ppdu_info->mcs) { @@ -981,9 +979,8 @@ ath11k_hal_rx_parse_mon_status_tlv(struct ath11k_base *ab, info0 = __le32_to_cpu(vht_sig->info0); info1 = __le32_to_cpu(vht_sig->info1); - ppdu_info->ldpc = (info1 & - HAL_RX_VHT_SIG_A_INFO_INFO1_SU_MU_CODING) == - HAL_RX_SU_MU_CODING_LDPC; + ppdu_info->ldpc = FIELD_GET(HAL_RX_VHT_SIG_A_INFO_INFO1_SU_MU_CODING, + info0); ppdu_info->mcs = FIELD_GET(HAL_RX_VHT_SIG_A_INFO_INFO1_MCS, info1); ppdu_info->gi = @@ -1022,9 +1019,7 @@ ath11k_hal_rx_parse_mon_status_tlv(struct ath11k_base *ab, ppdu_info->bw = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO0_TRANSMIT_BW, info0); - ppdu_info->ldpc = (info1 & - HAL_RX_HE_SIG_A_SU_INFO_INFO1_CODING) == - HAL_RX_SU_MU_CODING_LDPC; + ppdu_info->ldpc = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO1_CODING, info0); ppdu_info->is_stbc = info1 & HAL_RX_HE_SIG_A_SU_INFO_INFO1_STBC; ppdu_info->beamformed = info1 & @@ -1106,9 +1101,8 @@ ath11k_hal_rx_parse_mon_status_tlv(struct ath11k_base *ab, ppdu_info->nss = FIELD_GET(HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_NSTS, info0) + 1; - ppdu_info->ldpc = (info0 & - HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_CODING) == - HAL_RX_SU_MU_CODING_LDPC; + ppdu_info->ldpc = FIELD_GET(HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_CODING, + info0); break; } case HAL_PHYRX_HE_SIG_B2_OFDMA: { @@ -1126,10 +1120,8 @@ ath11k_hal_rx_parse_mon_status_tlv(struct ath11k_base *ab, ppdu_info->beamformed = info0 & HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_TXBF; - ppdu_info->ldpc = - (info0 & - HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_CODING) == - HAL_RX_SU_MU_CODING_LDPC; + ppdu_info->ldpc = FIELD_GET(HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_CODING, + info0); ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_OFDMA; break; } -- 2.7.4 _______________________________________________ ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] ath11k: qmi: fix frame size warnings 2019-05-07 6:58 [PATCH 1/2] ath11k: fix assignment of struct hal_rx_mon_ppdu_info::ldpc Kalle Valo @ 2019-05-07 6:58 ` Kalle Valo 2019-05-08 9:46 ` [PATCH 1/2] ath11k: fix assignment of struct hal_rx_mon_ppdu_info::ldpc Kalle Valo 1 sibling, 0 replies; 3+ messages in thread From: Kalle Valo @ 2019-05-07 6:58 UTC (permalink / raw) To: ath11k GCC warned: drivers/net/wireless/ath/ath11k/qmi.c: In function 'ath11k_qmi_respond_fw_mem_request': drivers/net/wireless/ath/ath11k/qmi.c:1678:1: warning: the frame size of 1096 bytes is larger than 1024 bytes [-Wframe-larger-than=] drivers/net/wireless/ath/ath11k/qmi.c: In function 'ath11k_qmi_wlanfw_wlan_cfg_send': drivers/net/wireless/ath/ath11k/qmi.c:2094:1: warning: the frame size of 1136 bytes is larger than 1024 bytes [-Wframe-larger-than=] Fix that by allocating bigger structures dynamically. Compile tested only. Signed-off-by: Kalle Valo <kvalo@codeaurora.org> --- drivers/net/wireless/ath/ath11k/qmi.c | 67 ++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 29 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/qmi.c b/drivers/net/wireless/ath/ath11k/qmi.c index aca717ca1955..b862fa93bba8 100644 --- a/drivers/net/wireless/ath/ath11k/qmi.c +++ b/drivers/net/wireless/ath/ath11k/qmi.c @@ -1624,37 +1624,40 @@ static int ath11k_qmi_fw_ind_register_send(struct ath11k_base *ab) static int ath11k_qmi_respond_fw_mem_request(struct ath11k_base *ab) { - struct qmi_wlanfw_respond_mem_req_msg_v01 req; + struct qmi_wlanfw_respond_mem_req_msg_v01 *req; struct qmi_wlanfw_respond_mem_resp_msg_v01 resp; struct qmi_txn txn = {}; int ret = 0, i; - memset(&req, 0, sizeof(req)); + req = kzalloc(sizeof(*req), GFP_KERNEL); + if (!req) + return -ENOMEM; + memset(&resp, 0, sizeof(resp)); - req.mem_seg_len = ab->qmi.mem_seg_count; + req->mem_seg_len = ab->qmi.mem_seg_count; ret = qmi_txn_init(&ab->qmi.handle, &txn, qmi_wlanfw_respond_mem_resp_msg_v01_ei, &resp); if (ret < 0) goto out; - for (i = 0; i < req.mem_seg_len ; i++) { + for (i = 0; i < req->mem_seg_len ; i++) { if (!ab->qmi.target_mem[i].paddr || !ab->qmi.target_mem[i].size) { ath11k_warn(ab, "qmi invalid mem request for target\n"); ret = -EINVAL; goto out; } - req.mem_seg[i].addr = ab->qmi.target_mem[i].paddr; - req.mem_seg[i].size = ab->qmi.target_mem[i].size; - req.mem_seg[i].type = ab->qmi.target_mem[i].type; + req->mem_seg[i].addr = ab->qmi.target_mem[i].paddr; + req->mem_seg[i].size = ab->qmi.target_mem[i].size; + req->mem_seg[i].type = ab->qmi.target_mem[i].type; } ret = qmi_send_request(&ab->qmi.handle, NULL, &txn, QMI_WLANFW_RESPOND_MEM_REQ_V01, QMI_WLANFW_RESPOND_MEM_REQ_MSG_V01_MAX_LEN, - qmi_wlanfw_respond_mem_req_msg_v01_ei, &req); + qmi_wlanfw_respond_mem_req_msg_v01_ei, req); if (ret < 0) { ath11k_warn(ab, "qmi failed to respond memory request, err = %d\n", ret); @@ -1674,6 +1677,7 @@ static int ath11k_qmi_respond_fw_mem_request(struct ath11k_base *ab) goto out; } out: + kfree(req); return ret; } @@ -2021,7 +2025,7 @@ static int ath11k_qmi_wlanfw_mode_send(struct ath11k_base *ab, static int ath11k_qmi_wlanfw_wlan_cfg_send(struct ath11k_base *ab) { - struct qmi_wlanfw_wlan_cfg_req_msg_v01 req; + struct qmi_wlanfw_wlan_cfg_req_msg_v01 *req; struct qmi_wlanfw_wlan_cfg_resp_msg_v01 resp; struct ce_pipe_config *ce_cfg; struct service_to_pipe *svc_cfg; @@ -2030,36 +2034,40 @@ static int ath11k_qmi_wlanfw_wlan_cfg_send(struct ath11k_base *ab) ce_cfg = (struct ce_pipe_config *)ab->qmi.ce_cfg.tgt_ce; svc_cfg = (struct service_to_pipe *)ab->qmi.ce_cfg.svc_to_ce_map; - memset(&req, 0, sizeof(req)); + + req = kzalloc(sizeof(*req), GFP_KERNEL); + if (!req) + return -ENOMEM; + memset(&resp, 0, sizeof(resp)); - req.host_version_valid = 1; - strlcpy(req.host_version, ATH11K_HOST_VERSION_STRING, - sizeof(req.host_version)); + req->host_version_valid = 1; + strlcpy(req->host_version, ATH11K_HOST_VERSION_STRING, + sizeof(req->host_version)); - req.tgt_cfg_valid = 1; + req->tgt_cfg_valid = 1; /* This is number of CE configs */ - req.tgt_cfg_len = ((ab->qmi.ce_cfg.tgt_ce_len) / + req->tgt_cfg_len = ((ab->qmi.ce_cfg.tgt_ce_len) / (sizeof(struct ce_pipe_config))) - 1; - for (ret = 0; ret <= req.tgt_cfg_len ; ret++) { - req.tgt_cfg[ret].pipe_num = ce_cfg[ret].pipenum; - req.tgt_cfg[ret].pipe_dir = ce_cfg[ret].pipedir; - req.tgt_cfg[ret].nentries = ce_cfg[ret].nentries; - req.tgt_cfg[ret].nbytes_max = ce_cfg[ret].nbytes_max; - req.tgt_cfg[ret].flags = ce_cfg[ret].flags; + for (ret = 0; ret <= req->tgt_cfg_len ; ret++) { + req->tgt_cfg[ret].pipe_num = ce_cfg[ret].pipenum; + req->tgt_cfg[ret].pipe_dir = ce_cfg[ret].pipedir; + req->tgt_cfg[ret].nentries = ce_cfg[ret].nentries; + req->tgt_cfg[ret].nbytes_max = ce_cfg[ret].nbytes_max; + req->tgt_cfg[ret].flags = ce_cfg[ret].flags; } - req.svc_cfg_valid = 1; + req->svc_cfg_valid = 1; /* This is number of Service/CE configs */ - req.svc_cfg_len = (ab->qmi.ce_cfg.svc_to_ce_map_len) / + req->svc_cfg_len = (ab->qmi.ce_cfg.svc_to_ce_map_len) / (sizeof(struct service_to_pipe)); - for (ret = 0; ret < req.svc_cfg_len; ret++) { - req.svc_cfg[ret].service_id = svc_cfg[ret].service_id; - req.svc_cfg[ret].pipe_dir = svc_cfg[ret].pipedir; - req.svc_cfg[ret].pipe_num = svc_cfg[ret].pipenum; + for (ret = 0; ret < req->svc_cfg_len; ret++) { + req->svc_cfg[ret].service_id = svc_cfg[ret].service_id; + req->svc_cfg[ret].pipe_dir = svc_cfg[ret].pipedir; + req->svc_cfg[ret].pipe_num = svc_cfg[ret].pipenum; } - req.shadow_reg_valid = 0; - req.shadow_reg_v2_valid = 0; + req->shadow_reg_valid = 0; + req->shadow_reg_v2_valid = 0; ret = qmi_txn_init(&ab->qmi.handle, &txn, qmi_wlanfw_wlan_cfg_resp_msg_v01_ei, &resp); @@ -2090,6 +2098,7 @@ static int ath11k_qmi_wlanfw_wlan_cfg_send(struct ath11k_base *ab) } out: + kfree(req); return ret; } -- 2.7.4 _______________________________________________ ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 1/2] ath11k: fix assignment of struct hal_rx_mon_ppdu_info::ldpc 2019-05-07 6:58 [PATCH 1/2] ath11k: fix assignment of struct hal_rx_mon_ppdu_info::ldpc Kalle Valo 2019-05-07 6:58 ` [PATCH 2/2] ath11k: qmi: fix frame size warnings Kalle Valo @ 2019-05-08 9:46 ` Kalle Valo 1 sibling, 0 replies; 3+ messages in thread From: Kalle Valo @ 2019-05-08 9:46 UTC (permalink / raw) To: Kalle Valo; +Cc: ath11k Kalle Valo <kvalo@codeaurora.org> wrote: > ath11k_dp_rx_update_peer_stats() assumes that struct hal_rx_mon_ppdu_info::ldpc > contains the value enum hal_rx_su_mu_coding but way it was assigned in > ath11k_hal_rx_parse_mon_status_tlv() was completely broken. Fix that using > FIELD_GET(). > > Fixes GCC warnings: > > drivers/net/wireless/ath/ath11k/hal_rx.c:932:45: warning: bitwise comparison always evaluates to false [-Wtautological-compare] > drivers/net/wireless/ath/ath11k/hal_rx.c:985:50: warning: bitwise comparison always evaluates to false [-Wtautological-compare] > drivers/net/wireless/ath/ath11k/hal_rx.c:1026:46: warning: bitwise comparison always evaluates to false [-Wtautological-compare] > drivers/net/wireless/ath/ath11k/hal_rx.c:1110:51: warning: bitwise comparison always evaluates to false [-Wtautological-compare] > drivers/net/wireless/ath/ath11k/hal_rx.c:1131:51: warning: bitwise comparison always evaluates to false [-Wtautological-compare] > > Only compile tested and I didn't check if the firmware interface definitions are correct. > > Signed-off-by: Kalle Valo <kvalo@codeaurora.org> 2 patches applied to ath.git, thanks. 2c5fefcb949e ath11k: fix assignment of struct hal_rx_mon_ppdu_info::ldpc 1e3e4fdc27c6 ath11k: qmi: fix frame size warnings -- https://patchwork.kernel.org/patch/10932359/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches _______________________________________________ ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-05-08 9:46 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-05-07 6:58 [PATCH 1/2] ath11k: fix assignment of struct hal_rx_mon_ppdu_info::ldpc Kalle Valo 2019-05-07 6:58 ` [PATCH 2/2] ath11k: qmi: fix frame size warnings Kalle Valo 2019-05-08 9:46 ` [PATCH 1/2] ath11k: fix assignment of struct hal_rx_mon_ppdu_info::ldpc Kalle Valo
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.