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 <shichunma@bestechnic.com>
This commit is contained in:
shichunma
2026-08-04 17:39:56 -03:00
committed by Alan C. Assis
parent eba1d9561b
commit 80c30d97b0
+7 -2
View File
@@ -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},