|
@@ -190,6 +190,8 @@ static int cnss_wlfw_ind_register_send_sync(struct cnss_plat_data *plat_priv)
|
|
|
req->respond_get_info_enable = 1;
|
|
|
req->wfc_call_twt_config_enable_valid = 1;
|
|
|
req->wfc_call_twt_config_enable = 1;
|
|
|
+ req->async_data_enable_valid = 1;
|
|
|
+ req->async_data_enable = 1;
|
|
|
|
|
|
ret = qmi_txn_init(&plat_priv->qmi_wlfw, &txn,
|
|
|
wlfw_ind_register_resp_msg_v01_ei, resp);
|
|
@@ -3108,6 +3110,33 @@ static void cnss_wlfw_respond_get_info_ind_cb(struct qmi_handle *qmi_wlfw,
|
|
|
ind_msg->data_len);
|
|
|
}
|
|
|
|
|
|
+static void cnss_wlfw_driver_async_data_ind_cb(struct qmi_handle *qmi_wlfw,
|
|
|
+ struct sockaddr_qrtr *sq,
|
|
|
+ struct qmi_txn *txn,
|
|
|
+ const void *data)
|
|
|
+{
|
|
|
+ struct cnss_plat_data *plat_priv =
|
|
|
+ container_of(qmi_wlfw, struct cnss_plat_data, qmi_wlfw);
|
|
|
+ const struct wlfw_driver_async_data_ind_msg_v01 *ind_msg = data;
|
|
|
+
|
|
|
+ cnss_pr_buf("Received QMI WLFW driver async data indication\n");
|
|
|
+
|
|
|
+ if (!txn) {
|
|
|
+ cnss_pr_err("Spurious indication\n");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ cnss_pr_buf("Extract message with event length: %d, type: %d\n",
|
|
|
+ ind_msg->data_len, ind_msg->type);
|
|
|
+
|
|
|
+ if (plat_priv->get_driver_async_data_ctx &&
|
|
|
+ plat_priv->get_driver_async_data_cb)
|
|
|
+ plat_priv->get_driver_async_data_cb(
|
|
|
+ plat_priv->get_driver_async_data_ctx, ind_msg->type,
|
|
|
+ (void *)ind_msg->data, ind_msg->data_len);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
static int cnss_ims_wfc_call_twt_cfg_send_sync
|
|
|
(struct cnss_plat_data *plat_priv,
|
|
|
const struct wlfw_wfc_call_twt_config_ind_msg_v01 *ind_msg)
|
|
@@ -3319,6 +3348,14 @@ static struct qmi_msg_handler qmi_wlfw_msg_handlers[] = {
|
|
|
sizeof(struct wlfw_wfc_call_twt_config_ind_msg_v01),
|
|
|
.fn = cnss_wlfw_process_twt_cfg_ind
|
|
|
},
|
|
|
+ {
|
|
|
+ .type = QMI_INDICATION,
|
|
|
+ .msg_id = QMI_WLFW_DRIVER_ASYNC_DATA_IND_V01,
|
|
|
+ .ei = wlfw_driver_async_data_ind_msg_v01_ei,
|
|
|
+ .decoded_size =
|
|
|
+ sizeof(struct wlfw_driver_async_data_ind_msg_v01),
|
|
|
+ .fn = cnss_wlfw_driver_async_data_ind_cb
|
|
|
+ },
|
|
|
{}
|
|
|
};
|
|
|
|