diff options
author | Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> | 2015-10-23 17:46:03 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-10-26 21:32:14 -0400 |
commit | ab8579169b79c062935dade949287113c7c1ba73 (patch) | |
tree | 9645d2a3c7676ec5044e0815c41249069b2c5351 | |
parent | f7e1b37ec84730c759eee54289f61f30e59d79de (diff) |
sh_eth: fix RX buffer size alignment
Both Renesas R-Car and RZ/A1 manuals state that RX buffer length must be
a multiple of 32 bytes, while the driver only uses 16 byte granularity...
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/renesas/sh_eth.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c index 257ea713b4c1..d8334d8a53b3 100644 --- a/drivers/net/ethernet/renesas/sh_eth.c +++ b/drivers/net/ethernet/renesas/sh_eth.c | |||
@@ -1148,8 +1148,8 @@ static void sh_eth_ring_format(struct net_device *ndev) | |||
1148 | 1148 | ||
1149 | /* RX descriptor */ | 1149 | /* RX descriptor */ |
1150 | rxdesc = &mdp->rx_ring[i]; | 1150 | rxdesc = &mdp->rx_ring[i]; |
1151 | /* The size of the buffer is a multiple of 16 bytes. */ | 1151 | /* The size of the buffer is a multiple of 32 bytes. */ |
1152 | rxdesc->buffer_length = ALIGN(mdp->rx_buf_sz, 16); | 1152 | rxdesc->buffer_length = ALIGN(mdp->rx_buf_sz, 32); |
1153 | dma_addr = dma_map_single(&ndev->dev, skb->data, | 1153 | dma_addr = dma_map_single(&ndev->dev, skb->data, |
1154 | rxdesc->buffer_length, | 1154 | rxdesc->buffer_length, |
1155 | DMA_FROM_DEVICE); | 1155 | DMA_FROM_DEVICE); |
@@ -1506,7 +1506,7 @@ static int sh_eth_rx(struct net_device *ndev, u32 intr_status, int *quota) | |||
1506 | if (mdp->cd->rpadir) | 1506 | if (mdp->cd->rpadir) |
1507 | skb_reserve(skb, NET_IP_ALIGN); | 1507 | skb_reserve(skb, NET_IP_ALIGN); |
1508 | dma_unmap_single(&ndev->dev, rxdesc->addr, | 1508 | dma_unmap_single(&ndev->dev, rxdesc->addr, |
1509 | ALIGN(mdp->rx_buf_sz, 16), | 1509 | ALIGN(mdp->rx_buf_sz, 32), |
1510 | DMA_FROM_DEVICE); | 1510 | DMA_FROM_DEVICE); |
1511 | skb_put(skb, pkt_len); | 1511 | skb_put(skb, pkt_len); |
1512 | skb->protocol = eth_type_trans(skb, ndev); | 1512 | skb->protocol = eth_type_trans(skb, ndev); |
@@ -1524,8 +1524,8 @@ static int sh_eth_rx(struct net_device *ndev, u32 intr_status, int *quota) | |||
1524 | for (; mdp->cur_rx - mdp->dirty_rx > 0; mdp->dirty_rx++) { | 1524 | for (; mdp->cur_rx - mdp->dirty_rx > 0; mdp->dirty_rx++) { |
1525 | entry = mdp->dirty_rx % mdp->num_rx_ring; | 1525 | entry = mdp->dirty_rx % mdp->num_rx_ring; |
1526 | rxdesc = &mdp->rx_ring[entry]; | 1526 | rxdesc = &mdp->rx_ring[entry]; |
1527 | /* The size of the buffer is 16 byte boundary. */ | 1527 | /* The size of the buffer is 32 byte boundary. */ |
1528 | rxdesc->buffer_length = ALIGN(mdp->rx_buf_sz, 16); | 1528 | rxdesc->buffer_length = ALIGN(mdp->rx_buf_sz, 32); |
1529 | 1529 | ||
1530 | if (mdp->rx_skbuff[entry] == NULL) { | 1530 | if (mdp->rx_skbuff[entry] == NULL) { |
1531 | skb = netdev_alloc_skb(ndev, skbuff_size); | 1531 | skb = netdev_alloc_skb(ndev, skbuff_size); |