Re: [PATCH v2 1/4] net: qrtr: Allow the host QRTR to assign a unique node id
From: Youssef Samir
Date: Tue Sep 22 2026 - 14:31:33 EST
On 9/21/2026 12:23 PM, Manivannan Sadhasivam via B4 Relay wrote:
> +/* Replace the node id in the control packet with 'node->nid', if both are
> + * different.
> + */
> +static void qrtr_node_rewrite_ctrl(struct qrtr_node *node, unsigned int type,
> + struct sk_buff *skb)
> +{
> + struct qrtr_ctrl_pkt *pkt;
> + __le32 *nid;
> +
> + if (node->nid == node->ep_nid)
> + return;
> +
> + if (skb->len < sizeof(*pkt))
> + return;
> +
> + pkt = (struct qrtr_ctrl_pkt *)skb->data;
> + if (type == QRTR_TYPE_DEL_CLIENT)
qrtr_tx_wait() will create a qrtr_tx_flow object keyed by qrtr_node->nid.
qrtr_tx_resume will attempt to retrieve it with qrtr_node->ep_nid, which
will fail. This leads to the HTD path pending packets reaching
QRTR_TX_FLOW_HIGH and block indefinitely. QRTR_TYPE_RESUME_TX should
be handled here.> + nid = &pkt->client.node;
> + else
> + nid = &pkt->server.node;
> +
> + /* Rewrite only the endpoint's node id, not those of bridged nodes */
> + if (le32_to_cpu(*nid) == node->ep_nid)
> + *nid = cpu_to_le32(node->nid);
> +}
> +
Thanks,
Youssef