2001-01-27 Andrey Savochkin Revision 1.36 - Big-endian fixes (double cpu->bus conversion). Thanks to Hai-Pao Fan and Jun Sun . - "card reports no resources" bug workaround. Thanks to Donald Becker. - Missing PCI flush after Reset. 2000-11-17 Andrey Savochkin Revision 1.35 - Temporary #define USE_IO was removed. - Debug level for periodic printing was adjusted. Changes from merge_2_4_0test10 branch: - Config data size was defined to note TxFD size constraints. - inl() after SCBPointer setting were added (but nothing shows that they are required...) - Endianess fix by Hai-Pao Fan . - SCBPointer corruption in "too much work at interrupt" case fix. The problem was spotted and fixed by Dragan. - Cleanup. A lot of outdated code (for kernel versions <=2.3.4x) was eliminated. - PCI DMA interface fixes. - Cosmetic fixes (after foreign intrusive changes). - Additional wait_for_cmd_done. - Initialization of static variables by 0 was stripped. - PCI_DEVICE_ID_INTEL_82820FW_4 was added. - #include was added, SMP compile string was removed. 2000-08-07 Andrey Savochkin Revision 1.34 - rx_copybreak fix for sparc & alpha (thanks to David Miller). - Necessary udelay after Reset commands was added. - Extra udelay() at the end of do_eeprom_cmd was removed. Thanks to Dragan Stancevic for correcting the access timing. - Hang on ioctl calls on downed interface was fixed. - Unused variable "temp" (around skb_put) was removed (fix by Andrey Moruga). - Some wait_for_cmd_done calls were moved in speedo_resume for better readability. - Obsolete comment about get_stats was removed. - If request_irq() fails, speedo_open() returns its error code (fix by Andrew Morton). - del_timer_sync() for speedo_close() (fix by Andrew Morton). - Temporary #define USE_IO to workaround "no resource" problem. - suspend and resume methods are put under #ifdef CONFIG_EEPRO100_PM. Actually, they do not work now. Thanks to Brian Warner and David Miller for the notice. - enet_statistics is renamed to net_device_stats (the old name was removed from kernel includes). - Conditional call to timer_exit (was removed from kernel includes). - Card statistics is temporary disabled until "wait_for_cmd_done timeout" problem is solved. 2000-05-27 Andrey Savochkin Revision 1.33 EEPROM access fix: - using port IO; - correct timings. Thanks to Dragan Stancevic for the help with fixing this problem, and Brian Leeper for help with tests, and all others who tested different variants of the code. 2000-05-13 Andrey Savochkin - A fix for a nasty find-and-replace mistake. Thanks to Marcel Waldvogel for the fix and to Scott Ashcroft for the testing. - References to CESDIS pages were removed. - Some unused definitions (remaining from older versions) were removed. - More PCI IDs of supported cards were added. 2000-05-09 Andrey Savochkin - More debug output for important cases. - missing timer_exit() was added. - MDIO access serialization. Thanks to Andrew Morton for calling my attention to these two problems. - Patch by Jeff Garzik to remove a superfluous message. 2000-03-30 Andrey Savochkin Fixes for 64-bit architectures: - Undefine in/out macros before redefining them (alpha special). - Alignment fix for the frame in struct speedo_mc_block. 2000-03-28 Andrey Savochkin - USE_IO mode compilation fix - "debug" parameter declaration for non-modular case 2000-03-27 Andrey Savochkin clear_suspend() fix for big endian. Thanks to Dave Miller. - Report about parameters (irq, io) of a found card was fixed. - Flow control is disabled until we start to handle FC interrupt properly. A patch from Dragan Stancevic . Quick attempt to fix the problem by acknowledging all interrupts was removed. - Increased timeout for wait_for_cmd_done() as in more recent Donald's drivers. The problem of insufficient timeout was reported by "Krawl, Roeland" . 2000-03-20 Andrey Savochkin Experimental modification: acknowledgement of all (even unknown) interrupt sources in speedo_interrupt(). 2000-03-08 Andrey Savochkin Changes inspired by Jeff Garzik's comments. - MODULE_AUTHOR was changed. - MODULE_DESCRIPTION includes 82559. - __devinit etc were removed from prototypes. - A buggy pci_resource_start masking was removed. - IO spinlock protection for a piece of code in start_xmit. - More comments about IO serialization and ACPI stuff. 2000-03-06 Andrey Savochkin - del_timer() fix for recent 2.3 kernels. - HAS_NETIF_QUEUE check was replace by kernel version check. - Massive changes from official kernels 2.3.42-48 were merged in. Some cosmetic changes weren't applied. - Multicast list setting from my driver clone was reworked to use PCI DMA mapping stuff. - Comment update. - 82559ER support. - PCI resource numeration (port/memory mapped IO) fix. 2000-02-15 Andrey Savochkin Syntax error fix. 2000-02-12 Savochkin Andrey Vladimirovich A fix for clear_suspend() to avoid interference with the card access to the status bits. 2000-01-06 Savochkin Andrey Vladimirovich - Priorities of several printk were adjusted. - Some messages about extraordinal events are printed even without debug. 1999-12-29 Savochkin Andrey Vladimirovich Attempts to solve the new receiver hangs: - forced call of speedo_rx() for the postponed packet; - restart the receiver if the card reports "no resources" and the driver successfully allocates new buffers. 1999-12-23 Savochkin Andrey Vladimirovich Stress testing (moderate load + artificially increased rate of atomic allocation failures) discovers some new bugs. The following was fixed: - Check for a last packet in the RX ring (very strong OOM) was moved above to cover all skbuf manipulations. - Checks whether it's possible to resume RX operations after a card report about out-of-buffers were fixed. - dirty_rx increment was moved to a proper place to always ensure RX ring termination. 1999-12-22 Savochkin Andrey Vladimirovich - More debug output. - A bug in borrowing of skb's in refill_rx_buffers() was fixed. 1999-12-13 Savochkin Andrey Vladimirovich spinlock.h include fix to compile for 2.3 UP kernels. 1999-12-09 Savochkin Andrey Vladimirovich - Purge all TX skb on timeout. It helps to recover from hangs because of out-of-memory conditions and simplifies speedo_resume(). - refill_rx_buffers() was modified to borrow skb from next entries if allocation fails. - Try to refill one buffer on each processed receiving packet. It helps to handle traffic bursts better. - Protection against interrupts during a reset after TX timeout was reimplemented. Extra flag and check in speedo_interrupt were removed. - Do not invoke RxStart or RxResumeNoResources if no RX buffers are available. It may cure some hangs. - More debug output for strange RX conditions. 1999-12-05 Savochkin Andrey Vladimirovich - dirty_tx adjusting in speedo_resume() after timeout was fixed to free dropped skb; - "incorrect tbusy state" trap was fixed to set tx_full; - set_rx_mode() was fixed to set tbusy when necessary; - tbusy manipulations were replaced by netif_queue calls; - temporary speedo interrupt disabling was wrapped by a macro; - wrappers to compile with 2.2 kernels; - debug output format fixes; - too frequent debug output (set_rx_mode) was moved to a higher debug level. 1999-11-27 Savochkin Andrey Vladimirovich A change from official 2.3.27 kernel to create net_device later. I don't know what problem this change addesses. 1999-11-16 Savochkin Andrey Vladimirovich Changes to compile with 2.3 kernels (namely, 2.3.25). [Unknown date] Savochkin Andrey Vladimirovich The driver is based on Becker's 1.09j and 1.09t. Compiles for 2.2.5 kernel. Additional changes: - clear_suspend macro was rewritten; - some fixes from official kernels were applied (~0xf -> ~0xfUL etc); - tx_timeout routine was seriously modified; new interrupt protection flag was added; setup routine were adjusted; - rx ring refilling was seriously modified to handle out-of-memory conditions; - a bug (releasing an skb with a live pointer to the next receiving descriptor) was workarounded; - more comparision fixes to work nice in a wrap-around case (subtraction and cast to a signed type); - some changes from Becker's 1.09t driver; - some obsolete and ifdef'ed stuff was removed. [Unknown date] Savochkin Andrey Vladimirovich Changes from Becker's 1.06: - more debugging output; - multicast list filter setting fixes; - some comparisons if a ring is busy were adjusted; - some control bits were named (according to more recent Becker's drivers); - fixes from official kernel (sti->spinlock_irqsave, suser->capXXX etc); - some minor changes.