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
|