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 512