Loading drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c +11 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading drivers/soc/qcom/wda_qmi.c +20 −5 Original line number Diff line number Diff line Loading @@ -250,7 +250,8 @@ static int wda_set_powersave_mode_req(void *wda_data, uint8_t enable) 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); Loading Loading @@ -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, Loading Loading @@ -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; Loading @@ -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(); Loading @@ -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) Loading include/soc/qcom/rmnet_qmi.h +6 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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
drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c +11 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading
drivers/soc/qcom/wda_qmi.c +20 −5 Original line number Diff line number Diff line Loading @@ -250,7 +250,8 @@ static int wda_set_powersave_mode_req(void *wda_data, uint8_t enable) 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); Loading Loading @@ -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, Loading Loading @@ -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; Loading @@ -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(); Loading @@ -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) Loading
include/soc/qcom/rmnet_qmi.h +6 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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*/