xref: /illumos-gate/usr/src/uts/common/io/e1000g/README (revision f875b4ebb1dd9fdbeb043557cab38ab3bf7f6e01)
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 - 2007 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#
21# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
22# Use is subject to license terms of the CDDLv1.
23#
24#
25# ident	"%Z%%M%	%I%	%E% SMI"
26#
27
284.0.4 code drop from Intel on 1/30/2003
29=======================================
30  This version is used as the base for putback into both s10 and
31  s9u4.
32
33  Following changes were done to this code base before putting
34  back into solaris trees (S10 & S9U4):
35
36  1) Changes to e1000_hw.c to remove build warnings
37
38     + diff /home/naroori/grizzly/sources/e1000g/1_4.0.4/e1000_hw.c .
39     2616c2616
40     <  phy_info->downshift = hw->speed_downgraded;
41     ---
42     >  phy_info->downshift = (int)hw->speed_downgraded;
43     2684c2684
44     <  phy_info->downshift = hw->speed_downgraded;
45     ---
46     >  phy_info->downshift = (int)hw->speed_downgraded;
47
48  2) Changes to e1000g_dlpi.c for ipv6 plumbing problem and
49     problem with default MTU size of 2024.
50
51     + diff /home/naroori/grizzly/sources/e1000g/1_4.0.4/e1000g_dlpi.c .
52     313a314
53     >  /* the following causes problem with ipv6 plumbing...
54     314a316
55     >  */
56     628c630,632
57     <    if (Adapter->Shared.max_frame_size == FRAME_SIZE_UPTO_16K)
58     ---
59     >    if (Adapter->Shared.max_frame_size == ETHERMTU) {
60     >    }
61     >    else if (Adapter->Shared.max_frame_size == FRAME_SIZE_UPTO_16K) {
62     630c634,635
63     <    else
64     ---
65     >    }
66     >    else  {
67     631a637
68     >    }
69
70  3) Changes to e1000g_main.c for version string modification,
71     removing console messages on bootup and problems with default
72     MTU size of 2024.
73
74     + diff /home/naroori/grizzly/sources/e1000g/1_4.0.4/e1000g_main.c .
75     59c59
76     < static char e1000g_version[]="Driver Ver. 4.0.4-beta";
77     ---
78     > static char e1000g_version[]="Driver Ver. 4.0.4";
79     937c937
80     <        e1000g_log(Adapter,CE_CONT,"\n%s, %s\n",AdapterName,e1000g_version);
81     ---
82     >        cmn_err(CE_CONT,"!%s, %s\n",AdapterName,e1000g_version);
83     3000c3000
84     <        Adapter->Shared.max_frame_size = FRAME_SIZE_UPTO_2K;
85     ---
86     >        Adapter->Shared.max_frame_size = ETHERMTU;
87     3013c3013
88     <        Adapter->Shared.max_frame_size = FRAME_SIZE_UPTO_2K;
89     ---
90     >        Adapter->Shared.max_frame_size = ETHERMTU;
91
92
93
94Bug fixes to 4.0.4:
95===================
96   1) bug#4829398 code cleanup for ethernet bootup messages
97
98
994.0.12 code drop from Intel on 3/18/2003
100========================================
101
102  This drop had extensive changes from 4.0.4. Many changes after
103  4.0.4 were realted to new hardware (a.k.a. BayCity chipset),
104  not relevant to Grizzly.After looking at the changelog from Intel,
105  we decided not to do a putback but rather take only high priority
106  fixes from this drop and generate a new version 4.0.4.1.
107
108  Here is the changelog supplied by Intel for this drop:
109
110    ________________________________________________________________________
111    Component Name: Unix-Solaris_8254x_BayCity_Intel
112    Description: Bay City software component for gigabit products
113    ________________________________________________________________________
114
115
116    ---Version: 4.0.13  Date: 3/14/2003 5:00:00 PM---
117    Added transmit mutex locking to the 82547 workaround code.
118
119    ---Version: 4.0.12  Date: 3/10/2003 8:01:00 PM---
120    Added new shared code with LED link speed fix
121
122    ---Version: 4.0.11  Date: 3/7/2003 5:57:00 PM---
123    Updated the Tanacross FIFO hang workaround to reset FIFO pointers instead of sending autonomous packets.
124
125    ---Version: 4.0.10  Date: 3/4/2003 2:39:00 PM---
126    Removed an extra sdu adjustment that was left in by accident
127
128    ---Version: 4.0.9   Date: 3/4/2003 11:13:00 AM---
129    Removed the first call to adapter_stop.  This was called before the HW struct was properly initialized, and could cause hangs.
130
131    Changed reported ethernet sdu from 2024 to 1500, as driver could be configured for invalid frame MTU sizes in Solaris 9.
132
133    Added Tanacross workaround for FIFO hang.
134
135    ---Version: 4.0.8   Date: 2/25/2003 2:27:00 PM---
136    Shared code update including Phy init script.
137    Smartspeed workaround added.  e1000g_smartspeed called from LocalTimer function every two seconds when link is down.
138
139    ---Version: 4.0.7   Date: 2/18/2003 11:41:00 AM---
140    Updated to include bug fixes from the shared code.
141
142    ---Version: 4.0.5   Date: 1/31/2003 10:13:00 AM---
143    Support for new hardware changes
144    Removed the extra ack sent at the end of the attach_req routine.  This extra ack previously made IPv6 plumbing on Solaris 9 fail.
145
146
1474.0.4.1
148=======
149   This version is not an Intel drop but 4.0.4 merged with two
150   high priority fixes from 4.0.12. We will give back the 4.0.4.1
151   driver back to Intel, per their request, so they have the exact
152   code that we are releasing through Solaris.
153
154   The following are the two fixes selected for inclusion from
155   4.0.12 codebase:
156
157   1) Removing the first call to adapter_stop as discussed in
158      4.0.12 changelog.
159
160   2) Corrections to MTU size calculations first introduced
161      in our 4.0.4 putback to bring them into sync with 4.0.12
162      MTU size calculations.
163
164   We also added README file (current file you are reading) during
165   this putback.
166
1674.0.4.2
168=======
169  This version has the following fixes:
170
171  1) bug#4857098: e1000g driver assumes another intel card as its own.
172     The fix involved eliminating 1009, 1012, 1015, 1016, 1017
173     device-ids from e1000g nodelist so that they do not conflict
174     with iprb's subsystem-ids.
175
176     This fix has to be reverted later once we have a proper fix for
177     bug#4859426.
178
179   2) bug#4853683: e1000g lacks a large number of expected kstats
180      The fix involved three steps: a) Renaming some of the existing
181      kstats to comply with WDD documentation b) Computing some of
182      those which are not being tracked c) Supplying zero for the rest
183      the error stats which are not being tracked.
184
185      This fix has to be revisited to improvise the statistics in
186      future.
187
188   3) bug#4862529: System panics during configuring devices on a Dell 4-way
189      servers. The fix involved removing all the devic-ids from nodelist
190      except for 1010. This means that we support now only the grizzly
191      on-board gigabit chipset and "Intel Pro/1000 MT Dual Server Adapter".
192
193      This fix has to be reverted later once we have a proper fix for
194      bug#4859426.
195
1964.0.4.3
197=======
198  This version has the following fixes:
199
200  1) bug#4874857: ipv6 ping fails on bootup for e1000g.
201	 The fix involved implementing multicast tables both at per stream
202	 level and per device level.
203
204  2) bug#4875743: null pointer dereference in ddi_dma_addr_bind_handle.
205	 The fix involved adding LastTxDescriptorBuf to struct e1000g and
206	 handling consequent proper calculations for LastTxDescriptor.
207
208  3) bug#4882541: setting up ethernet address causes machine to panic.
209     The fix involved removing a spurious log message which was causing
210	 the panic.
211
212  4) bug#4883302: Reinstate the removed device-ids - phase 2.
213	 The fix involved some chip initializations to handle 1000 id.
214
215  5) bug#4919285: device id 8086,100e needs to be added
216	 The fix needed for the Intel Precision 350 workstation
217
2184.2.11
219======
220
221We need to sync up with the latest Intel code base for e1000g driver.
222
223Intel is currently at version 4.2.11 while we are on 4.0.4 branch.
224The exact version under 4.0.4 branch is 4.0.4.3. Since we are on
225the branch while Intel is working on the main trunk, we have had
226lot of friction in getting timely fixes from Intel. The current
227syncing up with their main trunk lets us a smooth migration path.
228
229The new code base  also would provide us with support for additional
230cards including Quad port cards (See bugs: 4921433, 4914460).
231In our old 4.0.4 branch, we had to drop support for a lot of cards
232for various problems; with the current syncing up, we would be able
233to support so many various cards except for the cards clashing with
234iprb driver.
235
236The new code base also has support for additional new chipsets. The code
237base also benefits from any fixes to the shared code base with other
238operating system drivers.
239
240The new codebase also has lot of cleanups in terms of various #ifdefs
241and should be much simpler to maintain.
242
243So the list of actual ids take out are:
2441009
2451012
2461013
2471015
2481016
2491017
250
2514.2.15
252======
253This intel code drop addresses the following bug:
254
255    4909863: Bad trap panic in e1000g_rtn_buf
256
2574.2.16
258======
259  This version has the following fix:
260   4932422 interconnect remains faulted after adapter disconnected and then reconnected
261
262Notes on packaging:
263===================
264   Intel names the package as INTCGigaE while we chose to rename
265   it as SUNWintgige as per Sun packaging conventions.
266
2674.2.17
268======
269  This version has the following fixes:
270   4971416 e1000g seems to hang system when no network connected
271   4997067 e1000gattach panicks when the going gets tough
272   4990064 e1000g leaks memory when it runs out of transmit descriptors
273
2744.2.17.1
275======
276  This version has the following fix:
277   5014625 e1000g driver panicked when snoop(1M) exited
278
2794.2.17.2
280======
281  This version has the following fix:
282   4940870 e1000g: Dependence on instance initialization order disables .conf properties
283   5033616 e1000g panicked after rem_drv while some service still binds to the driver
284   5037062 strings have crept back in e1000g/adpu320 related mutex_init()s
285   5050268 Some e1000g flag operations are not correct.
286
2874.2.17.3
288======
289  This version has the following fix:
290   5067162 e1000g cannot transmit heavy UDP
291
2924.2.17.4
293======
294  This version has the following fix:
295   5010052 The stress load/unload test of Intel PWLA8494MT Quad Port NIC causes system hung
296   5050265 E1000g does not support IPV6 fast path. This will impact IPV6 performance.
297   5050369 E1000g locks the system if plumb/unplumb under heavy workload and snoop.
298   5050415 E1000g will accepts ethernet packets which are not addressed to it.
299   5055132 E1000g crashes when injected with Jumbo Frame packets.
300
3014.2.17.5
302======
303  This version has the following fix:
304   6175307 system crash with memory size of 11GB
305   6176031 the sequence of releasing resource error in e1000gattach
306   6180180 PktAlloc - Could not bind rbuf packet as single frag. Count - 2
307   6185022 Port hang when unplumb interface under heavy traffic
308
3094.2.17.6
310======
311  This version has the following fix:
312   6196426 e1000g should support NICs that use the internal serdes for external connectivity
313
3144.2.17.7
315======
316  This version has the following fix:
317   4921433 e1000g: Should not probe by using VID/DID table to identify adapters
318
3194.2.17.8
320======
321  This version has the following fix:
322   6213101 64bit DMA max address space should be supported by e1000g driver
323   6215261 e1000g driver 211% slower in AMD64 than 32 bit e1000g driver (S10_73, Single CPU V20z)
324
3254.2.17.9
326======
327  This version has the following fix:
328   6256212 fix for 6213101 breaks e1000g for 32-bit kernels on machines with >4GB of physical memory
329
3304.2.17.10
331======
332  This version has the following fix:
333   6203602 e1000g needs to support the Intel PCI-E card
334   6217046 we need to merge the Intel code (version 4.2.28) into e1000g
335
3365.0.0
337======
338  This version has the following fix:
339   PSARC/2005/470 E1000g Nemo Migration
340   6221079 e1000g driver interface conversion from DLPI to GLD3.0(nemo)
341   6224901 e1000g fails to configure VLANs on a Sun v65x
342   6286414 snmp: ifOperStatus for e1000g driver doesn't change when cable is unplugged.
343   6238486 e1000g: poor performance in web server benchmark, high CPU utilization noted
344   6293265 e1000g_intr doesn't use mutex at all
345   6304657 e1000g_PktAlloc_buffers() causes a panic when ddi_dma_addr_bind_handle() fails.
346   4913292 e1000g: does not support PSARC 2003/264 Extended IP cksum_offload
347   5071610 e1000g can't send any packets after a jumbo-packet forwarding test.
348   5082975 in Jumbo enable mode, netperf indicates a lower throughput, compared to Jumbo of
349   5085394 e1000g driver hangs system during 64byte stress testing
350   6174349 netlb support needed for Solaris e1000g driver
351   6207682 e1000g needs link up/down support
352   6211068 e1000g has some input error packets during stress test
353   6212810 e1000g caught sending unsolicited M_PROTO/M_PCPROTO messages
354   6219298 warnings about "inconsistent getinfo(9E) implementation"
355   6226217 e1000g should support trunking
356   6239279 Network stess test fail on 82545GM chip on IBM Blade HS40
357   6242612 e1000g needs to support SPARC
358   6247936 In e1000g transmission, ddi_dma_addr_bind_handle() returns more cookies than speficied
359   6273730 e1000g causes memory leaks within Freelist_alloc and PktAlloc_buffers
360   5073739 find some memory leaks after load_unload test
361   6287250 e1000g may need to use new Intel-recommended semaphore mechanism
362
3635.0.1
364======
365  This version has the following fix:
366   6313609 2-port Intel NIC (part# 370-6687) performs poorly compared to 1-port Intel NIC (part# 370-6685)
367   6315002 gcc and e1000g don't get along
368
3695.0.2
370======
371  This version has the following fix:
372   6319100 Tier0 Ontario machine does not boot net with sparc e1000g driver substitution for sparc ipge driver
373
3745.0.3
375======
376  This version has the following fix:
377   6327693 e1000g should use MSIs when possible
378   6333461 panic[cpu0]/thread=d63f4de0: assertion failed: !dma->dp_inuse, file: ../../i86pc/io/rootnex.c
379
3805.0.4
381======
382  This version has the following fix:
383   6351378 e1000g panic seen after bfu'ing latest onnv nightly
384
3855.0.5
386======
387  This version has the following fix:
388   6303973 System hard hangs when sharing interrupts (in PIC) mode
389   6323732 e1000g reports incorrect packet statistics
390   6333880 Customer is requesting driver for a newIntel 82573 NIC
391   6336163 netlb support needed for Solaris (sparc) e1000g driver
392   6339377 e1000g.conf needs to be simplified
393   6350407 e1000 card in Gateway E2300 does not actually send packets in S10U1
394   6364052 e1000g driver should provide interface to ndd utility
395   6367490 e1000g has problem in deliver UDP fragment with addin card
396
3975.0.6
398======
399  This version has the following fix:
400   4967732 e1000g: high mutex contention in e1000g_start
401   6316907 e1000g: bcopy() brings better performance in transmitting and receiving small packet
402   6371753 aggregation of e1000g NICs fails to provide connectivity unless snoop is running
403   6397163 Jumbo frame statistics always counts zero with e1000g driver
404   6401903 Memory leak in e1000g driver
405
4065.0.7
407======
408  This version has the following fix:
409   6337450 e1000g interfaces take much much longer to plumb than bge interfaces on the V40.
410   6392401 Intel Ophir (82571) e1000g driver fails to attach on sun4u Boston with snv_33
411   6401659 vlan header getting corrupted due to memmove in e1000g sendPacket
412   6407374 e1000g still uses some old ddi interrupt routines that need to be changed
413   6411339 BAD TRAP: e1000g_fill_tx_ring NULL pointer dereference
414
4155.0.8
416======
417  This version has the following fix:
418   6399084 ipmp doesn't work with e1000g
419   6412153 ndd force speed is not consistent with e1000g.conf and e1000g(7D)
420   6415019 system panic when plumb e1000g interface up on SPARC
421   6415416 netlbtest does not run on Intel(R) PRO/1000 Network controller
422
4235.0.9
424======
425  This version has the following fix:
426  6337987 Serial Over Lan issue when e1000g driver is used
427
4285.1.0
429======
430  This version has the following fix:
431  PSARC/2006/248 Nemo MAC-Type Plugin Architecture
432  PSARC/2006/249 Nemo Changes for Binary Compatibility
433  6384371 GLDv3 only supports Ethernet
434  6242059 nemo drivers must not know the size of the mac_t structure
435  6226635 MAC stats interface could cause problems with binary compatibility
436
4375.1.1
438======
439  This version has the following fix:
440   6384266 e1000g driver should provide external loopback support
441   6428883 NEM e1000g drive netlbtest intermittent failed when running Sunvts FUNC test with cputest,vmemtest..
442   6430731 e1000g.conf file removed on upgrade
443   6431317 add support for intel Pro/1000 PT Adapter
444   6433236 Update the e1000g driver with the latest shared code from Intel
445   6439589 e1000g: whines about checksum capability, unclear what user should do
446   6441386 The default value of some e1000g parameters may impact rx performance
447   6445239 assertion failed: cookie_count == 1, file: ../../common/io/e1000g/e1000g_alloc.c, line: 422
448   6447914 e1000g should support setting of multiple unicast addresses
449   6449595 Ophir LAA driver workaround is not working for e1000g Driver
450
4515.1.2
452======
453  This version has the following fix:
454   6450683 Boston panics with e1000g under stress
455   6463536 BAD TRAP panic for removing aggregation
456   6463756 e1000g - link_speed / kstat output
457   6464426 e1000g driver needs a workaround to solve an ESB2 hardware issue
458
4595.1.3
460======
461  This version has the following fix:
462   6436387 e1000g panic while using cfgadm to unconfigure the pcie slot
463   6460403 disconnect of pcieX that has ophir with network if plumbed crashes the system
464   6466962 S10u2 e1000g 5.0.9 adv_autoneg_cap is not reflected on the kstat -p
465   6470233 e1000g_fill_tx_ring doesn't always update TDT properly
466
4675.1.4
468======
469  This version has the following fix:
470   6462893 HCTS network test failed on thumper machine due to e1000g issue
471   6467860 e1000g configured/used as cluster interconnect goes up and down when connected back to back
472
4735.1.5
474======
475  This version has the following fix:
476   6479912 Interrupt throttling tunable needed
477   6492025 northstar MMF e1000g external loopback fail.
478
4795.1.6
480======
481  This version has the following fix:
482   6482530 Need Ethernet driver for Intel G965 chipset
483   6491179 link aggregation with e1000g does not work unless snoop is running
484   6494743 e1000g 5.1.4 driver does not work with s11_52
485   6502458 e1000g is open source, move the source from usr/closed to use/src
486   6505360 e1000g Makefile should not include "-N drv/dld" in the LDFLAGS
487
4885.1.7
489======
490  This version has the following fix:
491   6454375 e1000g link flaps at initialization, triggering failovers
492   6472255 e1000g can't restore to 1000M with ndd setting
493   6496763 e1000g should free packets when link is down
494   6501294 "eeprom checksum failed" with pci8086,108c device
495   6504688 e1000g.conf settings are inconsistent with ndd output
496   6505445 e1000g : when all advertised capabilities are set to 0, ndd puts all of them 1
497   6519690 e1000g should not print the link up/down messages to console
498   6531474 Fatal PCIe Fabric Error panics on T2000 when using jumbo frames on e1000g interfaces
499   6535712 e1000g: the processing of the checksum flags should be protected by tx_lock
500
5015.1.8
502======
503  This version has the following fix:
504   6548711 e1000g: recursive mutex_enter in e1000g_link_check() on ESB2 platforms
505   6550086 e1000g: detaching driver immediately after attach induces panic
506
5075.1.9
508======
509  This version has the following fix:
510   6507422 Dynamic Reconfiguration detach fails for e1000g
511
5125.1.10
513======
514  This version has the following fix:
515   6490623 Some networking problems with Solaris_b44_64 domU(using solaris_b44_64 dom0)
516   6510396 system panicked in e1000g_82547_timeout
517   6554976 e1000g driver does not support 10D5 device - Sun Pentwater PEM quad port
518