Loading net/qrtr/haven.c +1 −1 Original line number Diff line number Diff line Loading @@ -612,7 +612,7 @@ static int qrtr_haven_probe(struct platform_device *pdev) INIT_WORK(&qdev->work, qrtr_haven_retry_work); qdev->ep.xmit = qrtr_haven_send; ret = qrtr_endpoint_register(&qdev->ep, QRTR_EP_NET_ID_AUTO, false); ret = qrtr_endpoint_register(&qdev->ep, QRTR_EP_NET_ID_AUTO, false, NULL); if (ret) goto register_fail; Loading net/qrtr/mhi.c +1 −1 Original line number Diff line number Diff line Loading @@ -176,7 +176,7 @@ static int qcom_mhi_qrtr_probe(struct mhi_device *mhi_dev, dev_set_drvdata(&mhi_dev->dev, qdev); rc = qrtr_endpoint_register(&qdev->ep, net_id, rt); rc = qrtr_endpoint_register(&qdev->ep, net_id, rt, NULL); if (rc) return rc; Loading net/qrtr/mhi_dev.c +1 −1 Original line number Diff line number Diff line Loading @@ -182,7 +182,7 @@ static void qrtr_mhi_dev_state_cb(struct mhi_dev_client_cb_data *cb_data) return; } rc = qrtr_endpoint_register(&qep->ep, qep->net_id, qep->rt); rc = qrtr_endpoint_register(&qep->ep, qep->net_id, qep->rt, NULL); if (rc) { dev_err(qep->dev, "register failed %d\n", rc); qrtr_mhi_dev_close_channels(qep); Loading net/qrtr/qrtr.c +24 −3 Original line number Diff line number Diff line Loading @@ -142,6 +142,7 @@ static DEFINE_SPINLOCK(qrtr_port_lock); #define QRTR_BACKUP_HI_SIZE SZ_16K #define QRTR_BACKUP_LO_NUM 20 #define QRTR_BACKUP_LO_SIZE SZ_1K static struct sk_buff_head qrtr_backup_lo; static struct sk_buff_head qrtr_backup_hi; static struct work_struct qrtr_backup_work; Loading Loading @@ -190,6 +191,8 @@ struct qrtr_node { struct wakeup_source *ws; void *ilc; u32 nonwake_svc[MAX_NON_WAKE_SVC_LEN]; }; struct qrtr_tx_flow_waiter { Loading Loading @@ -838,7 +841,9 @@ int qrtr_endpoint_post(struct qrtr_endpoint *ep, const void *data, size_t len) size_t size; unsigned int ver; size_t hdrlen; int errcode; int errcode, i; bool wake = true; int svc_id; if (len == 0 || len & 3) return -EINVAL; Loading Loading @@ -938,9 +943,22 @@ int qrtr_endpoint_post(struct qrtr_endpoint *ep, const void *data, size_t len) goto err; /* Force wakeup for all packets except for sensors */ if (node->nid != 9) if (node->nid != 9 && node->nid != 5) pm_wakeup_ws_event(node->ws, qrtr_wakeup_ms, true); if (node->nid == 5) { svc_id = qrtr_get_service_id(cb->src_node, cb->src_port); if (svc_id > 0) { for (i = 0; i < MAX_NON_WAKE_SVC_LEN; i++) { if (svc_id == node->nonwake_svc[i]) { wake = false; break; } } } if (wake) pm_wakeup_ws_event(node->ws, qrtr_wakeup_ms, true); } qrtr_port_put(ipc); } Loading Loading @@ -1149,7 +1167,7 @@ static void qrtr_hello_work(struct kthread_work *work) * The specified endpoint must have the xmit function pointer set on call. */ int qrtr_endpoint_register(struct qrtr_endpoint *ep, unsigned int net_id, bool rt) bool rt, u32 *svc_arr) { struct qrtr_node *node; struct sched_param param = {.sched_priority = 1}; Loading Loading @@ -1180,6 +1198,9 @@ int qrtr_endpoint_register(struct qrtr_endpoint *ep, unsigned int net_id, if (rt) sched_setscheduler(node->task, SCHED_FIFO, ¶m); if (svc_arr) memcpy(node->nonwake_svc, svc_arr, MAX_NON_WAKE_SVC_LEN * sizeof(int)); mutex_init(&node->qrtr_tx_lock); INIT_RADIX_TREE(&node->qrtr_tx_flow, GFP_KERNEL); init_waitqueue_head(&node->resume_tx); Loading net/qrtr/qrtr.h +3 −1 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ struct sk_buff; #define QRTR_DEL_PROC_MAGIC 0xe111 #define MAX_NON_WAKE_SVC_LEN 5 /** * struct qrtr_endpoint - endpoint handle * @xmit: Callback for outgoing packets Loading @@ -27,7 +29,7 @@ struct qrtr_endpoint { }; int qrtr_endpoint_register(struct qrtr_endpoint *ep, unsigned int net_id, bool rt); bool rt, u32 *svc_arr); void qrtr_endpoint_unregister(struct qrtr_endpoint *ep); Loading Loading
net/qrtr/haven.c +1 −1 Original line number Diff line number Diff line Loading @@ -612,7 +612,7 @@ static int qrtr_haven_probe(struct platform_device *pdev) INIT_WORK(&qdev->work, qrtr_haven_retry_work); qdev->ep.xmit = qrtr_haven_send; ret = qrtr_endpoint_register(&qdev->ep, QRTR_EP_NET_ID_AUTO, false); ret = qrtr_endpoint_register(&qdev->ep, QRTR_EP_NET_ID_AUTO, false, NULL); if (ret) goto register_fail; Loading
net/qrtr/mhi.c +1 −1 Original line number Diff line number Diff line Loading @@ -176,7 +176,7 @@ static int qcom_mhi_qrtr_probe(struct mhi_device *mhi_dev, dev_set_drvdata(&mhi_dev->dev, qdev); rc = qrtr_endpoint_register(&qdev->ep, net_id, rt); rc = qrtr_endpoint_register(&qdev->ep, net_id, rt, NULL); if (rc) return rc; Loading
net/qrtr/mhi_dev.c +1 −1 Original line number Diff line number Diff line Loading @@ -182,7 +182,7 @@ static void qrtr_mhi_dev_state_cb(struct mhi_dev_client_cb_data *cb_data) return; } rc = qrtr_endpoint_register(&qep->ep, qep->net_id, qep->rt); rc = qrtr_endpoint_register(&qep->ep, qep->net_id, qep->rt, NULL); if (rc) { dev_err(qep->dev, "register failed %d\n", rc); qrtr_mhi_dev_close_channels(qep); Loading
net/qrtr/qrtr.c +24 −3 Original line number Diff line number Diff line Loading @@ -142,6 +142,7 @@ static DEFINE_SPINLOCK(qrtr_port_lock); #define QRTR_BACKUP_HI_SIZE SZ_16K #define QRTR_BACKUP_LO_NUM 20 #define QRTR_BACKUP_LO_SIZE SZ_1K static struct sk_buff_head qrtr_backup_lo; static struct sk_buff_head qrtr_backup_hi; static struct work_struct qrtr_backup_work; Loading Loading @@ -190,6 +191,8 @@ struct qrtr_node { struct wakeup_source *ws; void *ilc; u32 nonwake_svc[MAX_NON_WAKE_SVC_LEN]; }; struct qrtr_tx_flow_waiter { Loading Loading @@ -838,7 +841,9 @@ int qrtr_endpoint_post(struct qrtr_endpoint *ep, const void *data, size_t len) size_t size; unsigned int ver; size_t hdrlen; int errcode; int errcode, i; bool wake = true; int svc_id; if (len == 0 || len & 3) return -EINVAL; Loading Loading @@ -938,9 +943,22 @@ int qrtr_endpoint_post(struct qrtr_endpoint *ep, const void *data, size_t len) goto err; /* Force wakeup for all packets except for sensors */ if (node->nid != 9) if (node->nid != 9 && node->nid != 5) pm_wakeup_ws_event(node->ws, qrtr_wakeup_ms, true); if (node->nid == 5) { svc_id = qrtr_get_service_id(cb->src_node, cb->src_port); if (svc_id > 0) { for (i = 0; i < MAX_NON_WAKE_SVC_LEN; i++) { if (svc_id == node->nonwake_svc[i]) { wake = false; break; } } } if (wake) pm_wakeup_ws_event(node->ws, qrtr_wakeup_ms, true); } qrtr_port_put(ipc); } Loading Loading @@ -1149,7 +1167,7 @@ static void qrtr_hello_work(struct kthread_work *work) * The specified endpoint must have the xmit function pointer set on call. */ int qrtr_endpoint_register(struct qrtr_endpoint *ep, unsigned int net_id, bool rt) bool rt, u32 *svc_arr) { struct qrtr_node *node; struct sched_param param = {.sched_priority = 1}; Loading Loading @@ -1180,6 +1198,9 @@ int qrtr_endpoint_register(struct qrtr_endpoint *ep, unsigned int net_id, if (rt) sched_setscheduler(node->task, SCHED_FIFO, ¶m); if (svc_arr) memcpy(node->nonwake_svc, svc_arr, MAX_NON_WAKE_SVC_LEN * sizeof(int)); mutex_init(&node->qrtr_tx_lock); INIT_RADIX_TREE(&node->qrtr_tx_flow, GFP_KERNEL); init_waitqueue_head(&node->resume_tx); Loading
net/qrtr/qrtr.h +3 −1 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ struct sk_buff; #define QRTR_DEL_PROC_MAGIC 0xe111 #define MAX_NON_WAKE_SVC_LEN 5 /** * struct qrtr_endpoint - endpoint handle * @xmit: Callback for outgoing packets Loading @@ -27,7 +29,7 @@ struct qrtr_endpoint { }; int qrtr_endpoint_register(struct qrtr_endpoint *ep, unsigned int net_id, bool rt); bool rt, u32 *svc_arr); void qrtr_endpoint_unregister(struct qrtr_endpoint *ep); Loading