ethoc: limit the number of buffers to 128
Thomas Chou [Tue, 6 Oct 2009 03:25:25 +0000 (03:25 +0000)]
Only 128 buffer descriptors are supported in the core. Limit the
number in case we have more memory.

Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
Signed-off-by: David S. Miller <davem@davemloft.net>

drivers/net/ethoc.c

index 6d82dc6..34d0c69 100644 (file)
@@ -662,8 +662,8 @@ static int ethoc_open(struct net_device *dev)
        if (ret)
                return ret;
 
-       /* calculate the number of TX/RX buffers */
-       num_bd = (dev->mem_end - dev->mem_start + 1) / ETHOC_BUFSIZ;
+       /* calculate the number of TX/RX buffers, maximum 128 supported */
+       num_bd = min(128, (dev->mem_end - dev->mem_start + 1) / ETHOC_BUFSIZ);
        priv->num_tx = max(min_tx, num_bd / 4);
        priv->num_rx = num_bd - priv->num_tx;
        ethoc_write(priv, TX_BD_NUM, priv->num_tx);