Name Date Size #Lines LOC

..--

LICENSE.newH A D29-Jun-20131.6 KiB3224

READMEH A D29-Jun-201328.2 KiB770638

README.illumosH A D21-Feb-20164.3 KiB10384

README.newH A D29-Jun-201312.4 KiB407267

THIRDPARTYLICENSEH A D29-Jun-2013819 2221

THIRDPARTYLICENSE.descripH A D29-Jun-201320 21

e1000_80003es2lan.cH A D21-Feb-201642.8 KiB1,527885

e1000_80003es2lan.hH A D21-Feb-20164.1 KiB10235

e1000_82540.cH A D21-Feb-201620.2 KiB719411

e1000_82541.cH A D21-Feb-201636 KiB1,305768

e1000_82541.hH A D21-Feb-20163.6 KiB9343

e1000_82542.cH A D21-Feb-201615.8 KiB592318

e1000_82543.cH A D21-Feb-201644.8 KiB1,597806

e1000_82543.hH A D21-Feb-20162.4 KiB5818

e1000_82571.cH A D21-Feb-201656.1 KiB2,0321,221

e1000_82571.hH A D21-Feb-20162.7 KiB6722

e1000_82575.cH A D21-Feb-2016101.2 KiB3,7802,221

e1000_82575.hH A D21-Feb-201620.7 KiB523386

e1000_api.cH A D21-Feb-201637.2 KiB1,373692

e1000_api.hH A D21-Feb-20167.7 KiB16896

e1000_defines.hH A D21-Feb-201664.5 KiB1,4881,089

e1000_hw.hH A D21-Feb-201626.4 KiB1,038884

e1000_i210.cH A D21-Feb-201625.6 KiB935544

e1000_i210.hH A D21-Feb-20164.3 KiB11063

e1000_ich8lan.cH A D21-Feb-2016172.5 KiB6,1023,722

e1000_ich8lan.hH A D21-Feb-201614.2 KiB343230

e1000_mac.cH A D21-Feb-201667.2 KiB2,2541,164

e1000_mac.hH A D21-Feb-20164.8 KiB9657

e1000_manage.cH A D21-Feb-201616.3 KiB577322

e1000_manage.hH A D21-Feb-20164.1 KiB9751

e1000_mbx.cH A D21-Feb-201620.1 KiB786377

e1000_mbx.hH A D21-Feb-20165.2 KiB10752

e1000_nvm.cH A D21-Feb-201631.4 KiB1,236721

e1000_nvm.hH A D21-Feb-20163.6 KiB8140

e1000_phy.cH A D21-Feb-2016115.9 KiB4,2522,404

e1000_phy.hH A D21-Feb-201614 KiB326236

e1000_regs.hH A D21-Feb-201637.5 KiB696571

e1000_vf.cH A D21-Feb-201616.6 KiB586283

e1000_vf.hH A D21-Feb-20168.8 KiB297214

README

1#
2# This file is provided under a CDDLv1 license.  When using or
3# redistributing this file, you may do so under this license.
4# In redistributing this file this license must be included
5# and no other modification of this header file is permitted.
6#
7# CDDL LICENSE SUMMARY
8#
9# Copyright(c) 1999 - 2009 Intel Corporation. All rights reserved.
10#
11# The contents of this file are subject to the terms of Version
12# 1.0 of the Common Development and Distribution License (the "License").
13#
14# You should have received a copy of the License with this software.
15# You can obtain a copy of the License at
16#	http://www.opensolaris.org/os/licensing.
17# See the License for the specific language governing permissions
18# and limitations under the License.
19#
20# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
21#
22#
23
24
25
264.0.4 code drop from Intel on 1/30/2003
27=======================================
28  This version is used as the base for putback into both s10 and
29  s9u4.
30
31  Following changes were done to this code base before putting
32  back into solaris trees (S10 & S9U4):
33
34  1) Changes to e1000_hw.c to remove build warnings
35
36     + diff /home/naroori/grizzly/sources/e1000g/1_4.0.4/e1000_hw.c .
37     2616c2616
38     <  phy_info->downshift = hw->speed_downgraded;
39     ---
40     >  phy_info->downshift = (int)hw->speed_downgraded;
41     2684c2684
42     <  phy_info->downshift = hw->speed_downgraded;
43     ---
44     >  phy_info->downshift = (int)hw->speed_downgraded;
45
46  2) Changes to e1000g_dlpi.c for ipv6 plumbing problem and
47     problem with default MTU size of 2024.
48
49     + diff /home/naroori/grizzly/sources/e1000g/1_4.0.4/e1000g_dlpi.c .
50     313a314
51     >  /* the following causes problem with ipv6 plumbing...
52     314a316
53     >  */
54     628c630,632
55     <    if (Adapter->Shared.max_frame_size == FRAME_SIZE_UPTO_16K)
56     ---
57     >    if (Adapter->Shared.max_frame_size == ETHERMTU) {
58     >    }
59     >    else if (Adapter->Shared.max_frame_size == FRAME_SIZE_UPTO_16K) {
60     630c634,635
61     <    else
62     ---
63     >    }
64     >    else  {
65     631a637
66     >    }
67
68  3) Changes to e1000g_main.c for version string modification,
69     removing console messages on bootup and problems with default
70     MTU size of 2024.
71
72     + diff /home/naroori/grizzly/sources/e1000g/1_4.0.4/e1000g_main.c .
73     59c59
74     < static char e1000g_version[]="Driver Ver. 4.0.4-beta";
75     ---
76     > static char e1000g_version[]="Driver Ver. 4.0.4";
77     937c937
78     <        e1000g_log(Adapter,CE_CONT,"\n%s, %s\n",AdapterName,e1000g_version);
79     ---
80     >        cmn_err(CE_CONT,"!%s, %s\n",AdapterName,e1000g_version);
81     3000c3000
82     <        Adapter->Shared.max_frame_size = FRAME_SIZE_UPTO_2K;
83     ---
84     >        Adapter->Shared.max_frame_size = ETHERMTU;
85     3013c3013
86     <        Adapter->Shared.max_frame_size = FRAME_SIZE_UPTO_2K;
87     ---
88     >        Adapter->Shared.max_frame_size = ETHERMTU;
89
90
91
92Bug fixes to 4.0.4:
93===================
94   1) bug#4829398 code cleanup for ethernet bootup messages
95
96
974.0.12 code drop from Intel on 3/18/2003
98========================================
99
100  This drop had extensive changes from 4.0.4. Many changes after
101  4.0.4 were realted to new hardware (a.k.a. BayCity chipset),
102  not relevant to Grizzly.After looking at the changelog from Intel,
103  we decided not to do a putback but rather take only high priority
104  fixes from this drop and generate a new version 4.0.4.1.
105
106  Here is the changelog supplied by Intel for this drop:
107
108    ________________________________________________________________________
109    Component Name: Unix-Solaris_8254x_BayCity_Intel
110    Description: Bay City software component for gigabit products
111    ________________________________________________________________________
112
113
114    ---Version: 4.0.13  Date: 3/14/2003 5:00:00 PM---
115    Added transmit mutex locking to the 82547 workaround code.
116
117    ---Version: 4.0.12  Date: 3/10/2003 8:01:00 PM---
118    Added new shared code with LED link speed fix
119
120    ---Version: 4.0.11  Date: 3/7/2003 5:57:00 PM---
121    Updated the Tanacross FIFO hang workaround to reset FIFO pointers instead of sending autonomous packets.
122
123    ---Version: 4.0.10  Date: 3/4/2003 2:39:00 PM---
124    Removed an extra sdu adjustment that was left in by accident
125
126    ---Version: 4.0.9   Date: 3/4/2003 11:13:00 AM---
127    Removed the first call to adapter_stop.  This was called before the HW struct was properly initialized, and could cause hangs.
128
129    Changed reported ethernet sdu from 2024 to 1500, as driver could be configured for invalid frame MTU sizes in Solaris 9.
130
131    Added Tanacross workaround for FIFO hang.
132
133    ---Version: 4.0.8   Date: 2/25/2003 2:27:00 PM---
134    Shared code update including Phy init script.
135    Smartspeed workaround added.  e1000g_smartspeed called from LocalTimer function every two seconds when link is down.
136
137    ---Version: 4.0.7   Date: 2/18/2003 11:41:00 AM---
138    Updated to include bug fixes from the shared code.
139
140    ---Version: 4.0.5   Date: 1/31/2003 10:13:00 AM---
141    Support for new hardware changes
142    Removed the extra ack sent at the end of the attach_req routine.  This extra ack previously made IPv6 plumbing on Solaris 9 fail.
143
144
1454.0.4.1
146=======
147   This version is not an Intel drop but 4.0.4 merged with two
148   high priority fixes from 4.0.12. We will give back the 4.0.4.1
149   driver back to Intel, per their request, so they have the exact
150   code that we are releasing through Solaris.
151
152   The following are the two fixes selected for inclusion from
153   4.0.12 codebase:
154
155   1) Removing the first call to adapter_stop as discussed in
156      4.0.12 changelog.
157
158   2) Corrections to MTU size calculations first introduced
159      in our 4.0.4 putback to bring them into sync with 4.0.12
160      MTU size calculations.
161
162   We also added README file (current file you are reading) during
163   this putback.
164
1654.0.4.2
166=======
167  This version has the following fixes:
168
169  1) bug#4857098: e1000g driver assumes another intel card as its own.
170     The fix involved eliminating 1009, 1012, 1015, 1016, 1017
171     device-ids from e1000g nodelist so that they do not conflict
172     with iprb's subsystem-ids.
173
174     This fix has to be reverted later once we have a proper fix for
175     bug#4859426.
176
177   2) bug#4853683: e1000g lacks a large number of expected kstats
178      The fix involved three steps: a) Renaming some of the existing
179      kstats to comply with WDD documentation b) Computing some of
180      those which are not being tracked c) Supplying zero for the rest
181      the error stats which are not being tracked.
182
183      This fix has to be revisited to improvise the statistics in
184      future.
185
186   3) bug#4862529: System panics during configuring devices on a Dell 4-way
187      servers. The fix involved removing all the devic-ids from nodelist
188      except for 1010. This means that we support now only the grizzly
189      on-board gigabit chipset and "Intel Pro/1000 MT Dual Server Adapter".
190
191      This fix has to be reverted later once we have a proper fix for
192      bug#4859426.
193
1944.0.4.3
195=======
196  This version has the following fixes:
197
198  1) bug#4874857: ipv6 ping fails on bootup for e1000g.
199	 The fix involved implementing multicast tables both at per stream
200	 level and per device level.
201
202  2) bug#4875743: null pointer dereference in ddi_dma_addr_bind_handle.
203	 The fix involved adding LastTxDescriptorBuf to struct e1000g and
204	 handling consequent proper calculations for LastTxDescriptor.
205
206  3) bug#4882541: setting up ethernet address causes machine to panic.
207     The fix involved removing a spurious log message which was causing
208	 the panic.
209
210  4) bug#4883302: Reinstate the removed device-ids - phase 2.
211	 The fix involved some chip initializations to handle 1000 id.
212
213  5) bug#4919285: device id 8086,100e needs to be added
214	 The fix needed for the Intel Precision 350 workstation
215
2164.2.11
217======
218
219We need to sync up with the latest Intel code base for e1000g driver.
220
221Intel is currently at version 4.2.11 while we are on 4.0.4 branch.
222The exact version under 4.0.4 branch is 4.0.4.3. Since we are on
223the branch while Intel is working on the main trunk, we have had
224lot of friction in getting timely fixes from Intel. The current
225syncing up with their main trunk lets us a smooth migration path.
226
227The new code base  also would provide us with support for additional
228cards including Quad port cards (See bugs: 4921433, 4914460).
229In our old 4.0.4 branch, we had to drop support for a lot of cards
230for various problems; with the current syncing up, we would be able
231to support so many various cards except for the cards clashing with
232iprb driver.
233
234The new code base also has support for additional new chipsets. The code
235base also benefits from any fixes to the shared code base with other
236operating system drivers.
237
238The new codebase also has lot of cleanups in terms of various #ifdefs
239and should be much simpler to maintain.
240
241So the list of actual ids take out are:
2421009
2431012
2441013
2451015
2461016
2471017
248
2494.2.15
250======
251This intel code drop addresses the following bug:
252
253    4909863: Bad trap panic in e1000g_rtn_buf
254
2554.2.16
256======
257  This version has the following fix:
258   4932422 interconnect remains faulted after adapter disconnected and then reconnected
259
260Notes on packaging:
261===================
262   Intel names the package as INTCGigaE while we chose to rename
263   it as SUNWintgige as per Sun packaging conventions.
264
2654.2.17
266======
267  This version has the following fixes:
268   4971416 e1000g seems to hang system when no network connected
269   4997067 e1000gattach panicks when the going gets tough
270   4990064 e1000g leaks memory when it runs out of transmit descriptors
271
2724.2.17.1
273======
274  This version has the following fix:
275   5014625 e1000g driver panicked when snoop(1M) exited
276
2774.2.17.2
278======
279  This version has the following fix:
280   4940870 e1000g: Dependence on instance initialization order disables .conf properties
281   5033616 e1000g panicked after rem_drv while some service still binds to the driver
282   5037062 strings have crept back in e1000g/adpu320 related mutex_init()s
283   5050268 Some e1000g flag operations are not correct.
284
2854.2.17.3
286======
287  This version has the following fix:
288   5067162 e1000g cannot transmit heavy UDP
289
2904.2.17.4
291======
292  This version has the following fix:
293   5010052 The stress load/unload test of Intel PWLA8494MT Quad Port NIC causes system hung
294   5050265 E1000g does not support IPV6 fast path. This will impact IPV6 performance.
295   5050369 E1000g locks the system if plumb/unplumb under heavy workload and snoop.
296   5050415 E1000g will accepts ethernet packets which are not addressed to it.
297   5055132 E1000g crashes when injected with Jumbo Frame packets.
298
2994.2.17.5
300======
301  This version has the following fix:
302   6175307 system crash with memory size of 11GB
303   6176031 the sequence of releasing resource error in e1000gattach
304   6180180 PktAlloc - Could not bind rbuf packet as single frag. Count - 2
305   6185022 Port hang when unplumb interface under heavy traffic
306
3074.2.17.6
308======
309  This version has the following fix:
310   6196426 e1000g should support NICs that use the internal serdes for external connectivity
311
3124.2.17.7
313======
314  This version has the following fix:
315   4921433 e1000g: Should not probe by using VID/DID table to identify adapters
316
3174.2.17.8
318======
319  This version has the following fix:
320   6213101 64bit DMA max address space should be supported by e1000g driver
321   6215261 e1000g driver 211% slower in AMD64 than 32 bit e1000g driver (S10_73, Single CPU V20z)
322
3234.2.17.9
324======
325  This version has the following fix:
326   6256212 fix for 6213101 breaks e1000g for 32-bit kernels on machines with >4GB of physical memory
327
3284.2.17.10
329======
330  This version has the following fix:
331   6203602 e1000g needs to support the Intel PCI-E card
332   6217046 we need to merge the Intel code (version 4.2.28) into e1000g
333
3345.0.0
335======
336  This version has the following fix:
337   PSARC/2005/470 E1000g Nemo Migration
338   6221079 e1000g driver interface conversion from DLPI to GLD3.0(nemo)
339   6224901 e1000g fails to configure VLANs on a Sun v65x
340   6286414 snmp: ifOperStatus for e1000g driver doesn't change when cable is unplugged.
341   6238486 e1000g: poor performance in web server benchmark, high CPU utilization noted
342   6293265 e1000g_intr doesn't use mutex at all
343   6304657 e1000g_PktAlloc_buffers() causes a panic when ddi_dma_addr_bind_handle() fails.
344   4913292 e1000g: does not support PSARC 2003/264 Extended IP cksum_offload
345   5071610 e1000g can't send any packets after a jumbo-packet forwarding test.
346   5082975 in Jumbo enable mode, netperf indicates a lower throughput, compared to Jumbo of
347   5085394 e1000g driver hangs system during 64byte stress testing
348   6174349 netlb support needed for Solaris e1000g driver
349   6207682 e1000g needs link up/down support
350   6211068 e1000g has some input error packets during stress test
351   6212810 e1000g caught sending unsolicited M_PROTO/M_PCPROTO messages
352   6219298 warnings about "inconsistent getinfo(9E) implementation"
353   6226217 e1000g should support trunking
354   6239279 Network stess test fail on 82545GM chip on IBM Blade HS40
355   6242612 e1000g needs to support SPARC
356   6247936 In e1000g transmission, ddi_dma_addr_bind_handle() returns more cookies than speficied
357   6273730 e1000g causes memory leaks within Freelist_alloc and PktAlloc_buffers
358   5073739 find some memory leaks after load_unload test
359   6287250 e1000g may need to use new Intel-recommended semaphore mechanism
360
3615.0.1
362======
363  This version has the following fix:
364   6313609 2-port Intel NIC (part# 370-6687) performs poorly compared to 1-port Intel NIC (part# 370-6685)
365   6315002 gcc and e1000g don't get along
366
3675.0.2
368======
369  This version has the following fix:
370   6319100 Tier0 Ontario machine does not boot net with sparc e1000g driver substitution for sparc ipge driver
371
3725.0.3
373======
374  This version has the following fix:
375   6327693 e1000g should use MSIs when possible
376   6333461 panic[cpu0]/thread=d63f4de0: assertion failed: !dma->dp_inuse, file: ../../i86pc/io/rootnex.c
377
3785.0.4
379======
380  This version has the following fix:
381   6351378 e1000g panic seen after bfu'ing latest onnv nightly
382
3835.0.5
384======
385  This version has the following fix:
386   6303973 System hard hangs when sharing interrupts (in PIC) mode
387   6323732 e1000g reports incorrect packet statistics
388   6333880 Customer is requesting driver for a newIntel 82573 NIC
389   6336163 netlb support needed for Solaris (sparc) e1000g driver
390   6339377 e1000g.conf needs to be simplified
391   6350407 e1000 card in Gateway E2300 does not actually send packets in S10U1
392   6364052 e1000g driver should provide interface to ndd utility
393   6367490 e1000g has problem in deliver UDP fragment with addin card
394
3955.0.6
396======
397  This version has the following fix:
398   4967732 e1000g: high mutex contention in e1000g_start
399   6316907 e1000g: bcopy() brings better performance in transmitting and receiving small packet
400   6371753 aggregation of e1000g NICs fails to provide connectivity unless snoop is running
401   6397163 Jumbo frame statistics always counts zero with e1000g driver
402   6401903 Memory leak in e1000g driver
403
4045.0.7
405======
406  This version has the following fix:
407   6337450 e1000g interfaces take much much longer to plumb than bge interfaces on the V40.
408   6392401 Intel Ophir (82571) e1000g driver fails to attach on sun4u Boston with snv_33
409   6401659 vlan header getting corrupted due to memmove in e1000g sendPacket
410   6407374 e1000g still uses some old ddi interrupt routines that need to be changed
411   6411339 BAD TRAP: e1000g_fill_tx_ring NULL pointer dereference
412
4135.0.8
414======
415  This version has the following fix:
416   6399084 ipmp doesn't work with e1000g
417   6412153 ndd force speed is not consistent with e1000g.conf and e1000g(7D)
418   6415019 system panic when plumb e1000g interface up on SPARC
419   6415416 netlbtest does not run on Intel(R) PRO/1000 Network controller
420
4215.0.9
422======
423  This version has the following fix:
424  6337987 Serial Over Lan issue when e1000g driver is used
425
4265.1.0
427======
428  This version has the following fix:
429  PSARC/2006/248 Nemo MAC-Type Plugin Architecture
430  PSARC/2006/249 Nemo Changes for Binary Compatibility
431  6384371 GLDv3 only supports Ethernet
432  6242059 nemo drivers must not know the size of the mac_t structure
433  6226635 MAC stats interface could cause problems with binary compatibility
434
4355.1.1
436======
437  This version has the following fix:
438   6384266 e1000g driver should provide external loopback support
439   6428883 NEM e1000g drive netlbtest intermittent failed when running Sunvts FUNC test with cputest,vmemtest..
440   6430731 e1000g.conf file removed on upgrade
441   6431317 add support for intel Pro/1000 PT Adapter
442   6433236 Update the e1000g driver with the latest shared code from Intel
443   6439589 e1000g: whines about checksum capability, unclear what user should do
444   6441386 The default value of some e1000g parameters may impact rx performance
445   6445239 assertion failed: cookie_count == 1, file: ../../common/io/e1000g/e1000g_alloc.c, line: 422
446   6447914 e1000g should support setting of multiple unicast addresses
447   6449595 Ophir LAA driver workaround is not working for e1000g Driver
448
4495.1.2
450======
451  This version has the following fix:
452   6450683 Boston panics with e1000g under stress
453   6463536 BAD TRAP panic for removing aggregation
454   6463756 e1000g - link_speed / kstat output
455   6464426 e1000g driver needs a workaround to solve an ESB2 hardware issue
456
4575.1.3
458======
459  This version has the following fix:
460   6436387 e1000g panic while using cfgadm to unconfigure the pcie slot
461   6460403 disconnect of pcieX that has ophir with network if plumbed crashes the system
462   6466962 S10u2 e1000g 5.0.9 adv_autoneg_cap is not reflected on the kstat -p
463   6470233 e1000g_fill_tx_ring doesn't always update TDT properly
464
4655.1.4
466======
467  This version has the following fix:
468   6462893 HCTS network test failed on thumper machine due to e1000g issue
469   6467860 e1000g configured/used as cluster interconnect goes up and down when connected back to back
470
4715.1.5
472======
473  This version has the following fix:
474   6479912 Interrupt throttling tunable needed
475   6492025 northstar MMF e1000g external loopback fail.
476
4775.1.6
478======
479  This version has the following fix:
480   6482530 Need Ethernet driver for Intel G965 chipset
481   6491179 link aggregation with e1000g does not work unless snoop is running
482   6494743 e1000g 5.1.4 driver does not work with s11_52
483   6502458 e1000g is open source, move the source from usr/closed to use/src
484   6505360 e1000g Makefile should not include "-N drv/dld" in the LDFLAGS
485
4865.1.7
487======
488  This version has the following fix:
489   6454375 e1000g link flaps at initialization, triggering failovers
490   6472255 e1000g can't restore to 1000M with ndd setting
491   6496763 e1000g should free packets when link is down
492   6501294 "eeprom checksum failed" with pci8086,108c device
493   6504688 e1000g.conf settings are inconsistent with ndd output
494   6505445 e1000g : when all advertised capabilities are set to 0, ndd puts all of them 1
495   6519690 e1000g should not print the link up/down messages to console
496   6531474 Fatal PCIe Fabric Error panics on T2000 when using jumbo frames on e1000g interfaces
497   6535712 e1000g: the processing of the checksum flags should be protected by tx_lock
498
4995.1.8
500======
501  This version has the following fix:
502   6548711 e1000g: recursive mutex_enter in e1000g_link_check() on ESB2 platforms
503   6550086 e1000g: detaching driver immediately after attach induces panic
504
5055.1.9
506======
507  This version has the following fix:
508   6507422 Dynamic Reconfiguration detach fails for e1000g
509
5105.1.10
511======
512  This version has the following fix:
513   6490623 Some networking problems with Solaris_b44_64 domU(using solaris_b44_64 dom0)
514   6510396 system panicked in e1000g_82547_timeout
515   6554976 e1000g driver does not support 10D5 device - Sun Pentwater PEM quad port
516
5175.1.11
518======
519  This version has the following fix:
520   6552853 system panics in e1000g_alloc_dvma_buffer during hotplug testing
521
5225.2.0
523======
524  This version has the following fix:
525   6535620 e1000g needs to support ICH9 devices
526   6572330 e1000g: integrate the latest Intel refactored shared code
527   6573381 e1000g receiving VLAN tagged frames does not do hardware checksumming
528
5295.2.1
530======
531  This version has the following fix:
532   6594676 e1000g should free private dips while no rx buffers are held by upper layer
533
5345.2.2
535======
536  This version has the following fix:
537   6480448 Sunvts netlbtest external loopback failed on 82546 chipset
538   6521984 Sunvts netlbtest failed on Northstar QGE cards
539   6531842 e1000g link goes down and up frequently on T2000 systems
540   6540535 Sunvts netlbtest internal loopback failed on ophir devices
541   6579605 Sunvts netlbtest internal loopback failed on Northstar fiber card
542   6595668 e1000g postinstall script missed 5 device ids which had been supported by shared code
543
5445.2.3
545======
546  This version has the following fix:
547   6335851 e1000g needs to support FMA
548   6605171 WARNING: pciex8086,105e - e1000g[0] : Initialize hw failed
549
5505.2.4
551======
552  This version has the following fix:
553   6619929 Sunvts test on Northstar QGC EM failed for "Not received any packets in loopback mode".
554   6541233 e1000g driver performs 33X Slower for Tibco RV when running Multiple RVDs
555   6572343 e1000g: needs to improve the ip forwarding performance
556   6637039 e1000g_recycle() missed a mutex_exit()
557
5585.2.5
559======
560  This version has the following fix:
561   6648775 e1000g: pci8086,10be - e1000g[0]: Identify hardware failed
562
5635.2.6
564======
565  This version has the following fix:
566   6633239 e1000g: link flaps observed on Galaxy(X4100) systems running 64-bit kernel
567
5685.2.7
569======
570  This version has the following fix:
571   6673650 e1000g needs to support Brussels
572
5735.2.8
574======
575  This version has the following fix:
576   6674179 SunFire X4150 panics at e1000g_receive
577   6679136 E1000g with patch 128028-03 will not allow pause frames to be set
578   6687947 e1000g needs to integrate the latest Intel shared code to support ICH9m
579   6699622 e1000g: add support for network device in new development machine
580
5815.2.9
582======
583   6665738 e1000g issues with some Ethernet controllers
584   6713685 e1000g:one device id macro should be renamed
585
5865.2.10
587======
588  This version has the following fixes:
589   6335837 e1000g needs to support LSO
590   6637659 e1000g has problem on transmit hardware checksum support
591
5925.2.11
593======
594  This version has the following fixes:
595   6698039 e1000g tx doesn't work on the specific chipset since snv_88
596   6597545 e1000g ESB2 serdes device pciex8086,1098 hangs in network testing
597   6693205 running sunvts7.0 on Generic s10u5build10 causes unix:cmi_mca_panic on thumper
598   6694279 e1000g driver: internal loopback mode support needed for nic ESB-2
599   6721574 max number of segments in e1000g_tx_dma_attr need to be updated when LSO is supported
600
6015.2.12
602======
603  This version has the following fix:
604   6634746 e1000g is missing lint target in Makefile
605   6705005 e1000g LINK/ACT LED behaviour is not consistent with the EEPROM default
606   6738552 e1000g rx_lock is not initialized and destroyed in the code
607
6085.2.13
609======
610  This version has the following fix:
611   6666998 Add support for ICH10 in e1000g driver
612   6709230 Requesting driver support in e1000g for new Intel(R) single port MAC/PHY NIC
613   6727113 e1000g performance regression is observed with large connection and packet size if LSO is enabled
614   6756917 LSO is not enabled on some e1000g chips
615
6165.2.14
617======
618  This version has the following fix:
619   6713032 e1000g port hang, no xmit, no recv
620   6767201 e1000g default_mtu does not coincide with max_frame_size on some chipsets when set via e1000g.conf
621
6225.3.1
623======
624  This version has the following fix:
625   6779610 e1000g fails to attach post-6713032 due to memory allocation failures on some chipsets
626
6275.3.2
628======
629  This version has the following fix:
630   6779494 e1000g need to sync with sol_anvik_patch shared code from Intel
631   6758857 fmadm reporting undiagnosable problems in snv_99
632   6698312 starcat panicked with "bad mutex" while running SUNWsgdr
633   6759330 PIT: panic during first reboot after successful pkgadd during osinstall
634   6776453 Monza(CP3260): loopback test fails on e1000g serdes ports
635
6365.3.3
637======
638  This version has the following fix:
639   6791863 sync up flow control code with Intel latest shared code
640
6415.3.4
642======
643  This version has the following fix:
644   6699662 global e1000g rwlock prevents scaling on multiple interfaces
645   6781905 super slow throughput on e1000g 82541 and 82547 chips
646   6786783 e1000g needs to have a new tx stall detection mechanism to cover 82546 errata No.18
647
6485.3.5
649======
650  This version has the following fix:
651   6732858 panic in e1000g_free_dma_buffer
652
6535.3.6
654======
655  This version has the following fixes:
656   6589577 Huron does not discard and does transmit frames greater than maxFrameSize
657   6809729 Panic in function 'e1000g_rxfree_func' on T2000
658   6809877 e1000g E1000G_IPALIGNROOM code can be rewritten
659
6605.3.7
661======
662  This version has the following fix:
663   6812227 e1000g(intel 82571 adapter) must support MTU size of 9216
664
6655.3.8
666======
667  This version has the following fixes:
668   6775380 the e1000g link hung at "up" state after down and unplumb the interface
669   6816786 e1000g panics on Lenovo X301 with snv_109
670
6715.3.9
672====
673  This version has the following fix:
674   6680929 dladm should print POSSIBLE values for properties like mtu by contacting the driver.
675
6765.3.10
677====
678  This version has the following fix:
679   6841089 Customer wants to be able to set MAX_NUM_MULTICAST_ADDRESSES above 256 on e1000g driver
680
6815.3.11
682====
683  This version has the following fix:
684   6848586 rw_enter()/rw_exit() could be called on uninitialized rw lock
685
6865.3.12
687====
688  This version has the following fixes:
689   6846262 T2000 fma shows fault.io.pciex.device-interr in snv_115
690   6870404 e1000g_reset can call e1000g_start after releasing dma resources
691
6925.3.13
693====
694  This version has the following fixes:
695   6681751 e1000g minor_perm inconsistent between package postinstall script and default minor_perm file
696   6855964 e1000g driver corrupting LSO packets causes chipset hang and significant performance regression
697
6985.3.14
699====
700  This version has the following fixes:
701   6820747 kstat output incorrect for MMF version of e1000g making it impossible to troubleshoot
702   6847888 HW initialization updates for 82541 and 82547 chips
703
7045.3.15
705======
706  This version has the following fixes:
707   6797885 need to add support for network device (8086,10ea) in a new Intel system
708   6803799 need to add network device support (8086,10ef) for a new Intel system
709   6808388 e1000g inteface experience packet lost when switch between joining and leaving a multicast stream
710
7115.3.16
712======
713  This version has the following fixes:
714   6881588 e1000g functions should return when e1000g_check_dma_handle() fails
715   6888320 e1000g emits scary mutex message on the console
716
7175.3.17
718======
719  This version has the following fixes:
720   6893285 e1000g 'pciex8086,105e' with PHY type igp I/O devices have been retired
721   6895459 e1000g share code update v3-1-10-1
722
7235.3.18
724======
725  This version has the following fix:
726   6894476 e1000g is not lint clean
727
7285.3.19
729======
730  This version has the following fix:
731   6877343 e1000g's default tx/rx resource consumption too high for jumbograms
732
7335.3.20
734======
735  This version has the following fixes:
736   6901523 e1000g does not return failure when setting external loopback fails
737   6903712 Cannot install on DQ45EK system due to e1000g driver alias
738   6909097 e1000g specifies incorrect flag when allocating tx DMA buffers
739   6909553 e1000g stall reset leaves GLDv3 link state as "unknown"
740
7415.3.21
742======
743  This version has the following fix:
744   6909134 e1000g doesn't use ddi_get/ddi_put to access its IO space
745
7465.3.22
747======
748  This version has the following fixes:
749   6903292 Running flag not set on IPMP underlying e1000g interfaces
750   6913835 e1000g driver passes bad messages up the stack when jumbograms received
751   6919873 panic: BAD TRAP: type=e (#pf Page fault) in module "e1000g" during ifconfig plumb group ipmp0
752
7535.3.23
754=====
755  This version has the following fixes:
756   6838180 tcp corruption seen with northstar cards
757   6925276 e1000g not consistent with link_lock usage
758   6933844 NULL ptr deref in e1000g_rx_setup() due to inconsistency between recv_list & rx_desc_num
759
7605.3.24
761=====
762  This version has the following fixes:
763   6861114 System Panics with FMA ereport.io.fire.epkt
764   6876953 Memory leaks found in e1000g_alloc_rx_sw_packet on snv_111b
765   6945160 netlbtest fails with Can't set loopback mode on device e1000g6
766   6960959 panic in e1000g_receive
767   6965855 e1000g(intel 82571 adapter) needs to support MTU size of 9000
768   6967530 Need version in e1000g driver
769   6967873 e1000g needs to clear the link-down status when being unplumbed
770

README.illumos

1#
2# This file and its contents are supplied under the terms of the
3# Common Development and Distribution License ("CDDL"), version 1.0.
4# You may only use this file in accordance with the terms of version
5# 1.0 of the CDDL.
6#
7# A full copy of the text of the CDDL should have accompanied this
8# source.  A copy of the CDDL is also available via the Internet at
9# http://www.illumos.org/license/CDDL.
10#
11
12#
13# Copyright (c) 2013 Joyent, Inc.  All rights reserved.
14#
15
16Historically e1000g and igb were maintained by two different teams at Sun and
17thus while they used identical common code from Intel, they each only ever used
18portions of it and were not kept in sync with one another. To help make
19maintenance and the adding of new devices easier in illumos, we have gone
20through and made it so that igb and e1000g rely on the same set of common code;
21however, this code is not in its own module, each has its own copy of the code
22compiled into it for various reasons which will be laid out below.
23
24As part of the interface with the common code, the driver is required to define
25an e1000_osdep.h. Currently each version of the driver defines its *own* version
26of this header file in their own driver specific directory. However, the code
27that implements this is different in each directory, specifically e1000g_osdep.c
28and igb_osdep.c. It's important that they have different names and not be called
29the same thing due to how the uts makefiles work.
30
31Deviations from the common FreeBSD code:
32
33We have a few differences from the common version of the FreeBSD code that exist
34so that we can both gather firmware information and that have workarounds for
35older chipsets. While, we would like to get that to be synced up and common, it
36is not currently.
37
38Energy Efficient Ethernet (EEE) is not enabled by default. This technology was
39introduced with the I350 family of parts in the igb driver. However, there have
40been issues seen with it in the wild and thus we opt to disable it by default
41until tests have proven that there are no longer problems.
42
43To help make that easier, we've documented here what these extra definitions
44are. DO NOT just blindly copy over new common code. There is more work that
45needs to be done in terms of changed interfaces and expectations for the
46drivers.
47
48# e1000_defines.h
49
50In e1000_defines.h we add the following three definitions which are not
51currently present. These definitions allow us to attach firware revisions and
52other 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
60There are various workarounds in place for the 82541 and 82547 due to errata
61that exist for these devices. This has traditionally been a part of the common
62code. Until this can get merged into the common code completely, we've spearted
63out the changes that are the actual C functions into
64uts/common/io/e1000g/e1000g_workarounds.c. However, this alone is not
65sufficient. You must make sure that in e1000_hw.h that the struc
66e1000_dev_spec_82541 actually looks like the following:
67
68struct e1000_dev_spec_82541 {
69	enum e1000_dsp_config dsp_config;
70	enum e1000_ffe_config ffe_config;
71	u32 tx_fifo_head;
72	u32 tx_fifo_start;
73	u32 tx_fifo_size;
74	u16 spd_default;
75	bool phy_init_script;
76	bool ttl_workaround;
77};
78
79# EEE
80
81By default we disable all support for EEE. To cause this to happen you must
82make the following change in e1000_82575.c's init_mac_params.
83
84From:
85 394         /* Enable EEE default settings for EEE supported devices */
86 395         if (mac->type >= e1000_i350)
87 396                 dev_spec->eee_disable = FALSE;
88To:
89 394         /* Enable EEE default settings for EEE supported devices */
90 395         if (mac->type >= e1000_i350)
91 396                 dev_spec->eee_disable = TRUE;
92
93Future work:
94
95The next step here is to take the osdep portions and merge them. That would
96allow us to build one common misc module e1000api that both igb and e1000g
97depend on rather than building separate copies of the common code into each
98driver. Another potential option which may prove to have less value is to take
99all of the gld and ddi logic and have one driver export that leaving e1000g and
100igb as small stubs which depend on that. Note however, that the latter is not
101how our upstream is currently structuring their igb and em (FreeBSD's e1000g)
102drivers.
103

README.new

1$FreeBSD$
2FreeBSD* Driver for Intel Network Connection
3=============================================
4
5May 30, 2007
6
7
8Contents
9========
10
11- Overview
12- Identifying Your Adapter
13- Building and Installation
14- Speed and Duplex Configuration
15- Additional Configurations
16- Known Limitations
17- Support
18- License
19
20
21Overview
22========
23
24This file describes the FreeBSD* driver for Intel Network Connection.
25This driver has been developed for use with FreeBSD, Release 7.x.
26
27For questions related to hardware requirements, refer to the documentation
28supplied with your Gigabit adapter. All hardware requirements listed
29apply to use with FreeBSD.
30
31
32Identifying Your Adapter
33========================
34
35For information on how to identify your adapter, go to the Adapter &
36Driver ID Guide at:
37
38http://support.intel.com/support/network/sb/cs-012904.htm
39
40
41For the latest Intel network drivers for FreeBSD, see:
42
43http://downloadfinder.intel.com/scripts-df-external/support_intel.aspx
44
45
46NOTE: Mobile adapters are not fully supported.
47NOTE: The Intel(R) 82562v 10/100 Network Connection only provides 10/100
48support.
49
50Building and Installation
51=========================
52
53NOTE: The driver can be installed as a dynamic loadable kernel module or
54      compiled into the kernel. You must have kernel sources installed in
55      order to compile the driver module.
56
57In the instructions below, x.x.x is the driver version as indicated in the
58name of the driver tar file.
59
601. Move the base driver tar file to the directory of your choice. For
61   example, use /home/username/em or /usr/local/src/em.
62
632. Untar/unzip the archive:
64
65        tar xzvf em-x.x.x.tar.gz
66
67   This will create an em-x.x.x directory.
68
693. To create a loadable module, perform the following steps.
70   NOTE: To compile the driver into the kernel, go directly to step 4.
71
72        a. To compile the module
73
74                  cd em-x.x.x
75                  make
76
77        b. To install the compiled module to the system directory:
78
79                  make install
80
81        c. If you want the driver to load automatically when the system is booted:
82
83              1. Edit /boot/loader.conf, and add the following line:
84
85                  if_em_load="YES"
86
874. To compile the driver into the kernel, enter:
88
89        cd em-x.x.x/src
90        cp *.[ch] /usr/src/sys/dev/em
91
92        Edit the kernel configuration file (i.e., GENERIC or MYKERNEL) in
93        /usr/src/sys/i386/conf, and ensure the following line is present:
94
95        device em
96
97        Compile and install the kernel. The system must be rebooted for the
98        kernel updates to take effect. For additional information on compiling
99        the kernel, consult the FreeBSD operating system documentation.
100
1015. To assign an IP address to the interface, enter the following:
102
103        ifconfig em<interface_num> <IP_address>
104
1056. Verify that the interface works. Enter the following, where <IP_address>
106   is the IP address for another machine on the same subnet as the interface
107   that is being tested:
108
109        ping <IP_address>
110
1117. To configure the IP address to remain after reboot, edit /etc/rc.conf,
112   and create the appropriate ifconfig_em<interface_num>entry:
113
114        ifconfig_em<interface_num>="<ifconfig_settings>"
115
116   Example usage:
117
118        ifconfig_em0="inet 192.168.10.1 netmask 255.255.255.0"
119
120   NOTE: For assistance, see the ifconfig man page.
121
122
123Speed and Duplex Configuration
124==============================
125
126By default, the adapter auto-negotiates the speed and duplex of the
127connection. If there is a specific need, the ifconfig utility can be used to
128configure the speed and duplex settings on the adapter. Example usage:
129
130        ifconfig em<interface_num> <IP_address> media 100baseTX mediaopt
131            full-duplex
132
133   NOTE: Only use mediaopt to set the driver to full-duplex. If mediaopt is
134         not specified and you are not running at gigabit speed, the driver
135         defaults to half-duplex.
136
137If the interface is currently forced to 100 full duplex, in order to change
138to half duplex you must use this command:
139
140        ifconfig em<interface_num> <IP_address> media 100baseTX -mediaopt
141            full-duplex
142
143
144This driver supports the following media type options:
145
146   autoselect      -  Enables auto-negotiation for speed and duplex.
147
148   10baseT/UTP     -  Sets speed to 10 Mbps. Use the ifconfig mediaopt
149                      option to select full-duplex mode.
150
151   100baseTX       -  Sets speed to 100 Mbps. Use the ifconfig mediaopt
152                      option to select full-duplex mode.
153
154   1000baseTX      -  Sets speed to 1000 Mbps. In this case, the driver
155                      supports only full-duplex mode.
156
157   1000baseSX      -  Sets speed to 1000 Mbps. In this case, the driver
158                      supports only full-duplex mode.
159
160For more information on the ifconfig utility, see the ifconfig man page.
161
162
163Additional Configurations
164=========================
165
166The driver supports Transmit/Receive Checksum Offload and Jumbo Frames on
167all but the 82542-based adapters.  For specific adapters, refer to the
168Identifying Your Adapter section.
169
170  Jumbo Frames
171  ------------
172  To enable Jumbo Frames, use the ifconfig utility to set the Maximum
173  Transport Unit (MTU) frame size above its default of 1500 bytes.
174
175  The Jumbo Frames MTU range for Intel Adapters is 1500 to 16110. To modify
176  the setting, enter the following:
177
178        ifconfig em<interface_num> <hostname or IP address> mtu 9000
179
180  To confirm the MTU used between two specific devices, use:
181
182        route get <destination_IP_address>
183
184  Notes:
185
186  - Only enable Jumbo Frames if your network infrastructure supports them.
187
188  - To enable Jumbo Frames, increase the MTU size on the interface beyond
189    1500.
190
191  - The Jumbo Frames setting on the switch must be set to at least 22 bytes
192    larger than that of the MTU.
193
194  - The maximum MTU setting for Jumbo Frames is 16110.  This value coincides
195    with the maximum Jumbo Frames size of 16128.
196
197  - Some Intel gigabit adapters that support Jumbo Frames have a frame size
198    limit of 9238 bytes, with a corresponding MTU size limit of 9216 bytes.
199    The adapters with this limitation are based on the Intel(R) 82571EB,
200    82572EI, 82573L, 82566, 82562, and 80003ES2LAN controller.  These
201    correspond to the following product names:
202     Intel(R) PRO/1000 PT Server Adapter
203     Intel(R) PRO/1000 PT Desktop Adapter
204     Intel(R) PRO/1000 PT Network Connection
205     Intel(R) PRO/1000 PT Dual Port Server Adapter
206     Intel(R) PRO/1000 PT Dual Port Network Connection
207     Intel(R) PRO/1000 PT Quad Port Server Adapter
208     Intel(R) PRO/1000 PF Quad Port Server Adapter
209     Intel(R) PRO/1000 PF Server Adapter
210     Intel(R) PRO/1000 PF Network Connection
211     Intel(R) PRO/1000 PF Dual Port Server Adapter
212     Intel(R) PRO/1000 PB Server Connection
213     Intel(R) PRO/1000 PL Network Connection
214     Intel(R) PRO/1000 EB Network Connection with I/O Acceleration
215     Intel(R) PRO/1000 EB Backplane Connection with I/O Acceleration
216     Intel(R) 82566DM-2 Gigabit Network Connection
217
218  - Adapters based on the Intel(R) 82542 and 82573V/E controller do not
219    support Jumbo Frames. These correspond to the following product names:
220     Intel(R) PRO/1000 Gigabit Server Adapter
221     Intel(R) PRO/1000 PM Network Connection
222
223  - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or
224    loss of link.
225
226  - The following adapters do not support Jumbo Frames:
227    Intel(R) 82562V 10/100 Network Connection
228    Intel(R) 82566DM Gigabit Network Connection
229    Intel(R) 82566DC Gigabit Network Connection
230    Intel(R) 82566MM Gigabit Network Connection
231    Intel(R) 82566MC Gigabit Network Connection
232    Intel(R) 82562GT 10/100 Network Connection
233    Intel(R) 82562G 10/100 Network Connection
234    Intel(R) 82566DC-2 Gigabit Network Connection
235    Intel(R) 82562V-2 10/100 Network Connection
236    Intel(R) 82562G-2 10/100 Network Connection
237    Intel(R) 82562GT-2 10/100 Network Connection
238
239  VLANs
240  -----
241  To create a new VLAN interface:
242
243        ifconfig <vlan_name> create
244
245  To associate the VLAN interface with a physical interface and
246  assign a VLAN ID, IP address, and netmask:
247
248        ifconfig <vlan_name> <ip_address> netmask <subnet_mask> vlan
249           <vlan_id> vlandev <physical_interface>
250
251  Example:
252
253        ifconfig vlan10 10.0.0.1 netmask 255.255.255.0 vlan 10 vlandev em0
254
255  In this example, all packets will be marked on egress with 802.1Q VLAN
256  tags, specifying a VLAN ID of 10.
257
258  To remove a VLAN interface:
259
260  Intel Network Connection        ifconfig <vlan_name> destroy
261
262
263  Polling
264  -------
265
266  To enable polling in the driver, add the following options to the kernel
267  configuration, and then recompile the kernel:
268
269        options DEVICE_POLLING
270        options HZ=1000
271
272  At runtime use:
273        ifconfig emX polling (to turn polling on)
274  and:
275        ifconfig emX -polling  (to turn it off)
276
277
278  Checksum Offload
279  ----------------
280  Checksum offloading is not supported on 82542 Gigabit adapters.
281
282  Checksum offloading supports both TCP and UDP packets and is
283  supported for both transmit and receive.
284
285  Checksum offloading can be enabled or disabled using ifconfig.
286  Both transmit and receive offloading will be either enabled or
287  disabled together. You cannot enable/disable one without the other.
288
289  To enable checksum offloading:
290
291         ifconfig <interface_num> rxcsum
292
293  To disable checksum offloading:
294
295         ifconfig <interface_num> -rxcsum
296
297  To confirm the current setting:
298
299         ifconfig <interface_num>
300
301  Look for the presence or absence of the following line:
302
303         options=3 <RXCSUM,TXCSUM>
304
305  See the ifconfig man page for further information.
306
307
308  TSO
309  ---
310  The FreeBSD driver offers support for TSO (TCP Segmentation Offload).
311
312  You can enable/disable it in two ways/places:
313
314        -  sysctl net.inet.tcp.tso=0    (or 1 to enable it)
315
316  Doing this disables TSO in the stack and will affect all adapters.
317
318        -  ifconfig emX -tso
319
320  Doing this will disable TSO only for this adapter.
321
322  To enable:
323
324        -  ifconfig emX tso
325
326  NOTES: By default only PCI-Express adapters are ENABLED to do TSO. Others
327  can be enabled by the user at their own risk
328  TSO is not supported on 82547 and 82544-based adapters, as well as older adapters.
329
330
331Known Limitations
332=================
333
334  Detected Tx Unit Hang in Quad Port Adapters
335  -------------------------------------------
336
337  In some cases ports 3 and 4 wont pass traffic. Ports 1 and 2 don't show
338  any errors and will pass traffic.
339
340  This issue MAY be resolved by updating to the latest BIOS. You can
341  check your system's BIOS by downloading the Linux Firmware Developer Kit
342  that can be obtained at http://www.linuxfirmwarekit.org/
343
344
345  There are known performance issues with this driver when running UDP traffic
346  with Jumbo Frames.
347  ----------------------------------------------------------------------------
348
349  82541/82547 can't link or is slow to link with some link partners
350  -----------------------------------------------------------------
351
352  There is a known compatibility issue where time to link is slow or link is not
353  established between 82541/82547 controllers and some switches.  Known switches
354  include:
355        Planex FXG-08TE
356        I-O Data ETG-SH8
357        Netgear GS105v3
358
359  The driver can be compiled with the following changes:
360
361  Edit ./em.x.x.x/src/if_em.h to change the #define EM_MASTER_SLAVE
362  For example, change from:
363
364      #define EM_MASTER_SLAVE   e1000_ms_hw_default
365  to:
366      #define EM_MASTER_SLAVE   2
367
368  Use one of the following options:
369      1 = Master mode
370      2 = Slave mode
371      3 = Auto master/slave
372  Setting 2 is recommended.
373
374  Recompile the module:
375          a. To compile the module
376                cd em-x.x.x
377                make clean
378                make
379
380   b. To install the compiled module in system directory:
381                make install
382
383
384Support
385=======
386
387For general information and support, go to the Intel support website at:
388
389        http://support.intel.com
390
391If an issue is identified, support is through email only at:
392freebsd@intel.com
393
394
395License
396=======
397
398This software program is released under the terms of a license agreement
399between you ('Licensee') and Intel. Do not use or load this software or any
400associated materials (collectively, the 'Software') until you have carefully
401read the full terms and conditions of the LICENSE located in this software
402package. By loading or using the Software, you agree to the terms of this
403Agreement. If you do not agree with the terms of this Agreement, do not
404install or use the Software.
405
406* Other names and brands may be claimed as the property of others.
407