soc: qcom: wda: Conditionally register for dl marker
dl marker is enabled always if the power collapse feature is enabled. However, dl marker may not be required in certain configurations. CRs-fixed: 2560817 Change-Id: I3a251a3bf8cbab4434e2aa055783b4a3c3d1103a Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
This commit is contained in:
parent
0f89595e8d
commit
0d09372008
@ -711,6 +711,17 @@ struct net_device *rmnet_get_real_dev(void *port)
|
||||
}
|
||||
EXPORT_SYMBOL(rmnet_get_real_dev);
|
||||
|
||||
int rmnet_get_dlmarker_info(void *port)
|
||||
{
|
||||
if (!port)
|
||||
return 0;
|
||||
|
||||
return ((struct rmnet_port *)port)->data_format &
|
||||
(RMNET_INGRESS_FORMAT_DL_MARKER_V1 |
|
||||
RMNET_INGRESS_FORMAT_DL_MARKER_V2);
|
||||
}
|
||||
EXPORT_SYMBOL(rmnet_get_dlmarker_info);
|
||||
|
||||
#endif
|
||||
|
||||
/* Startup/Shutdown */
|
||||
|
@ -250,7 +250,8 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int wda_set_powersave_config_req(struct qmi_handle *wda_handle)
|
||||
static int wda_set_powersave_config_req(struct qmi_handle *wda_handle,
|
||||
int dl_marker)
|
||||
{
|
||||
struct wda_qmi_data *data = container_of(wda_handle,
|
||||
struct wda_qmi_data, handle);
|
||||
@ -280,7 +281,8 @@ static int wda_set_powersave_config_req(struct qmi_handle *wda_handle)
|
||||
req->ep_id.ep_type = data->svc.ep_type;
|
||||
req->ep_id.iface_id = data->svc.iface_id;
|
||||
req->req_data_cfg_valid = 1;
|
||||
req->req_data_cfg = WDA_DATA_POWERSAVE_CONFIG_ALL_MASK_V01;
|
||||
req->req_data_cfg = dl_marker ? WDA_DATA_POWERSAVE_CONFIG_ALL_MASK_V01 :
|
||||
WDA_DATA_POWERSAVE_CONFIG_FLOW_CTL_V01;
|
||||
ret = qmi_send_request(wda_handle, &data->ssctl, &txn,
|
||||
QMI_WDA_SET_POWERSAVE_CONFIG_REQ_V01,
|
||||
QMI_WDA_SET_POWERSAVE_CONFIG_REQ_V01_MAX_MSG_LEN,
|
||||
@ -312,11 +314,22 @@ static void wda_svc_config(struct work_struct *work)
|
||||
struct wda_qmi_data *data = container_of(work, struct wda_qmi_data,
|
||||
svc_arrive);
|
||||
struct qmi_info *qmi;
|
||||
int rc;
|
||||
int rc, dl_marker = 0;
|
||||
|
||||
while (!rtnl_trylock()) {
|
||||
if (!data->restart_state)
|
||||
cond_resched();
|
||||
else
|
||||
return;
|
||||
}
|
||||
|
||||
dl_marker = rmnet_get_dlmarker_info(data->rmnet_port);
|
||||
rtnl_unlock();
|
||||
|
||||
if (data->restart_state == 1)
|
||||
return;
|
||||
rc = wda_set_powersave_config_req(&data->handle);
|
||||
|
||||
rc = wda_set_powersave_config_req(&data->handle, dl_marker);
|
||||
if (rc < 0) {
|
||||
pr_err("%s Failed to init service, err[%d]\n", __func__, rc);
|
||||
return;
|
||||
@ -330,6 +343,7 @@ static void wda_svc_config(struct work_struct *work)
|
||||
else
|
||||
return;
|
||||
}
|
||||
|
||||
qmi = (struct qmi_info *)rmnet_get_qmi_pt(data->rmnet_port);
|
||||
if (!qmi) {
|
||||
rtnl_unlock();
|
||||
@ -344,7 +358,8 @@ static void wda_svc_config(struct work_struct *work)
|
||||
|
||||
rtnl_unlock();
|
||||
|
||||
pr_info("Connection established with the WDA Service\n");
|
||||
pr_info("Connection established with the WDA Service, DL Marker %s\n",
|
||||
dl_marker ? "enabled" : "disabled");
|
||||
}
|
||||
|
||||
static int wda_svc_arrive(struct qmi_handle *qmi, struct qmi_service *svc)
|
||||
|
@ -25,6 +25,7 @@ void rmnet_clear_powersave_format(void *port);
|
||||
void rmnet_get_packets(void *port, u64 *rx, u64 *tx);
|
||||
int rmnet_get_powersave_notif(void *port);
|
||||
struct net_device *rmnet_get_real_dev(void *port);
|
||||
int rmnet_get_dlmarker_info(void *port);
|
||||
#else
|
||||
static inline void *rmnet_get_qmi_pt(void *port)
|
||||
{
|
||||
@ -81,5 +82,10 @@ static inline struct net_device *rmnet_get_real_dev(void *port)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline int rmnet_get_dlmarker_info(void *port)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_QCOM_QMI_RMNET */
|
||||
#endif /*_RMNET_QMI_H*/
|
||||
|
Loading…
Reference in New Issue
Block a user