X-Git-Url: https://git.archive.openwrt.org/?p=openwrt.git;a=blobdiff_plain;f=target%2Flinux%2Far71xx%2Ffiles%2Fdrivers%2Fnet%2Fethernet%2Fatheros%2Fag71xx%2Fag71xx_main.c;h=622ffed1ea7d85ea1790af7bec009ddf5113b769;hp=281d0f568609a68a6b1d3f75cec51898e9cd226b;hb=42636d9903c19a6063f86d71b0e614a8f0193494;hpb=4668073da70fd1e674a7a126e0b1baa35f9ec942 diff --git a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c index 281d0f5686..622ffed1ea 100644 --- a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c +++ b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c @@ -191,7 +191,7 @@ static void ag71xx_ring_rx_clean(struct ag71xx *ag) for (i = 0; i < ring->size; i++) if (ring->buf[i].rx_buf) { dma_unmap_single(&ag->dev->dev, ring->buf[i].dma_addr, - AG71XX_RX_BUF_SIZE, DMA_FROM_DEVICE); + ag->rx_buf_size, DMA_FROM_DEVICE); kfree(ring->buf[i].rx_buf); } } @@ -217,15 +217,15 @@ static bool ag71xx_fill_rx_buf(struct ag71xx *ag, struct ag71xx_buf *buf, { void *data; - data = kmalloc(AG71XX_RX_BUF_SIZE + + data = kmalloc(ag->rx_buf_size + SKB_DATA_ALIGN(sizeof(struct skb_shared_info)), GFP_ATOMIC); if (!data) return false; buf->rx_buf = data; - buf->dma_addr = dma_map_single(&ag->dev->dev, data, - AG71XX_RX_BUF_SIZE, DMA_FROM_DEVICE); + buf->dma_addr = dma_map_single(&ag->dev->dev, data, ag->rx_buf_size, + DMA_FROM_DEVICE); buf->desc->data = (u32) buf->dma_addr + offset; return true; } @@ -609,6 +609,8 @@ static int ag71xx_open(struct net_device *dev) struct ag71xx *ag = netdev_priv(dev); int ret; + ag->rx_buf_size = ag->max_frame_len + NET_SKB_PAD + NET_IP_ALIGN; + ret = ag71xx_rings_init(ag); if (ret) goto err; @@ -890,7 +892,7 @@ static int ag71xx_rx_packets(struct ag71xx *ag, int limit) pktlen -= ETH_FCS_LEN; dma_unmap_single(&dev->dev, ring->buf[i].dma_addr, - AG71XX_RX_BUF_SIZE, DMA_FROM_DEVICE); + ag->rx_buf_size, DMA_FROM_DEVICE); dev->stats.rx_packets++; dev->stats.rx_bytes += pktlen;