[PATCH net-next v5 2/4] net: qrtr: Assign unique node id for MHI endpoints
Youssef Samir
youssef.abdulrahman at oss.qualcomm.com
Tue Nov 10 06:20:23 PST 2026
> diff --git a/net/qrtr/af_qrtr.c b/net/qrtr/af_qrtr.c
> index efa70b95f8a7..7a59ccf15490 100644
> --- a/net/qrtr/af_qrtr.c
> +++ b/net/qrtr/af_qrtr.c
> @@ -11,6 +11,7 @@
> #include <linux/wait.h>
> #include <linux/workqueue.h>
>
> +#include <net/qrtr.h>
> #include <net/sock.h>
>
> #include "qrtr.h"
> @@ -590,6 +591,12 @@ int qrtr_endpoint_post(struct qrtr_endpoint *ep, const void *data, size_t len)
> cb->type != QRTR_TYPE_RESUME_TX)
> goto err;
>
> + /* Host assigned node ids are not supposed to overlap with
> + * remote node ids
> + */
> + if (cb->src_node >= QRTR_NODE_HOST_BASE)
> + goto err;
> +
This breaks the functionality for QAIC devices, and any V1 packet with
nid >= 0x10000, for two reasons:
- V1 uses 32-bit node IDs
- QAIC devices use hw_sernum as the node ID. I am yet to see a device
with node ID < 0x10000
This causes "invalid ipcrouter packet" error logs to be printed when the
device is advertising its services to the host.
> skb_put_data(skb, data + hdrlen, size);
>
> nid = cb->src_node;
> @@ -615,6 +622,8 @@ int qrtr_endpoint_post(struct qrtr_endpoint *ep, const void *data, size_t len)
> const struct qrtr_ctrl_pkt *pkt = data + hdrlen;
>
> nid = le32_to_cpu(pkt->server.node);
> + if (nid >= QRTR_NODE_HOST_BASE)
> + goto err;
Same concern as above.
--
Youssef Samir <youssef.abdulrahman at oss.qualcomm.com>
More information about the ath12k
mailing list