On Tue, Feb 13, 2018 at 10:52 PM, John Crispin <j...@phrozen.org> wrote: > > > On 13/02/18 23:53, Rosen Penev wrote: >> >> Based on Qualcomm driver. Improves iperf3 throughput by ~20mbps on >> transmit on Archer C7v4. > > > this is missing the description of what the patch does. Unfortunately I have no real idea as of yet. > > John > >> >> Signed-off-by: Rosen Penev <ros...@gmail.com> >> --- >> .../drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c | 14 >> +++++++------- >> 1 file changed, 7 insertions(+), 7 deletions(-) >> >> 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 95682b7641..d32f220178 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 >> @@ -797,11 +797,14 @@ static netdev_tx_t ag71xx_hard_start_xmit(struct >> sk_buff *skb, >> if (ag71xx_has_ar8216(ag)) >> ag71xx_add_ar8216_header(ag, skb); >> - if (skb->len <= 4) { >> + dma_cache_sync (NULL, skb->data, skb->len, DMA_TO_DEVICE); >> + >> + if (unlikely(skb->len <= 4)) { >> DBG("%s: packet len is too small\n", ag->dev->name); >> goto err_drop; >> } >> + netdev_sent_queue(dev, skb->len); >> dma_addr = dma_map_single(&dev->dev, skb->data, skb->len, >> DMA_TO_DEVICE); >> @@ -817,27 +820,24 @@ static netdev_tx_t ag71xx_hard_start_xmit(struct >> sk_buff *skb, >> ring->buf[i].len = skb->len; >> ring->buf[i].skb = skb; >> - netdev_sent_queue(dev, skb->len); >> - >> skb_tx_timestamp(skb); >> desc->ctrl &= ~DESC_EMPTY; >> ring->curr += n; >> - /* flush descriptor */ >> - wmb(); >> - >> ring_min = 2; >> if (ring->desc_split) >> ring_min *= AG71XX_TX_RING_DS_PER_PKT; >> - if (ring->curr - ring->dirty >= ring_size - ring_min) { >> + if (unlikely(ring->curr - ring->dirty >= ring_size - ring_min)) { >> DBG("%s: tx queue full\n", dev->name); >> netif_stop_queue(dev); >> } >> DBG("%s: packet injected into TX queue\n", ag->dev->name); >> + /* flush descriptor */ >> + wmb(); >> /* enable TX engine */ >> ag71xx_wr(ag, AG71XX_REG_TX_CTRL, TX_CTRL_TXE); >> > >
_______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev