From 1029c89bafc714c1b987f29e3bc124a7b63d28d5 Mon Sep 17 00:00:00 2001 From: Tanmay Shah Date: Fri, 28 Aug 2026 07:58:52 -0700 Subject: samples: rpmsg: Add MTU size info RPMsg MTU size can be variable now and no longer hardcoded to 512 bytes. Add log to the sample driver that prints current MTU size of the rpmsg buffer. Signed-off-by: Tanmay Shah Acked-by: Arnaud Pouliquen Link: https://lore.kernel.org/r/20260828145853.2843486-6-tanmay.shah@amd.com Signed-off-by: Mathieu Poirier --- samples/rpmsg/rpmsg_client_sample.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'samples') diff --git a/samples/rpmsg/rpmsg_client_sample.c b/samples/rpmsg/rpmsg_client_sample.c index ae5081662283..4c43436aadb6 100644 --- a/samples/rpmsg/rpmsg_client_sample.c +++ b/samples/rpmsg/rpmsg_client_sample.c @@ -52,6 +52,7 @@ static int rpmsg_sample_probe(struct rpmsg_device *rpdev) { int ret; struct instance_data *idata; + ssize_t mtu, msg_len; dev_info(&rpdev->dev, "new channel: 0x%x -> 0x%x!\n", rpdev->src, rpdev->dst); @@ -62,8 +63,25 @@ static int rpmsg_sample_probe(struct rpmsg_device *rpdev) dev_set_drvdata(&rpdev->dev, idata); + mtu = rpmsg_get_mtu(rpdev->ept); + if (mtu < 0) { + dev_warn(&rpdev->dev, "invalid rpmsg MTU size = %ld\n", mtu); + return mtu; + } + + dev_info(&rpdev->dev, "rpmsg MTU size = %ld\n", mtu); + + msg_len = strlen(MSG); + /* make sure our message fits in a single rpmsg buffer */ + if (msg_len > mtu) { + dev_err(&rpdev->dev, + "message size %zu exceeds rpmsg MTU size %ld\n", + strlen(MSG), mtu); + return -EMSGSIZE; + } + /* send a message to our remote processor */ - ret = rpmsg_send(rpdev->ept, MSG, strlen(MSG)); + ret = rpmsg_send(rpdev->ept, MSG, msg_len); if (ret) { dev_err(&rpdev->dev, "rpmsg_send failed: %d\n", ret); return ret; -- cgit v1.2.3 From c39c2cdbde1f2ad9e2886167e55ad6b4c4907d7f Mon Sep 17 00:00:00 2001 From: Nathan Chancellor Date: Tue, 8 Sep 2026 15:10:06 -0700 Subject: samples: rpmsg: Fix mtu printk specifiers When building rpmsg_client_sample.c for a 32-bit platform, such as during arm allmodconfig, there are a few warnings due to using an incorrect specifier for mtu: samples/rpmsg/rpmsg_client_sample.c:68:59: error: format specifies type 'long' but the argument has type 'ssize_t' (aka 'int') [-Werror,-Wformat] 68 | dev_warn(&rpdev->dev, "invalid rpmsg MTU size = %ld\n", mtu); | ~~~ ^~~ | %zd ... samples/rpmsg/rpmsg_client_sample.c:72:50: error: format specifies type 'long' but the argument has type 'ssize_t' (aka 'int') [-Werror,-Wformat] 72 | dev_info(&rpdev->dev, "rpmsg MTU size = %ld\n", mtu); | ~~~ ^~~ | %zd ... samples/rpmsg/rpmsg_client_sample.c:79:17: error: format specifies type 'long' but the argument has type 'ssize_t' (aka 'int') [-Werror,-Wformat] 78 | "message size %zu exceeds rpmsg MTU size %ld\n", | ~~~ | %zd 79 | strlen(MSG), mtu); | ^~~ Use '%zd', the proper specifier for a 'ssize_t' variable, to clear up the warning. Additionally, modify the last dev_err() call in rpmsg_sample_probe() to reuse msg_len instead of calling strlen(MSG) again and use '%zd' throughout the string consistently. Fixes: 1029c89bafc7 ("samples: rpmsg: Add MTU size info") Signed-off-by: Nathan Chancellor Link: https://lore.kernel.org/r/20260908-samples-rpmsg-fix-mtu-print-v1-1-f995518f0a46@kernel.org Signed-off-by: Mathieu Poirier --- samples/rpmsg/rpmsg_client_sample.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'samples') diff --git a/samples/rpmsg/rpmsg_client_sample.c b/samples/rpmsg/rpmsg_client_sample.c index 4c43436aadb6..8c629065c64c 100644 --- a/samples/rpmsg/rpmsg_client_sample.c +++ b/samples/rpmsg/rpmsg_client_sample.c @@ -65,18 +65,18 @@ static int rpmsg_sample_probe(struct rpmsg_device *rpdev) mtu = rpmsg_get_mtu(rpdev->ept); if (mtu < 0) { - dev_warn(&rpdev->dev, "invalid rpmsg MTU size = %ld\n", mtu); + dev_warn(&rpdev->dev, "invalid rpmsg MTU size = %zd\n", mtu); return mtu; } - dev_info(&rpdev->dev, "rpmsg MTU size = %ld\n", mtu); + dev_info(&rpdev->dev, "rpmsg MTU size = %zd\n", mtu); msg_len = strlen(MSG); /* make sure our message fits in a single rpmsg buffer */ if (msg_len > mtu) { dev_err(&rpdev->dev, - "message size %zu exceeds rpmsg MTU size %ld\n", - strlen(MSG), mtu); + "message size %zd exceeds rpmsg MTU size %zd\n", + msg_len, mtu); return -EMSGSIZE; } -- cgit v1.2.3