If the device refuses our updated value, then we must be prepared
to receive URBs as big as the device wants to send.  Set rx_max
to the device provided value on error.

Signed-off-by: Bjørn Mork <bj...@mork.no>
---
 drivers/net/usb/cdc_ncm.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
index 4cd582a..6a65662 100644
--- a/drivers/net/usb/cdc_ncm.c
+++ b/drivers/net/usb/cdc_ncm.c
@@ -251,8 +251,11 @@ static u8 cdc_ncm_setup(struct cdc_ncm_ctx *ctx)
                        kfree(dwNtbInMaxSize);
                }
 size_err:
-               if (err < 0)
-                       pr_debug("Setting NTB Input Size failed\n");
+               if (err < 0) {
+                       /* failed, so attempt to use the device suggested size 
*/
+                       ctx->rx_max = le32_to_cpu(ctx->ncm_parm.dwNtbInMaxSize);
+                       pr_debug("Setting NTB Input Size failed, reverting to 
%u\n", ctx->rx_max);
+               }
        }
 
        /* verify maximum size of transmitted NTB in bytes */
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to