diff --git a/sys/usb/usbus/cdc/ecm/cdc_ecm_netdev.c b/sys/usb/usbus/cdc/ecm/cdc_ecm_netdev.c index 65c575869f..ca5b5e73d3 100644 --- a/sys/usb/usbus/cdc/ecm/cdc_ecm_netdev.c +++ b/sys/usb/usbus/cdc/ecm/cdc_ecm_netdev.c @@ -59,6 +59,11 @@ static int _send(netdev_t *netdev, const iolist_t *iolist) uint8_t *buf = cdcecm->ep_in->ep->buf; const iolist_t *iolist_start = iolist; size_t len = iolist_size(iolist); + /* interface with alternative function ID 1 is the interface containing the + * data endpoints, no sense trying to transmit data if it is not active */ + if (cdcecm->active_iface != 1) { + return -ENOTCONN; + } DEBUG("CDC_ECM_netdev: sending %u bytes\n", len); /* load packet data into FIFO */ size_t iol_offset = 0;