Loading drivers/rpmsg/qcom_glink_native.c +6 −1 Original line number Diff line number Diff line Loading @@ -56,6 +56,8 @@ do { \ #define RPM_GLINK_CID_MAX 65536 static int should_wake; int glink_resume_pkt; EXPORT_SYMBOL(glink_resume_pkt); struct glink_msg { __le16 cmd; Loading Loading @@ -1246,8 +1248,11 @@ static irqreturn_t qcom_glink_native_intr(int irq, void *data) unsigned int cmd; int ret = 0; if (should_wake) if (should_wake) { pr_info("%s: %d triggered %s\n", __func__, irq, glink->irqname); glink_resume_pkt = true; pm_system_wakeup(); } /* To wakeup any blocking writers */ wake_up_all(&glink->tx_avail_notify); Loading drivers/rpmsg/qcom_glink_native.h +1 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ struct qcom_glink_pipe { struct qcom_glink; extern const struct dev_pm_ops glink_native_pm_ops; extern int glink_resume_pkt; struct qcom_glink *qcom_glink_native_probe(struct device *dev, unsigned long features, Loading net/qrtr/ns.c +20 −1 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause /* * Copyright (c) 2015, Sony Mobile Communications Inc. * Copyright (c) 2013, 2020, The Linux Foundation. All rights reserved. * Copyright (c) 2013, 2020-2021, The Linux Foundation. All rights reserved. * Copyright (c) 2020, Linaro Ltd. */ Loading Loading @@ -98,6 +98,25 @@ static struct qrtr_node *node_get(unsigned int node_id) return node; } unsigned int qrtr_get_service_id(unsigned int node_id, unsigned int port_id) { struct qrtr_server *srv; struct qrtr_node *node; unsigned long index; node = node_get(node_id); if (!node) return 0; xa_for_each(&node->servers, index, srv) { if (srv->node == node_id && srv->port == port_id) return srv->service; } return 0; } EXPORT_SYMBOL(qrtr_get_service_id); static int server_match(const struct qrtr_server *srv, const struct qrtr_server_filter *f) { Loading net/qrtr/qrtr.c +26 −1 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2015, Sony Mobile Communications Inc. * Copyright (c) 2013, 2018-2019 The Linux Foundation. All rights reserved. * Copyright (c) 2013, 2018-2019, 2021, The Linux Foundation. All rights reserved. */ #include <linux/kthread.h> #include <linux/module.h> Loading Loading @@ -40,6 +40,11 @@ #define AID_VENDOR_QRTR KGIDT_INIT(2906) #if defined(CONFIG_RPMSG_QCOM_GLINK_NATIVE) extern bool glink_resume_pkt; #endif extern unsigned int qrtr_get_service_id(unsigned int node_id, unsigned int port_id); /** * struct qrtr_hdr_v1 - (I|R)PCrouter packet header version 1 * @version: protocol version Loading Loading @@ -269,6 +274,23 @@ static void qrtr_log_tx_msg(struct qrtr_node *node, struct qrtr_hdr_v1 *hdr, } } #if defined(CONFIG_RPMSG_QCOM_GLINK_NATIVE) static void qrtr_log_resume_pkt(struct qrtr_cb *cb, u64 pl_buf) { unsigned int service_id; if (glink_resume_pkt) { glink_resume_pkt = false; service_id = qrtr_get_service_id(cb->src_node, cb->src_port); pr_info("[QRTR RESUME PKT]:src[0x%x:0x%x] dst[0x%x:0x%x] [%08x %08x]: service[0x%x]\n", cb->src_node, cb->src_port, cb->dst_node, cb->dst_port, (unsigned int)pl_buf, (unsigned int)(pl_buf >> 32), service_id); } } #endif static void qrtr_log_rx_msg(struct qrtr_node *node, struct sk_buff *skb) { struct qrtr_ctrl_pkt pkt = {0,}; Loading @@ -287,6 +309,9 @@ static void qrtr_log_rx_msg(struct qrtr_node *node, struct sk_buff *skb) skb->len, cb->confirm_rx, cb->src_node, cb->src_port, cb->dst_node, cb->dst_port, (unsigned int)pl_buf, (unsigned int)(pl_buf >> 32)); #if defined(CONFIG_RPMSG_QCOM_GLINK_NATIVE) qrtr_log_resume_pkt(cb, pl_buf); #endif } else { skb_copy_bits(skb, 0, &pkt, sizeof(pkt)); if (cb->type == QRTR_TYPE_NEW_SERVER || Loading net/qrtr/qrtr.h +2 −0 Original line number Diff line number Diff line Loading @@ -38,4 +38,6 @@ void qrtr_ns_init(void); void qrtr_ns_remove(void); int qrtr_peek_pkt_size(const void *data); unsigned int qrtr_get_service_id(unsigned int node_id, unsigned int port_id); #endif Loading
drivers/rpmsg/qcom_glink_native.c +6 −1 Original line number Diff line number Diff line Loading @@ -56,6 +56,8 @@ do { \ #define RPM_GLINK_CID_MAX 65536 static int should_wake; int glink_resume_pkt; EXPORT_SYMBOL(glink_resume_pkt); struct glink_msg { __le16 cmd; Loading Loading @@ -1246,8 +1248,11 @@ static irqreturn_t qcom_glink_native_intr(int irq, void *data) unsigned int cmd; int ret = 0; if (should_wake) if (should_wake) { pr_info("%s: %d triggered %s\n", __func__, irq, glink->irqname); glink_resume_pkt = true; pm_system_wakeup(); } /* To wakeup any blocking writers */ wake_up_all(&glink->tx_avail_notify); Loading
drivers/rpmsg/qcom_glink_native.h +1 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ struct qcom_glink_pipe { struct qcom_glink; extern const struct dev_pm_ops glink_native_pm_ops; extern int glink_resume_pkt; struct qcom_glink *qcom_glink_native_probe(struct device *dev, unsigned long features, Loading
net/qrtr/ns.c +20 −1 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause /* * Copyright (c) 2015, Sony Mobile Communications Inc. * Copyright (c) 2013, 2020, The Linux Foundation. All rights reserved. * Copyright (c) 2013, 2020-2021, The Linux Foundation. All rights reserved. * Copyright (c) 2020, Linaro Ltd. */ Loading Loading @@ -98,6 +98,25 @@ static struct qrtr_node *node_get(unsigned int node_id) return node; } unsigned int qrtr_get_service_id(unsigned int node_id, unsigned int port_id) { struct qrtr_server *srv; struct qrtr_node *node; unsigned long index; node = node_get(node_id); if (!node) return 0; xa_for_each(&node->servers, index, srv) { if (srv->node == node_id && srv->port == port_id) return srv->service; } return 0; } EXPORT_SYMBOL(qrtr_get_service_id); static int server_match(const struct qrtr_server *srv, const struct qrtr_server_filter *f) { Loading
net/qrtr/qrtr.c +26 −1 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2015, Sony Mobile Communications Inc. * Copyright (c) 2013, 2018-2019 The Linux Foundation. All rights reserved. * Copyright (c) 2013, 2018-2019, 2021, The Linux Foundation. All rights reserved. */ #include <linux/kthread.h> #include <linux/module.h> Loading Loading @@ -40,6 +40,11 @@ #define AID_VENDOR_QRTR KGIDT_INIT(2906) #if defined(CONFIG_RPMSG_QCOM_GLINK_NATIVE) extern bool glink_resume_pkt; #endif extern unsigned int qrtr_get_service_id(unsigned int node_id, unsigned int port_id); /** * struct qrtr_hdr_v1 - (I|R)PCrouter packet header version 1 * @version: protocol version Loading Loading @@ -269,6 +274,23 @@ static void qrtr_log_tx_msg(struct qrtr_node *node, struct qrtr_hdr_v1 *hdr, } } #if defined(CONFIG_RPMSG_QCOM_GLINK_NATIVE) static void qrtr_log_resume_pkt(struct qrtr_cb *cb, u64 pl_buf) { unsigned int service_id; if (glink_resume_pkt) { glink_resume_pkt = false; service_id = qrtr_get_service_id(cb->src_node, cb->src_port); pr_info("[QRTR RESUME PKT]:src[0x%x:0x%x] dst[0x%x:0x%x] [%08x %08x]: service[0x%x]\n", cb->src_node, cb->src_port, cb->dst_node, cb->dst_port, (unsigned int)pl_buf, (unsigned int)(pl_buf >> 32), service_id); } } #endif static void qrtr_log_rx_msg(struct qrtr_node *node, struct sk_buff *skb) { struct qrtr_ctrl_pkt pkt = {0,}; Loading @@ -287,6 +309,9 @@ static void qrtr_log_rx_msg(struct qrtr_node *node, struct sk_buff *skb) skb->len, cb->confirm_rx, cb->src_node, cb->src_port, cb->dst_node, cb->dst_port, (unsigned int)pl_buf, (unsigned int)(pl_buf >> 32)); #if defined(CONFIG_RPMSG_QCOM_GLINK_NATIVE) qrtr_log_resume_pkt(cb, pl_buf); #endif } else { skb_copy_bits(skb, 0, &pkt, sizeof(pkt)); if (cb->type == QRTR_TYPE_NEW_SERVER || Loading
net/qrtr/qrtr.h +2 −0 Original line number Diff line number Diff line Loading @@ -38,4 +38,6 @@ void qrtr_ns_init(void); void qrtr_ns_remove(void); int qrtr_peek_pkt_size(const void *data); unsigned int qrtr_get_service_id(unsigned int node_id, unsigned int port_id); #endif