lkml.org 
[lkml]   [2017]   [Mar]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 12/88] net/mlx5e: Count GSO packets correctly
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Gal Pressman <galp@mellanox.com>


    [ Upstream commit d3a4e4da54c7adb420d5f48e89be913b14bdeff1 ]

    TX packets statistics ('tx_packets' counter) used to count GSO packets
    as one, even though it contains multiple segments.
    This patch will increment the counter by the number of segments, and
    align the driver with the behavior of other drivers in the stack.

    Note that no information is lost in this patch due to 'tx_tso_packets'
    counter existence.

    Before, ethtool showed:
    $ ethtool -S ens6 | egrep "tx_packets|tx_tso_packets"
    tx_packets: 61340
    tx_tso_packets: 60954
    tx_packets_phy: 2451115

    Now, we will see the more logical statistics:
    $ ethtool -S ens6 | egrep "tx_packets|tx_tso_packets"
    tx_packets: 2451115
    tx_tso_packets: 60954
    tx_packets_phy: 2451115

    Fixes: e586b3b0baee ("net/mlx5: Ethernet Datapath files")
    Signed-off-by: Gal Pressman <galp@mellanox.com>
    Cc: kernel-team@fb.com
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/ethernet/mellanox/mlx5/core/en_tx.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
    +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c
    @@ -272,15 +272,18 @@ static netdev_tx_t mlx5e_sq_xmit(struct
    sq->stats.tso_bytes += skb->len - ihs;
    }

    + sq->stats.packets += skb_shinfo(skb)->gso_segs;
    num_bytes = skb->len + (skb_shinfo(skb)->gso_segs - 1) * ihs;
    } else {
    bf = sq->bf_budget &&
    !skb->xmit_more &&
    !skb_shinfo(skb)->nr_frags;
    ihs = mlx5e_get_inline_hdr_size(sq, skb, bf);
    + sq->stats.packets++;
    num_bytes = max_t(unsigned int, skb->len, ETH_ZLEN);
    }

    + sq->stats.bytes += num_bytes;
    wi->num_bytes = num_bytes;

    if (skb_vlan_tag_present(skb)) {
    @@ -377,8 +380,6 @@ static netdev_tx_t mlx5e_sq_xmit(struct
    if (bf)
    sq->bf_budget--;

    - sq->stats.packets++;
    - sq->stats.bytes += num_bytes;
    return NETDEV_TX_OK;

    dma_unmap_wqe_err:

    \
     
     \ /
      Last update: 2017-03-28 15:17    [W:2.679 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site