mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-08 21:22:09 -04:00
Merge "net: qrtr: log rx packet causing system wakeup"
This commit is contained in:
commit
d9fac93cb5
5 changed files with 55 additions and 3 deletions
|
|
@ -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;
|
||||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// 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.
|
||||
*/
|
||||
|
||||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// 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>
|
||||
|
|
@ -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
|
||||
|
|
@ -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,};
|
||||
|
|
@ -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 ||
|
||||
|
|
|
|||
|
|
@ -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…
Reference in a new issue