• Petri Gynther's avatar
    net: bcmgenet: fix dev->stats.tx_bytes accounting · 73d64d64
    Petri Gynther authored
    commit 55868120 upstream.
    
    1. Add bytes_compl local variable to __bcmgenet_tx_reclaim() to collect
       transmitted bytes. dev->stats updates can then be moved outside the
       while-loop. bytes_compl is also needed for future BQL support.
    2. When bcmgenet device uses Tx checksum offload, each transmitted skb
       gets an extra 64-byte header prepended to it. Before this header is
       prepended to the skb, we need to save the skb "wire" length in
       GENET_CB(skb)->bytes_sent, so that proper Tx bytes accounting can
       be done in __bcmgenet_tx_reclaim().
    3. skb->len covers the entire length of skb, whether it is linear or
       fragmented. Thus, when we clean the fragments, do not increase
       transmitted bytes.
    
    Fixes: 1c1008c7 ("net: bcmgenet: add main driver file")
    Signed-off-by: default avatarPetri Gynther <pgynther@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarKamal Mostafa <kamal@canonical.com>
    73d64d64
bcmgenet.c 89.8 KB