Kernel commit c5a9f6f0ab40 ("net/core: Add drop counters to VF
statistics") added support for Rx/Tx packet drops but these stats are
not reported by 'ip link'.

Cc: Eugenia Emantayev <euge...@mellanox.com>
Cc: Saeed Mahameed <sae...@mellanox.com>

Signed-off-by: Ivan Vecera <ivec...@redhat.com>
---
 ip/ipaddress.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/ip/ipaddress.c b/ip/ipaddress.c
index ea8211c1..1b5ec02a 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
@@ -558,6 +558,8 @@ static void print_vf_stats64(FILE *fp, struct rtattr 
*vfstats)
                           rta_getattr_u64(vf[IFLA_VF_STATS_RX_BYTES]));
                print_u64(PRINT_JSON, "packets", NULL,
                           rta_getattr_u64(vf[IFLA_VF_STATS_RX_PACKETS]));
+               print_u64(PRINT_JSON, "dropped", NULL,
+                          rta_getattr_u64(vf[IFLA_VF_STATS_RX_DROPPED]));
                print_u64(PRINT_JSON, "multicast", NULL,
                           rta_getattr_u64(vf[IFLA_VF_STATS_MULTICAST]));
                print_u64(PRINT_JSON, "broadcast", NULL,
@@ -570,26 +572,31 @@ static void print_vf_stats64(FILE *fp, struct rtattr 
*vfstats)
                           rta_getattr_u64(vf[IFLA_VF_STATS_TX_BYTES]));
                print_u64(PRINT_JSON, "tx_packets", NULL,
                           rta_getattr_u64(vf[IFLA_VF_STATS_TX_PACKETS]));
+               print_u64(PRINT_JSON, "tx_dropped", NULL,
+                          rta_getattr_u64(vf[IFLA_VF_STATS_TX_DROPPED]));
                close_json_object();
                close_json_object();
        } else {
                /* RX stats */
                fprintf(fp, "%s", _SL_);
-               fprintf(fp, "    RX: bytes  packets  mcast   bcast %s", _SL_);
+               fprintf(fp, "    RX: bytes  packets  dropped mcast   bcast %s",
+                       _SL_);
                fprintf(fp, "    ");
 
                print_num(fp, 10, rta_getattr_u64(vf[IFLA_VF_STATS_RX_BYTES]));
                print_num(fp, 8, rta_getattr_u64(vf[IFLA_VF_STATS_RX_PACKETS]));
+               print_num(fp, 7, rta_getattr_u64(vf[IFLA_VF_STATS_RX_DROPPED]));
                print_num(fp, 7, rta_getattr_u64(vf[IFLA_VF_STATS_MULTICAST]));
                print_num(fp, 7, rta_getattr_u64(vf[IFLA_VF_STATS_BROADCAST]));
 
                /* TX stats */
                fprintf(fp, "%s", _SL_);
-               fprintf(fp, "    TX: bytes  packets %s", _SL_);
+               fprintf(fp, "    TX: bytes  packets  dropped %s", _SL_);
                fprintf(fp, "    ");
 
                print_num(fp, 10, rta_getattr_u64(vf[IFLA_VF_STATS_TX_BYTES]));
                print_num(fp, 8, rta_getattr_u64(vf[IFLA_VF_STATS_TX_PACKETS]));
+               print_num(fp, 7, rta_getattr_u64(vf[IFLA_VF_STATS_TX_DROPPED]));
        }
 }
 
-- 
2.16.4

Reply via email to