aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2021-09-08 14:23:21 +0100
committerMichael Brown <mcb30@ipxe.org>2021-09-09 12:52:12 +0100
commit91e147213c58c4c841416830122a0e44d69f69ad (patch)
tree2511b81335a9877577ceca48892b399a86704a99
parent0cc4c42f0af716bc5a363ad699160926e91a4d35 (diff)
downloadipxe-91e147213c58c4c841416830122a0e44d69f69ad.zip
ipxe-91e147213c58c4c841416830122a0e44d69f69ad.tar.gz
ipxe-91e147213c58c4c841416830122a0e44d69f69ad.tar.bz2
[ecm] Expose USB vendor/device information to ecm_fetch_mac()
Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r--src/drivers/net/ecm.c11
-rw-r--r--src/drivers/net/ecm.h2
-rw-r--r--src/drivers/net/ncm.c2
3 files changed, 8 insertions, 7 deletions
diff --git a/src/drivers/net/ecm.c b/src/drivers/net/ecm.c
index 847a45b..f531b04 100644
--- a/src/drivers/net/ecm.c
+++ b/src/drivers/net/ecm.c
@@ -81,13 +81,14 @@ ecm_ethernet_descriptor ( struct usb_configuration_descriptor *config,
/**
* Get hardware MAC address
*
- * @v usb USB device
+ * @v func USB function
* @v desc Ethernet functional descriptor
* @v hw_addr Hardware address to fill in
* @ret rc Return status code
*/
-int ecm_fetch_mac ( struct usb_device *usb,
+int ecm_fetch_mac ( struct usb_function *func,
struct ecm_ethernet_descriptor *desc, uint8_t *hw_addr ) {
+ struct usb_device *usb = func->usb;
char buf[ base16_encoded_len ( ETH_ALEN ) + 1 /* NUL */ ];
int len;
int rc;
@@ -103,7 +104,7 @@ int ecm_fetch_mac ( struct usb_device *usb,
/* Sanity check */
if ( len != ( ( int ) ( sizeof ( buf ) - 1 /* NUL */ ) ) ) {
DBGC ( usb, "USB %s has invalid ECM MAC \"%s\"\n",
- usb->name, buf );
+ func->name, buf );
return -EINVAL;
}
@@ -112,7 +113,7 @@ int ecm_fetch_mac ( struct usb_device *usb,
if ( len < 0 ) {
rc = len;
DBGC ( usb, "USB %s could not decode ECM MAC \"%s\": %s\n",
- usb->name, buf, strerror ( rc ) );
+ func->name, buf, strerror ( rc ) );
return rc;
}
@@ -464,7 +465,7 @@ static int ecm_probe ( struct usb_function *func,
}
/* Fetch MAC address */
- if ( ( rc = ecm_fetch_mac ( usb, ethernet, netdev->hw_addr ) ) != 0 ) {
+ if ( ( rc = ecm_fetch_mac ( func, ethernet, netdev->hw_addr ) ) != 0 ) {
DBGC ( ecm, "ECM %p could not fetch MAC address: %s\n",
ecm, strerror ( rc ) );
goto err_fetch_mac;
diff --git a/src/drivers/net/ecm.h b/src/drivers/net/ecm.h
index 83d324b..0ad3ddb 100644
--- a/src/drivers/net/ecm.h
+++ b/src/drivers/net/ecm.h
@@ -86,7 +86,7 @@ struct ecm_device {
extern struct ecm_ethernet_descriptor *
ecm_ethernet_descriptor ( struct usb_configuration_descriptor *config,
struct usb_interface_descriptor *interface );
-extern int ecm_fetch_mac ( struct usb_device *usb,
+extern int ecm_fetch_mac ( struct usb_function *func,
struct ecm_ethernet_descriptor *desc,
uint8_t *hw_addr );
diff --git a/src/drivers/net/ncm.c b/src/drivers/net/ncm.c
index cc07a43..1e8088d 100644
--- a/src/drivers/net/ncm.c
+++ b/src/drivers/net/ncm.c
@@ -598,7 +598,7 @@ static int ncm_probe ( struct usb_function *func,
}
/* Fetch MAC address */
- if ( ( rc = ecm_fetch_mac ( usb, ethernet, netdev->hw_addr ) ) != 0 ) {
+ if ( ( rc = ecm_fetch_mac ( func, ethernet, netdev->hw_addr ) ) != 0 ) {
DBGC ( ncm, "NCM %p could not fetch MAC address: %s\n",
ncm, strerror ( rc ) );
goto err_fetch_mac;