]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
net: ena: add good checksum counter
authorSameeh Jubran <sameehj@amazon.com>
Mon, 3 Jun 2019 14:43:28 +0000 (17:43 +0300)
committerStefan Bader <stefan.bader@canonical.com>
Wed, 13 Nov 2019 17:07:38 +0000 (18:07 +0100)
BugLink: https://bugs.launchpad.net/bugs/1850175
Add a new statistics to ETHTOOL to specify if the device calculated
and validated the Rx csum.

Signed-off-by: Evgeny Shmeilin <evgeny@annapurnaLabs.com>
Signed-off-by: Sameeh Jubran <sameehj@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit d2eecc6ee8c92053797513e34931334dd0e85e18)
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Acked-by: Stefan Bader <stefan.bader@canonical.com>
Acked-by: Khaled Elmously <khalid.elmously@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
drivers/net/ethernet/amazon/ena/ena_ethtool.c
drivers/net/ethernet/amazon/ena/ena_netdev.c
drivers/net/ethernet/amazon/ena/ena_netdev.h

index 28fe4c6ef420f3a5ada58407eaf33e0d1f14152e..5687a2860f0183c4014afe4e9ceb1eb9eb0d1554 100644 (file)
@@ -88,13 +88,14 @@ static const struct ena_stats ena_stats_tx_strings[] = {
 static const struct ena_stats ena_stats_rx_strings[] = {
        ENA_STAT_RX_ENTRY(cnt),
        ENA_STAT_RX_ENTRY(bytes),
+       ENA_STAT_RX_ENTRY(rx_copybreak_pkt),
+       ENA_STAT_RX_ENTRY(csum_good),
        ENA_STAT_RX_ENTRY(refil_partial),
        ENA_STAT_RX_ENTRY(bad_csum),
        ENA_STAT_RX_ENTRY(page_alloc_fail),
        ENA_STAT_RX_ENTRY(skb_alloc_fail),
        ENA_STAT_RX_ENTRY(dma_mapping_err),
        ENA_STAT_RX_ENTRY(bad_desc_num),
-       ENA_STAT_RX_ENTRY(rx_copybreak_pkt),
        ENA_STAT_RX_ENTRY(bad_req_id),
        ENA_STAT_RX_ENTRY(empty_rx_ring),
        ENA_STAT_RX_ENTRY(csum_unchecked),
index 99ccf40ec932d087b3f013f8b23ad08e07f8ba8f..e3d593cc1b99993a4865641302a1625079f1a30f 100644 (file)
@@ -1002,6 +1002,9 @@ static inline void ena_rx_checksum(struct ena_ring *rx_ring,
 
                if (likely(ena_rx_ctx->l4_csum_checked)) {
                        skb->ip_summed = CHECKSUM_UNNECESSARY;
+                       u64_stats_update_begin(&rx_ring->syncp);
+                       rx_ring->rx_stats.csum_good++;
+                       u64_stats_update_end(&rx_ring->syncp);
                } else {
                        u64_stats_update_begin(&rx_ring->syncp);
                        rx_ring->rx_stats.csum_unchecked++;
index 74c316081499c2a01f933e7a85cdfe298007839c..ec111cfc59b2be119fc1a18eaec90bec9361a57a 100644 (file)
@@ -208,13 +208,14 @@ struct ena_stats_tx {
 struct ena_stats_rx {
        u64 cnt;
        u64 bytes;
+       u64 rx_copybreak_pkt;
+       u64 csum_good;
        u64 refil_partial;
        u64 bad_csum;
        u64 page_alloc_fail;
        u64 skb_alloc_fail;
        u64 dma_mapping_err;
        u64 bad_desc_num;
-       u64 rx_copybreak_pkt;
        u64 bad_req_id;
        u64 empty_rx_ring;
        u64 csum_unchecked;