Changeset 42475


Ignore:
Timestamp:
2014-09-11T17:14:05+02:00 (3 years ago)
Author:
nbd
Message:

ar71xx: ack completed tx descriptors only after the full frame has been completed

Signed-off-by: Felix Fietkau <nbd@…>

Backport of r42457

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/barrier_breaker/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c

    r42433 r42475  
    902902        int sent = 0; 
    903903        int bytes_compl = 0; 
     904        int n = 0; 
    904905 
    905906        DBG("%s: processing TX ring\n", ag->dev->name); 
    906907 
    907         while (ring->dirty != ring->curr) { 
    908                 unsigned int i = ring->dirty % ring->size; 
     908        while (ring->dirty + n != ring->curr) { 
     909                unsigned int i = (ring->dirty + n) % ring->size; 
    909910                struct ag71xx_desc *desc = ring->buf[i].desc; 
    910911                struct sk_buff *skb = ring->buf[i].skb; 
     
    917918                } 
    918919 
    919                 ag71xx_wr(ag, AG71XX_REG_TX_STATUS, TX_STATUS_PS); 
    920  
    921                 if (skb) { 
    922                         dev_kfree_skb_any(skb); 
    923                         ring->buf[i].skb = NULL; 
    924  
    925                         bytes_compl += ring->buf[i].len; 
    926                         sent++; 
     920                n++; 
     921                if (!skb) 
     922                        continue; 
     923 
     924                dev_kfree_skb_any(skb); 
     925                ring->buf[i].skb = NULL; 
     926 
     927                bytes_compl += ring->buf[i].len; 
     928 
     929                sent++; 
     930                ring->dirty += n; 
     931 
     932                while (n > 0) { 
     933                        ag71xx_wr(ag, AG71XX_REG_TX_STATUS, TX_STATUS_PS); 
     934                        n--; 
    927935                } 
    928  
    929                 ring->dirty++; 
    930936        } 
    931937 
Note: See TracChangeset for help on using the changeset viewer.