u16 empr_count; /* EMP reset count */
        u16 pfr_count; /* PF reset count */
        u16 sw_int_count; /* SW interrupt count */
+       u32 link_down_events;
 
        struct mutex switch_mutex;
        u16 lan_vsi;       /* our default LAN VSI */
 
        netif_info(pf, drv, netdev, "testing failed\n");
 }
 
+static void i40e_get_link_ext_stats(struct net_device *netdev,
+                                   struct ethtool_link_ext_stats *stats)
+{
+       struct i40e_netdev_priv *np = netdev_priv(netdev);
+       struct i40e_pf *pf = np->vsi->back;
+
+       stats->link_down_events = pf->link_down_events;
+}
+
 static void i40e_get_wol(struct net_device *netdev,
                         struct ethtool_wolinfo *wol)
 {
        .get_regs               = i40e_get_regs,
        .nway_reset             = i40e_nway_reset,
        .get_link               = ethtool_op_get_link,
+       .get_link_ext_stats     = i40e_get_link_ext_stats,
        .get_wol                = i40e_get_wol,
        .set_wol                = i40e_set_wol,
        .set_eeprom             = i40e_set_eeprom,
 
             new_link == netif_carrier_ok(vsi->netdev)))
                return;
 
+       if (!new_link && old_link)
+               pf->link_down_events++;
+
        i40e_print_link_message(vsi, new_link);
 
        /* Notify the base of the switch tree connected to