aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/usb
diff options
context:
space:
mode:
authorBjørn Mork <bjorn@mork.no>2014-05-16 15:48:26 -0400
committerDavid S. Miller <davem@davemloft.net>2014-05-16 22:39:02 -0400
commit50f1cb1cc8f50fa88dbeaf990ae2bae91b9ff306 (patch)
tree9210c226f517b80fae8c4762ec30d0b1a3996ea3 /drivers/net/usb
parentbeeecd42c3b41d17d0bf1d839db99274c287f514 (diff)
net: cdc_ncm: use sane defaults for rx/tx buffers
Lots of devices request much larger buffers than reasonable. This cause real problems for users of hosts with limited resources. Reducing the default buffer size to 16kB for such devices is a reasonable trade-off between allowing them to aggregate traffic and avoiding memory exhaustion on resource restrained hosts. Signed-off-by: Bjørn Mork <bjorn@mork.no> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/usb')
-rw-r--r--drivers/net/usb/cdc_ncm.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
index f4b439847d04..bb53abe1f3a1 100644
--- a/drivers/net/usb/cdc_ncm.c
+++ b/drivers/net/usb/cdc_ncm.c
@@ -492,10 +492,18 @@ static void cdc_ncm_fix_modulus(struct usbnet *dev)
492static int cdc_ncm_setup(struct usbnet *dev) 492static int cdc_ncm_setup(struct usbnet *dev)
493{ 493{
494 struct cdc_ncm_ctx *ctx = (struct cdc_ncm_ctx *)dev->data[0]; 494 struct cdc_ncm_ctx *ctx = (struct cdc_ncm_ctx *)dev->data[0];
495 u32 def_rx, def_tx;
496
497 /* be conservative when selecting intial buffer size to
498 * increase the number of hosts this will work for
499 */
500 def_rx = min_t(u32, CDC_NCM_NTB_DEF_SIZE_RX,
501 le32_to_cpu(ctx->ncm_parm.dwNtbInMaxSize));
502 def_tx = min_t(u32, CDC_NCM_NTB_DEF_SIZE_TX,
503 le32_to_cpu(ctx->ncm_parm.dwNtbOutMaxSize));
495 504
496 /* clamp rx_max and tx_max and inform device */ 505 /* clamp rx_max and tx_max and inform device */
497 cdc_ncm_update_rxtx_max(dev, le32_to_cpu(ctx->ncm_parm.dwNtbInMaxSize), 506 cdc_ncm_update_rxtx_max(dev, def_rx, def_tx);
498 le32_to_cpu(ctx->ncm_parm.dwNtbOutMaxSize));
499 507
500 /* sanitize the modulus and remainder values */ 508 /* sanitize the modulus and remainder values */
501 cdc_ncm_fix_modulus(dev); 509 cdc_ncm_fix_modulus(dev);