28 and igb_osdep.c. It's important that they have different names and not be called
  29 the same thing due to how the uts makefiles work.
  30 
  31 Deviations from the common FreeBSD code:
  32 
  33 We have a few differences from the common version of the FreeBSD code that exist
  34 so that we can both gather firmware information and that have workarounds for
  35 older chipsets. While, we would like to get that to be synced up and common, it
  36 is not currently.
  37 
  38 Energy Efficient Ethernet (EEE) is not enabled by default. This technology was
  39 introduced with the I350 family of parts in the igb driver. However, there have
  40 been issues seen with it in the wild and thus we opt to disable it by default
  41 until tests have proven that there are no longer problems.
  42 
  43 To help make that easier, we've documented here what these extra definitions
  44 are. DO NOT just blindly copy over new common code. There is more work that
  45 needs to be done in terms of changed interfaces and expectations for the
  46 drivers.
  47 
  48 # e1000_defines.h
  49 
  50 In e1000_defines.h we add the following three definitions which are not
  51 currently present. These definitions allow us to attach firware revisions and
  52 other information to the devinfo tree.
  53 
  54 #define         NVM_VERSION                     0x0005
  55 #define         NVM_OEM_OFFSET_0                6
  56 #define         NVM_OEM_OFFSET_1                7
  57 
  58 # Workarounds for the 82541 and 82547
  59 
  60 There are various workarounds in place for the 82541 and 82547 due to errata
  61 that exist for these devices. This has traditionally been a part of the common
  62 code. Until this can get merged into the common code completely, we've spearted
  63 out the changes that are the actual C functions into
  64 uts/common/io/e1000g/e1000g_workarounds.c. However, this alone is not
  65 sufficient. You must make sure that in e1000_hw.h that the struc
  66 e1000_dev_spec_82541 actually looks like the following:
  67 
  
 | 
 
 
  28 and igb_osdep.c. It's important that they have different names and not be called
  29 the same thing due to how the uts makefiles work.
  30 
  31 Deviations from the common FreeBSD code:
  32 
  33 We have a few differences from the common version of the FreeBSD code that exist
  34 so that we can both gather firmware information and that have workarounds for
  35 older chipsets. While, we would like to get that to be synced up and common, it
  36 is not currently.
  37 
  38 Energy Efficient Ethernet (EEE) is not enabled by default. This technology was
  39 introduced with the I350 family of parts in the igb driver. However, there have
  40 been issues seen with it in the wild and thus we opt to disable it by default
  41 until tests have proven that there are no longer problems.
  42 
  43 To help make that easier, we've documented here what these extra definitions
  44 are. DO NOT just blindly copy over new common code. There is more work that
  45 needs to be done in terms of changed interfaces and expectations for the
  46 drivers.
  47 
  48 # Support for Ice Lake and Cannon Lake
  49 
  50 Due to several changes that have been made to the core e1000 code in
  51 FreeBSD that's specific to changes for iflib, a whole sale update was
  52 not done and instead support was manually merged based on Intel.
  53 
  54 # e1000_defines.h
  55 
  56 In e1000_defines.h we add the following three definitions which are not
  57 currently present. These definitions allow us to attach firware revisions and
  58 other information to the devinfo tree.
  59 
  60 #define         NVM_VERSION                     0x0005
  61 #define         NVM_OEM_OFFSET_0                6
  62 #define         NVM_OEM_OFFSET_1                7
  63 
  64 # Workarounds for the 82541 and 82547
  65 
  66 There are various workarounds in place for the 82541 and 82547 due to errata
  67 that exist for these devices. This has traditionally been a part of the common
  68 code. Until this can get merged into the common code completely, we've spearted
  69 out the changes that are the actual C functions into
  70 uts/common/io/e1000g/e1000g_workarounds.c. However, this alone is not
  71 sufficient. You must make sure that in e1000_hw.h that the struc
  72 e1000_dev_spec_82541 actually looks like the following:
  73 
  
 |