This is an automated email from the ASF dual-hosted git repository.

acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 80c30d97b08 drivers/usbdev/rndis: Fix reported MTU OID sizes
80c30d97b08 is described below

commit 80c30d97b0867601a3b5337b0dc1b154bd91a33a
Author: shichunma <[email protected]>
AuthorDate: Mon Aug 3 17:29:56 2026 +0800

    drivers/usbdev/rndis: Fix reported MTU OID sizes
    
    RNDIS reports Ethernet packet sizing to the host through NDIS OIDs.
    OID_GEN_MAXIMUM_FRAME_SIZE is the MTU-style value and excludes the
    link-layer header, while CONFIG_NET_ETH_PKTSIZE includes the Ethernet
    header.
    
    Report the frame size as CONFIG_NET_ETH_PKTSIZE - ETH_HDRLEN, and
    report OID_GEN_MAXIMUM_TOTAL_SIZE as CONFIG_NET_ETH_PKTSIZE instead of
    a hardcoded 2048.
    
    Assisted-by: OpenAI Codex:GPT-5
    Signed-off-by: shichunma <[email protected]>
---
 drivers/usbdev/rndis.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/usbdev/rndis.c b/drivers/usbdev/rndis.c
index 530de30b4d5..4045627bc8d 100644
--- a/drivers/usbdev/rndis.c
+++ b/drivers/usbdev/rndis.c
@@ -118,6 +118,11 @@ static_assert((CONFIG_NET_LL_GUARDSIZE % 4) == 2,
 #define RNDIS_CTRLREQ_LEN       (256)
 #define RNDIS_RESP_QUEUE_WORDS  (64)
 
+/* NDIS maximum frame size excludes the Ethernet header. */
+
+#define RNDIS_MAX_FRAME_SIZE    (CONFIG_NET_ETH_PKTSIZE - ETH_HDRLEN)
+#define RNDIS_MAX_TOTAL_SIZE    CONFIG_NET_ETH_PKTSIZE
+
 #define RNDIS_BUFFER_SIZE       CONFIG_NET_ETH_PKTSIZE
 #define RNDIS_BUFFER_COUNT      4
 
@@ -520,7 +525,7 @@ static const struct rndis_oid_value_s g_rndis_oid_values[] =
     sizeof(g_rndis_supported_oids), 0,
     g_rndis_supported_oids
   },
-  {RNDIS_OID_GEN_MAXIMUM_FRAME_SIZE,    4, CONFIG_NET_ETH_PKTSIZE,  NULL},
+  {RNDIS_OID_GEN_MAXIMUM_FRAME_SIZE,    4, RNDIS_MAX_FRAME_SIZE,    NULL},
 #if defined(CONFIG_USBDEV_DUALSPEED) || defined(CONFIG_USBDEV_SUPERSPEED)
   {RNDIS_OID_GEN_LINK_SPEED,            4, 100000,              NULL},
 #else
@@ -531,7 +536,7 @@ static const struct rndis_oid_value_s g_rndis_oid_values[] =
   {RNDIS_OID_GEN_VENDOR_ID,             4, 0x00ffffff,          NULL},
   {RNDIS_OID_GEN_VENDOR_DESCRIPTION,    6, 0,                   "RNDIS"},
   {RNDIS_OID_GEN_CURRENT_PACKET_FILTER, 4, 0,                   NULL},
-  {RNDIS_OID_GEN_MAXIMUM_TOTAL_SIZE,    4, 2048,                NULL},
+  {RNDIS_OID_GEN_MAXIMUM_TOTAL_SIZE,    4, RNDIS_MAX_TOTAL_SIZE,    NULL},
   {RNDIS_OID_GEN_XMIT_OK,               4, 0,                   NULL},
   {RNDIS_OID_GEN_RCV_OK,                4, 0,                   NULL},
   {RNDIS_OID_802_3_PERMANENT_ADDRESS,   6, 0,                   NULL},

Reply via email to