diff --git a/src/drivers/net/ncm.c b/src/drivers/net/ncm.c index afa794ea3..fed77a00f 100644 --- a/src/drivers/net/ncm.c +++ b/src/drivers/net/ncm.c @@ -453,6 +453,15 @@ static int ncm_open ( struct net_device *netdev ) { goto err_set_ntb_input_size; } + /* Set MAC address */ + if ( ( rc = usb_control ( usb, NCM_SET_NET_ADDRESS, 0, + ncm->usbnet.comms, netdev->ll_addr, + netdev->ll_protocol->ll_addr_len ) ) != 0 ) { + DBGC ( ncm, "NCM %p could not set MAC address: %s\n", + ncm, strerror ( rc ) ); + /* Ignore error and continue */ + } + /* Open USB network device */ if ( ( rc = usbnet_open ( &ncm->usbnet ) ) != 0 ) { DBGC ( ncm, "NCM %p could not open: %s\n", diff --git a/src/drivers/net/ncm.h b/src/drivers/net/ncm.h index a9565a56b..6b0d21cdb 100644 --- a/src/drivers/net/ncm.h +++ b/src/drivers/net/ncm.h @@ -51,6 +51,11 @@ struct ncm_ntb_parameters { uint16_t max; } __attribute__ (( packed )); +/** Set MAC address */ +#define NCM_SET_NET_ADDRESS \ + ( USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE | \ + USB_REQUEST_TYPE ( 0x82 ) ) + /** Set NTB input size */ #define NCM_SET_NTB_INPUT_SIZE \ ( USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE | \