From nobody Mon Oct 6 16:44:54 2025 Received: from mail.ionic.de (ionic.de [145.239.234.145]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D9B3289838; Sat, 19 Jul 2025 18:59:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=145.239.234.145 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752951586; cv=none; b=OQ49ibVUtNifjpzeT4Wx8wlewB1bb4gEzJ/Zrka/4Rga+VFbiC8mJORB8f1wEVUBXtkfrlzrQuJToWSJykOD5OnETWJG4fUkxyLOX/fvW7q/ILI11L2rhWdqpQdpCD+m25szv18DiwXE/z02cV/Jxk8Q8y9xPlCw58bZCVdTLU8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752951586; c=relaxed/simple; bh=3J97pYvBnbiOwSUbdiJe6uKQCUSX1NJGe9sje9yh5co=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NtE5Kfe0IoZ7HAgIGyfBqXKZtq0oGtbuX93Aby0K5VGDdyqiCorC9zCeIhbNXz+gPM0ZOj+NoUYCZqB8xl9GfXgYZ2mvIVXSxqyauBGaNi122oKVic6l6izAB86GVZ+i3VSeMz+3HEy0/HiVpd5rTT8KdlAXyCLJdzqAnfWgUeM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ionic.de; spf=pass smtp.mailfrom=ionic.de; dkim=pass (1024-bit key) header.d=ionic.de header.i=@ionic.de header.b=OxEOf9jp; arc=none smtp.client-ip=145.239.234.145 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ionic.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ionic.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ionic.de header.i=@ionic.de header.b="OxEOf9jp" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ionic.de; s=default; t=1752951578; bh=3J97pYvBnbiOwSUbdiJe6uKQCUSX1NJGe9sje9yh5co=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OxEOf9jpI7jfGxq1yEOmb1g9GAT03O6TC0bDbxyaDzuJcX/b0sqNQCt/CIGHGPZqw m+jXUT0n0t0I/W5c0i/iZ21tJIyig8S1VcDO4TL09aTzEYrAVUf8HGHwduWf4d4zcr 7BJEPbTQNtStAUH47a/41DVRj/4ix1jMKUuPXWHQ= Received: from grml.local.home.ionic.de (unknown [IPv6:2a00:11:fb41:7a00:21b:21ff:fe5e:dddc]) by mail.ionic.de (Postfix) with ESMTPSA id E804614884E1; Sat, 19 Jul 2025 20:59:37 +0200 (CEST) From: Mihai Moldovan To: linux-arm-msm@vger.kernel.org, Manivannan Sadhasivam Cc: Denis Kenzior , Eric Dumazet , Kuniyuki Iwashima , Paolo Abeni , Willem de Bruijn , "David S . Miller" , Jakub Kicinski , Simon Horman , linux-kernel@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 05/10] net: qrtr: Report endpoint for locally generated messages Date: Sat, 19 Jul 2025 20:59:25 +0200 Message-ID: <5b08be230cd2e5faf24297ee04beb7616861fe5b.1752947108.git.ionic@ionic.de> X-Mailer: git-send-email 2.50.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Denis Kenzior 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 Reviewed-by: Marcel Holtmann Reviewed-by: Andy Gross Signed-off-by: Mihai Moldovan --- v2: - rebase against current master --- net/qrtr/af_qrtr.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/net/qrtr/af_qrtr.c b/net/qrtr/af_qrtr.c index f11c04e0494f..f66f1178df96 100644 --- a/net/qrtr/af_qrtr.c +++ b/net/qrtr/af_qrtr.c @@ -163,9 +163,11 @@ struct qrtr_tx_flow { #define QRTR_TX_FLOW_LOW 5 =20 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); @@ -349,6 +351,7 @@ static void qrtr_tx_flow_failed(struct qrtr_node *node,= int dest_node, =20 /* 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) { @@ -678,7 +681,8 @@ void qrtr_endpoint_unregister(struct qrtr_endpoint *ep) skb =3D qrtr_alloc_ctrl_packet(&pkt, GFP_ATOMIC); if (skb) { pkt->cmd =3D 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); @@ -745,8 +749,8 @@ static void qrtr_port_remove(struct qrtr_sock *ipc) pkt->client.port =3D cpu_to_le32(ipc->us.sq_port); =20 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); } =20 if (port =3D=3D QRTR_PORT_CTRL) @@ -886,6 +890,7 @@ static int qrtr_bind(struct socket *sock, struct sockad= dr *saddr, int len) =20 /* 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) { @@ -903,6 +908,7 @@ static int qrtr_local_enqueue(struct qrtr_node *node, s= truct sk_buff *skb, cb =3D (struct qrtr_cb *)skb->cb; cb->src_node =3D from->sq_node; cb->src_port =3D from->sq_port; + cb->endpoint_id =3D endpoint_id; =20 if (sock_queue_rcv_skb(&ipc->sk, skb)) { qrtr_port_put(ipc); @@ -917,6 +923,7 @@ static int qrtr_local_enqueue(struct qrtr_node *node, s= truct sk_buff *skb, =20 /* 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) { @@ -928,11 +935,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); =20 - qrtr_local_enqueue(NULL, skb, type, from, to); + qrtr_local_enqueue(NULL, skb, endpoint_id, type, from, to); =20 return 0; } @@ -940,12 +947,13 @@ 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 le= n) { DECLARE_SOCKADDR(struct sockaddr_qrtr *, addr, msg->msg_name); - int (*enqueue_fn)(struct qrtr_node *, struct sk_buff *, int, + int (*enqueue_fn)(struct qrtr_node *, struct sk_buff *, u32, int, struct sockaddr_qrtr *, struct sockaddr_qrtr *); __le32 qrtr_type =3D cpu_to_le32(QRTR_TYPE_DATA); struct qrtr_sock *ipc =3D qrtr_sk(sock->sk); struct sock *sk =3D sock->sk; struct qrtr_node *node; + u32 endpoint_id =3D qrtr_local_nid; struct sk_buff *skb; size_t plen; u32 type; @@ -1029,7 +1037,7 @@ static int qrtr_sendmsg(struct socket *sock, struct m= sghdr *msg, size_t len) } =20 type =3D le32_to_cpu(qrtr_type); - rc =3D enqueue_fn(node, skb, type, &ipc->us, addr); + rc =3D enqueue_fn(node, skb, endpoint_id, type, &ipc->us, addr); if (rc >=3D 0) rc =3D len; =20 @@ -1061,7 +1069,8 @@ static int qrtr_send_resume_tx(struct qrtr_cb *cb) pkt->client.node =3D cpu_to_le32(cb->dst_node); pkt->client.port =3D cpu_to_le32(cb->dst_port); =20 - ret =3D qrtr_node_enqueue(node, skb, QRTR_TYPE_RESUME_TX, &local, &remote= ); + ret =3D qrtr_node_enqueue(node, skb, cb->endpoint_id, + QRTR_TYPE_RESUME_TX, &local, &remote); =20 qrtr_node_release(node); =20 --=20 2.50.0