From: Mihai Moldovan <ionic@ionic.de>
To: linux-arm-msm@vger.kernel.org, Manivannan Sadhasivam <mani@kernel.org>
Cc: Denis Kenzior <denkenz@gmail.com>,
Eric Dumazet <edumazet@google.com>,
Kuniyuki Iwashima <kuniyu@google.com>,
Paolo Abeni <pabeni@redhat.com>,
Willem de Bruijn <willemb@google.com>,
"David S . Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>, Simon Horman <horms@kernel.org>,
linux-kernel@vger.kernel.org, netdev@vger.kernel.org
Subject: [PATCH v4 06/11] net: qrtr: Report endpoint for locally generated messages
Date: Mon, 28 Jul 2025 18:45:23 +0200 [thread overview]
Message-ID: <26f31faa87250c4e3b114f35d10226fd3f78eed8.1753720934.git.ionic@ionic.de> (raw)
In-Reply-To: <cover.1753720934.git.ionic@ionic.de>
From: Denis Kenzior <denkenz@gmail.com>
For messages generated by the local endpoint destined
to the local endpoint, report the local endpoint identifier. Same
QRTR_ENDPOINT auxiliary data and QRTR_REPORT_ENDPOINT socket option
semantics apply as for messages generated by remote endpoints.
Signed-off-by: Denis Kenzior <denkenz@gmail.com>
Reviewed-by: Marcel Holtmann <marcel@holtmann.org>
Reviewed-by: Andy Gross <agross@kernel.org>
Signed-off-by: Mihai Moldovan <ionic@ionic.de>
---
v4:
- no changes
- Link to v3: https://msgid.link/ad993f8e1c8f983026e036c1291347901cb2d47b.1753312999.git.ionic@ionic.de
v3:
- rebase against current master
- fix checkpatch.pl function definition warnings
- Link to v2: https://msgid.link/5b08be230cd2e5faf24297ee04beb7616861fe5b.1752947108.git.ionic@ionic.de
v2:
- rebase against current master
- Link to v1: https://msgid.link/20241018181842.1368394-6-denkenz@gmail.com
---
net/qrtr/af_qrtr.c | 29 ++++++++++++++++++++---------
1 file changed, 20 insertions(+), 9 deletions(-)
diff --git a/net/qrtr/af_qrtr.c b/net/qrtr/af_qrtr.c
index e114489dbd36..8ddaebbd76d2 100644
--- a/net/qrtr/af_qrtr.c
+++ b/net/qrtr/af_qrtr.c
@@ -184,9 +184,11 @@ struct qrtr_tx_flow {
#define QRTR_TX_FLOW_LOW 5
static int qrtr_local_enqueue(struct qrtr_node *node, struct sk_buff *skb,
+ u32 endpoint_id,
int type, struct sockaddr_qrtr *from,
struct sockaddr_qrtr *to);
static int qrtr_bcast_enqueue(struct qrtr_node *node, struct sk_buff *skb,
+ u32 endpoint_id,
int type, struct sockaddr_qrtr *from,
struct sockaddr_qrtr *to);
static struct qrtr_sock *qrtr_port_lookup(int port);
@@ -401,6 +403,7 @@ static int qrtr_tx_flow_failed(struct qrtr_node *node, int dest_node,
/* Pass an outgoing packet socket buffer to the endpoint driver. */
static int qrtr_node_enqueue(struct qrtr_node *node, struct sk_buff *skb,
+ u32 endpoint_id,
int type, struct sockaddr_qrtr *from,
struct sockaddr_qrtr *to)
{
@@ -751,7 +754,8 @@ void qrtr_endpoint_unregister(struct qrtr_endpoint *ep)
skb = qrtr_alloc_ctrl_packet(&pkt, GFP_ATOMIC);
if (skb) {
pkt->cmd = cpu_to_le32(QRTR_TYPE_BYE);
- qrtr_local_enqueue(NULL, skb, QRTR_TYPE_BYE, &src, &dst);
+ qrtr_local_enqueue(NULL, skb, endpoint_id,
+ QRTR_TYPE_BYE, &src, &dst);
}
}
spin_unlock_irqrestore(&qrtr_nodes_lock, flags);
@@ -818,8 +822,8 @@ static void qrtr_port_remove(struct qrtr_sock *ipc)
pkt->client.port = cpu_to_le32(ipc->us.sq_port);
skb_set_owner_w(skb, &ipc->sk);
- qrtr_bcast_enqueue(NULL, skb, QRTR_TYPE_DEL_CLIENT, &ipc->us,
- &to);
+ qrtr_bcast_enqueue(NULL, skb, qrtr_local_nid,
+ QRTR_TYPE_DEL_CLIENT, &ipc->us, &to);
}
if (port == QRTR_PORT_CTRL)
@@ -959,6 +963,7 @@ static int qrtr_bind(struct socket *sock, struct sockaddr *saddr, int len)
/* Queue packet to local peer socket. */
static int qrtr_local_enqueue(struct qrtr_node *node, struct sk_buff *skb,
+ u32 endpoint_id,
int type, struct sockaddr_qrtr *from,
struct sockaddr_qrtr *to)
{
@@ -976,6 +981,7 @@ static int qrtr_local_enqueue(struct qrtr_node *node, struct sk_buff *skb,
cb = (struct qrtr_cb *)skb->cb;
cb->src_node = from->sq_node;
cb->src_port = from->sq_port;
+ cb->endpoint_id = endpoint_id;
if (sock_queue_rcv_skb(&ipc->sk, skb)) {
qrtr_port_put(ipc);
@@ -990,6 +996,7 @@ static int qrtr_local_enqueue(struct qrtr_node *node, struct sk_buff *skb,
/* Queue packet for broadcast. */
static int qrtr_bcast_enqueue(struct qrtr_node *node, struct sk_buff *skb,
+ u32 endpoint_id,
int type, struct sockaddr_qrtr *from,
struct sockaddr_qrtr *to)
{
@@ -1001,11 +1008,11 @@ static int qrtr_bcast_enqueue(struct qrtr_node *node, struct sk_buff *skb,
if (!skbn)
break;
skb_set_owner_w(skbn, skb->sk);
- qrtr_node_enqueue(node, skbn, type, from, to);
+ qrtr_node_enqueue(node, skbn, endpoint_id, type, from, to);
}
mutex_unlock(&qrtr_node_lock);
- qrtr_local_enqueue(NULL, skb, type, from, to);
+ qrtr_local_enqueue(NULL, skb, endpoint_id, type, from, to);
return 0;
}
@@ -1013,12 +1020,15 @@ static int qrtr_bcast_enqueue(struct qrtr_node *node, struct sk_buff *skb,
static int qrtr_sendmsg(struct socket *sock, struct msghdr *msg, size_t len)
{
DECLARE_SOCKADDR(struct sockaddr_qrtr *, addr, msg->msg_name);
- int (*enqueue_fn)(struct qrtr_node *, struct sk_buff *, int,
- struct sockaddr_qrtr *, struct sockaddr_qrtr *);
+ int (*enqueue_fn)(struct qrtr_node *node, struct sk_buff *skb,
+ u32 endpoint_id, int type,
+ struct sockaddr_qrtr *from,
+ struct sockaddr_qrtr *to);
__le32 qrtr_type = cpu_to_le32(QRTR_TYPE_DATA);
struct qrtr_sock *ipc = qrtr_sk(sock->sk);
struct sock *sk = sock->sk;
struct qrtr_node *node;
+ u32 endpoint_id = qrtr_local_nid;
struct sk_buff *skb;
size_t plen;
u32 type;
@@ -1102,7 +1112,7 @@ static int qrtr_sendmsg(struct socket *sock, struct msghdr *msg, size_t len)
}
type = le32_to_cpu(qrtr_type);
- rc = enqueue_fn(node, skb, type, &ipc->us, addr);
+ rc = enqueue_fn(node, skb, endpoint_id, type, &ipc->us, addr);
if (rc >= 0)
rc = len;
@@ -1134,7 +1144,8 @@ static int qrtr_send_resume_tx(struct qrtr_cb *cb)
pkt->client.node = cpu_to_le32(cb->dst_node);
pkt->client.port = cpu_to_le32(cb->dst_port);
- ret = qrtr_node_enqueue(node, skb, QRTR_TYPE_RESUME_TX, &local, &remote);
+ ret = qrtr_node_enqueue(node, skb, cb->endpoint_id,
+ QRTR_TYPE_RESUME_TX, &local, &remote);
qrtr_node_release(node);
--
2.50.0
next prev parent reply other threads:[~2025-07-28 16:45 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-28 16:45 [PATCH v4 00/11] QRTR Multi-endpoint support Mihai Moldovan
2025-07-28 16:45 ` [PATCH v4 01/11] net: qrtr: ns: validate msglen before ctrl_pkt use Mihai Moldovan
2025-07-28 16:45 ` [PATCH v4 02/11] net: qrtr: allocate and track endpoint ids Mihai Moldovan
2025-07-28 16:45 ` [PATCH v4 03/11] net: qrtr: fit node ID + port number combination into unsigned long Mihai Moldovan
2025-07-28 16:45 ` [PATCH v4 04/11] net: qrtr: support identical node ids Mihai Moldovan
2025-07-28 16:45 ` [PATCH v4 05/11] net: qrtr: Report sender endpoint in aux data Mihai Moldovan
2025-07-28 16:45 ` Mihai Moldovan [this message]
2025-07-28 16:45 ` [PATCH v4 07/11] net: qrtr: Allow sendmsg to target an endpoint Mihai Moldovan
2025-07-28 16:45 ` [PATCH v4 08/11] net: qrtr: allow socket endpoint binding Mihai Moldovan
2025-07-28 16:45 ` [PATCH v4 09/11] net: qrtr: Drop remote {NEW|DEL}_LOOKUP messages Mihai Moldovan
2025-07-28 16:45 ` [PATCH v4 10/11] net: qrtr: ns: support multiple endpoints Mihai Moldovan
2025-07-28 16:45 ` [PATCH v4 11/11] net: qrtr: mhi: Report endpoint id in sysfs Mihai Moldovan
2025-07-31 0:57 ` [PATCH v4 00/11] QRTR Multi-endpoint support Jakub Kicinski
2025-07-31 5:47 ` Mihai Moldovan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=26f31faa87250c4e3b114f35d10226fd3f78eed8.1753720934.git.ionic@ionic.de \
--to=ionic@ionic.de \
--cc=davem@davemloft.net \
--cc=denkenz@gmail.com \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=kuniyu@google.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mani@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=willemb@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).