| .. | .. |
|---|
| 31 | 31 | #define IXGBEVF_STAT(_name, _stat) { \ |
|---|
| 32 | 32 | .stat_string = _name, \ |
|---|
| 33 | 33 | .type = IXGBEVF_STATS, \ |
|---|
| 34 | | - .sizeof_stat = FIELD_SIZEOF(struct ixgbevf_adapter, _stat), \ |
|---|
| 34 | + .sizeof_stat = sizeof_field(struct ixgbevf_adapter, _stat), \ |
|---|
| 35 | 35 | .stat_offset = offsetof(struct ixgbevf_adapter, _stat) \ |
|---|
| 36 | 36 | } |
|---|
| 37 | 37 | |
|---|
| 38 | 38 | #define IXGBEVF_NETDEV_STAT(_net_stat) { \ |
|---|
| 39 | 39 | .stat_string = #_net_stat, \ |
|---|
| 40 | 40 | .type = NETDEV_STATS, \ |
|---|
| 41 | | - .sizeof_stat = FIELD_SIZEOF(struct net_device_stats, _net_stat), \ |
|---|
| 41 | + .sizeof_stat = sizeof_field(struct net_device_stats, _net_stat), \ |
|---|
| 42 | 42 | .stat_offset = offsetof(struct net_device_stats, _net_stat) \ |
|---|
| 43 | 43 | } |
|---|
| 44 | 44 | |
|---|
| .. | .. |
|---|
| 55 | 55 | IXGBEVF_STAT("alloc_rx_page", alloc_rx_page), |
|---|
| 56 | 56 | IXGBEVF_STAT("alloc_rx_page_failed", alloc_rx_page_failed), |
|---|
| 57 | 57 | IXGBEVF_STAT("alloc_rx_buff_failed", alloc_rx_buff_failed), |
|---|
| 58 | + IXGBEVF_STAT("tx_ipsec", tx_ipsec), |
|---|
| 59 | + IXGBEVF_STAT("rx_ipsec", rx_ipsec), |
|---|
| 58 | 60 | }; |
|---|
| 59 | 61 | |
|---|
| 60 | 62 | #define IXGBEVF_QUEUE_STATS_LEN ( \ |
|---|
| .. | .. |
|---|
| 83 | 85 | struct ethtool_link_ksettings *cmd) |
|---|
| 84 | 86 | { |
|---|
| 85 | 87 | struct ixgbevf_adapter *adapter = netdev_priv(netdev); |
|---|
| 86 | | - struct ixgbe_hw *hw = &adapter->hw; |
|---|
| 87 | | - u32 link_speed = 0; |
|---|
| 88 | | - bool link_up; |
|---|
| 89 | 88 | |
|---|
| 90 | 89 | ethtool_link_ksettings_zero_link_mode(cmd, supported); |
|---|
| 91 | 90 | ethtool_link_ksettings_add_link_mode(cmd, supported, 10000baseT_Full); |
|---|
| 92 | 91 | cmd->base.autoneg = AUTONEG_DISABLE; |
|---|
| 93 | 92 | cmd->base.port = -1; |
|---|
| 94 | 93 | |
|---|
| 95 | | - hw->mac.get_link_status = 1; |
|---|
| 96 | | - hw->mac.ops.check_link(hw, &link_speed, &link_up, false); |
|---|
| 97 | | - |
|---|
| 98 | | - if (link_up) { |
|---|
| 94 | + if (adapter->link_up) { |
|---|
| 99 | 95 | __u32 speed = SPEED_10000; |
|---|
| 100 | 96 | |
|---|
| 101 | | - switch (link_speed) { |
|---|
| 97 | + switch (adapter->link_speed) { |
|---|
| 102 | 98 | case IXGBE_LINK_SPEED_10GB_FULL: |
|---|
| 103 | 99 | speed = SPEED_10000; |
|---|
| 104 | 100 | break; |
|---|
| .. | .. |
|---|
| 222 | 218 | struct ixgbevf_adapter *adapter = netdev_priv(netdev); |
|---|
| 223 | 219 | |
|---|
| 224 | 220 | strlcpy(drvinfo->driver, ixgbevf_driver_name, sizeof(drvinfo->driver)); |
|---|
| 225 | | - strlcpy(drvinfo->version, ixgbevf_driver_version, |
|---|
| 226 | | - sizeof(drvinfo->version)); |
|---|
| 227 | 221 | strlcpy(drvinfo->bus_info, pci_name(adapter->pdev), |
|---|
| 228 | 222 | sizeof(drvinfo->bus_info)); |
|---|
| 229 | 223 | |
|---|
| .. | .. |
|---|
| 972 | 966 | } |
|---|
| 973 | 967 | |
|---|
| 974 | 968 | static const struct ethtool_ops ixgbevf_ethtool_ops = { |
|---|
| 969 | + .supported_coalesce_params = ETHTOOL_COALESCE_USECS, |
|---|
| 975 | 970 | .get_drvinfo = ixgbevf_get_drvinfo, |
|---|
| 976 | 971 | .get_regs_len = ixgbevf_get_regs_len, |
|---|
| 977 | 972 | .get_regs = ixgbevf_get_regs, |
|---|