e1000 net drvr updates 11/13:
Bump version to 4.2.8-k1, use EXPORT_NO_SYMBOLS, minor changes
to ensure that reported link information is always correct,
remove magic numbers in calls to memset.
e1000 net drvr update 9/13:
change_mtu cleanup. Allows frame sizes up to 2k on the 82542
instead of limiting the MTU to 1500, so that the 82542 can be
used with software 802.1q VLANs.
e1000 net drvr updates 8/13:
Minor receive cleanup, queue empty buffers to the hardware in
groups of 16 to reduce unneeded fetches and improve PCI
efficiency.
e1000 net drvr update 4/13:
Updated transmit path. Breaks the transmit path up to make it
more understandable. Aggressively reclaim resources by checking
for completed transmits before queuing each new frame to avoid
stalling the driver by delaying interrupts to long.
e1000 net drvr update 3/13:
Search and replace of adapter->shared with adapter->hw
throughout the driver. This matches the naming used in
e1000_hw.c and is more correct.
e1000 net drvr update 2/13:
Update to low level hardware code. Adds support for the new
82540 device. Replaces e1000_mac.c e1000_mac.h e1000_phy.c and
e1000_phy.h with e1000_hw.c and e1000_hw.c. Changes to the
makefile, header includes, and some minor function syntax
changes to get the driver working with the new code.
Alexander Viro [Tue, 2 Apr 2002 09:17:27 +0000 (01:17 -0800)]
[PATCH] restoring block size upon umount
get_sb_bdev() stores original block size in ->s_old_blocksize and
kill_block_super() restores it.
This kills 99% of crap with "oh, I've mounted/umounted that device and
its behaviour had changed" (remaining 1% can be dealt in pretty similar
ways; ideally I'd like to see ioctls that get/set block size dead and
gone).
Andrew Morton [Tue, 2 Apr 2002 03:44:16 +0000 (19:44 -0800)]
[PATCH] ext2_fill_super breakage
In 2.5.7 there is a thinko in the allocation and initialisation
of the fs-private superblock for ext2. It's passing the wrong type
to the sizeof operator (which of course gives the wrong size)
when allocating and clearing the memory.
Lesson for the day: this is one of the reasons why this idiom:
some_type *p;
p = malloc(sizeof(*p));
...
memset(p, 0, sizeof(*p));
is preferable to
some_type *p;
p = malloc(sizeof(some_type));
...
memset(p, 0, sizeof(some_type));
I checked the other filesystems. They're OK (but idiomatically
impure). I've added a couple of defensive memsets where
they were missing.
Martin Dalecki [Tue, 2 Apr 2002 03:41:07 +0000 (19:41 -0800)]
[PATCH] 2.5.7 IDE 28a
- Apply Pavel Macheks suspend resume double resume fix.
- Finally remove the busy field for ata_operations and replace it with
MOD_INC_USE_COUNT and MOD_DEC_USE_COUNT.
- Fix ali15xx chipset support by removing initialization differences,
apparently caused by mislead interpretation of the specs or a mismatch
between the specification and reality.
- Guard calls to ide_set_handler with checks to see whatever the previously
installed IRQ handler already served it's purpose.
- Convert timeout checks on poll_timeout to the time_before() interface.
- Consolidate the two different IRQ handlers for multi mode PIO writes into
one. The problems remain the same but at least now we will only have to
tangle one single problem.
Martin Dalecki [Tue, 2 Apr 2002 03:41:01 +0000 (19:41 -0800)]
[PATCH] 2.5.7 IDE 27
- Make for less terse error messages in ide-tape.c.
- Replaced all timecomparisions done by hand with all the proper timer_after()
commands.
- Remove the drive niec1 mechanisms alltogether. There are several reasons for
this:
1. The code implementing it is nonintelliglible and therefore propably
broken.
2. If we have to invent somethig about sceduling drive IO, it should be done
on the BIO level.
3. We may in fact interleave with the IO sceduling on the upper layers and
the results of two overlapping signal filters overlapped with each other can
be disasterous to the overall throughput. (In fact they *are* most of the
time.)
4. It was not working if you had intermixed modes on different drives
DMA versus PIO.
5. Our goal is to have a driver which is able to share the badwidth
properly and shouldn't needing this kind of "tuning".
- Remove unused nice2 from disk struct.
- Rename channel member of ata_channel to unit and device to dev to
just prevent wrong interpretations. This prevents constructs like
channel->channel...
Martin Dalecki [Tue, 2 Apr 2002 03:39:39 +0000 (19:39 -0800)]
[PATCH] 2.5.7 IDE 26
- Mark all members of structures, which get jiffies assigned or involved in
ugly timeout calculations with the prefix PADAM_ for easy spotting. This is
Polish for "I'm falling down" or "This brings me to the knees" or slag
comment for "What a sh..". Please be assured that it doesn't sound vulgar.
Please grep for it to see immediately why this nomenclature is justified.
- Rename hwifs_s to ata_channel and eliminate ide_hwifs_t as well as the HWIF
macro. OK this step makes this patch rather big.
Martin Dalecki [Tue, 2 Apr 2002 03:37:33 +0000 (19:37 -0800)]
[PATCH] 2.5.7 IDE 25
- Replace the task_io_reg_t with the simple u8. There is no need to obfuscate
the code more then necessary.
- kill some unnecessary type definitions out from hdreg.h.
- Add proper attributes to register files in hdreg.h.
- Don't use raw arrays for tfRegister and hobRegister in ide_task_s. Use out
nice global structures describing the fields in them. This allows to kill
the following defines:
Martin Dalecki [Tue, 2 Apr 2002 03:37:22 +0000 (19:37 -0800)]
[PATCH] 2.5.7 IDE 23
- Support for additional Promise controller id's (PDC20276).
- Remove code duplication between do_rw_taskfile and do_taskfile.
This will evolve into a more reasonable ata_command() function
finally. The ata_taskfile function has far too many arguments, but
I favour this over having two different code paths for getting
actual data to the drive.
David S. Miller [Wed, 27 Mar 2002 08:15:52 +0000 (00:15 -0800)]
Tigon3 net driver fixes:
- Make use of pci_unmap_xxx storage optimization.
- In tg3_get_invariants, fix cacheline_sz_reg shifts.
On 5703 chips, if latency timer is less than 64, set
it to 64.
- In tg3_test_dma, only run the actual test on 5700/5701
chips. Aparently 5702/5703 revs have some problems.
David S. Miller [Tue, 26 Mar 2002 09:45:37 +0000 (01:45 -0800)]
SunHME driver updates:
- Fix SMP locking throughout
- Deal with hw bug involving lost writes to rxring base address
- Disable Never Give Up mode on transmitter, set TX attempts
limit to 16 (the default). This deals with a possible hang
when the TX deadlocks with the PHY when a jabber occurs.
- Delete some dead code.
Harald Welte [Tue, 26 Mar 2002 07:18:27 +0000 (23:18 -0800)]
Big netfilter newnat patch for 2.5.7:
- support for multiple expected connections
(necessary for protocols like H.323, SIP, PPTP)
- helper-definable limit of unconfirmed expectations
- timeouts for expectations
- full graph of connection relations, even after expectation confirmed
- various changes in the API towards conntrack and NAT helper
- automatic conntrack helper loading when at helper is loaded
- NAT mangling of TCP SACK in case of sequence number alteration
(no need to delete SACKPERM anymore, I hope Alexey is happy now)
David S. Miller [Thu, 21 Mar 2002 18:05:43 +0000 (10:05 -0800)]
Code (and commentary) in SYN-RECEIVED processing
assumes that it cannot be reached in the crossed SYN case.
This is wrong if the original SYNs came from a malicious packet
generator third party. This can result in a 4 minute ACK
fight if the sequence numbers are correct.
The fix is the verify the ACK before we do anything else, which
should cover all cases.
David S. Miller [Wed, 20 Mar 2002 13:37:53 +0000 (05:37 -0800)]
Model Sparc64 pci_assign_resource more closely to the
implementation in drivers/pci/setup-res.c to make it
easier to track bugs.
Fix calculation of mem_space end on Sparc64 Schizo PCI controllers.
The decode register is set up for the whole 4GB even though the
top 2GB is reserved for DMA to/from main memory (ie. IOMMU translated)
David S. Miller [Wed, 20 Mar 2002 10:07:48 +0000 (02:07 -0800)]
In Sun GEM/HME drivers, if OpenBoot firmware is not
available (e.g. i386) fetch the ethernet MAC address
from the vital-product data contained in the PCI
ROM of the card.
David S. Miller [Wed, 20 Mar 2002 06:19:42 +0000 (22:19 -0800)]
Fix reverse logic in checking sock_writeable return
in UDP case. I note in passing that the TCP case is
wrong because TCP does not use sock_writeable()s
Eli Kupermann [Wed, 20 Mar 2002 01:28:24 +0000 (20:28 -0500)]
e100 net driver update:
1) This patch provides fix for "wake on arp" and "wake on unicast"
functionality when card is suspended by power management. When e100_suspend
was called for the device that is in netif_running state the load filter
command was executed in the asynchronic mode and the order of actions
required to put device into wake up enabled mode was broken.
The fix enables to execute WOL configure and load filter commands in the
synchronic mode despite of fact that device is in netif_running state. The
exec_non_cu_command uses the driver_isolated flag to identify this
situation.
2) add EXPORT_NO_SYMBOLS (yay Intel, you have come so far... :))
Alexey Kuznetsov [Tue, 19 Mar 2002 12:37:54 +0000 (04:37 -0800)]
Allow to bind to an already in use local port
during connect when the connection will still have a unique
identity. Fixes port space exhaustion, especially in web
caches.
Alexey Kuznetsov [Tue, 19 Mar 2002 12:22:04 +0000 (04:22 -0800)]
Add new sysctl, medium_id, to devinet.
It is used to differentiate the devices by the medium
they are attached to. It is used to change proxy_arp behavior:
the proxy arp feature is enabled for packets forwarded between
two devices attached to different media.
Alexey Kuznetsov [Tue, 19 Mar 2002 12:18:49 +0000 (04:18 -0800)]
IPv6 neighbour discovery fixes:
- Answer to neighbour solicitations on SIT, otherwise
freebsd does not want to talk to us.
- Fix wrong structure nd_msg and... use it :-)
Alexey Kuznetsov [Tue, 19 Mar 2002 12:15:08 +0000 (04:15 -0800)]
TCP Input fixes:
1) Two bugs noticed by Pasi:
- Wrong rtt update interval
- Forgot to clear retrans_stamp when entering established
state
2) Missing LAST_ACK case of processing segment text (step 7) in
tcp_rcv_state_process.
3) Remove "final cut" code, purism is good not all the times. :-)
Alexey Kuznetsov [Tue, 19 Mar 2002 12:13:22 +0000 (04:13 -0800)]
IP input fixes:
- no need to check for pskb_may_pull() in ip_local_deliver_finish, header
is guaranteed to be at right place here.
- remove cleaing ip_summed with IP options, it was required due to
broken eth_copy_and_csum, but we do not use it any more
and it happens to break loopback
Alexey Kuznetsov [Tue, 19 Mar 2002 12:11:41 +0000 (04:11 -0800)]
In IPv4 ICMP:
pskb_pull really may reallocate packet after the check
for 8 bytes was removed from ip_input, so set icmp
header pointer after pskb_pull call not before.