
Make sure that we pad small packets to a minimum length of 60 bytes (without FCS). This is necessary to interface with Ethernet switches that will reject RUNT frames unless padded correctly.
Signed-off-by: Florian Fainelli f.fainelli@gmail.com --- drivers/net/designware.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/drivers/net/designware.c b/drivers/net/designware.c index 036d231071ca..10356a9abd0e 100644 --- a/drivers/net/designware.c +++ b/drivers/net/designware.c @@ -343,6 +343,8 @@ int designware_eth_enable(struct dw_eth_dev *priv) return 0; }
+#define ETH_ZLEN 60 + static int _dw_eth_send(struct dw_eth_dev *priv, void *packet, int length) { struct eth_dma_regs *dma_p = priv->dma_regs_p; @@ -369,6 +371,8 @@ static int _dw_eth_send(struct dw_eth_dev *priv, void *packet, int length) return -EPERM; }
+ length = (length < ETH_ZLEN) ? ETH_ZLEN : length; + memcpy((void *)data_start, packet, length);
/* Flush data to be sent */