diff options
| author | Michael Brown | 2015-09-14 17:53:05 +0200 |
|---|---|---|
| committer | Michael Brown | 2015-09-14 22:45:34 +0200 |
| commit | 549a0caabb2f239fc702ccea3c1825518e13d121 (patch) | |
| tree | b89fb7f19ff26d792f50ff027e2755862e87cb1f /src/drivers/net | |
| parent | [efi] Include a copy of the device path within struct efi_device (diff) | |
| download | ipxe-549a0caabb2f239fc702ccea3c1825518e13d121.tar.gz ipxe-549a0caabb2f239fc702ccea3c1825518e13d121.tar.xz ipxe-549a0caabb2f239fc702ccea3c1825518e13d121.zip | |
[usb] Select preferred USB device configuration based on driver score
Generate a score for each possible USB device configuration based on
the available driver support, and select the configuration with the
highest score. This will allow us to prefer ECM over RNDIS (for
devices which support both) and will allow us to meaningfully select a
configuration even when we have drivers available for all functions
(e.g. when exposing unused functions via EFI_USB_IO_PROTOCOL).
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers/net')
| -rw-r--r-- | src/drivers/net/dm96xx.c | 1 | ||||
| -rw-r--r-- | src/drivers/net/ecm.c | 1 | ||||
| -rw-r--r-- | src/drivers/net/ncm.c | 1 | ||||
| -rw-r--r-- | src/drivers/net/smsc75xx.c | 1 |
4 files changed, 4 insertions, 0 deletions
diff --git a/src/drivers/net/dm96xx.c b/src/drivers/net/dm96xx.c index 58d8dd964..b4eff50ab 100644 --- a/src/drivers/net/dm96xx.c +++ b/src/drivers/net/dm96xx.c @@ -666,6 +666,7 @@ static struct usb_device_id dm96xx_ids[] = { struct usb_driver dm96xx_driver __usb_driver = { .ids = dm96xx_ids, .id_count = ( sizeof ( dm96xx_ids ) / sizeof ( dm96xx_ids[0] ) ), + .score = USB_SCORE_NORMAL, .probe = dm96xx_probe, .remove = dm96xx_remove, }; diff --git a/src/drivers/net/ecm.c b/src/drivers/net/ecm.c index 8c84ea9e9..f24a435a5 100644 --- a/src/drivers/net/ecm.c +++ b/src/drivers/net/ecm.c @@ -515,6 +515,7 @@ static struct usb_device_id ecm_ids[] = { struct usb_driver ecm_driver __usb_driver = { .ids = ecm_ids, .id_count = ( sizeof ( ecm_ids ) / sizeof ( ecm_ids[0] ) ), + .score = USB_SCORE_NORMAL, .probe = ecm_probe, .remove = ecm_remove, }; diff --git a/src/drivers/net/ncm.c b/src/drivers/net/ncm.c index 10728d2a1..3c3ab90f1 100644 --- a/src/drivers/net/ncm.c +++ b/src/drivers/net/ncm.c @@ -667,6 +667,7 @@ static struct usb_device_id ncm_ids[] = { struct usb_driver ncm_driver __usb_driver = { .ids = ncm_ids, .id_count = ( sizeof ( ncm_ids ) / sizeof ( ncm_ids[0] ) ), + .score = USB_SCORE_NORMAL, .probe = ncm_probe, .remove = ncm_remove, }; diff --git a/src/drivers/net/smsc75xx.c b/src/drivers/net/smsc75xx.c index 017e02a59..854329c5c 100644 --- a/src/drivers/net/smsc75xx.c +++ b/src/drivers/net/smsc75xx.c @@ -1052,6 +1052,7 @@ static struct usb_device_id smsc75xx_ids[] = { struct usb_driver smsc75xx_driver __usb_driver = { .ids = smsc75xx_ids, .id_count = ( sizeof ( smsc75xx_ids ) / sizeof ( smsc75xx_ids[0] ) ), + .score = USB_SCORE_NORMAL, .probe = smsc75xx_probe, .remove = smsc75xx_remove, }; |
