Skip to content

Commit 1d28253

Browse files
jfischer-nokartben
authored andcommitted
usb: device_next: avoid false error logging in CDC ECM/NCM
The interface descriptor and its associated string descriptor are shared between different speed configurations. Do not try to add a string descriptor if it has already been added and the index is not zero. Similar to commit ec851ba ("usb: device_next: avoid false error logging in CDC ACM"). Signed-off-by: Johann Fischer <[email protected]>
1 parent f7757d5 commit 1d28253

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

subsys/usb/device_next/class/usbd_cdc_ecm.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -455,10 +455,12 @@ static int usbd_cdc_ecm_init(struct usbd_class_data *const c_data)
455455
desc->if0_union.bSubordinateInterface0 = if_num + 1;
456456
LOG_DBG("CDC ECM class initialized");
457457

458-
if (usbd_add_descriptor(uds_ctx, data->mac_desc_data)) {
459-
LOG_ERR("Failed to add iMACAddress string descriptor");
460-
} else {
461-
desc->if0_ecm.iMACAddress = usbd_str_desc_get_idx(data->mac_desc_data);
458+
if (desc->if0_ecm.iMACAddress == 0) {
459+
if (usbd_add_descriptor(uds_ctx, data->mac_desc_data)) {
460+
LOG_ERR("Failed to add iMACAddress string descriptor");
461+
} else {
462+
desc->if0_ecm.iMACAddress = usbd_str_desc_get_idx(data->mac_desc_data);
463+
}
462464
}
463465

464466
return 0;

subsys/usb/device_next/class/usbd_cdc_ncm.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -989,10 +989,12 @@ static int usbd_cdc_ncm_init(struct usbd_class_data *const c_data)
989989

990990
LOG_DBG("CDC NCM class initialized");
991991

992-
if (usbd_add_descriptor(uds_ctx, data->mac_desc_data)) {
993-
LOG_ERR("Failed to add iMACAddress string descriptor");
994-
} else {
995-
desc->if0_ecm.iMACAddress = usbd_str_desc_get_idx(data->mac_desc_data);
992+
if (desc->if0_ecm.iMACAddress == 0) {
993+
if (usbd_add_descriptor(uds_ctx, data->mac_desc_data)) {
994+
LOG_ERR("Failed to add iMACAddress string descriptor");
995+
} else {
996+
desc->if0_ecm.iMACAddress = usbd_str_desc_get_idx(data->mac_desc_data);
997+
}
996998
}
997999

9981000
return 0;
@@ -1243,7 +1245,7 @@ static struct usbd_cdc_ncm_desc cdc_ncm_desc_##n = { \
12431245
.bFunctionLength = sizeof(struct cdc_ecm_descriptor), \
12441246
.bDescriptorType = USB_DESC_CS_INTERFACE, \
12451247
.bDescriptorSubtype = ETHERNET_FUNC_DESC, \
1246-
.iMACAddress = 4, \
1248+
.iMACAddress = 0, \
12471249
.bmEthernetStatistics = sys_cpu_to_le32(0), \
12481250
.wMaxSegmentSize = sys_cpu_to_le16(NET_ETH_MAX_FRAME_SIZE), \
12491251
.wNumberMCFilters = sys_cpu_to_le16(0), \

0 commit comments

Comments
 (0)