Print this page
Update i40e for new devices, prototype changes

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/i40e/i40e_stats.c
          +++ new/usr/src/uts/common/io/i40e/i40e_stats.c
↓ open down ↓ 4 lines elided ↑ open up ↑
   5    5   * 1.0 of the CDDL.
   6    6   *
   7    7   * A full copy of the text of the CDDL should have accompanied this
   8    8   * source.  A copy of the CDDL is also available via the Internet at
   9    9   * http://www.illumos.org/license/CDDL.
  10   10   */
  11   11  
  12   12  /*
  13   13   * Copyright 2015 OmniTI Computer Consulting, Inc. All rights reserved.
  14   14   * Copyright 2019 Joyent, Inc.
       15 + * Copyright 2021 Oxide Computer Company
  15   16   */
  16   17  
  17   18  #include "i40e_sw.h"
  18   19  
  19   20  /*
  20   21   * -------------------
  21   22   * Statistics Overview
  22   23   * -------------------
  23   24   *
  24   25   * As part of managing the driver and understanding what's going on, we keep
↓ open down ↓ 903 lines elided ↑ open up ↑
 928  929          /*
 929  930           * This group answers the question of do we support a given speed in
 930  931           * theory.
 931  932           */
 932  933          case ETHER_STAT_CAP_100FDX:
 933  934                  *val = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_100MB) != 0;
 934  935                  break;
 935  936          case ETHER_STAT_CAP_1000FDX:
 936  937                  *val = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_1GB) != 0;
 937  938                  break;
      939 +        case ETHER_STAT_CAP_2500FDX:
      940 +                *val = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_2_5GB) != 0;
      941 +                break;
      942 +        case ETHER_STAT_CAP_5000FDX:
      943 +                *val = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_5GB) != 0;
      944 +                break;
 938  945          case ETHER_STAT_CAP_10GFDX:
 939  946                  *val = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_10GB) != 0;
 940  947                  break;
 941  948          case ETHER_STAT_CAP_25GFDX:
 942  949                  *val = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_25GB) != 0;
 943  950                  break;
 944  951          case ETHER_STAT_CAP_40GFDX:
 945  952                  *val = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_40GB) != 0;
 946  953                  break;
 947  954  
↓ open down ↓ 2 lines elided ↑ open up ↑
 950  957           * Until we support setting these because we're working with a copper
 951  958           * PHY, then the only things we advertise are based on the link PHY
 952  959           * speeds. In other words, we advertise everything we support.
 953  960           */
 954  961          case ETHER_STAT_ADV_CAP_100FDX:
 955  962                  *val = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_100MB) != 0;
 956  963                  break;
 957  964          case ETHER_STAT_ADV_CAP_1000FDX:
 958  965                  *val = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_1GB) != 0;
 959  966                  break;
      967 +        case ETHER_STAT_ADV_CAP_2500FDX:
      968 +                *val = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_2_5GB) != 0;
      969 +                break;
      970 +        case ETHER_STAT_ADV_CAP_5000FDX:
      971 +                *val = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_5GB) != 0;
      972 +                break;
 960  973          case ETHER_STAT_ADV_CAP_10GFDX:
 961  974                  *val = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_10GB) != 0;
 962  975                  break;
 963  976          case ETHER_STAT_ADV_CAP_25GFDX:
 964  977                  *val = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_25GB) != 0;
 965  978                  break;
 966  979          case ETHER_STAT_ADV_CAP_40GFDX:
 967  980                  *val = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_40GB) != 0;
 968  981                  break;
 969  982  
↓ open down ↓ 3 lines elided ↑ open up ↑
 973  986           * give us a way to determine whether or not they actually support
 974  987           * something, only what they have enabled. This means that all we can
 975  988           * tell the user is the speed that we're currently at, unfortunately.
 976  989           */
 977  990          case ETHER_STAT_LP_CAP_100FDX:
 978  991                  *val = i40e->i40e_link_speed == 100;
 979  992                  break;
 980  993          case ETHER_STAT_LP_CAP_1000FDX:
 981  994                  *val = i40e->i40e_link_speed == 1000;
 982  995                  break;
      996 +        case ETHER_STAT_LP_CAP_2500FDX:
      997 +                *val = i40e->i40e_link_speed == 2500;
      998 +                break;
      999 +        case ETHER_STAT_LP_CAP_5000FDX:
     1000 +                *val = i40e->i40e_link_speed == 5000;
     1001 +                break;
 983 1002          case ETHER_STAT_LP_CAP_10GFDX:
 984 1003                  *val = i40e->i40e_link_speed == 10000;
 985 1004                  break;
 986 1005          case ETHER_STAT_LP_CAP_25GFDX:
 987 1006                  *val = i40e->i40e_link_speed == 25000;
 988 1007                  break;
 989 1008          case ETHER_STAT_LP_CAP_40GFDX:
 990 1009                  *val = i40e->i40e_link_speed == 40000;
 991 1010                  break;
 992 1011  
↓ open down ↓ 3 lines elided ↑ open up ↑
 996 1015           * question of the ETHER_STAT_LP_CAP family because hardware doesn't
 997 1016           * give us any way of knowing whether or not it does.
 998 1017           */
 999 1018          case ETHER_STAT_CAP_100HDX:
1000 1019          case ETHER_STAT_CAP_1000HDX:
1001 1020          case ETHER_STAT_CAP_10FDX:
1002 1021          case ETHER_STAT_CAP_10HDX:
1003 1022          case ETHER_STAT_CAP_100T4:
1004 1023          case ETHER_STAT_CAP_100GFDX:
1005 1024          case ETHER_STAT_CAP_50GFDX:
1006      -        case ETHER_STAT_CAP_2500FDX:
1007      -        case ETHER_STAT_CAP_5000FDX:
1008 1025          case ETHER_STAT_ADV_CAP_1000HDX:
1009 1026          case ETHER_STAT_ADV_CAP_100HDX:
1010 1027          case ETHER_STAT_ADV_CAP_10FDX:
1011 1028          case ETHER_STAT_ADV_CAP_10HDX:
1012 1029          case ETHER_STAT_ADV_CAP_100T4:
1013 1030          case ETHER_STAT_ADV_CAP_100GFDX:
1014 1031          case ETHER_STAT_ADV_CAP_50GFDX:
1015      -        case ETHER_STAT_ADV_CAP_2500FDX:
1016      -        case ETHER_STAT_ADV_CAP_5000FDX:
1017 1032          case ETHER_STAT_LP_CAP_1000HDX:
1018 1033          case ETHER_STAT_LP_CAP_100HDX:
1019 1034          case ETHER_STAT_LP_CAP_10FDX:
1020 1035          case ETHER_STAT_LP_CAP_10HDX:
1021 1036          case ETHER_STAT_LP_CAP_100T4:
1022 1037          case ETHER_STAT_LP_CAP_100GFDX:
1023 1038          case ETHER_STAT_LP_CAP_50GFDX:
1024      -        case ETHER_STAT_LP_CAP_2500FDX:
1025      -        case ETHER_STAT_LP_CAP_5000FDX:
1026 1039                  *val = 0;
1027 1040                  break;
1028 1041  
1029 1042          case ETHER_STAT_LINK_DUPLEX:
1030 1043                  *val = i40e->i40e_link_duplex;
1031 1044                  break;
1032 1045          case ETHER_STAT_TOOSHORT_ERRORS:
1033 1046                  i40e_stat_get_uint32(i40e, I40E_GLPRT_RUC(port),
1034 1047                      &ipk->ipk_rx_undersize, &ips->ips_rx_undersize, B_FALSE);
1035 1048  
↓ open down ↓ 304 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX