Re: [PATCH v2 2/2] net: Add driver for LiteX's LiteEth network interface
From: Joel Stanley <joel@jms.id.au>
Date: 2021-08-25 06:41:32
Also in:
lkml, netdev
On Wed, 25 Aug 2021 at 06:35, Joel Stanley [off-list ref] wrote:
On Tue, 24 Aug 2021 at 19:43, Gabriel L. Somlo [off-list ref] wrote:quoted
quoted
diff --git a/drivers/net/ethernet/litex/Makefile b/drivers/net/ethernet/litex/Makefile new file mode 100644 index 000000000000..9343b73b8e49 --- /dev/null +++ b/drivers/net/ethernet/litex/Makefile +int liteeth_setup_slots(struct liteeth *priv) +{ + struct device_node *np = priv->dev->of_node; + int err, depth; + + err = of_property_read_u32(np, "rx-fifo-depth", &depth); + if (err) { + dev_err(priv->dev, "unable to get rx-fifo-depth\n"); + return err; + } + if (depth < LITEETH_BUFFER_SIZE) {If I set depth to be *equal* to LITEETH_BUFFER_SIZE (2048) in DTS, no traffic makes it out of my network interface (linux-on-litex-rocket on an ecpix5 board, see github.com/litex-hub/linux-on-litex-rocket). May I suggest rejecting if (depth / LITEETH_BUFFER_SIZE < 2) instead? When that's enforced, the interface actually works fine for me.Yes, I was using BUFFER_SIZE as the slot size, which it is not. I'll rework it to use the slot size I think. I spent some time digging through the migen source and I couldn't work out where the 1024 length comes from. If anything it should be eth_mtu, which is 1530. Florent, can you clear that up?
Replying to myself, the 0x800 is the slot size. I will fix the maths so the number of slots is calculated correctly.