ath10k: Add QMI HOST CAP request support
PATCH 9/12 ath10k: Add QMI HOST CAP request support
Add support for host capablity request
qmi message for wcn3990 target.
--- drivers/net/wireless/ath/ath10k/qmi.c | 65 +++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+)
drivers/net/wireless/ath/ath10k/qmi.c +65 -0
@@ -357,6 +357,67 @@ static int ath10k_qmi_cap_send_sync_msg(struct ath10k_qmi *qmi)return ret; } +static int ath10k_qmi_host_cap_send_sync (struct ath10k_qmi *qmi) +{ +struct wlfw_host_cap_resp_msg_v01 *resp; +struct wlfw_host_cap_req_msg_v01 *req; +struct qmi_txn txn; +int ret; + + req =kzalloc (sizeof (*req),GFP_KERNEL ); +if (!req) +return -ENOMEM ; + + resp =kzalloc (sizeof (*resp),GFP_KERNEL ); +if (!resp) { +kfree (req); +return -ENOMEM ; + } + + req->daemon_support_valid =1 ; + req->daemon_support =0 ; + +pr_debug ("daemon_support is %d\n" , req->daemon_support); + + ret =qmi_txn_init (&qmi->qmi_hdl, &txn, + wlfw_host_cap_resp_msg_v01_ei, resp); +if (ret <0 ) { +pr_err ("Fail to init txn for Capability resp %d\n" , ret); + goto out; + } + + ret =qmi_send_request (&qmi->qmi_hdl,NULL , &txn, +QMI_WLFW_HOST_CAP_REQ_V01 , +WLFW_HOST_CAP_REQ_MSG_V01_MAX_MSG_LEN , + wlfw_host_cap_req_msg_v01_ei, req); +if (ret <0 ) { +qmi_txn_cancel (&txn); +pr_err ("Fail to send Capability req %d\n" , ret); + goto out; + } + + ret =qmi_txn_wait (&txn,WLFW_TIMEOUT *HZ ); +if (ret <0 ) + goto out; + +if (resp->resp.result !=QMI_RESULT_SUCCESS_V01 ) { +pr_err ("qmi host capability req rejected, result:%d error:%d\n" , + resp->resp.result, resp->resp.error); + ret = -resp->resp.result; + goto out; + } + +pr_debug ("host cap request completed\n" ); +kfree (resp); +kfree (req); +return 0 ; + +out: +kfree (resp); +kfree (req); +return ret; +} +static int ath10k_qmi_ind_register_send_sync_msg (struct ath10k_qmi *qmi) {
@@ -500,6 +561,10 @@ static void ath10k_qmi_event_server_arrive(struct work_struct *work)if (ret)return ; + ret =ath10k_qmi_host_cap_send_sync (qmi); +if (ret) +return ; + ret =ath10k_qmi_msa_mem_info_send_sync_msg (qmi);if (ret)return ;
Signature · 1 line
1.9.1
Quoted 13 lines · Govind Singh
Add support for host capablity request
qmi message for wcn3990 target.Signed-off-by Govind Singh <[email protected]>--- drivers/net/wireless/ath/ath10k/qmi.c | 65 +++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+)drivers/net/wireless/ath/ath10k/qmi.c +0
-0
drivers/net/wireless/ath/ath10k/qmi.c static int ath10k_qmi_cap_send_sync_msg(struct ath10k_qmi *qmi) · line 362
Quoted 6 lines
drivers/net/wireless/ath/ath10k/qmi.c +3
-0@@ -357,6 +357,67 @@ static int ath10k_qmi_cap_send_sync_msg(struct ath10k_qmi *qmi)return ret; } +static int ath10k_qmi_host_cap_send_sync (struct ath10k_qmi *qmi) +{ +struct wlfw_host_cap_resp_msg_v01 *resp;
This is 4 bytes,
drivers/net/wireless/ath/ath10k/qmi.c static int ath10k_qmi_cap_send_sync_msg(struct ath10k_qmi *qmi) · line 363
Quoted 1 line
drivers/net/wireless/ath/ath10k/qmi.c +1
-0+struct wlfw_host_cap_req_msg_v01 *req;
and this is 2 bytes, use the stack.
Quoted 7 lines
drivers/net/wireless/ath/ath10k/qmi.c +7
-0+struct qmi_txn txn; +int ret; + + req =kzalloc (sizeof (*req),GFP_KERNEL ); +if (!req) +return -ENOMEM ; +
drivers/net/wireless/ath/ath10k/qmi.c static int ath10k_qmi_cap_send_sync_msg(struct ath10k_qmi *qmi) · line 380
Quoted 10 lines
drivers/net/wireless/ath/ath10k/qmi.c +10
-0+ resp =kzalloc (sizeof (*resp),GFP_KERNEL ); +if (!resp) { +kfree (req); +return -ENOMEM ; + } + + req->daemon_support_valid =1 ; + req->daemon_support =0 ; + +pr_debug ("daemon_support is %d\n" , req->daemon_support);
This print seems unnecessary.
drivers/net/wireless/ath/ath10k/qmi.c static int ath10k_qmi_cap_send_sync_msg(struct ath10k_qmi *qmi) · line 385
Quoted 5 lines
drivers/net/wireless/ath/ath10k/qmi.c +5
-0+ + ret =qmi_txn_init (&qmi->qmi_hdl, &txn, + wlfw_host_cap_resp_msg_v01_ei, resp); +if (ret <0 ) { +pr_err ("Fail to init txn for Capability resp %d\n" , ret);
Same comments the rest of the function as given on previous patches.
drivers/net/wireless/ath/ath10k/qmi.c static int ath10k_qmi_cap_send_sync_msg(struct ath10k_qmi *qmi) · line 387
Quoted 2 lines
drivers/net/wireless/ath/ath10k/qmi.c +2
-0+ goto out; + }
Regards,
Bjorn