summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brown2015-03-16 06:39:41 +0100
committerMichael Brown2015-03-16 16:40:54 +0100
commit74f57016dcec849315f7af52cdc429c676748267 (patch)
tree34d12144758483c009ee065b09de47fa739f8991
parent[usb] Add the concept of a USB bus maximum transfer size (diff)
downloadipxe-74f57016dcec849315f7af52cdc429c676748267.tar.gz
ipxe-74f57016dcec849315f7af52cdc429c676748267.tar.xz
ipxe-74f57016dcec849315f7af52cdc429c676748267.zip
[ncm] Respect maximum transfer size of the bus
Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r--src/drivers/net/ncm.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/drivers/net/ncm.c b/src/drivers/net/ncm.c
index 8620985b..10728d2a 100644
--- a/src/drivers/net/ncm.c
+++ b/src/drivers/net/ncm.c
@@ -157,6 +157,7 @@ static struct usb_endpoint_driver_operations ncm_intr_operations = {
* @ret rc Return status code
*/
static int ncm_in_prefill ( struct ncm_device *ncm ) {
+ struct usb_bus *bus = ncm->bus;
size_t mtu;
unsigned int count;
int rc;
@@ -178,6 +179,8 @@ static int ncm_in_prefill ( struct ncm_device *ncm ) {
/* Attempt allocation at this MTU */
if ( mtu > NCM_MAX_NTB_INPUT_SIZE )
continue;
+ if ( mtu > bus->mtu )
+ continue;
count = ( NCM_IN_MIN_SIZE / mtu );
if ( count < NCM_IN_MIN_COUNT )
count = NCM_IN_MIN_COUNT;