* Re: [PATCH 2/2] sky2: fix transmit state on resume
From: Jeff Garzik @ 2007-09-28 3:35 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: netdev
In-Reply-To: <20070927123812.4e2185f3@freepuppy.rosehill>
Stephen Hemminger wrote:
> Patch is against 2.6.23-rc8 after last patch:
> sky2: FE+ vlan workaround
>
> (Should also work on older releases with minor fuzz).
Applied. Please always put meta-information such as the above quoted
after the "---" patch description terminator, so that it is not copied
into the permanent kernel changelog. This text must be hand-edited out
of each patch, before application.
See item #14 of Documentation/SubmittingPatches.
^ permalink raw reply
* Re: [PATCH 1/2] sky2: FE+ vlan workaround
From: Jeff Garzik @ 2007-09-28 3:35 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: netdev
In-Reply-To: <20070927123244.0257ab86@freepuppy.rosehill>
Stephen Hemminger wrote:
> This patch applies to 2.6.23-rc8 after yesterday's patch:
> sky2 FE+ receive status workaround
Applied. Please always put meta-information such as the above quoted
after the "---" patch description terminator, so that it is not copied
into the permanent kernel changelog. This text must be hand-edited out
of each patch, before application.
See item #14 of Documentation/SubmittingPatches.
^ permalink raw reply
* Re: [PATCH] sky2: sky2 FE+ receive status workaround
From: Jeff Garzik @ 2007-09-28 3:33 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: netdev
In-Reply-To: <20070926175847.706025d0@freepuppy.rosehill>
Stephen Hemminger wrote:
> Patch against 2.6.23-rc8, please apply before 2.6.23 release (or it will
> need to go to stable).
Applied. Please always put meta-information such as the above quoted
after the "---" patch description terminator, so that it is not copied
into the permanent kernel changelog. This text must be hand-edited out
of each patch, before application.
^ permalink raw reply
* Re: [PATCH] net: Add network namespace clone & unshare support.
From: Eric W. Biederman @ 2007-09-28 3:28 UTC (permalink / raw)
To: Andrew Morton; +Cc: David Miller, containers, netdev
In-Reply-To: <20070927172533.1dd1db31.akpm@linux-foundation.org>
Andrew Morton <akpm@linux-foundation.org> writes:
> On Thu, 27 Sep 2007 17:10:53 -0700 (PDT)
> David Miller <davem@davemloft.net> wrote:
>
>> > I will gladly do what I can, to help. Working against 3 trees
>> > development at the moment is a bit of a development challenge.
>>
>> Andrew has to work against 30 or so
>
> I wish! A remerge presently involves pulling and merging 73 git trees, 9
> quilt trees and maybe 1,500 -mm patches.
Yep. There is a lot of chaos and keeping on top of it all is a pain,
and nobody has it easy.
Andrew probably wins award for the biggest challenge.
My todo list pales in comparison. I only have 80+ patches in my
queue that I need to reviewed and then pushed upstream. 50 sysfs
patches to review and get a handle on so hopefully we can out of the
sysfs quagmire.
Plus I don't know how many little gotchas that need to be fixed with
a new patch of their own.
It's coming together but it takes time.
David, Andrew thanks you both are really are good upstream maintainers
to work with.
Eric
^ permalink raw reply
* Re: [RFC] Make TCP prequeue configurable
From: John Heffner @ 2007-09-28 2:26 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: Eric Dumazet, Linux Netdev List
In-Reply-To: <20070927154432.6ca3b525@freepuppy.rosehill>
Stephen Hemminger wrote:
> On Fri, 28 Sep 2007 00:08:33 +0200
> Eric Dumazet <dada1@cosmosbay.com> wrote:
>
>> Hi all
>>
>> I am sure some of you are going to tell me that prequeue is not
>> all black :)
>>
>> Thank you
>>
>> [RFC] Make TCP prequeue configurable
>>
>> The TCP prequeue thing is based on old facts, and has drawbacks.
>>
>> 1) It adds 48 bytes per 'struct tcp_sock'
>> 2) It adds some ugly code in hot paths
>> 3) It has a small hit ratio on typical servers using many sockets
>> 4) It may have a high hit ratio on UP machines running one process,
>> where the prequeue adds litle gain. (In fact, letting the user
>> doing the copy after being woke up is better for cache reuse)
>> 5) Doing a copy to user in softirq handler is not good, because of
>> potential page faults :(
>> 6) Maybe the NET_DMA thing is the only thing that might need prequeue.
>>
>> This patch introduces a CONFIG_TCP_PREQUEUE, automatically selected if
>> CONFIG_NET_DMA is on.
>>
>> Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
>>
>
> Rather than having a two more compile cases and test cases to deal
> with. If you can prove it is useless, make a case for killing
> it completely.
I think it really does help in case (4) with old NICs that don't do rx
checksumming. I'm not sure how many people really care about this
anymore, but probably some...?
OTOH, it would be nice to get rid of sysctl_tcp_low_latency.
-John
^ permalink raw reply
* 2.6.23-rc8 network problem. Mem leak? ip1000a?
From: linux @ 2007-09-28 2:06 UTC (permalink / raw)
To: linux-kernel, netdev; +Cc: linux
Uniprocessor Althlon 64, 64-bit kernel, 2G ECC RAM,
2.6.23-rc8 + linuxpps (5.0.0) + ip1000a driver.
(patch from http://marc.info/?l=linux-netdev&m=118980588419882)
After a few hours of operation, ntp loses the ability to send packets.
sendto() returns -EAGAIN to everything, including the 24-byte UDP packet
that is a response to ntpq.
-EAGAIN on a sendto() makes me think of memory problems, so here's
meminfo at the time:
### FAILED state ###
# cat /proc/meminfo
MemTotal: 2059384 kB
MemFree: 15332 kB
Buffers: 665608 kB
Cached: 18212 kB
SwapCached: 0 kB
Active: 380384 kB
Inactive: 355020 kB
SwapTotal: 5855208 kB
SwapFree: 5854552 kB
Dirty: 28504 kB
Writeback: 0 kB
AnonPages: 51608 kB
Mapped: 11852 kB
Slab: 1285348 kB
SReclaimable: 152968 kB
SUnreclaim: 1132380 kB
PageTables: 3888 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 6884900 kB
Committed_AS: 590528 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 265628 kB
VmallocChunk: 34359472059 kB
Killing and restarting ntpd gets it running again for a few hours.
Here's after about two hours of successful operation. (I'll try to
remember to run slabinfo before killing ntpd next time.)
### WORKING state ###
# cat /proc/meminfo
MemTotal: 2059384 kB
MemFree: 20252 kB
Buffers: 242688 kB
Cached: 41556 kB
SwapCached: 200 kB
Active: 285012 kB
Inactive: 147348 kB
SwapTotal: 5855208 kB
SwapFree: 5854212 kB
Dirty: 36 kB
Writeback: 0 kB
AnonPages: 148052 kB
Mapped: 12756 kB
Slab: 1582512 kB
SReclaimable: 134348 kB
SUnreclaim: 1448164 kB
PageTables: 4500 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 6884900 kB
Committed_AS: 689956 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 265628 kB
VmallocChunk: 34359472059 kB
# /usr/src/linux/Documentation/vm/slabinfo
Name Objects Objsize Space Slabs/Part/Cpu O/S O %Fr %Ef Flg
:0000016 1478 16 24.5K 6/3/1 256 0 50 96 *
:0000024 170 24 4.0K 1/0/1 170 0 0 99 *
:0000032 1339 32 45.0K 11/2/1 128 0 18 95 *
:0000040 102 40 4.0K 1/0/1 102 0 0 99 *
:0000064 5937 64 413.6K 101/15/1 64 0 14 91 *
:0000072 56 72 4.0K 1/0/1 56 0 0 98 *
:0000088 6946 88 618.4K 151/0/1 46 0 0 98 *
:0000096 23851 96 2.5M 616/144/1 42 0 23 90 *
:0000128 730 128 114.6K 28/6/1 32 0 21 81 *
:0000136 232 136 36.8K 9/6/1 30 0 66 85 *
:0000192 474 192 98.3K 24/4/1 21 0 16 92 *
:0000256 1385376 256 354.6M 86587/0/1 16 0 0 99 *
:0000320 12 304 4.0K 1/0/1 12 0 0 89 *A
:0000384 359 384 180.2K 44/23/1 10 0 52 76 *A
:0000512 1384316 512 708.7M 173040/1/1 8 0 0 99 *
:0000640 72 616 53.2K 13/5/1 6 0 38 83 *A
:0000704 1870 696 1.3M 170/0/1 11 1 0 93 *A
:0001024 427 1024 454.6K 111/9/1 4 0 8 96 *
:0001472 150 1472 245.7K 30/0/1 5 1 0 89 *
:0002048 158991 2048 325.7M 39759/25/1 4 1 0 99 *
:0004096 51 4096 245.7K 30/9/1 2 1 30 85 *
Acpi-State 51 80 4.0K 1/0/1 51 0 0 99
anon_vma 1032 16 28.6K 7/5/1 170 0 71 57
bdev_cache 43 720 36.8K 9/1/1 5 0 11 83 Aa
blkdev_requests 42 288 12.2K 3/0/1 14 0 0 98
buffer_head 59173 104 11.1M 2734/1690/1 39 0 61 54 a
cfq_io_context 223 152 40.9K 10/6/1 26 0 60 82
dentry 98641 192 19.7M 4813/274/1 21 0 5 96 a
ext3_inode_cache 115690 688 86.3M 10545/77/1 11 1 0 92 a
file_lock_cache 23 168 4.0K 1/0/1 23 0 0 94
idr_layer_cache 118 528 69.6K 17/1/1 7 0 5 89
inode_cache 1365 528 798.7K 195/0/1 7 0 0 90 a
kmalloc-131072 1 131072 131.0K 1/0/1 1 5 0 100
kmalloc-16384 8 16384 131.0K 8/0/1 1 2 0 100
kmalloc-32768 1 32768 32.7K 1/0/1 1 3 0 100
kmalloc-8 1535 8 12.2K 3/1/1 512 0 33 99
kmalloc-8192 10 8192 81.9K 10/0/1 1 1 0 100
mm_struct 54 800 57.3K 7/5/1 9 1 71 75 A
proc_inode_cache 12 560 16.3K 4/3/1 7 0 75 41 a
radix_tree_node 17076 552 13.5M 3319/1675/1 7 0 50 69
raid5-md5 258 1176 352.2K 43/0/1 6 1 0 86
shmem_inode_cache 22 712 20.4K 5/1/1 5 0 20 76
sighand_cache 88 2072 253.9K 31/3/1 3 1 9 71 A
signal_cache 88 720 77.8K 19/6/1 5 0 31 81 A
sigqueue 25 160 4.0K 1/0/1 25 0 0 97
skbuff_fclone_cache 158787 404 72.2M 17644/2/1 9 0 0 88 A
sock_inode_cache 65 600 53.2K 13/5/1 6 0 38 73 Aa
task_struct 145 1808 311.2K 38/6/1 4 1 15 84
uhci_urb_priv 73 56 4.0K 1/0/1 73 0 0 99
vm_area_struct 2947 168 540.6K 132/25/1 24 0 18 91
### WORKING state ###
After quite a few hours (about 15h40m), it failed again. I'm leaving it
in the failed state for now so I can answer questions. ntpd is running and
receiving packets, it just can't send any.
### FAILED state ###
# cat /proc/meminfo
MemTotal: 2059384 kB
MemFree: 98556 kB
Buffers: 3224 kB
Cached: 18888 kB
SwapCached: 3876 kB
Active: 16688 kB
Inactive: 13068 kB
SwapTotal: 5855208 kB
SwapFree: 5822068 kB
Dirty: 32 kB
Writeback: 0 kB
AnonPages: 6960 kB
Mapped: 4752 kB
Slab: 1907828 kB
SReclaimable: 1916 kB
SUnreclaim: 1905912 kB
PageTables: 3888 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 6884900 kB
Committed_AS: 575652 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 265628 kB
VmallocChunk: 34359472059 kB
# /usr/src/linux/Documentation/vm/slabinfo
Name Objects Objsize Space Slabs/Part/Cpu O/S O %Fr %Ef Flg
:0000016 1533 16 32.7K 8/5/1 256 0 62 74 *
:0000024 170 24 4.0K 1/0/1 170 0 0 99 *
:0000032 1339 32 45.0K 11/2/1 128 0 18 95 *
:0000040 102 40 4.0K 1/0/1 102 0 0 99 *
:0000064 3295 64 278.5K 68/24/1 64 0 35 75 *
:0000072 56 72 4.0K 1/0/1 56 0 0 98 *
:0000088 6946 88 618.4K 151/0/1 46 0 0 98 *
:0000096 2110 96 233.4K 57/9/1 42 0 15 86 *
:0000128 726 128 98.3K 24/2/1 32 0 8 94 *
:0000136 255 136 40.9K 10/6/1 30 0 60 84 *
:0000192 457 192 98.3K 24/4/1 21 0 16 89 *
:0000256 1893104 256 484.6M 118319/0/1 16 0 0 100 *
:0000320 12 304 4.0K 1/0/1 12 0 0 89 *A
:0000384 423 384 188.4K 46/14/1 10 0 30 86 *A
:0000512 1892180 512 968.8M 236524/4/1 8 0 0 99 *
:0000640 68 616 49.1K 12/4/1 6 0 33 85 *A
:0000704 2043 696 1.5M 186/1/1 11 1 0 93 *A
:0001024 435 1024 462.8K 113/11/1 4 0 9 96 *
:0001472 240 1472 393.2K 48/0/1 5 1 0 89 *
:0002048 196191 2048 401.8M 49052/14/1 4 1 0 99 *
:0004096 51 4096 237.5K 29/7/1 2 1 24 87 *
Acpi-State 51 80 4.0K 1/0/1 51 0 0 99
anon_vma 796 16 24.5K 6/4/1 170 0 66 51
bdev_cache 43 720 36.8K 9/1/1 5 0 11 83 Aa
blkdev_requests 46 288 16.3K 4/1/1 14 0 25 80
buffer_head 888 104 94.2K 23/2/1 39 0 8 98 a
cfq_io_context 249 152 45.0K 11/6/1 26 0 54 84
dentry 4242 192 831.4K 203/0/1 21 0 0 97 a
ext3_inode_cache 1341 688 1.0M 129/11/1 11 1 8 87 a
file_lock_cache 23 168 4.0K 1/0/1 23 0 0 94
idr_layer_cache 118 528 69.6K 17/1/1 7 0 5 89
inode_cache 959 528 565.2K 138/0/1 7 0 0 89 a
kmalloc-131072 1 131072 131.0K 1/0/1 1 5 0 100
kmalloc-16384 8 16384 131.0K 8/0/1 1 2 0 100
kmalloc-32768 1 32768 32.7K 1/0/1 1 3 0 100
kmalloc-8 1535 8 12.2K 3/1/1 512 0 33 99
kmalloc-8192 10 8192 81.9K 10/0/1 1 1 0 100
mm_struct 54 800 65.5K 8/6/1 9 1 75 65 A
proc_inode_cache 42 560 24.5K 6/0/1 7 0 0 95 a
radix_tree_node 985 552 811.0K 198/73/1 7 0 36 67
raid5-md5 258 1176 352.2K 43/0/1 6 1 0 86
shmem_inode_cache 24 712 20.4K 5/1/1 5 0 20 83
sighand_cache 86 2072 237.5K 29/1/1 3 1 3 75 A
signal_cache 85 720 77.8K 19/8/1 5 0 42 78 A
sigqueue 25 160 4.0K 1/0/1 25 0 0 97
skbuff_fclone_cache 196031 404 89.2M 21782/5/1 9 0 0 88 A
sock_inode_cache 62 600 53.2K 13/6/1 6 0 46 69 Aa
task_struct 140 1808 311.2K 38/9/1 4 1 23 81
uhci_urb_priv 73 56 4.0K 1/0/1 73 0 0 99
vm_area_struct 2666 168 466.9K 114/7/1 24 0 6 95
### FAILED state ###
I'm not sure quite where to point the blame. This hardware used to
run ntpd just fine with a 2.6.22 kernel, but I upgraded the base kernel,
the ip1000a driver, and the linuxpps patches at the same time.
With this time to failure, bisection is a challenge.
I'm not quite sure how it could be the ip1000a driver's fault, in a way
that breaks ntp but leaves ssh and other network services running.
And the linuxpps patches are very localized and only allocate
at initialization time. It's hard to see how they could cause
this effect.
There is a newly recompiled (new linuxpps API) ntpd, but it's hard to
see how it could cause the given symptoms, and the exact same source
code is running on a 32-bit machine (2.6.23-rc6 + linuxpps 5.0) just fine.
But it's also hard to imagine that I've found a new generic networking bug
that nobody else has noticed.
Can anyone offer some diagnosis advice?
This is actually the second (and third) time it's happened. The first
time, I ran strace and saw the same -EBUSY, but assumed I'd misconfigured
ntpd and bounced it. It started working, so I left it, then noticed
that it had stopped again and looked more closely.
FWIW, a "stuck" ntpd still responds to UDP queries from a localhost ntpd.
Here's the .config:
CONFIG_X86_64=y
CONFIG_64BIT=y
CONFIG_X86=y
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_ZONE_DMA32=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_X86_CMPXCHG=y
CONFIG_EARLY_PRINTK=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_DMI=y
CONFIG_AUDIT_ARCH=y
CONFIG_GENERIC_BUG=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_BSD_PROCESS_ACCT=y
CONFIG_BSD_PROCESS_ACCT_V3=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=15
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_UID16=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
CONFIG_SLUB=y
CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_KMOD=y
CONFIG_BLOCK=y
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
CONFIG_DEFAULT_CFQ=y
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_X86_PC=y
CONFIG_MK8=y
CONFIG_X86_L1_CACHE_BYTES=64
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_INTERNODE_CACHE_BYTES=64
CONFIG_X86_TSC=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_MSR=y
CONFIG_X86_CPUID=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_MTRR=y
CONFIG_PREEMPT_NONE=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_RESOURCES_64BIT=y
CONFIG_ZONE_DMA_FLAG=1
CONFIG_BOUNCE=y
CONFIG_VIRT_TO_BUS=y
CONFIG_PHYSICAL_ALIGN=0x200000
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
CONFIG_HPET_TIMER=y
CONFIG_IOMMU=y
CONFIG_SWIOTLB=y
CONFIG_X86_MCE=y
CONFIG_X86_MCE_AMD=y
CONFIG_PHYSICAL_START=0x200000
CONFIG_SECCOMP=y
CONFIG_HZ_250=y
CONFIG_HZ=250
CONFIG_K8_NB=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_ISA_DMA_API=y
CONFIG_PM=y
CONFIG_SUSPEND_UP_POSSIBLE=y
CONFIG_HIBERNATION_UP_POSSIBLE=y
CONFIG_ACPI=y
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_FAN=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_THERMAL=y
CONFIG_ACPI_BLACKLIST_YEAR=0
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_X86_POWERNOW_K8=y
CONFIG_X86_POWERNOW_K8_ACPI=y
CONFIG_PCI=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
CONFIG_PCIEPORTBUS=y
CONFIG_PCIEAER=y
CONFIG_ARCH_SUPPORTS_MSI=y
CONFIG_PCI_MSI=y
CONFIG_HT_IRQ=y
CONFIG_BINFMT_ELF=y
CONFIG_IA32_EMULATION=y
CONFIG_COMPAT=y
CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
CONFIG_SYSVIPC_COMPAT=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_XFRM=y
CONFIG_XFRM_USER=y
CONFIG_NET_KEY=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_ASK_IP_FIB_HASH=y
CONFIG_IP_FIB_HASH=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_MROUTE=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y
CONFIG_SYN_COOKIES=y
CONFIG_INET_AH=y
CONFIG_INET_ESP=y
CONFIG_INET_IPCOMP=y
CONFIG_INET_XFRM_TUNNEL=y
CONFIG_INET_TUNNEL=y
CONFIG_INET_XFRM_MODE_TRANSPORT=y
CONFIG_INET_XFRM_MODE_TUNNEL=y
CONFIG_INET_XFRM_MODE_BEET=y
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
CONFIG_NETFILTER=y
CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_NETLINK_LOG=y
CONFIG_NETFILTER_XTABLES=y
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
CONFIG_NETFILTER_XT_TARGET_MARK=y
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
CONFIG_NETFILTER_XT_TARGET_NFLOG=y
CONFIG_NETFILTER_XT_MATCH_LENGTH=y
CONFIG_NETFILTER_XT_MATCH_LIMIT=y
CONFIG_NETFILTER_XT_MATCH_MARK=y
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
CONFIG_NETFILTER_XT_MATCH_QUOTA=y
CONFIG_NETFILTER_XT_MATCH_STATISTIC=y
CONFIG_NETFILTER_XT_MATCH_TCPMSS=y
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y
CONFIG_IP_NF_QUEUE=m
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_MATCH_TOS=y
CONFIG_IP_NF_MATCH_ECN=y
CONFIG_IP_NF_MATCH_OWNER=y
CONFIG_IP_NF_MATCH_ADDRTYPE=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_REJECT=y
CONFIG_IP_NF_TARGET_ULOG=y
CONFIG_IP_NF_MANGLE=y
CONFIG_IP_NF_TARGET_TOS=y
CONFIG_IP_NF_TARGET_ECN=y
CONFIG_IP_NF_TARGET_TTL=y
CONFIG_VLAN_8021Q=y
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_FIFO=y
CONFIG_NET_SCH_CBQ=y
CONFIG_NET_SCH_HTB=y
CONFIG_NET_SCH_HFSC=y
CONFIG_NET_SCH_PRIO=y
CONFIG_NET_SCH_RR=y
CONFIG_NET_SCH_RED=y
CONFIG_NET_SCH_SFQ=y
CONFIG_NET_SCH_TEQL=y
CONFIG_NET_SCH_TBF=y
CONFIG_NET_SCH_GRED=y
CONFIG_NET_SCH_DSMARK=y
CONFIG_NET_SCH_NETEM=y
CONFIG_NET_SCH_INGRESS=y
CONFIG_NET_CLS=y
CONFIG_NET_CLS_TCINDEX=y
CONFIG_NET_CLS_ROUTE4=y
CONFIG_NET_CLS_ROUTE=y
CONFIG_NET_CLS_ACT=y
CONFIG_NET_ACT_POLICE=y
CONFIG_NET_ACT_MIRRED=y
CONFIG_NET_ACT_IPT=y
CONFIG_NET_ACT_PEDIT=y
CONFIG_NET_ACT_SIMP=y
CONFIG_NET_CLS_POLICE=y
CONFIG_FIB_RULES=y
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_PARPORT=y
CONFIG_PARPORT_PC=y
CONFIG_PARPORT_PC_FIFO=y
CONFIG_PARPORT_PC_SUPERIO=y
CONFIG_PARPORT_1284=y
CONFIG_PNP=y
CONFIG_PNPACPI=y
CONFIG_BLK_DEV=y
CONFIG_BLK_DEV_FD=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_CRYPTOLOOP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=65536
CONFIG_BLK_DEV_RAM_BLOCKSIZE=4096
CONFIG_CDROM_PKTCDVD=y
CONFIG_CDROM_PKTCDVD_BUFFERS=8
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y
CONFIG_BLK_DEV_IDECD=y
CONFIG_BLK_DEV_IDEACPI=y
CONFIG_IDE_GENERIC=y
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_IDEPCI_SHARE_IRQ=y
CONFIG_IDEPCI_PCIBUS_ORDER=y
CONFIG_BLK_DEV_GENERIC=y
CONFIG_BLK_DEV_IDEDMA_PCI=y
CONFIG_BLK_DEV_AMD74XX=m
CONFIG_BLK_DEV_VIA82CXXX=y
CONFIG_BLK_DEV_IDEDMA=y
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_BLK_DEV_SD=y
CONFIG_SCSI_WAIT_SCAN=m
CONFIG_ATA=y
CONFIG_ATA_ACPI=y
CONFIG_SATA_NV=y
CONFIG_SATA_SIL24=y
CONFIG_SATA_VIA=m
CONFIG_MD=y
CONFIG_BLK_DEV_MD=y
CONFIG_MD_RAID0=y
CONFIG_MD_RAID1=y
CONFIG_MD_RAID10=y
CONFIG_MD_RAID456=y
CONFIG_FIREWIRE=m
CONFIG_FIREWIRE_OHCI=m
CONFIG_FIREWIRE_SBP2=m
CONFIG_NETDEVICES=y
CONFIG_DUMMY=y
CONFIG_TUN=y
CONFIG_IP1000=y
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
CONFIG_NET_TULIP=y
CONFIG_DE2104X=m
CONFIG_TULIP=m
CONFIG_DE4X5=m
CONFIG_WINBOND_840=m
CONFIG_DM9102=m
CONFIG_NET_PCI=y
CONFIG_FORCEDETH=y
CONFIG_NETDEV_1000=y
CONFIG_SKGE=y
CONFIG_INPUT=y
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
CONFIG_INPUT_EVDEV=y
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_LIFEBOOK=y
CONFIG_MOUSE_PS2_TRACKPOINT=y
CONFIG_INPUT_MISC=y
CONFIG_INPUT_PCSPKR=y
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_LIBPS2=y
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_PNP=y
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_8250_DETECT_IRQ=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
CONFIG_PRINTER=y
CONFIG_RTC=y
CONFIG_AGP=y
CONFIG_AGP_AMD64=y
CONFIG_DRM=y
CONFIG_DRM_RADEON=y
CONFIG_HPET=y
CONFIG_HPET_MMAP=y
CONFIG_HANGCHECK_TIMER=y
CONFIG_DEVPORT=y
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_ALGOBIT=m
CONFIG_I2C_NFORCE2=m
CONFIG_I2C_VIAPRO=y
CONFIG_SENSORS_EEPROM=y
CONFIG_PPS=y
CONFIG_PPS_CLIENT_UART=y
CONFIG_HWMON=y
CONFIG_HWMON_VID=m
CONFIG_SENSORS_ABITUGURU=y
CONFIG_SENSORS_K8TEMP=y
CONFIG_SENSORS_IT87=m
CONFIG_SENSORS_W83627HF=m
CONFIG_VGA_CONSOLE=y
CONFIG_VIDEO_SELECT=y
CONFIG_DUMMY_CONSOLE=y
CONFIG_SOUND=m
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_VERBOSE_PROCFS=y
CONFIG_SND_MPU401_UART=m
CONFIG_SND_AC97_CODEC=m
CONFIG_SND_VIA82XX=m
CONFIG_AC97_BUS=m
CONFIG_HID_SUPPORT=y
CONFIG_HID=y
CONFIG_USB_HID=y
CONFIG_USB_HIDDEV=y
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
CONFIG_USB=y
CONFIG_USB_DEVICEFS=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_SPLIT_ISO=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y
CONFIG_USB_OHCI_HCD=m
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
CONFIG_USB_UHCI_HCD=y
CONFIG_USB_PRINTER=m
CONFIG_USB_STORAGE=m
CONFIG_USB_SERIAL=m
CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_BELKIN=m
CONFIG_USB_SERIAL_WHITEHEAT=m
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
CONFIG_USB_SERIAL_CP2101=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_FTDI_SIO=m
CONFIG_USB_SERIAL_MCT_U232=m
CONFIG_USB_SERIAL_MOS7720=m
CONFIG_USB_SERIAL_MOS7840=m
CONFIG_USB_SERIAL_PL2303=m
CONFIG_USB_SERIAL_TI=m
CONFIG_USB_SERIAL_XIRCOM=m
CONFIG_USB_EZUSB=y
CONFIG_EDAC=y
CONFIG_EDAC_MM_EDAC=y
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
CONFIG_RTC_DRV_CMOS=y
CONFIG_DMIID=y
CONFIG_EXT2_FS=m
CONFIG_EXT3_FS=y
CONFIG_JBD=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
CONFIG_DNOTIFY=y
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
CONFIG_UDF_FS=y
CONFIG_UDF_NLS=y
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_RAMFS=y
CONFIG_NFSD=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_TCP=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
CONFIG_MSDOS_PARTITION=y
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="cp437"
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ASCII=y
CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_ISO8859_15=y
CONFIG_NLS_UTF8=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_KERNEL=y
CONFIG_DETECT_SOFTLOCKUP=y
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_STACKOVERFLOW=y
CONFIG_XOR_BLOCKS=y
CONFIG_ASYNC_CORE=y
CONFIG_ASYNC_MEMCPY=y
CONFIG_ASYNC_XOR=y
CONFIG_CRYPTO=y
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_XCBC=m
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_TWOFISH_COMMON=m
CONFIG_CRYPTO_TWOFISH_X86_64=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_AES_X86_64=y
CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_DEFLATE=y
CONFIG_BITREVERSE=y
CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
^ permalink raw reply
* Re: [PATCH] net: Add network namespace clone & unshare support.
From: Andrew Morton @ 2007-09-28 0:25 UTC (permalink / raw)
To: David Miller; +Cc: ebiederm, containers, netdev
In-Reply-To: <20070927.171053.39175054.davem@davemloft.net>
On Thu, 27 Sep 2007 17:10:53 -0700 (PDT)
David Miller <davem@davemloft.net> wrote:
> > I will gladly do what I can, to help. Working against 3 trees
> > development at the moment is a bit of a development challenge.
>
> Andrew has to work against 30 or so
I wish! A remerge presently involves pulling and merging 73 git trees, 9
quilt trees and maybe 1,500 -mm patches.
^ permalink raw reply
* Re: [PATCH] net: Add network namespace clone & unshare support.
From: David Miller @ 2007-09-28 0:10 UTC (permalink / raw)
To: ebiederm; +Cc: containers, netdev, akpm
In-Reply-To: <m18x6rhfy0.fsf@ebiederm.dsl.xmission.com>
From: ebiederm@xmission.com (Eric W. Biederman)
Date: Thu, 27 Sep 2007 17:00:23 -0600
> I will gladly do what I can, to help. Working against 3 trees
> development at the moment is a bit of a development challenge.
Andrew has to work against 30 or so, so multiply your pain
by 10 to understand what he has to deal with :-)
^ permalink raw reply
* Re: [PATCH] netns: CLONE_NEWNET don't use the same clone flag as the pid namespace.
From: David Miller @ 2007-09-28 0:10 UTC (permalink / raw)
To: ebiederm; +Cc: netdev, containers
In-Reply-To: <m1hclfhgv4.fsf@ebiederm.dsl.xmission.com>
From: ebiederm@xmission.com (Eric W. Biederman)
Date: Thu, 27 Sep 2007 16:40:31 -0600
>
> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Applied.
^ permalink raw reply
* Re: [PATCH] Bring comments in loopback.c uptodate.
From: David Miller @ 2007-09-28 0:09 UTC (permalink / raw)
To: ebiederm; +Cc: netdev
In-Reply-To: <m1lkarhgw6.fsf@ebiederm.dsl.xmission.com>
From: ebiederm@xmission.com (Eric W. Biederman)
Date: Thu, 27 Sep 2007 16:39:53 -0600
>
> A hint as to why it is safe to use per cpu variables,
> and note that we actually can have multiple instances
> of the loopback device now.
>
> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Applied.
^ permalink raw reply
* Re: Please pull 'upstream-davem' branch of wireless-2.6 (2007-09-27)
From: David Miller @ 2007-09-28 0:08 UTC (permalink / raw)
To: jeff-o2qLIJkoznsdnm+yROfE0A
Cc: linville-2XuSBdqkA4R54TAoqtyWWQ, netdev-u79uwXL29TY76Z2rM5mHXA,
linux-wireless-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <46FC2D02.9000602-o2qLIJkoznsdnm+yROfE0A@public.gmane.org>
From: Jeff Garzik <jeff-o2qLIJkoznsdnm+yROfE0A@public.gmane.org>
Date: Thu, 27 Sep 2007 18:21:54 -0400
> John W. Linville wrote:
> > Dave & Jeff,
> >
> > Here are some more wireless stack and driver updates for 2.6.24. Please
> > pull at your earliest convenience.
>
> ACK (I presume davem will pull)
>
> it looks like this includes my adm feedback, thanks!
Pulled into net-2.6.24 and pushed back out, thanks!
^ permalink raw reply
* Re: [RFC] Make TCP prequeue configurable
From: David Miller @ 2007-09-27 23:09 UTC (permalink / raw)
To: dada1; +Cc: netdev
In-Reply-To: <46FC29E1.9010809@cosmosbay.com>
From: Eric Dumazet <dada1@cosmosbay.com>
Date: Fri, 28 Sep 2007 00:08:33 +0200
> 1) It adds 48 bytes per 'struct tcp_sock'
> 2) It adds some ugly code in hot paths
> 3) It has a small hit ratio on typical servers using many sockets
> 4) It may have a high hit ratio on UP machines running one process,
> where the prequeue adds litle gain. (In fact, letting the user
> doing the copy after being woke up is better for cache reuse)
> 5) Doing a copy to user in softirq handler is not good, because of
> potential page faults :(
> 6) Maybe the NET_DMA thing is the only thing that might need prequeue.
If you want to make changes at least get your facts straight in your
changelog message :-)
The prequeue doesn't do copies in softirqs, it acquires the user side
socket lock and runs the packet input path directly from there,
copying into userspace along the way.
You are making claims about performance based upon your understanding
of the code and your understanding of typical workloads, rather than
from actual measurements. In scientific communities this would make
you a quack at best :-)
^ permalink raw reply
* Re: [PATCH] net: Add network namespace clone & unshare support.
From: Eric W. Biederman @ 2007-09-27 23:00 UTC (permalink / raw)
To: David Miller; +Cc: containers, netdev, akpm
In-Reply-To: <20070927.124552.69400277.davem@davemloft.net>
David Miller <davem@davemloft.net> writes:
> Eric, pick an appropriate new non-conflicting number NOW.
Done. My apologies for the confusion. I thought the
way Cedric and the IBM guys were testing someone would have
shouted at me long before now.
> This adds unnecessary extra work for Andrew Morton, which he has
> enough of already.
Cedric made a good point that we will have conflicts of code
being added to the same place in nsproxy.c and the like. So
I copied Andrew to give him a heads up.
I will gladly do what I can, to help. Working against 3 trees
development at the moment is a bit of a development challenge.
Eric
^ permalink raw reply
* Re: [RFC] Make TCP prequeue configurable
From: Stephen Hemminger @ 2007-09-27 22:44 UTC (permalink / raw)
To: Eric Dumazet; +Cc: Linux Netdev List
In-Reply-To: <46FC29E1.9010809@cosmosbay.com>
On Fri, 28 Sep 2007 00:08:33 +0200
Eric Dumazet <dada1@cosmosbay.com> wrote:
> Hi all
>
> I am sure some of you are going to tell me that prequeue is not
> all black :)
>
> Thank you
>
> [RFC] Make TCP prequeue configurable
>
> The TCP prequeue thing is based on old facts, and has drawbacks.
>
> 1) It adds 48 bytes per 'struct tcp_sock'
> 2) It adds some ugly code in hot paths
> 3) It has a small hit ratio on typical servers using many sockets
> 4) It may have a high hit ratio on UP machines running one process,
> where the prequeue adds litle gain. (In fact, letting the user
> doing the copy after being woke up is better for cache reuse)
> 5) Doing a copy to user in softirq handler is not good, because of
> potential page faults :(
> 6) Maybe the NET_DMA thing is the only thing that might need prequeue.
>
> This patch introduces a CONFIG_TCP_PREQUEUE, automatically selected if
> CONFIG_NET_DMA is on.
>
> Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
>
Rather than having a two more compile cases and test cases to deal
with. If you can prove it is useless, make a case for killing
it completely.
--
Stephen Hemminger <shemminger@linux-foundation.org>
^ permalink raw reply
* Re: [RFC] Zero-length write() does not generate a datagram on connected socket
From: Stephen Hemminger @ 2007-09-27 22:41 UTC (permalink / raw)
To: David Miller; +Cc: netdev
In-Reply-To: <20070927.135334.56943477.davem@davemloft.net>
On Thu, 27 Sep 2007 13:53:34 -0700 (PDT)
David Miller <davem@davemloft.net> wrote:
> From: Stephen Hemminger <shemminger@linux-foundation.org>
> Date: Mon, 24 Sep 2007 15:34:35 -0700
>
> > The bug http://bugzilla.kernel.org/show_bug.cgi?id=5731
> > describes an issue where write() can't be used to generate a zero-length
> > datagram (but send, and sendto do work).
> >
> > I think the following is needed:
> >
> > --- a/net/socket.c 2007-08-20 09:54:28.000000000 -0700
> > +++ b/net/socket.c 2007-09-24 15:31:25.000000000 -0700
> > @@ -777,8 +777,11 @@ static ssize_t sock_aio_write(struct kio
> > if (pos != 0)
> > return -ESPIPE;
> >
> > - if (iocb->ki_left == 0) /* Match SYS5 behaviour */
> > - return 0;
> > + if (unlikely(iocb->ki_left == 0)) {
> > + struct socket *sock = iocb->ki_filp->private_data;
> > + if (sock->type == SOCK_STREAM)
> > + return 0;
> > + }
> >
> > x = alloc_sock_iocb(iocb, &siocb);
> > if (!x)
>
> We should simply remove the check completely.
>
> There is no need to add special code for different types of protocols
> and sockets.
>
> As is hinted in the bugzilla, the exact same thing can happen with a
> suitably constructed sendto() or sendmsg() call. write() on a socket
> is a sendmsg() with a NULL msg_control and a single entry iovec, plain
> and simple.
>
> It's how BSD and many other systems behave, and I double checked
> Steven's Volume 2 just to make sure.
>
> So I'm going to check in the following to fix this bugzilla. There is
> a similarly ugly test for len==0 in sys_read() on sockets. If someone
> would do some research on the validity of that thing I'd really
> appreciate it :-)
Read of zero length should be a no-op for SOCK_STREAM but
for SOCK_DATAGRAM or SOCK_SEQPACKET it might be useful as a
remote wait for event.
--
Stephen Hemminger <shemminger@linux-foundation.org>
^ permalink raw reply
* [PATCH] netns: CLONE_NEWNET don't use the same clone flag as the pid namespace.
From: Eric W. Biederman @ 2007-09-27 22:40 UTC (permalink / raw)
To: David Miller; +Cc: netdev, Linux Containers
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
---
include/linux/sched.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/include/linux/sched.h b/include/linux/sched.h
index e10a0a8..d82c1f7 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -27,7 +27,7 @@
#define CLONE_NEWUTS 0x04000000 /* New utsname group? */
#define CLONE_NEWIPC 0x08000000 /* New ipcs */
#define CLONE_NEWUSER 0x10000000 /* New user namespace */
-#define CLONE_NEWNET 0x20000000 /* New network namespace */
+#define CLONE_NEWNET 0x40000000 /* New network namespace */
/*
* Scheduling policies
--
1.5.3.rc6.17.g1911
^ permalink raw reply related
* [PATCH] Bring comments in loopback.c uptodate.
From: Eric W. Biederman @ 2007-09-27 22:39 UTC (permalink / raw)
To: David Miller; +Cc: netdev
A hint as to why it is safe to use per cpu variables,
and note that we actually can have multiple instances
of the loopback device now.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
---
drivers/net/loopback.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/drivers/net/loopback.c b/drivers/net/loopback.c
index 2617320..cba5c76 100644
--- a/drivers/net/loopback.c
+++ b/drivers/net/loopback.c
@@ -154,6 +154,7 @@ static int loopback_xmit(struct sk_buff *skb, struct net_device *dev)
#endif
dev->last_rx = jiffies;
+ /* it's OK to use per_cpu_ptr() because BHs are off */
pcpu_lstats = netdev_priv(dev);
lb_stats = per_cpu_ptr(pcpu_lstats, smp_processor_id());
lb_stats->bytes += skb->len;
@@ -221,7 +222,8 @@ static void loopback_dev_free(struct net_device *dev)
}
/*
- * The loopback device is special. There is only one instance.
+ * The loopback device is special. There is only one instance
+ * per network namespace.
*/
static void loopback_setup(struct net_device *dev)
{
--
1.5.3.rc6.17.g1911
^ permalink raw reply related
* Re: Please pull 'upstream-davem' branch of wireless-2.6 (2007-09-27)
From: Jeff Garzik @ 2007-09-27 22:21 UTC (permalink / raw)
To: John W. Linville
Cc: davem-fT/PcQaiUtIeIZ0/mPfg9Q, netdev-u79uwXL29TY76Z2rM5mHXA,
linux-wireless-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20070927215324.GG7991-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
John W. Linville wrote:
> Dave & Jeff,
>
> Here are some more wireless stack and driver updates for 2.6.24. Please
> pull at your earliest convenience.
ACK (I presume davem will pull)
it looks like this includes my adm feedback, thanks!
^ permalink raw reply
* [RFC] Make TCP prequeue configurable
From: Eric Dumazet @ 2007-09-27 22:08 UTC (permalink / raw)
To: Linux Netdev List
[-- Attachment #1: Type: text/plain, Size: 863 bytes --]
Hi all
I am sure some of you are going to tell me that prequeue is not
all black :)
Thank you
[RFC] Make TCP prequeue configurable
The TCP prequeue thing is based on old facts, and has drawbacks.
1) It adds 48 bytes per 'struct tcp_sock'
2) It adds some ugly code in hot paths
3) It has a small hit ratio on typical servers using many sockets
4) It may have a high hit ratio on UP machines running one process,
where the prequeue adds litle gain. (In fact, letting the user
doing the copy after being woke up is better for cache reuse)
5) Doing a copy to user in softirq handler is not good, because of
potential page faults :(
6) Maybe the NET_DMA thing is the only thing that might need prequeue.
This patch introduces a CONFIG_TCP_PREQUEUE, automatically selected if
CONFIG_NET_DMA is on.
Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
[-- Attachment #2: net_prequeue.patch --]
[-- Type: text/plain, Size: 7426 bytes --]
diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index 8f670da..14e3f01 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -16,6 +16,7 @@ comment "DMA Clients"
config NET_DMA
bool "Network: TCP receive copy offload"
depends on DMA_ENGINE && NET
+ select TCP_PREQUEUE
default y
---help---
This enables the use of DMA engines in the network stack to
diff --git a/include/linux/tcp.h b/include/linux/tcp.h
index c6b9f92..844a05e 100644
--- a/include/linux/tcp.h
+++ b/include/linux/tcp.h
@@ -268,11 +268,13 @@ struct tcp_sock {
/* Data for direct copy to user */
struct {
+#ifdef CONFIG_TCP_PREQUEUE
struct sk_buff_head prequeue;
struct task_struct *task;
struct iovec *iov;
int memory;
int len;
+#endif
#ifdef CONFIG_NET_DMA
/* members for async copy */
struct dma_chan *dma_chan;
diff --git a/include/net/tcp.h b/include/net/tcp.h
index 185c7ec..3430d8e 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -835,10 +835,12 @@ static inline int tcp_checksum_complete(struct sk_buff *skb)
static inline void tcp_prequeue_init(struct tcp_sock *tp)
{
+#ifdef CONFIG_TCP_PREQUEUE
tp->ucopy.task = NULL;
tp->ucopy.len = 0;
tp->ucopy.memory = 0;
skb_queue_head_init(&tp->ucopy.prequeue);
+#endif
#ifdef CONFIG_NET_DMA
tp->ucopy.dma_chan = NULL;
tp->ucopy.wakeup = 0;
@@ -857,6 +859,7 @@ static inline void tcp_prequeue_init(struct tcp_sock *tp)
*/
static inline int tcp_prequeue(struct sock *sk, struct sk_buff *skb)
{
+#ifdef CONFIG_TCP_PREQUEUE
struct tcp_sock *tp = tcp_sk(sk);
if (!sysctl_tcp_low_latency && tp->ucopy.task) {
@@ -882,6 +885,7 @@ static inline int tcp_prequeue(struct sock *sk, struct sk_buff *skb)
}
return 1;
}
+#endif
return 0;
}
diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig
index fb79097..b770829 100644
--- a/net/ipv4/Kconfig
+++ b/net/ipv4/Kconfig
@@ -616,5 +616,20 @@ config TCP_MD5SIG
If unsure, say N.
+config TCP_PREQUEUE
+ bool "Enable TCP prequeue"
+ default n
+ ---help---
+ TCP PREQUEUE is an 'optimization' loosely based on the famous
+ "30 instruction TCP receive" Van Jacobson mail.
+ Van's trick is to deposit buffers into socket queue
+ on a device interrupt, to call tcp_recv function
+ on the receive process context and checksum and copy
+ the buffer to user space. smart...
+
+ Some people believe this 'optimization' is not really needed
+ but for some benchmarks. Also, taking potential pagefaults in
+ softirq handler seems a high price to pay.
+
source "net/ipv4/ipvs/Kconfig"
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 7e74011..8659533 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -994,6 +994,7 @@ void tcp_cleanup_rbuf(struct sock *sk, int copied)
tcp_send_ack(sk);
}
+#ifdef CONFIG_TCP_PREQUEUE
static void tcp_prequeue_process(struct sock *sk)
{
struct sk_buff *skb;
@@ -1011,6 +1012,7 @@ static void tcp_prequeue_process(struct sock *sk)
/* Clear memory counter. */
tp->ucopy.memory = 0;
}
+#endif
static inline struct sk_buff *tcp_recv_skb(struct sock *sk, u32 seq, u32 *off)
{
@@ -1251,6 +1253,7 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
tcp_cleanup_rbuf(sk, copied);
+#ifdef CONFIG_TCP_PREQUEUE
if (!sysctl_tcp_low_latency && tp->ucopy.task == user_recv) {
/* Install new reader */
if (!user_recv && !(flags & (MSG_TRUNC | MSG_PEEK))) {
@@ -1295,7 +1298,7 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
/* __ Set realtime policy in scheduler __ */
}
-
+#endif
if (copied >= target) {
/* Do not sleep, just process backlog. */
release_sock(sk);
@@ -1307,6 +1310,7 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
tp->ucopy.wakeup = 0;
#endif
+#ifdef CONFIG_TCP_PREQUEUE
if (user_recv) {
int chunk;
@@ -1330,6 +1334,7 @@ do_prequeue:
}
}
}
+#endif
if ((flags & MSG_PEEK) && peek_seq != tp->copied_seq) {
if (net_ratelimit())
printk(KERN_DEBUG "TCP(%s:%d): Application bug, race in MSG_PEEK.\n",
@@ -1430,6 +1435,7 @@ skip_copy:
break;
} while (len > 0);
+#ifdef CONFIG_TCP_PREQUEUE
if (user_recv) {
if (!skb_queue_empty(&tp->ucopy.prequeue)) {
int chunk;
@@ -1448,6 +1454,7 @@ skip_copy:
tp->ucopy.task = NULL;
tp->ucopy.len = 0;
}
+#endif
#ifdef CONFIG_NET_DMA
if (tp->ucopy.dma_chan) {
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index bbad2cd..85d3a5c 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -3467,6 +3467,7 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb)
goto out_of_window;
/* Ok. In sequence. In window. */
+#ifdef CONFIG_TCP_PREQUEUE
if (tp->ucopy.task == current &&
tp->copied_seq == tp->rcv_nxt && tp->ucopy.len &&
sock_owned_by_user(sk) && !tp->urg_data) {
@@ -3484,7 +3485,7 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb)
}
local_bh_disable();
}
-
+#endif
if (eaten <= 0) {
queue_and_out:
if (eaten < 0 &&
@@ -4078,6 +4079,7 @@ static void tcp_urg(struct sock *sk, struct sk_buff *skb, struct tcphdr *th)
}
}
+#ifdef CONFIG_TCP_PREQUEUE
static int tcp_copy_to_iovec(struct sock *sk, struct sk_buff *skb, int hlen)
{
struct tcp_sock *tp = tcp_sk(sk);
@@ -4100,6 +4102,7 @@ static int tcp_copy_to_iovec(struct sock *sk, struct sk_buff *skb, int hlen)
local_bh_disable();
return err;
}
+#endif
static __sum16 __tcp_checksum_complete_user(struct sock *sk, struct sk_buff *skb)
{
@@ -4279,8 +4282,9 @@ int tcp_rcv_established(struct sock *sk, struct sk_buff *skb,
}
} else {
int eaten = 0;
- int copied_early = 0;
+#ifdef CONFIG_TCP_PREQUEUE
+ int copied_early = 0;
if (tp->copied_seq == tp->rcv_nxt &&
len - tcp_header_len <= tp->ucopy.len) {
#ifdef CONFIG_NET_DMA
@@ -4315,6 +4319,7 @@ int tcp_rcv_established(struct sock *sk, struct sk_buff *skb,
if (copied_early)
tcp_cleanup_rbuf(sk, skb->len);
}
+#endif
if (!eaten) {
if (tcp_checksum_complete_user(sk, skb))
goto csum_error;
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index 9c94627..7ac5bc1 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -1916,8 +1916,10 @@ int tcp_v4_destroy_sock(struct sock *sk)
__skb_queue_purge(&sk->sk_async_wait_queue);
#endif
+#ifdef CONFIG_TCP_PREQUEUE
/* Clean prequeue, it must be empty really */
__skb_queue_purge(&tp->ucopy.prequeue);
+#endif
/* Clean up a referenced TCP bind bucket. */
if (inet_csk(sk)->icsk_bind_hash)
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
index e9b151b..5f3b38c 100644
--- a/net/ipv4/tcp_timer.c
+++ b/net/ipv4/tcp_timer.c
@@ -167,7 +167,9 @@ static int tcp_write_timeout(struct sock *sk)
static void tcp_delack_timer(unsigned long data)
{
struct sock *sk = (struct sock*)data;
+#ifdef CONFIG_TCP_PREQUEUE
struct tcp_sock *tp = tcp_sk(sk);
+#endif
struct inet_connection_sock *icsk = inet_csk(sk);
bh_lock_sock(sk);
@@ -190,6 +192,7 @@ static void tcp_delack_timer(unsigned long data)
}
icsk->icsk_ack.pending &= ~ICSK_ACK_TIMER;
+#ifdef CONFIG_TCP_PREQUEUE
if (!skb_queue_empty(&tp->ucopy.prequeue)) {
struct sk_buff *skb;
@@ -200,6 +203,7 @@ static void tcp_delack_timer(unsigned long data)
tp->ucopy.memory = 0;
}
+#endif
if (inet_csk_ack_scheduled(sk)) {
if (!icsk->icsk_ack.pingpong) {
^ permalink raw reply related
* Please pull 'upstream-davem' branch of wireless-2.6 (2007-09-27)
From: John W. Linville @ 2007-09-27 21:53 UTC (permalink / raw)
To: davem; +Cc: jeff, netdev, linux-wireless
[-- Attachment #1: Type: text/plain, Size: 6716 bytes --]
Dave & Jeff,
Here are some more wireless stack and driver updates for 2.6.24. Please
pull at your earliest convenience.
Thanks!
John
P.S. I preserved the point in net-2.6.24 from which upstream-davem is
based as 'master-davem'. Hth!
---
Individual patches available here:
http://www.kernel.org/pub/linux/kernel/people/linville/wireless-2.6/upstream-davem
---
The following changes since commit 08d37cb05abbdddcbf44b8266b4f6c2c9d8a3da7:
Andrew Morton (1):
[ATM] net/atm/lec.c: printk warning fix
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git upstream-davem
Ivo van Doorn (11):
rt2x00: Correct error in calculating rssi for link tuner
rt2x00: Make *_beacon_update static
rt2x00: Increase rt2x00usb_vendor_request timeout.
rt2x00: Correctly identify rt2561turbo
rt2x00: Reorganize rt2x00dev->flags
rt2x00: Add rt2x00dev->flags to debugfs
rt2x00: make rt2x00lib_stop_link_tuner() reentrant with link_tuner work
rt2x00: Stop link tuning when radio is down
rt2x00: Fix obvious typo in comment
rt2x00: Fix panic on rmmod with rfkill enabled
rt2x00: Release rt2x00 2.0.9
Johannes Berg (17):
mac80211: revamp interface and filter configuration
mac80211: validate VLAN interfaces better
mac80211: renumber and document the hardware flags
mac80211: document a lot more
wireless networking: move frame inline functions to generic header
mac80211: remove crypto algorithm typedef
mac80211: fix virtual interface locking
mac80211: fix interface initialisation and deinitialisation
mac80211: pass frames to monitor interfaces early
mac80211: consolidate decryption
mac80211: consolidate encryption
mac80211: remove ieee80211_wep_get_keyidx
mac80211: fix vlan bug
mac80211: fix TKIP IV update
mac80211: fix iff_promiscs, iff_allmultis race
mac80211: remove all prism2 ioctls
mac80211: remove generic IE for AP interfaces
John W. Linville (1):
iwlwifi: fix imcomplete conversion to print_mac API
Michael Buesch (2):
mac80211: bss_tim_clear must use ~ instead of !
rfkill: Fix documentation typos
Michael Wu (6):
adm8211: kill interrupt loop
adm8211: Improve writing of mac addrs to registers
adm8211: kill version printks
adm8211: Use revision from pci_dev
adm8211: Pass all TXed frames to tx_status_irqsafe
adm8211: Detect interface up/down in suspend/resume hooks correctly
Zhu Yi (15):
iwlwifi: replacing IPW with IWL in error messages
iwlwifi: workaournd REPLY_COMPRESSED_BA command in iwl_rx_handle
iwlwifi: Correction for sending beacon in config_ap
iwlwifi: clear station table in rxon unconditionally
iwlwifi: Fix typo in rate sacling algorithm
iwlwifi: fix add_station to avoid FW error
iwlwifi: removing unnecessary memset in 4965 rate scale
iwlwifi: add debugfs framework to rate scale
iwlwifi: add read rate scale table debugfs function
iwlwifi: limit printouts on hot path
iwlwifi: add supp_rates to rate scale sta private data
iwlwifi: rs_rate_scale_perform clean up
iwlwifi: set fixed rate through debugfs
iwlwifi: add debugfs rate scale stats
iwlwifi: Update iwlwifi version stamp to 1.1.17
drivers/net/wireless/adm8211.c | 313 +++++-----
drivers/net/wireless/adm8211.h | 5 +-
drivers/net/wireless/b43/b43.h | 15 +-
drivers/net/wireless/b43/main.c | 248 ++++----
drivers/net/wireless/b43legacy/b43legacy.h | 20 +-
drivers/net/wireless/b43legacy/main.c | 245 ++++----
drivers/net/wireless/iwlwifi/iwl-4965-rs.c | 252 +++++++--
drivers/net/wireless/iwlwifi/iwl-4965.c | 2 +-
drivers/net/wireless/iwlwifi/iwl-debug.h | 3 +
drivers/net/wireless/iwlwifi/iwl3945-base.c | 103 ++--
drivers/net/wireless/iwlwifi/iwl4965-base.c | 66 ++-
drivers/net/wireless/iwlwifi/iwlwifi.h | 2 +-
drivers/net/wireless/p54.h | 3 +-
drivers/net/wireless/p54common.c | 80 ++-
drivers/net/wireless/rt2x00/rt2400pci.c | 159 +++---
drivers/net/wireless/rt2x00/rt2500pci.c | 171 +++---
drivers/net/wireless/rt2x00/rt2500usb.c | 181 +++---
drivers/net/wireless/rt2x00/rt2x00.h | 70 +--
drivers/net/wireless/rt2x00/rt2x00config.c | 75 +--
drivers/net/wireless/rt2x00/rt2x00debug.c | 37 ++
drivers/net/wireless/rt2x00/rt2x00dev.c | 109 +++-
drivers/net/wireless/rt2x00/rt2x00lib.h | 4 +-
drivers/net/wireless/rt2x00/rt2x00mac.c | 155 ++----
drivers/net/wireless/rt2x00/rt2x00pci.c | 31 +-
drivers/net/wireless/rt2x00/rt2x00rfkill.c | 14 +-
drivers/net/wireless/rt2x00/rt2x00ring.h | 17 +-
drivers/net/wireless/rt2x00/rt2x00usb.c | 26 +-
drivers/net/wireless/rt2x00/rt2x00usb.h | 8 +-
drivers/net/wireless/rt2x00/rt61pci.c | 172 +++---
drivers/net/wireless/rt2x00/rt73usb.c | 179 +++---
drivers/net/wireless/rt2x00/rt73usb.h | 2 +-
drivers/net/wireless/rtl8187.h | 5 +-
drivers/net/wireless/rtl8187_dev.c | 129 ++++-
drivers/net/wireless/rtl818x.h | 1 +
include/linux/ieee80211.h | 61 ++
include/linux/rfkill.h | 6 +-
include/net/mac80211.h | 894 ++++++++++++++++-----------
net/mac80211/debugfs_netdev.c | 21 -
net/mac80211/hostapd_ioctl.h | 61 --
net/mac80211/ieee80211.c | 488 +++++++--------
net/mac80211/ieee80211_i.h | 46 +-
net/mac80211/ieee80211_iface.c | 77 ++-
net/mac80211/ieee80211_ioctl.c | 281 ---------
net/mac80211/ieee80211_key.h | 2 +-
net/mac80211/ieee80211_sta.c | 39 +-
net/mac80211/key.c | 2 +-
net/mac80211/rx.c | 414 ++++++++-----
net/mac80211/tkip.c | 16 +-
net/mac80211/tkip.h | 3 +-
net/mac80211/tx.c | 72 +--
net/mac80211/wep.c | 108 +++-
net/mac80211/wep.h | 14 +-
net/mac80211/wpa.c | 30 +-
net/mac80211/wpa.h | 8 +-
54 files changed, 2961 insertions(+), 2584 deletions(-)
delete mode 100644 net/mac80211/hostapd_ioctl.h
Omnibus patch attached as "upstream-davem.patch.bz2" due to size concerns.
--
John W. Linville
linville@tuxdriver.com
[-- Attachment #2: upstream-davem.patch.bz2 --]
[-- Type: application/x-bzip2, Size: 56590 bytes --]
^ permalink raw reply
* Re: ax88796: add 93cx6 eeprom support
From: Andrew Morton @ 2007-09-27 22:04 UTC (permalink / raw)
To: Magnus Damm
Cc: netdev, magnus.damm, lethal, jgarzik, ben-linux, Francois Romieu
In-Reply-To: <20070927105119.6515.35298.sendpatchset@clockwork.opensource.se>
On Thu, 27 Sep 2007 19:51:19 +0900
Magnus Damm <magnus.damm@gmail.com> wrote:
> ax88796: add 93cx6 eeprom support
>
> This patch hooks up the 93cx6 eeprom code to the ax88796 driver and modifies
> the ax88796 driver to read out the mac address from the eeprom. We need
> this for the ax88796 on certain SuperH boards. The pin configuration used
> to connect the eeprom to the ax88796 on these boards is the same as pointed
> out by the ax88796 datasheet, so we can probably reuse this code for multiple
> platforms in the future.
I'm showing a minor reject between this and Francois's git-r8169.patch.
***************
*** 21,33 ****
/*
Module: eeprom_93cx6
Abstract: EEPROM reader datastructures for 93cx6 chipsets.
- Supported chipsets: 93c46 & 93c66.
*/
/*
* EEPROM operation defines.
*/
#define PCI_EEPROM_WIDTH_93C46 6
#define PCI_EEPROM_WIDTH_93C66 8
#define PCI_EEPROM_WIDTH_OPCODE 3
#define PCI_EEPROM_WRITE_OPCODE 0x05
--- 21,34 ----
/*
Module: eeprom_93cx6
Abstract: EEPROM reader datastructures for 93cx6 chipsets.
+ Supported chipsets: 93c46/93c56/93c66.
*/
/*
* EEPROM operation defines.
*/
#define PCI_EEPROM_WIDTH_93C46 6
+ #define PCI_EEPROM_WIDTH_93C56 8
#define PCI_EEPROM_WIDTH_93C66 8
#define PCI_EEPROM_WIDTH_OPCODE 3
#define PCI_EEPROM_WRITE_OPCODE 0x05
You both made the same change to eeprom_93cx6.h. That all sounds good but
it would be comforting if you could review each other's work, please...
^ permalink raw reply
* Re: [PATCH] rfkill: Move rfkill_switch_all out of global header
From: David Miller @ 2007-09-27 21:57 UTC (permalink / raw)
To: ivdoorn; +Cc: dtor, netdev, linux-wireless
In-Reply-To: <200709280007.41676.IvDoorn@gmail.com>
From: Ivo van Doorn <ivdoorn@gmail.com>
Date: Fri, 28 Sep 2007 00:07:41 +0200
> rfkill_switch_all shouldn't be called by drivers directly,
> instead they should send a signal over the input device.
>
> To prevent confusion for driver developers, move the
> function into a rfkill private header.
>
> Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Applied to net-2.6.24, thanks.
^ permalink raw reply
* [PATCH] rfkill: Move rfkill_switch_all out of global header
From: Ivo van Doorn @ 2007-09-27 22:07 UTC (permalink / raw)
To: davem; +Cc: Dmitry Torokhov, netdev, linux-wireless
rfkill_switch_all shouldn't be called by drivers directly,
instead they should send a signal over the input device.
To prevent confusion for driver developers, move the
function into a rfkill private header.
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
---
diff --git a/include/linux/rfkill.h b/include/linux/rfkill.h
index f9a50da..67096b5 100644
--- a/include/linux/rfkill.h
+++ b/include/linux/rfkill.h
@@ -2,7 +2,7 @@
#define __RFKILL_H
/*
- * Copyright (C) 2006 Ivo van Doorn
+ * Copyright (C) 2006 - 2007 Ivo van Doorn
* Copyright (C) 2007 Dmitry Torokhov
*
* This program is free software; you can redistribute it and/or modify
@@ -84,6 +84,4 @@ void rfkill_free(struct rfkill *rfkill);
int rfkill_register(struct rfkill *rfkill);
void rfkill_unregister(struct rfkill *rfkill);
-void rfkill_switch_all(enum rfkill_type type, enum rfkill_state state);
-
#endif /* RFKILL_H */
diff --git a/net/rfkill/rfkill-input.c b/net/rfkill/rfkill-input.c
index 8e4516a..eaabf08 100644
--- a/net/rfkill/rfkill-input.c
+++ b/net/rfkill/rfkill-input.c
@@ -17,6 +17,8 @@
#include <linux/init.h>
#include <linux/rfkill.h>
+#include "rfkill-input.h"
+
MODULE_AUTHOR("Dmitry Torokhov <dtor@mail.ru>");
MODULE_DESCRIPTION("Input layer to RF switch connector");
MODULE_LICENSE("GPL");
diff --git a/net/rfkill/rfkill-input.h b/net/rfkill/rfkill-input.h
new file mode 100644
index 0000000..4dae500
--- /dev/null
+++ b/net/rfkill/rfkill-input.h
@@ -0,0 +1,16 @@
+/*
+ * Copyright (C) 2007 Ivo van Doorn
+ */
+
+/*
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published
+ * by the Free Software Foundation.
+ */
+
+#ifndef __RFKILL_INPUT_H
+#define __RFKILL_INPUT_H
+
+void rfkill_switch_all(enum rfkill_type type, enum rfkill_state state);
+
+#endif /* __RFKILL_INPUT_H */
diff --git a/net/rfkill/rfkill.c b/net/rfkill/rfkill.c
index 03ed7fd..00ee534 100644
--- a/net/rfkill/rfkill.c
+++ b/net/rfkill/rfkill.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006 Ivo van Doorn
+ * Copyright (C) 2006 - 2007 Ivo van Doorn
* Copyright (C) 2007 Dmitry Torokhov
*
* This program is free software; you can redistribute it and/or modify
^ permalink raw reply related
* Re: [PATCH 1/4] net: Dynamically allocate the per cpu counters for the loopback device.
From: David Miller @ 2007-09-27 20:56 UTC (permalink / raw)
To: ebiederm; +Cc: netdev, containers
In-Reply-To: <m1ps03hm8a.fsf@ebiederm.dsl.xmission.com>
From: ebiederm@xmission.com (Eric W. Biederman)
Date: Thu, 27 Sep 2007 14:44:37 -0600
> David Miller <davem@davemloft.net> writes:
>
> > From: ebiederm@xmission.com (Eric W. Biederman)
> > Date: Thu, 27 Sep 2007 01:48:00 -0600
> >
> >> I'm not doing get_cpu/put_cpu so does the comment make sense
> >> in relationship to per_cpu_ptr?
> >
> > It is possible. But someone would need to go check for
> > sure.
>
> Verified.
>
> hard_start_xmit is called inside of a
> rcu_read_lock_bh(),rcu_read_unlock_bh() pair. Which means
> the code will only run on one cpu.
>
> Therefore we do not need get_cpu/put_cpu.
>
> In addition per_cpu_ptr is valid. As it is just a lookup
> into a NR_CPUS sized array by smp_processor_id() to return
> the address of the specific cpu.
>
> The only difference between per_cpu_ptr and __get_cpu_var()
> are the implementation details between statically allocated
> and dynamically allocated per cpu state.
>
> So the comment is still valid, and still interesting it just
> should say per_cpu_ptr instead of __get_cpu_var.
>
> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
I've already removed the comment, so you'll have to give
me a patch that adds it back with the new content :-)
^ permalink raw reply
* Re: [RFC] Zero-length write() does not generate a datagram on connected socket
From: David Miller @ 2007-09-27 20:53 UTC (permalink / raw)
To: shemminger; +Cc: netdev
In-Reply-To: <20070924153435.14249225@freepuppy.rosehill>
From: Stephen Hemminger <shemminger@linux-foundation.org>
Date: Mon, 24 Sep 2007 15:34:35 -0700
> The bug http://bugzilla.kernel.org/show_bug.cgi?id=5731
> describes an issue where write() can't be used to generate a zero-length
> datagram (but send, and sendto do work).
>
> I think the following is needed:
>
> --- a/net/socket.c 2007-08-20 09:54:28.000000000 -0700
> +++ b/net/socket.c 2007-09-24 15:31:25.000000000 -0700
> @@ -777,8 +777,11 @@ static ssize_t sock_aio_write(struct kio
> if (pos != 0)
> return -ESPIPE;
>
> - if (iocb->ki_left == 0) /* Match SYS5 behaviour */
> - return 0;
> + if (unlikely(iocb->ki_left == 0)) {
> + struct socket *sock = iocb->ki_filp->private_data;
> + if (sock->type == SOCK_STREAM)
> + return 0;
> + }
>
> x = alloc_sock_iocb(iocb, &siocb);
> if (!x)
We should simply remove the check completely.
There is no need to add special code for different types of protocols
and sockets.
As is hinted in the bugzilla, the exact same thing can happen with a
suitably constructed sendto() or sendmsg() call. write() on a socket
is a sendmsg() with a NULL msg_control and a single entry iovec, plain
and simple.
It's how BSD and many other systems behave, and I double checked
Steven's Volume 2 just to make sure.
So I'm going to check in the following to fix this bugzilla. There is
a similarly ugly test for len==0 in sys_read() on sockets. If someone
would do some research on the validity of that thing I'd really
appreciate it :-)
diff --git a/net/socket.c b/net/socket.c
index 7d44453..b09eb90 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -777,9 +777,6 @@ static ssize_t sock_aio_write(struct kiocb *iocb, const struct iovec *iov,
if (pos != 0)
return -ESPIPE;
- if (iocb->ki_left == 0) /* Match SYS5 behaviour */
- return 0;
-
x = alloc_sock_iocb(iocb, &siocb);
if (!x)
return -ENOMEM;
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox