Re: [VLAN]: translate IF_OPER_DORMANT to netif_dormant_on()
Am Freitag, 7. Juli 2006 23:33 schrieb Stephen Hemminger: Not really. The flag code last major change was to do the dormant stuff that HDLC wanted. ... and where the maintainer doesn't seem to care to use it now that the infrastructure is there. Sigh. IMHO VLAN device's should mirror the state of the underlying physical device. I can't really follow the thread well. What is broken? The thread is still quite short and describes the problem, look at http://marc.theaimsgroup.com/?t=11520078264r=1w=2 Stefan - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: 2.6.17-mm3
Michal Piotrowski [EMAIL PROTECTED] wrote: It was moved, sorry. I fail to spot any relevant backtraces for skge or indeed any part of the networking stack. Ingo/Arjan, perhaps you guys can figure out what's wrong here. In future perhaps you should consider posting the dmesg to the list directly. Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmVHI~} [EMAIL PROTECTED] Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[AX.25] Use kzalloc
Replace kzalloc instead of kmalloc + memset. Signed-off-by: Ralf Baechle [EMAIL PROTECTED] net/ax25/af_ax25.c |3 +-- net/ax25/ax25_dev.c|4 +--- net/netrom/af_netrom.c |4 +--- net/rose/af_rose.c |3 +-- 4 files changed, 4 insertions(+), 10 deletions(-) Index: linux-net/net/ax25/ax25_dev.c === --- linux-net.orig/net/ax25/ax25_dev.c 2006-07-09 02:48:00.0 +0100 +++ linux-net/net/ax25/ax25_dev.c 2006-07-09 02:50:35.0 +0100 @@ -55,15 +55,13 @@ void ax25_dev_device_up(struct net_devic { ax25_dev *ax25_dev; - if ((ax25_dev = kmalloc(sizeof(*ax25_dev), GFP_ATOMIC)) == NULL) { + if ((ax25_dev = kzalloc(sizeof(*ax25_dev), GFP_ATOMIC)) == NULL) { printk(KERN_ERR AX.25: ax25_dev_device_up - out of memory\n); return; } ax25_unregister_sysctl(); - memset(ax25_dev, 0x00, sizeof(*ax25_dev)); - dev-ax25_ptr = ax25_dev; ax25_dev-dev = dev; dev_hold(dev); Index: linux-net/net/ax25/af_ax25.c === --- linux-net.orig/net/ax25/af_ax25.c 2006-07-09 02:48:01.0 +0100 +++ linux-net/net/ax25/af_ax25.c2006-07-09 02:50:35.0 +0100 @@ -486,10 +486,9 @@ ax25_cb *ax25_create_cb(void) { ax25_cb *ax25; - if ((ax25 = kmalloc(sizeof(*ax25), GFP_ATOMIC)) == NULL) + if ((ax25 = kzalloc(sizeof(*ax25), GFP_ATOMIC)) == NULL) return NULL; - memset(ax25, 0x00, sizeof(*ax25)); atomic_set(ax25-refcount, 1); skb_queue_head_init(ax25-write_queue); Index: linux-net/net/netrom/af_netrom.c === --- linux-net.orig/net/netrom/af_netrom.c 2006-07-09 02:48:01.0 +0100 +++ linux-net/net/netrom/af_netrom.c2006-07-09 02:50:35.0 +0100 @@ -1382,14 +1382,12 @@ static int __init nr_proto_init(void) return -1; } - dev_nr = kmalloc(nr_ndevs * sizeof(struct net_device *), GFP_KERNEL); + dev_nr = kzalloc(nr_ndevs * sizeof(struct net_device *), GFP_KERNEL); if (dev_nr == NULL) { printk(KERN_ERR NET/ROM: nr_proto_init - unable to allocate device array\n); return -1; } - memset(dev_nr, 0x00, nr_ndevs * sizeof(struct net_device *)); - for (i = 0; i nr_ndevs; i++) { char name[IFNAMSIZ]; struct net_device *dev; Index: linux-net/net/rose/af_rose.c === --- linux-net.orig/net/rose/af_rose.c 2006-07-09 02:48:01.0 +0100 +++ linux-net/net/rose/af_rose.c2006-07-09 02:50:35.0 +0100 @@ -1490,14 +1490,13 @@ static int __init rose_proto_init(void) rose_callsign = null_ax25_address; - dev_rose = kmalloc(rose_ndevs * sizeof(struct net_device *), GFP_KERNEL); + dev_rose = kzalloc(rose_ndevs * sizeof(struct net_device *), GFP_KERNEL); if (dev_rose == NULL) { printk(KERN_ERR ROSE: rose_proto_init - unable to allocate device structure\n); rc = -ENOMEM; goto out_proto_unregister; } - memset(dev_rose, 0x00, rose_ndevs * sizeof(struct net_device*)); for (i = 0; i rose_ndevs; i++) { struct net_device *dev; char name[IFNAMSIZ]; - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/3] [VLAN]: Update iif when receiving via VLAN device
On Sun, 2006-09-07 at 08:52 -0400, Jamal Hadi Salim wrote: Ok, didnt complete my thought there .. I dont like it, like i said, because it adds one more check in the first path. I was contemplating at some point even not doing the .. not doing the check for device up and just shove the packet at it. cheers, jamal PS:- warning on response still applies. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[RFC 0/4] kevent: generic kernel event processing subsystem.
Hello developers. I'm pleased to announce in linux-kernel@ mail list kevent subsystem which incorporates several AIO/kqueue design notes and ideas. Kevent can be used both for edge and level notifications. It supports socket notifications, network AIO (aio_send(), aio_recv() and aio_sendfile()), inode notifications (create/remove), generic poll()/select() notifications and timer notifications. Short implementation details. storage - each source of events (socket, inode, timer, aio) has structure kevent_storage incorporated into it, which is basically a list of registered interests for this source of events. user - it is abstraction which holds all requested kevents. It is similar to FreeBSD's kqueue. kevent - set of interests for given source of events or storage. Each kevent now is queued into three lists: * kevent_user-kevent_list - list of all registered kevents. * kevent_user-ready_list - list of ready kevents. * kevent_storage-list - list of all interests for given kevent_storage. When kevent is queued into storage, it will live there until removed by kevent_dequeue(). When some activity is noticed in given storage, it scans it's kevent_storage-list for kevents which match activity event. If kevents are found and they are not already in the kevent_user-ready_list, they will be added there at the end. It is possible wait until either requested number of kevents are ready or timeout elapsed or at least one kevent is ready, it's behaviour depends on parameters. Any event can be added/removed/modified by ioctl or one control syscall. It was tested against FreeBSD kqueue and Linux epoll and showed very noticeble performance win. Network asynchronous IO operations were tested against Linux synchronous socket code and showed noticeble performance win. I would like to hear some comments about the overall design, implementation and plans about it's usefullness for generic kernel. Kevent patches were discussed several times already (project was created quite long time ago), and there were present no major negative feedback except some high-level API changes. The latest discussion can be found at [4]. Design notes, patches, userspace application and perfomance tests can be found at project's homepages. 1. Kevent subsystem. http://tservice.net.ru/~s0mbre/old/?section=projectsitem=kevent 2. Network AIO. http://tservice.net.ru/~s0mbre/old/?section=projectsitem=naio 3. LWN article about kevent. http://lwn.net/Articles/172844/ 4. The latest discussion in netdev@ mail list. http://thread.gmane.org/gmane.linux.network/37595/focus=37673 Signed-off-by: Evgeniy Polyakov [EMAIL PROTECTED] -- Evgeniy Polyakov - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[RFC 3/4] kevent: fs/aio notifications.
This patch includes asynchronous propagation of file's data into VFS cache and aio_sendfile() implementation. Signed-off-by: Evgeniy Polyakov [EMAIL PROTECTED] diff --git a/fs/bio.c b/fs/bio.c index 6a0b9ad..a3ee530 100644 --- a/fs/bio.c +++ b/fs/bio.c @@ -119,7 +119,7 @@ void bio_free(struct bio *bio, struct bi /* * default destructor for a bio allocated with bio_alloc_bioset() */ -static void bio_fs_destructor(struct bio *bio) +void bio_fs_destructor(struct bio *bio) { bio_free(bio, fs_bio_set); } diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c index 04af9c4..295fce9 100644 --- a/fs/ext2/inode.c +++ b/fs/ext2/inode.c @@ -685,6 +685,7 @@ ext2_writepages(struct address_space *ma } struct address_space_operations ext2_aops = { + .get_block = ext2_get_block, .readpage = ext2_readpage, .readpages = ext2_readpages, .writepage = ext2_writepage, diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c index 2edd7ee..e44f5ad 100644 --- a/fs/ext3/inode.c +++ b/fs/ext3/inode.c @@ -1700,6 +1700,7 @@ static int ext3_journalled_set_page_dirt } static struct address_space_operations ext3_ordered_aops = { + .get_block = ext3_get_block, .readpage = ext3_readpage, .readpages = ext3_readpages, .writepage = ext3_ordered_writepage, diff --git a/fs/file_table.c b/fs/file_table.c index bcea199..8759479 100644 --- a/fs/file_table.c +++ b/fs/file_table.c @@ -113,6 +113,9 @@ struct file *get_empty_filp(void) if (security_file_alloc(f)) goto fail_sec; +#ifdef CONFIG_KEVENT_POLL + kevent_storage_init(f, f-st); +#endif tsk = current; INIT_LIST_HEAD(f-f_u.fu_list); atomic_set(f-f_count, 1); @@ -160,6 +163,9 @@ void fastcall __fput(struct file *file) might_sleep(); fsnotify_close(file); +#ifdef CONFIG_KEVENT_POLL + kevent_storage_fini(file-st); +#endif /* * The function eventpoll_release() should be the first called * in the file cleanup chain. diff --git a/fs/inode.c b/fs/inode.c index 3a2446a..0493935 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -22,6 +22,7 @@ #include linux/pagemap.h #include linux/cdev.h #include linux/bootmem.h #include linux/inotify.h +#include linux/kevent.h #include linux/mount.h /* @@ -166,12 +167,18 @@ #endif } memset(inode-u, 0, sizeof(inode-u)); inode-i_mapping = mapping; +#if defined CONFIG_KEVENT + kevent_storage_init(inode, inode-st); +#endif } return inode; } void destroy_inode(struct inode *inode) { +#if defined CONFIG_KEVENT_INODE || defined CONFIG_KEVENT_SOCKET + kevent_storage_fini(inode-st); +#endif BUG_ON(inode_has_buffers(inode)); security_inode_free(inode); if (inode-i_sb-s_op-destroy_inode) diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c index 9857e50..578 100644 --- a/fs/reiserfs/inode.c +++ b/fs/reiserfs/inode.c @@ -2997,6 +2997,7 @@ int reiserfs_setattr(struct dentry *dent } struct address_space_operations reiserfs_address_space_operations = { + .get_block = reiserfs_get_block, .writepage = reiserfs_writepage, .readpage = reiserfs_readpage, .readpages = reiserfs_readpages, diff --git a/include/linux/fs.h b/include/linux/fs.h index ecc8c2c..248f6a1 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -236,6 +236,9 @@ #include linux/mutex.h #include asm/atomic.h #include asm/semaphore.h #include asm/byteorder.h +#ifdef CONFIG_KEVENT +#include linux/kevent_storage.h +#endif struct hd_geometry; struct iovec; @@ -348,6 +351,8 @@ struct address_space; struct writeback_control; struct address_space_operations { + int (*get_block)(struct inode *inode, sector_t iblock, + struct buffer_head *bh_result, int create); int (*writepage)(struct page *page, struct writeback_control *wbc); int (*readpage)(struct file *, struct page *); void (*sync_page)(struct page *); @@ -526,6 +531,10 @@ #ifdef CONFIG_INOTIFY struct mutexinotify_mutex; /* protects the watches list */ #endif +#ifdef CONFIG_KEVENT_INODE + struct kevent_storage st; +#endif + unsigned long i_state; unsigned long dirtied_when; /* jiffies of first dirtying */ @@ -659,6 +668,9 @@ #ifdef CONFIG_EPOLL struct list_headf_ep_links; spinlock_t f_ep_lock; #endif /* #ifdef CONFIG_EPOLL */ +#ifdef CONFIG_KEVENT_POLL + struct kevent_storage st; +#endif struct address_space*f_mapping; }; extern spinlock_t files_lock; diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h index cc5dec7..0acc8db 100644 --- a/include/linux/fsnotify.h +++ b/include/linux/fsnotify.h @@ -15,6 +15,7 @@ #ifdef __KERNEL__ #include linux/dnotify.h #include
[RFC 1/4] kevent: core files.
This patch includes core kevent files: - userspace controlling - kernelspace interfaces - initialisation - notification state machines It might also inlclude parts from other subsystem (like network related syscalls so it is possible that it will not compile without other patches applied). Signed-off-by: Evgeniy Polyakov [EMAIL PROTECTED] diff --git a/arch/i386/kernel/syscall_table.S b/arch/i386/kernel/syscall_table.S index af56987..93e23ff 100644 --- a/arch/i386/kernel/syscall_table.S +++ b/arch/i386/kernel/syscall_table.S @@ -316,3 +316,7 @@ ENTRY(sys_call_table) .long sys_sync_file_range .long sys_tee /* 315 */ .long sys_vmsplice + .long sys_aio_recv + .long sys_aio_send + .long sys_aio_sendfile + .long sys_kevent_ctl diff --git a/arch/x86_64/ia32/ia32entry.S b/arch/x86_64/ia32/ia32entry.S index 5a92fed..534d516 100644 --- a/arch/x86_64/ia32/ia32entry.S +++ b/arch/x86_64/ia32/ia32entry.S @@ -696,4 +696,8 @@ #endif .quad sys_sync_file_range .quad sys_tee .quad compat_sys_vmsplice + .quad sys_aio_recv + .quad sys_aio_send + .quad sys_aio_sendfile + .quad sys_kevent_ctl ia32_syscall_end: diff --git a/include/asm-i386/unistd.h b/include/asm-i386/unistd.h index de2ccc1..52f8642 100644 --- a/include/asm-i386/unistd.h +++ b/include/asm-i386/unistd.h @@ -322,10 +322,14 @@ #define __NR_splice 313 #define __NR_sync_file_range 314 #define __NR_tee 315 #define __NR_vmsplice 316 +#define __NR_aio_recv 317 +#define __NR_aio_send 318 +#define __NR_aio_sendfile 319 +#define __NR_kevent_ctl320 #ifdef __KERNEL__ -#define NR_syscalls 317 +#define NR_syscalls 321 /* * user-visible error numbers are in the range -1 - -128: see diff --git a/include/asm-x86_64/socket.h b/include/asm-x86_64/socket.h index f2cdbea..1f31f86 100644 --- a/include/asm-x86_64/socket.h +++ b/include/asm-x86_64/socket.h @@ -49,4 +49,6 @@ #define SO_ACCEPTCONN 30 #define SO_PEERSEC 31 +#define SO_ASYNC_SOCK 34 + #endif /* _ASM_SOCKET_H */ diff --git a/include/asm-x86_64/unistd.h b/include/asm-x86_64/unistd.h index 0aff22b..352c34b 100644 --- a/include/asm-x86_64/unistd.h +++ b/include/asm-x86_64/unistd.h @@ -617,11 +617,18 @@ #define __NR_sync_file_range 277 __SYSCALL(__NR_sync_file_range, sys_sync_file_range) #define __NR_vmsplice 278 __SYSCALL(__NR_vmsplice, sys_vmsplice) +#define __NR_aio_recv 279 +__SYSCALL(__NR_aio_recv, sys_aio_recv) +#define __NR_aio_send 280 +__SYSCALL(__NR_aio_send, sys_aio_send) +#define __NR_aio_sendfile 281 +__SYSCALL(__NR_aio_sendfile, sys_aio_sendfile) +#define __NR_kevent_ctl282 +__SYSCALL(__NR_kevent_ctl, sys_kevent_ctl) #ifdef __KERNEL__ -#define __NR_syscall_max __NR_vmsplice - +#define __NR_syscall_max __NR_kevent_ctl #ifndef __NO_STUBS /* user-visible error numbers are in the range -1 - -4095 */ diff --git a/include/linux/kevent.h b/include/linux/kevent.h new file mode 100644 index 000..e94a7bf --- /dev/null +++ b/include/linux/kevent.h @@ -0,0 +1,263 @@ +/* + * kevent.h + * + * 2006 Copyright (c) Evgeniy Polyakov [EMAIL PROTECTED] + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __KEVENT_H +#define __KEVENT_H + +/* + * Kevent request flags. + */ + +#define KEVENT_REQ_ONESHOT 0x1 /* Process this event only once and then dequeue. */ + +/* + * Kevent return flags. + */ +#define KEVENT_RET_BROKEN 0x1 /* Kevent is broken. */ +#define KEVENT_RET_DONE0x2 /* Kevent processing was finished successfully. */ + +/* + * Kevent type set. + */ +#define KEVENT_SOCKET 0 +#define KEVENT_INODE 1 +#define KEVENT_TIMER 2 +#define KEVENT_POLL3 +#define KEVENT_NAIO4 +#define KEVENT_AIO 5 +#defineKEVENT_MAX 6 + +/* + * Per-type event sets. + * Number of per-event sets should be exactly as number of kevent types. + */ + +/* + * Timer events. + */ +#defineKEVENT_TIMER_FIRED 0x1 + +/* + * Socket/network asynchronous IO events. + */ +#define
[RFC 4/4] kevent: generic poll and timer notifications.
This patch includes generic poll/select and timer notifications. Signed-off-by: Evgeniy Polyakov [EMAIL PROTECTED] diff --git a/kernel/kevent/kevent_poll.c b/kernel/kevent/kevent_poll.c new file mode 100644 index 000..4950e7c --- /dev/null +++ b/kernel/kevent/kevent_poll.c @@ -0,0 +1,223 @@ +/* + * kevent_poll.c + * + * 2006 Copyright (c) Evgeniy Polyakov [EMAIL PROTECTED] + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include linux/kernel.h +#include linux/types.h +#include linux/list.h +#include linux/slab.h +#include linux/spinlock.h +#include linux/timer.h +#include linux/file.h +#include linux/kevent.h +#include linux/poll.h +#include linux/fs.h + +static kmem_cache_t *kevent_poll_container_cache; +static kmem_cache_t *kevent_poll_priv_cache; + +struct kevent_poll_ctl +{ + struct poll_table_structpt; + struct kevent *k; +}; + +struct kevent_poll_wait_container +{ + struct list_headcontainer_entry; + wait_queue_head_t *whead; + wait_queue_twait; + struct kevent *k; +}; + +struct kevent_poll_private +{ + struct list_headcontainer_list; + spinlock_t container_lock; +}; + +static int kevent_poll_enqueue(struct kevent *k); +static int kevent_poll_dequeue(struct kevent *k); +static int kevent_poll_callback(struct kevent *k); + +static int kevent_poll_wait_callback(wait_queue_t *wait, + unsigned mode, int sync, void *key) +{ + struct kevent_poll_wait_container *cont = + container_of(wait, struct kevent_poll_wait_container, wait); + struct kevent *k = cont-k; + struct file *file = k-st-origin; + unsigned long flags; + u32 revents, event; + + revents = file-f_op-poll(file, NULL); + spin_lock_irqsave(k-lock, flags); + event = k-event.event; + spin_unlock_irqrestore(k-lock, flags); + + kevent_storage_ready(k-st, NULL, revents); + + return 0; +} + +static void kevent_poll_qproc(struct file *file, wait_queue_head_t *whead, + struct poll_table_struct *poll_table) +{ + struct kevent *k = + container_of(poll_table, struct kevent_poll_ctl, pt)-k; + struct kevent_poll_private *priv = k-priv; + struct kevent_poll_wait_container *cont; + unsigned long flags; + + cont = kmem_cache_alloc(kevent_poll_container_cache, SLAB_KERNEL); + if (!cont) { + kevent_break(k); + return; + } + + cont-k = k; + init_waitqueue_func_entry(cont-wait, kevent_poll_wait_callback); + cont-whead = whead; + + spin_lock_irqsave(priv-container_lock, flags); + list_add_tail(cont-container_entry, priv-container_list); + spin_unlock_irqrestore(priv-container_lock, flags); + + add_wait_queue(whead, cont-wait); +} + +static int kevent_poll_enqueue(struct kevent *k) +{ + struct file *file; + int err, ready = 0; + unsigned int revents; + struct kevent_poll_ctl ctl; + struct kevent_poll_private *priv; + + file = fget(k-event.id.raw[0]); + if (!file) + return -ENODEV; + + err = -EINVAL; + if (!file-f_op || !file-f_op-poll) + goto err_out_fput; + + err = -ENOMEM; + priv = kmem_cache_alloc(kevent_poll_priv_cache, SLAB_KERNEL); + if (!priv) + goto err_out_fput; + + spin_lock_init(priv-container_lock); + INIT_LIST_HEAD(priv-container_list); + + k-priv = priv; + + ctl.k = k; + init_poll_funcptr(ctl.pt, kevent_poll_qproc); + + err = kevent_storage_enqueue(file-st, k); + if (err) + goto err_out_free; + + revents = file-f_op-poll(file, ctl.pt); + if (revents k-event.event) { + ready = 1; + kevent_poll_dequeue(k); + } + + return ready; + +err_out_free: + kmem_cache_free(kevent_poll_priv_cache, priv); +err_out_fput: + fput(file); + return err; +} + +static int kevent_poll_dequeue(struct kevent *k) +{ + struct file *file = k-st-origin; + struct kevent_poll_private *priv = k-priv; + struct kevent_poll_wait_container *w, *n; + unsigned long flags; + + kevent_storage_dequeue(k-st, k); + + spin_lock_irqsave(priv-container_lock, flags); +
[RFC 2/4] kevent: network notifications.
This patchset includes socket notifications and network asynchronous IO. Signed-off-by: Evgeniy Polyakov [EMAIL PROTECTED] diff --git a/include/asm-i386/socket.h b/include/asm-i386/socket.h index 802ae76..3473f5c 100644 --- a/include/asm-i386/socket.h +++ b/include/asm-i386/socket.h @@ -49,4 +49,6 @@ #define SO_ACCEPTCONN 30 #define SO_PEERSEC 31 +#define SO_ASYNC_SOCK 34 + #endif /* _ASM_SOCKET_H */ diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 66f8819..ea914c3 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -1269,6 +1269,8 @@ extern struct sk_buff *skb_recv_datagram int noblock, int *err); extern unsigned intdatagram_poll(struct file *file, struct socket *sock, struct poll_table_struct *wait); +extern intskb_copy_datagram(const struct sk_buff *from, +int offset, void *dst, int size); extern intskb_copy_datagram_iovec(const struct sk_buff *from, int offset, struct iovec *to, int size); diff --git a/include/net/sock.h b/include/net/sock.h index d10dfec..7a2bee3 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -47,6 +47,7 @@ #include linux/module.h #include linux/netdevice.h #include linux/skbuff.h /* struct sk_buff */ #include linux/security.h +#include linux/kevent.h #include linux/filter.h @@ -386,6 +387,8 @@ enum sock_flags { SOCK_NO_LARGESEND, /* whether to sent large segments or not */ SOCK_LOCALROUTE, /* route locally only, %SO_DONTROUTE setting */ SOCK_QUEUE_SHRUNK, /* write queue has been shrunk recently */ + SOCK_ASYNC, + SOCK_ASYNC_INUSE, }; static inline void sock_copy_flags(struct sock *nsk, struct sock *osk) @@ -445,6 +448,21 @@ static inline int sk_stream_memory_free( extern void sk_stream_rfree(struct sk_buff *skb); +struct socket_alloc { + struct socket socket; + struct inode vfs_inode; +}; + +static inline struct socket *SOCKET_I(struct inode *inode) +{ + return container_of(inode, struct socket_alloc, vfs_inode)-socket; +} + +static inline struct inode *SOCK_INODE(struct socket *socket) +{ + return container_of(socket, struct socket_alloc, socket)-vfs_inode; +} + static inline void sk_stream_set_owner_r(struct sk_buff *skb, struct sock *sk) { skb-sk = sk; @@ -472,6 +490,7 @@ static inline void sk_add_backlog(struct sk-sk_backlog.tail = skb; } skb-next = NULL; + kevent_socket_notify(sk, KEVENT_SOCKET_RECV); } #define sk_wait_event(__sk, __timeo, __condition) \ @@ -543,6 +562,12 @@ struct proto { int (*backlog_rcv) (struct sock *sk, struct sk_buff *skb); + + int (*async_recv) (struct sock *sk, + void *dst, size_t size); + int (*async_send) (struct sock *sk, + struct page **pages, unsigned int poffset, + size_t size); /* Keeping track of sk's, looking them up, and port selection methods. */ void(*hash)(struct sock *sk); @@ -674,21 +699,6 @@ static inline struct kiocb *siocb_to_kio return si-kiocb; } -struct socket_alloc { - struct socket socket; - struct inode vfs_inode; -}; - -static inline struct socket *SOCKET_I(struct inode *inode) -{ - return container_of(inode, struct socket_alloc, vfs_inode)-socket; -} - -static inline struct inode *SOCK_INODE(struct socket *socket) -{ - return container_of(socket, struct socket_alloc, socket)-vfs_inode; -} - extern void __sk_stream_mem_reclaim(struct sock *sk); extern int sk_stream_mem_schedule(struct sock *sk, int size, int kind); diff --git a/include/net/tcp.h b/include/net/tcp.h index 5f4eb5c..820cd5a 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -364,6 +364,8 @@ extern int compat_tcp_setsockopt(struc int level, int optname, char __user *optval, int optlen); extern voidtcp_set_keepalive(struct sock *sk, int val); +extern int tcp_async_recv(struct sock *sk, void *dst, size_t size); +extern int tcp_async_send(struct sock *sk, struct page **pages, unsigned int poffset, size_t size); extern int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, size_t len, int nonblock, @@ -857,6 +859,7 @@ static inline int tcp_prequeue(struct so
Re: [PATCH 2/3] [VLAN]: Update iif when receiving via VLAN device
* Jamal Hadi Salim [EMAIL PROTECTED] 2006-07-09 08:52 On Sun, 2006-09-07 at 01:46 +0200, Thomas Graf wrote: * Jamal Hadi Salim [EMAIL PROTECTED] 2006-07-08 10:14 [..] There is no easy way to detect such a deadlock. I think it reduces to the same case as eth0-eth0, i.e: It's very simple. Just use the same method and add a flag if a mirred is currently in use as Herbert did to qdisc_run(). But that would make it more complex in the sense it would require a lot more code. Another simpler approach is to check for recursion right in It's very interesting that you change from there is no easy way to another simpler approach... in just one posting :-) dev_queue_xmit() - but i did not dare to do that because i could not justify it for any other code other than loops created by the action code. i.e something along the lines of: if (q-enqueue) { if (!spin_trylock(dev-queue_lock)) { printk(yikes recursed device %s\n,dev-name); goto tx_recursion_detected; } That's not gonna work, dev-queue_lock may be held legimitately by someone else than an underlying dev_queue_xmit() call. [BTW, notice how i used code to describe my view above ;-] I'm very proud of you. Again, I was hoping that Herbert's stuff may change this view (and therefore give it more legitimacy) - but if the above can be accepted then we can forget touching mirred. You need this: if (test_and_set_bit(__LINK_STATE_ENQUEUEING, dev-state)) goto tx_recursion_detected; spin_lock(queue_lock); enqueue(...) qdisc_run() spin_unlock(queue_lock); clear_bit(__LINK_TATE_ENQUEUEING, dev-state); Unfortunately we'd still need __LINK_STATE_QDISC_RUNNING due to net_tx_action(). No Thomas - this is a valid check. As valid as mirred checking if device is up first. I dont like it, like i said, because it adds one more check in the first path. I was contemplating at some point even not doing the I'm not going to argue about this. By mirred deadlock i think you mean the deadlock that happens in dev_queue_xmit()? I meant the deadlock within mirred but the deadlock on queue_lock is happening first anyway. What is still not clear above? Frankly, I have no idea which deadlocks are intentional, what ideas you have about ingress-egress, etc because it is not documented. The list is very long. I'm not going to waste time trying to work out a patch that will then not suit the ideas in your mind and on your notes. You're maintaing this code, no? - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/3] [VLAN]: Update iif when receiving via VLAN device
On Sun, 2006-09-07 at 15:33 +0200, Thomas Graf wrote: * Jamal Hadi Salim [EMAIL PROTECTED] 2006-07-09 08:52 [..] Another simpler approach is to check for recursion right in It's very interesting that you change from there is no easy way to another simpler approach... in just one posting :-) I said there was no easy way of detecting - which is different from preventing. Both approaches i showed were things i used (as far back as last year) but did not find palatable to submit. Hopefully we dont go into a tangent on this. if (q-enqueue) { if (!spin_trylock(dev-queue_lock)) { printk(yikes recursed device %s\n,dev-name); goto tx_recursion_detected; } That's not gonna work, dev-queue_lock may be held legimitately by someone else than an underlying dev_queue_xmit() call. If there is a legitimate reason then it wont work. I cant think of one though. [BTW, notice how i used code to describe my view above ;-] I'm very proud of you. Thank you thank you Again, I was hoping that Herbert's stuff may change this view (and therefore give it more legitimacy) - but if the above can be accepted then we can forget touching mirred. You need this: if (test_and_set_bit(__LINK_STATE_ENQUEUEING, dev-state)) goto tx_recursion_detected; spin_lock(queue_lock); enqueue(...) qdisc_run() spin_unlock(queue_lock); clear_bit(__LINK_TATE_ENQUEUEING, dev-state); Unfortunately we'd still need __LINK_STATE_QDISC_RUNNING due to net_tx_action(). This is also another approach that would work. If you think its simpler go ahead and shoot a patch. By mirred deadlock i think you mean the deadlock that happens in dev_queue_xmit()? I meant the deadlock within mirred but the deadlock on queue_lock is happening first anyway. if you can stop things at the queue you wont have to worry about mirred. What is still not clear above? Frankly, I have no idea which deadlocks are intentional, what ideas you have about ingress-egress, etc because it is not documented. The list is very long. Ask one question at a time and i will answer. Some of the things we discussed have no place to be commented-on in the code. But i think what is obvious is: A-*-A is a no-no. And in some cases it is fine to let the user just fsck themselves because then they will understand it is a bad idea [1] when shit happens. OTOH, if there was a KISS way of doing it (as in the ifb case, why not). I'm not going to waste time trying to work out a patch that will then not suit the ideas in your mind and on your notes. You're maintaing this code, no? Yes, of course otherwise i wouldnt bother to comment on any patches. cheers, jamal [1] there was a long discussion a few years back when i was still in lkml on someone trying to redirect (i think) /dev/null - /dev/mem (dont hold me accountable if those are not the right devices, just absorb the moral of this instead). The consensus was it would be very difficult to do without making a lot of changes and if someone wishes to do that they deserved what they are getting. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/3] [VLAN]: Update iif when receiving via VLAN device
* Jamal Hadi Salim [EMAIL PROTECTED] 2006-07-09 10:03 On Sun, 2006-09-07 at 15:33 +0200, Thomas Graf wrote: That's not gonna work, dev-queue_lock may be held legimitately by someone else than an underlying dev_queue_xmit() call. If there is a legitimate reason then it wont work. I cant think of one though. See sch_generic.c, it's documented. A simple grep on queue_lock would have told you the same. This is also another approach that would work. If you think its simpler go ahead and shoot a patch. It's not simpler, it's correct, while your patch is wrong. A-*-A is a no-no. And in some cases it is fine to let the user just fsck themselves because then they will understand it is a bad idea [1] when shit happens. OTOH, if there was a KISS way of doing it (as in the ifb case, why not). I remind you that you started mentioning this A-*-A case while talking about tx deadlocks that were supposed to be prevented with the !from check or something along that lines. I can't really tell because you explain it differently in every posting. Yes, of course otherwise i wouldnt bother to comment on any patches. So maintain the code and fix your bugs. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[PKT_SCHED]: act_api: Fix module leak while flushing actions
Module reference needs to be given back if message header construction fails. Signed-off-by: Thomas Graf [EMAIL PROTECTED] Index: net-2.6.git/net/sched/act_api.c === --- net-2.6.git.orig/net/sched/act_api.c +++ net-2.6.git/net/sched/act_api.c @@ -602,8 +602,8 @@ static int tca_action_flush(struct rtatt return err; rtattr_failure: - module_put(a-ops-owner); nlmsg_failure: + module_put(a-ops-owner); err_out: kfree_skb(skb); kfree(a); - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] airo: make debug-like messages printed by airo_print_dbg()
On Sat, 2006-07-08 at 17:59 +0200, Robert Schulze wrote: I don't think that messages like airo(eth1): cmd= 111 airo(eth1): status= 7f11 airo(eth1): Rsp0= 2 airo(eth1): Rsp1= 0 airo(eth1): Rsp2= 0 are interesting to normal users, so switch them from airo_print_err() to airo_print_dbg(). Furthermore, remove implicit linefeed in those messages, as they are handled by airo_print(). +1. If you wanted to get a bit more creative, maybe collapse all of these onto a single line to print something like: airo(eth1): Command didn't complete. cmd:0x111 status:0x7f11 (Rsp: 2, 0, 0) This message will only happen if the card hangs up and stops responding to commands anyway, so we don't necessarily care about making the message decipherable to anyone other than developers. Dan with kind regards, Robert Schulze --- linux-2.6.17.1/drivers/net/wireless/airo.c.orig 2006-07-08 14:02:12.0 +0200 +++ linux-2.6.17.1/drivers/net/wireless/airo.c2006-07-08 17:36:08.0 +0200 @@ -3897,11 +3897,11 @@ static u16 issuecommand(struct airo_info pRsp-rsp1 = IN4500(ai, RESP1); pRsp-rsp2 = IN4500(ai, RESP2); if ((pRsp-status 0xff00)!=0 pCmd-cmd != CMD_SOFTRESET) { - airo_print_err(ai-dev-name, cmd= %x\n, pCmd-cmd); - airo_print_err(ai-dev-name, status= %x\n, pRsp-status); - airo_print_err(ai-dev-name, Rsp0= %x\n, pRsp-rsp0); - airo_print_err(ai-dev-name, Rsp1= %x\n, pRsp-rsp1); - airo_print_err(ai-dev-name, Rsp2= %x\n, pRsp-rsp2); + airo_print_dbg(ai-dev-name, cmd= %x, pCmd-cmd); + airo_print_dbg(ai-dev-name, status= %x, pRsp-status); + airo_print_dbg(ai-dev-name, Rsp0= %x, pRsp-rsp0); + airo_print_dbg(ai-dev-name, Rsp1= %x, pRsp-rsp1); + airo_print_dbg(ai-dev-name, Rsp2= %x, pRsp-rsp2); } // clear stuck command busy if necessary - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [RFC 1/4] kevent: core files.
On 7/9/06, Evgeniy Polyakov [EMAIL PROTECTED] wrote: +struct kevent *kevent_alloc(gfp_t mask) +{ + struct kevent *k; + + if (kevent_cache) + k = kmem_cache_alloc(kevent_cache, mask); + else + k = kzalloc(sizeof(struct kevent), mask); + + return k; +} What's this for? Why would kevent_cache be NULL? Note that you can use kmem_cache_zalloc() for fixed size allocations that need to be zeroed. On 7/9/06, Evgeniy Polyakov [EMAIL PROTECTED] wrote: + +void kevent_free(struct kevent *k) +{ + memset(k, 0xab, sizeof(struct kevent)); Why is slab poisoning not sufficient? + if (kevent_cache) + kmem_cache_free(kevent_cache, k); + else + kfree(k); +} - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/3] [VLAN]: Update iif when receiving via VLAN device
On Sun, 2006-09-07 at 16:19 +0200, Thomas Graf wrote: * Jamal Hadi Salim [EMAIL PROTECTED] 2006-07-09 10:03 On Sun, 2006-09-07 at 15:33 +0200, Thomas Graf wrote: That's not gonna work, dev-queue_lock may be held legimitately by someone else than an underlying dev_queue_xmit() call. If there is a legitimate reason then it wont work. I cant think of one though. See sch_generic.c, it's documented. A simple grep on queue_lock would have told you the same. If you mean that the device will also try to grab the qlock there, then that is fine still for the serialization. It all starts at dev_queue_xmit. This is also another approach that would work. If you think its simpler go ahead and shoot a patch. It's not simpler, it's correct, while your patch is wrong. Ok, calm down, will you? Man, you make it very hard to follow Daves Tibetan approach. Let me tell you exactly how i feel about your approach: It is unnecessarily complex. The approach i posted is not only fine, it works with only 4-5 lines of code; i have numerous tests against it over a long period of time. I was trying to be polite and follow Daves advice not to insist it has to be done my way - it almost seems impossible with you trying to nitpick on little unimportant details. A-*-A is a no-no. And in some cases it is fine to let the user just fsck themselves because then they will understand it is a bad idea [1] when shit happens. OTOH, if there was a KISS way of doing it (as in the ifb case, why not). I remind you that you started mentioning this A-*-A case while talking about tx deadlocks that were supposed to be prevented with the !from check or something along that lines. I can't really tell because you explain it differently in every posting. Because you are looking for preciseness at the micro/code level and i am trying to explain at the conceptual/macro level (I have to adjust to your mode but it is hard for me because i dont think at our level that matters). When i sense you didnt understand me the last time, I try to explain it better. The deadlock happens on transmit. If you want to be precise, it happens when dev_queue_xmit is invoked. If you want more preciseness, when the queue lock is contended. If you want more preciseness, the code sample that i showed you should help illustrate it. Yes, of course otherwise i wouldnt bother to comment on any patches. So maintain the code and fix your bugs. Ok, I dont think this is gonna work - I may have to give up on getting any resolution. Heres the suggestion again and you can still shoot a patch: - If we can avoid doing anything at mirred that is the most preferable approach. i.e get the change for free. In other words if it complicates things it is not worth it. Someone redirecting eth0 to eth0 on egress deserves whats happening to them. - Try it against Herberts patch. It may resolve something or may require an adjustment to Herberts patch so we can kill two birds with one stone i.e get it for free. I dont know. I guess i shouldnt say i dont know it is not precise, my point is you may find things when you attempt the change. The patch is in Daves 2.6.18 tree. - Iam fine with your suggestion to use a flag. The problem is not which scheme you use - it is whether the change at such a crucial path in the stack would be acceptable to other people. Anyways, I am off. cheers, jamal - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [RFC 1/4] kevent: core files.
On Sun, Jul 09, 2006 at 05:59:42PM +0300, Pekka Enberg ([EMAIL PROTECTED]) wrote: On 7/9/06, Evgeniy Polyakov [EMAIL PROTECTED] wrote: +struct kevent *kevent_alloc(gfp_t mask) +{ + struct kevent *k; + + if (kevent_cache) + k = kmem_cache_alloc(kevent_cache, mask); + else + k = kzalloc(sizeof(struct kevent), mask); + + return k; +} What's this for? Why would kevent_cache be NULL? Note that you can use kmem_cache_zalloc() for fixed size allocations that need to be zeroed. It can work without cache at all, i.e. if cache creation fails. Well, it can be removed of course, since it does not hurt anything. On 7/9/06, Evgeniy Polyakov [EMAIL PROTECTED] wrote: + +void kevent_free(struct kevent *k) +{ + memset(k, 0xab, sizeof(struct kevent)); Why is slab poisoning not sufficient? Since that pointer is always known to be poisoned no matter if kernel debugging option is turned on or off. -- Evgeniy Polyakov - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: skge error; hangs w/ hardware memory hole
Andi Kleen wrote: Is that a board with VIA chipset? Yep. VIA doesn't seem to support PCI accesses with addresses 4GB and they also don't have a working GART IOMMU. It will likely work with iommu=force I'll give this a try I do get a line in dmesg which reads: PCI-DMA: Disabling IOMMU. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH RFC]rfkill - Hardware button support for Wireless cards
Hi, I have been quite busy lately, hence the reason for this late continuance of the Hardware button support for Wireless cards discussion. I have CC'ed the people who discussed this in earlier threads. With the suggestions made by Vojtech Pavlik I have created the rfkill driver, for which I would like to know if this is the acceptable approach. This rfkill driver looks a bit like the previous version I had send, but this version does pay attention if the input device has been opened and if an event should be send to userspace in that case. I was however unsure about where the KEY_RFKILL should be added in linux/input.h. I again placed this driver in drivers/input/misc but perhaps this should go into drivers/net instead? I hope I am on the right track. :) Signed-off-by Ivo van Doorn [EMAIL PROTECTED] --- diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig index 4bad588..837021a 100644 --- a/drivers/input/misc/Kconfig +++ b/drivers/input/misc/Kconfig @@ -79,4 +79,19 @@ config HP_SDC_RTC Say Y here if you want to support the built-in real time clock of the HP SDC controller. +config RFKILL + tristate RF button support + help + If you say yes here, the rfkill driver will be build + which allowed network devices to register their hardware + RF button which controls the radio state. This driver + will then create an input device for it. + + When the input device is not used, the rfkill driver + will make sure that when the RF button is pressed the radio + is enabled or disabled accordingly. When the input device + has been opened by the user this radio control will be left + to the user, and rfkill will only send the RF button status + change to userspace. + endif diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile index 415c491..e788a1b 100644 --- a/drivers/input/misc/Makefile +++ b/drivers/input/misc/Makefile @@ -11,3 +11,4 @@ obj-$(CONFIG_INPUT_UINPUT)+= uinput.o obj-$(CONFIG_INPUT_WISTRON_BTNS)+= wistron_btns.o obj-$(CONFIG_HP_SDC_RTC)+= hp_sdc_rtc.o obj-$(CONFIG_INPUT_IXP4XX_BEEPER) += ixp4xx-beeper.o +obj-$(CONFIG_RFKILL) += rfkill.o diff --git a/drivers/input/misc/rfkill.c b/drivers/input/misc/rfkill.c new file mode 100644 index 000..da576e5 --- /dev/null +++ b/drivers/input/misc/rfkill.c @@ -0,0 +1,209 @@ +/* + Copyright (C) 2006 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 as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the + Free Software Foundation, Inc., + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include linux/kernel.h +#include linux/module.h +#include linux/init.h +#include linux/timer.h +#include linux/rfkill.h + +#include asm/atomic.h + +MODULE_AUTHOR(Ivo van Doorn [EMAIL PROTECTED]); +MODULE_VERSION(1.0); +MODULE_DESCRIPTION(RF button support); +MODULE_LICENSE(GPL); + +/* + * List of all registered buttons. + */ +static struct list_head rfkill_list; +static spinlock_t rfkill_list_lock; + +/* + * Polling timer, poll_delay and use count. + */ +static struct timer_list poll_timer; +static atomic_t poll_required; + +static void rfkill_toggle_radio(int new_status) +{ + struct list_head *entry; + struct rfkill *rfkill; + + /* +* Go through the list of all radio's to toggle the radio state. +*/ + list_for_each(entry, rfkill_list) { + rfkill = list_entry(entry, struct rfkill, entry); + + rfkill-current_status = new_status; + + /* + * If the input_device has been opened + * all radio events should be send to user space. + */ + if (rfkill-input_dev-users) { + input_report_key(rfkill-input_dev, + KEY_RFKILL, new_status); + input_sync(rfkill-input_dev); + } + + /* + * If the hardware does not toggle the radio status automaticly, + * we should take care of it. + */ + if (new_status rfkill-enable_radio) + rfkill-enable_radio(rfkill-data); + else if (!new_status rfkill-disable_radio) +
Re: [PATCH 2/3] [VLAN]: Update iif when receiving via VLAN device
* Jamal Hadi Salim [EMAIL PROTECTED] 2006-07-09 11:00 If you mean that the device will also try to grab the qlock there, then that is fine still for the serialization. It all starts at dev_queue_xmit. Look at where dev-queue_lock is taken, whenever a qdisc or filter is added, modified or deleted the lock is taken. Using your approach packets get dropped while such an operation is taking place. Your approach is wrong. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: rtl8139: NETDEV WATCHDOG: eth0: transmit timed out
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Thomas Hellström wrote: Strange. I've also seen the i915 sending false interrupts on its own line, though. Here's the interrupt table with i915 loaded: ~$ cat /proc/interrupts CPU0 0: 401031 XT-PIC timer 1: 3681 XT-PIC i8042 2: 0 XT-PIC cascade 8: 0 XT-PIC rtc 9: 0 XT-PIC acpi 10:997 XT-PIC yenta, Intel 82801CA-ICH3, Intel 82801CA-ICH3 Modem 11: 93823 XT-PIC uhci_hcd:usb1, uhci_hcd:usb2, eth0, [EMAIL PROTECTED]::00:02.0 12: 75631 XT-PIC i8042 14: 18284 XT-PIC ide0 15: 13901 XT-PIC ide1 NMI: 0 ERR: 0 Does the noirqdebug option fix the problem? Yes, it appears to fix it. Marcus -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.3 (GNU/Linux) iD8DBQFEsTArXjXn6TzcAQkRAn/vAKCZUAVd45xQae4FthvNr68x/jTS4QCgyE7N CzPv0R9okmIjrsGykMXrfPk= =gU6D -END PGP SIGNATURE- - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] airo: make debug-like messages printed by airo_print_dbg()
Hi, Dan Williams schrieb: This message will only happen if the card hangs up and stops responding to commands anyway, so we don't necessarily care about making the message decipherable to anyone other than developers. Well, I get this message each time I insert my Cisco Aironet 350 PCMCIA card, which works obviously fine. On card removal, I get: airo(eth1): cmd= 21 airo(eth1): status= airo(eth1): Rsp0= airo(eth1): Rsp1= airo(eth1): Rsp2= four(!) times. Besides, the messages can be read by issuing dmesg even after the patch, so no information gets lost. with kind regards, Robert Schulze - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[2.6 patch] drivers/net/wireless/zd1211rw/: possible cleanups
This patch contains the following possible cleanups: - make needlessly global functions static - #if 0 unused functions Please review which of these functions do make sense and which do conflict with pending patches. Signed-off-by: Adrian Bunk [EMAIL PROTECTED] --- drivers/net/wireless/zd1211rw/zd_chip.c | 32 drivers/net/wireless/zd1211rw/zd_chip.h | 30 -- drivers/net/wireless/zd1211rw/zd_mac.c |4 +-- drivers/net/wireless/zd1211rw/zd_mac.h |6 drivers/net/wireless/zd1211rw/zd_usb.c |4 +-- drivers/net/wireless/zd1211rw/zd_util.c |4 +-- drivers/net/wireless/zd1211rw/zd_util.h |6 7 files changed, 39 insertions(+), 47 deletions(-) --- linux-2.6.18-rc1-mm1-full/drivers/net/wireless/zd1211rw/zd_chip.h.old 2006-07-09 16:51:01.0 +0200 +++ linux-2.6.18-rc1-mm1-full/drivers/net/wireless/zd1211rw/zd_chip.h 2006-07-09 19:01:05.0 +0200 @@ -690,15 +690,6 @@ return zd_usb_ioread16(chip-usb, value, addr); } -int zd_ioread32v_locked(struct zd_chip *chip, u32 *values, - const zd_addr_t *addresses, unsigned int count); - -static inline int zd_ioread32_locked(struct zd_chip *chip, u32 *value, -const zd_addr_t addr) -{ - return zd_ioread32v_locked(chip, value, (const zd_addr_t *)addr, 1); -} - static inline int zd_iowrite16_locked(struct zd_chip *chip, u16 value, zd_addr_t addr) { @@ -728,9 +719,6 @@ return _zd_iowrite32v_locked(chip, ioreq, 1); } -int zd_iowrite32a_locked(struct zd_chip *chip, -const struct zd_ioreq32 *ioreqs, unsigned int count); - static inline int zd_rfwrite_locked(struct zd_chip *chip, u32 value, u8 bits) { ZD_ASSERT(mutex_is_locked(chip-mutex)); @@ -743,12 +731,7 @@ /* Locking functions for reading and writing registers. * The different parameters are intentional. */ -int zd_ioread16(struct zd_chip *chip, zd_addr_t addr, u16 *value); -int zd_iowrite16(struct zd_chip *chip, zd_addr_t addr, u16 value); -int zd_ioread32(struct zd_chip *chip, zd_addr_t addr, u32 *value); int zd_iowrite32(struct zd_chip *chip, zd_addr_t addr, u32 value); -int zd_ioread32v(struct zd_chip *chip, const zd_addr_t *addresses, - u32 *values, unsigned int count); int zd_iowrite32a(struct zd_chip *chip, const struct zd_ioreq32 *ioreqs, unsigned int count); @@ -760,7 +743,6 @@ u8 zd_chip_get_channel(struct zd_chip *chip); int zd_read_regdomain(struct zd_chip *chip, u8 *regdomain); void zd_get_e2p_mac_addr(struct zd_chip *chip, u8 *mac_addr); -int zd_read_mac_addr(struct zd_chip *chip, u8 *mac_addr); int zd_write_mac_addr(struct zd_chip *chip, const u8 *mac_addr); int zd_chip_switch_radio_on(struct zd_chip *chip); int zd_chip_switch_radio_off(struct zd_chip *chip); @@ -771,20 +753,24 @@ int zd_chip_enable_hwint(struct zd_chip *chip); int zd_chip_disable_hwint(struct zd_chip *chip); +#if 0 static inline int zd_get_encryption_type(struct zd_chip *chip, u32 *type) { return zd_ioread32(chip, CR_ENCRYPTION_TYPE, type); } +#endif /* 0 */ static inline int zd_set_encryption_type(struct zd_chip *chip, u32 type) { return zd_iowrite32(chip, CR_ENCRYPTION_TYPE, type); } +#if 0 static inline int zd_chip_get_basic_rates(struct zd_chip *chip, u16 *cr_rates) { return zd_ioread16(chip, CR_BASIC_RATE_TBL, cr_rates); } +#endif /* 0 */ int zd_chip_set_basic_rates(struct zd_chip *chip, u16 cr_rates); @@ -803,16 +789,12 @@ LED_STATUS = 3, }; -int zd_chip_led_status(struct zd_chip *chip, int led, enum led_status status); -int zd_chip_led_flip(struct zd_chip *chip, int led, -const unsigned int *phases_msecs, unsigned int count); - -int zd_set_beacon_interval(struct zd_chip *chip, u32 interval); - +#if 0 static inline int zd_get_beacon_interval(struct zd_chip *chip, u32 *interval) { return zd_ioread32(chip, CR_BCN_INTERVAL, interval); } +#endif /* 0 */ struct rx_status; --- linux-2.6.18-rc1-mm1-full/drivers/net/wireless/zd1211rw/zd_chip.c.old 2006-07-09 16:51:15.0 +0200 +++ linux-2.6.18-rc1-mm1-full/drivers/net/wireless/zd1211rw/zd_chip.c 2006-07-09 19:05:19.0 +0200 @@ -87,8 +87,8 @@ /* Read a variable number of 32-bit values. Parameter count is not allowed to * exceed USB_MAX_IOREAD32_COUNT. */ -int zd_ioread32v_locked(struct zd_chip *chip, u32 *values, const zd_addr_t *addr, -unsigned int count) +static int zd_ioread32v_locked(struct zd_chip *chip, u32 *values, + const zd_addr_t *addr, unsigned int count) { int r; int i; @@ -135,6 +135,12 @@ return r; } +static int zd_ioread32_locked(struct zd_chip *chip, u32 *value, +const zd_addr_t addr) +{ + return zd_ioread32v_locked(chip, value,
Re: [PATCH] airo: make debug-like messages printed by airo_print_dbg()
Robert Schulze wrote: Hi, Dan Williams schrieb: This message will only happen if the card hangs up and stops responding to commands anyway, so we don't necessarily care about making the message decipherable to anyone other than developers. Well, I get this message each time I insert my Cisco Aironet 350 PCMCIA card, which works obviously fine. [] Besides, the messages can be read by issuing dmesg even after the patch, so no information gets lost. The fact that you're getting that message indicates that something's wrong, at least from the kernel's point of view. So it better be understand and fixed, instead of being hidden in debugging output. If it's visible in dmesg but isn't visible in syslog (default syslog configuration does not capture any debugging messages), far less people will notice it. I'd vote for making it one-line, but with current KERN_ERR priority. /mjt (who don't even have the hardware in question) - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PKT_SCHED]: act_api: Fix module leak while flushing actions
From: Thomas Graf [EMAIL PROTECTED] Date: Sun, 9 Jul 2006 16:20:43 +0200 Module reference needs to be given back if message header construction fails. Signed-off-by: Thomas Graf [EMAIL PROTECTED] Applied, thanks Thomas. This reminds me of something, not only are non-networking developers getting tripped up constantly about these magic code labels referenced from the netlink macros, they are tripping us up as well. I really think it's time, at a minimum, to explicitly mention the labels as an argument to the macros, or something like that. I'll try to cons something up when I get a chance. The current situation is too error prone. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [VLAN]: translate IF_OPER_DORMANT to netif_dormant_on()
From: Stefan Rompf [EMAIL PROTECTED] Date: Sun, 9 Jul 2006 10:49:31 +0200 Am Freitag, 7. Juli 2006 23:33 schrieb Stephen Hemminger: Not really. The flag code last major change was to do the dormant stuff that HDLC wanted. ... and where the maintainer doesn't seem to care to use it now that the infrastructure is there. Sigh. Yes, this is very unfortunate. They made the loudest noise about wanting the change, yet they aren't even responsible enough to submit the HDLC patches necessary to make use of it. This was apparently needed to fix HDLC, so where's the followup? This is why the HDLC maintainers shouldn't be surprised if we flat out ignore them the next time they complain about anything. They have proven that they are pure whiners. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] d80211: make sleeping in hw-config possible
Hi John, Please apply this to wireless-dev. -- This patch makes sleeping in the hw-config callback possible by removing the only atomic caller. The atomic caller was a timer and is replaced by a workqueue. In general, allowing to sleep in the config callback is a good thing. bcm43xx must be able to sleep here, as it is required to lock a mutex. But there are other good reasons to sleep here. We might want to sleep for a grace period on channel switch, for example. Signed-off-by: Michael Buesch [EMAIL PROTECTED] Index: wireless-dev-dscapeports/net/d80211/ieee80211.c === --- wireless-dev-dscapeports.orig/net/d80211/ieee80211.c2006-06-17 21:26:10.0 +0200 +++ wireless-dev-dscapeports/net/d80211/ieee80211.c 2006-07-09 20:01:42.0 +0200 @@ -4327,8 +4327,7 @@ del_timer_sync(local-rate_limit_timer); if (local-stat_time) del_timer_sync(local-stat_timer); - if (local-scan_timer.data) - del_timer_sync(local-scan_timer); + cancel_rearming_delayed_work(local-scan_work); ieee80211_rx_bss_list_deinit(dev); rtnl_lock(); Index: wireless-dev-dscapeports/net/d80211/ieee80211_i.h === --- wireless-dev-dscapeports.orig/net/d80211/ieee80211_i.h 2006-06-17 21:26:10.0 +0200 +++ wireless-dev-dscapeports/net/d80211/ieee80211_i.h 2006-07-09 19:52:07.0 +0200 @@ -17,6 +17,7 @@ #include linux/list.h #include linux/netdevice.h #include linux/skbuff.h +#include linux/workqueue.h #include ieee80211_key.h #include sta_info.h @@ -407,7 +408,7 @@ int scan_channel_idx; enum { SCAN_SET_CHANNEL, SCAN_SEND_PROBE } scan_state; unsigned long last_scan_completed; - struct timer_list scan_timer; + struct work_struct scan_work; int scan_oper_channel; int scan_oper_channel_val; int scan_oper_power_level; Index: wireless-dev-dscapeports/net/d80211/ieee80211_iface.c === --- wireless-dev-dscapeports.orig/net/d80211/ieee80211_iface.c 2006-06-17 21:26:10.0 +0200 +++ wireless-dev-dscapeports/net/d80211/ieee80211_iface.c 2006-07-09 20:03:32.0 +0200 @@ -271,8 +271,8 @@ case IEEE80211_IF_TYPE_STA: case IEEE80211_IF_TYPE_IBSS: del_timer_sync(sdata-u.sta.timer); - if (local-scan_timer.data == (unsigned long) sdata-dev) - del_timer_sync(local-scan_timer); + if (local-scan_work.data == sdata-dev) + cancel_rearming_delayed_work(local-scan_work); kfree(sdata-u.sta.extra_ie); sdata-u.sta.extra_ie = NULL; kfree(sdata-u.sta.assocreq_ies); Index: wireless-dev-dscapeports/net/d80211/ieee80211_sta.c === --- wireless-dev-dscapeports.orig/net/d80211/ieee80211_sta.c2006-06-17 21:26:10.0 +0200 +++ wireless-dev-dscapeports/net/d80211/ieee80211_sta.c 2006-07-09 20:21:44.0 +0200 @@ -2422,15 +2422,16 @@ } -static void ieee80211_sta_scan_timer(unsigned long ptr) +static void ieee80211_sta_scan_work(void *_data) { - struct net_device *dev = (struct net_device *) ptr; + struct net_device *dev = _data; struct ieee80211_local *local = dev-ieee80211_ptr; struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); struct ieee80211_hw_modes *mode; struct ieee80211_channel *chan; int skip; union iwreq_data wrqu; + unsigned long next_delay = 0; if (!local-sta_scanning) return; @@ -2498,29 +2499,27 @@ local-scan_channel_idx = 0; } - if (skip) { - local-scan_timer.expires = jiffies; + if (skip) break; - } - local-scan_timer.expires = jiffies + IEEE80211_PROBE_DELAY; + next_delay = IEEE80211_PROBE_DELAY; local-scan_state = SCAN_SEND_PROBE; break; case SCAN_SEND_PROBE: if (ieee80211_active_scan(local)) { ieee80211_send_probe_req(dev, NULL, local-scan_ssid, local-scan_ssid_len); - local-scan_timer.expires = - jiffies + IEEE80211_CHANNEL_TIME; - } else { - local-scan_timer.expires = - jiffies + IEEE80211_PASSIVE_CHANNEL_TIME; - } + next_delay = IEEE80211_CHANNEL_TIME; + } else + next_delay = IEEE80211_PASSIVE_CHANNEL_TIME; local-scan_state =
Re: [2.6 patch] net/atm/clip.c: fix PROC_FS=n compile
From: Adrian Bunk [EMAIL PROTECTED] Date: Sat, 8 Jul 2006 22:20:01 +0200 This patch fixes the following compile error with CONFIG_PROC_FS=n by reverting commit dcdb02752ff13a64433c36f2937a58d93ae7a19e: Applied, thanks Adrian. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [AX.25] Use kzalloc
From: Ralf Baechle [EMAIL PROTECTED] Date: Sun, 9 Jul 2006 02:52:00 +0100 Replace kzalloc instead of kmalloc + memset. Signed-off-by: Ralf Baechle [EMAIL PROTECTED] Applied, thanks Ralf. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PKT_SCHED]: act_api: Fix module leak while flushing actions
* David Miller [EMAIL PROTECTED] 2006-07-09 11:38 From: Thomas Graf [EMAIL PROTECTED] Date: Sun, 9 Jul 2006 16:20:43 +0200 Module reference needs to be given back if message header construction fails. Signed-off-by: Thomas Graf [EMAIL PROTECTED] Applied, thanks Thomas. This reminds me of something, not only are non-networking developers getting tripped up constantly about these magic code labels referenced from the netlink macros, they are tripping us up as well. I really think it's time, at a minimum, to explicitly mention the labels as an argument to the macros, or something like that. I'll try to cons something up when I get a chance. The current situation is too error prone. I agree, that's why the new netlink api offers label free methods. The transformation patches for 2.6.19 converting all netlink users to use the new api will resolved these issues. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [VLAN]: translate IF_OPER_DORMANT to netif_dormant_on()
David Miller [EMAIL PROTECTED] writes: Not really. The flag code last major change was to do the dormant stuff that HDLC wanted. ... and where the maintainer doesn't seem to care to use it now that the infrastructure is there. Sigh. This is very different from what I proposed and doesn't fit very well. We've been discussing this to death. Yes, this is very unfortunate. They made the loudest noise about wanting the change, yet they aren't even responsible enough to submit the HDLC patches necessary to make use of it. This was apparently needed to fix HDLC, so where's the followup? I'm still thinking how to use it safely. Should it be implemented sanely, things would be different. This is why the HDLC maintainers shouldn't be surprised if we flat out ignore them the next time they complain about anything. You are correct - some time ago, I was really surprised. Now, especially having received that private mail from you - the situation is obvious. I'm a single developer BTW. -- Krzysztof Halasa - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] d80211: make sleeping in hw-config possible
Hi, Please apply this to wireless-dev. -- This patch makes sleeping in the hw-config callback possible by removing the only atomic caller. The atomic caller was a timer and is replaced by a workqueue. In general, allowing to sleep in the config callback is a good thing. bcm43xx must be able to sleep here, as it is required to lock a mutex. But there are other good reasons to sleep here. We might want to sleep for a grace period on channel switch, for example. Excellent work. Sleeping in hw-config is a much desired feature for rt2x00 as well, this is especially beneficial for the USB drivers who always need sleeping. Ivo - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] airo: make debug-like messages printed by airo_print_dbg()
Hi, ok lets keep that message to be visible to anybody, but put it into one line. Thanks for your comments. Now, I will track down what causes the error on my machine, I think it has something todo with pcmcia... with kind regards, Robert Schulze --- linux-2.6.17.1/drivers/net/wireless/airo.c.orig 2006-07-08 14:02:12.0 +0200 +++ linux-2.6.17.1/drivers/net/wireless/airo.c 2006-07-10 00:19:15.0 +0200 @@ -3897,11 +3897,10 @@ static u16 issuecommand(struct airo_info pRsp-rsp1 = IN4500(ai, RESP1); pRsp-rsp2 = IN4500(ai, RESP2); if ((pRsp-status 0xff00)!=0 pCmd-cmd != CMD_SOFTRESET) { - airo_print_err(ai-dev-name, cmd= %x\n, pCmd-cmd); - airo_print_err(ai-dev-name, status= %x\n, pRsp-status); - airo_print_err(ai-dev-name, Rsp0= %x\n, pRsp-rsp0); - airo_print_err(ai-dev-name, Rsp1= %x\n, pRsp-rsp1); - airo_print_err(ai-dev-name, Rsp2= %x\n, pRsp-rsp2); + airo_print_err(ai-dev-name, + cmd:%x status:%x rsp0:%x rsp1:%x rsp2:%x + pCmd-cmd, pRsp-status, pRsp-rsp0, pRsp-rsp1, + pRsp-rsp2); } // clear stuck command busy if necessary - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[AX.25] Get rid of the last volatile.
This volatile makes no sense - not even wearing pink shades ... Signed-off-by: Ralf Baechle [EMAIL PROTECTED] diff --git a/net/ax25/ax25_in.c b/net/ax25/ax25_in.c index 4cf8754..e9d9429 100644 --- a/net/ax25/ax25_in.c +++ b/net/ax25/ax25_in.c @@ -102,8 +102,8 @@ static int ax25_rx_fragment(ax25_cb *ax2 int ax25_rx_iframe(ax25_cb *ax25, struct sk_buff *skb) { int (*func)(struct sk_buff *, ax25_cb *); - volatile int queued = 0; unsigned char pid; + int queued = 0; if (skb == NULL) return 0; - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] d80211: make sleeping in hw-config possible
On Sunday 09 July 2006 20:47, you wrote: === --- wireless-dev-dscapeports.orig/net/d80211/ieee80211.c 2006-06-17 21:26:10.0 +0200 +++ wireless-dev-dscapeports/net/d80211/ieee80211.c 2006-07-09 20:01:42.0 +0200 @@ -4327,8 +4327,7 @@ del_timer_sync(local-rate_limit_timer); if (local-stat_time) del_timer_sync(local-stat_timer); - if (local-scan_timer.data) - del_timer_sync(local-scan_timer); + cancel_rearming_delayed_work(local-scan_work); ieee80211_rx_bss_list_deinit(dev); rtnl_lock(); There seems to be a problem. It sometimes loops inside of cancel_rearming_delayed_work forever. So I tried to fix it like this: if (local-scan_work.data) cancel_rearming_delayed_work(local-scan_work); This fixes the case where we don't scan (have no STA), so don't initialize the work struct. But it still loops infinite, sometimes. Any suggestions? -- Greetings Michael. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[IPV4] inetpeer: Get rid of volatile from peer_total
Hi Dave: Just joining on the fun on volatile :) [IPV4] inetpeer: Get rid of volatile from peer_total The variable peer_total is protected by a lock. The volatile marker makes no sense. This shaves off 20 bytes on i386. Signed-off-by: Herbert Xu [EMAIL PROTECTED] Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmVHI~} [EMAIL PROTECTED] Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt -- diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c index 2160874..03ff62e 100644 --- a/net/ipv4/inetpeer.c +++ b/net/ipv4/inetpeer.c @@ -86,7 +86,7 @@ static struct inet_peer *peer_root = pee static DEFINE_RWLOCK(peer_pool_lock); #define PEER_MAXDEPTH 40 /* sufficient for about 2^27 nodes */ -static volatile int peer_total; +static int peer_total; /* Exported for sysctl_net_ipv4. */ int inet_peer_threshold = 65536 + 128; /* start to throw entries more * aggressively at this stage */ - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[2.6 patch] netfilter: fix SYSCTL=n compile
On Sun, Jul 09, 2006 at 05:37:35AM +0200, Patrick McHardy wrote: Adrian Bunk wrote: This patch fixes the following compile error with CONFIG_SYSCTL=n introduced by commit 39a27a35c5c1b5be499a0576a35c45a011788bf8: My fault I guess. -- snip -- ... LD .tmp_vmlinux1 net/built-in.o: In function `tcp_error': ip_conntrack_proto_tcp.c:(.text+0x77af6): undefined reference to `ip_conntrack_checksum' net/built-in.o: In function `udp_error': ip_conntrack_proto_udp.c:(.text+0x78456): undefined reference to `ip_conntrack_checksum' net/built-in.o: In function `icmp_error': ip_conntrack_proto_icmp.c:(.text+0x7868f): undefined reference to `ip_conntrack_checksum' make: *** [.tmp_vmlinux1] Error 1 Thanks Adrian. Usually all bugs in ip_conntrack are duplicated in nf_conntrack, please update your patch to take care of that as well. Correct, updated patch below. cu Adrian -- snip -- This patch fixes the following compile errors with CONFIG_SYSCTL=n introduced by commit 39a27a35c5c1b5be499a0576a35c45a011788bf8: -- snip -- ... LD .tmp_vmlinux1 net/built-in.o: In function `tcp_error': ip_conntrack_proto_tcp.c:(.text+0x77af6): undefined reference to `ip_conntrack_checksum' net/built-in.o: In function `udp_error': ip_conntrack_proto_udp.c:(.text+0x78456): undefined reference to `ip_conntrack_checksum' net/built-in.o: In function `icmp_error': ip_conntrack_proto_icmp.c:(.text+0x7868f): undefined reference to `ip_conntrack_checksum' make: *** [.tmp_vmlinux1] Error 1 -- snip -- ... LD .tmp_vmlinux1 net/built-in.o: In function `tcp_error': nf_conntrack_proto_tcp.c:(.text+0x46b44): undefined reference to `nf_conntrack_checksum' net/built-in.o: In function `udp_error': nf_conntrack_proto_udp.c:(.text+0x474f5): undefined reference to `nf_conntrack_checksum' net/built-in.o: In function `icmp_error': nf_conntrack_proto_icmp.c:(.text+0x8e5f4): undefined reference to `nf_conntrack_checksum' net/built-in.o: In function `icmpv6_error': nf_conntrack_proto_icmpv6.c:(.text+0xd3f54): undefined reference to `nf_conntrack_checksum' make: *** [.tmp_vmlinux1] Error 1 -- snip -- Signed-off-by: Adrian Bunk [EMAIL PROTECTED] --- net/ipv4/netfilter/ip_conntrack_standalone.c |4 ++-- net/netfilter/nf_conntrack_standalone.c |4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) --- linux-2.6.17-mm6-full/net/ipv4/netfilter/ip_conntrack_standalone.c.old 2006-07-08 15:32:32.0 +0200 +++ linux-2.6.17-mm6-full/net/ipv4/netfilter/ip_conntrack_standalone.c 2006-07-08 15:33:30.0 +0200 @@ -534,6 +534,8 @@ /* Sysctl support */ +int ip_conntrack_checksum = 1; + #ifdef CONFIG_SYSCTL /* From ip_conntrack_core.c */ @@ -568,8 +570,6 @@ static int log_invalid_proto_min = 0; static int log_invalid_proto_max = 255; -int ip_conntrack_checksum = 1; - static struct ctl_table_header *ip_ct_sysctl_header; static ctl_table ip_ct_sysctl_table[] = { --- linux-2.6.18-rc1-mm1-full/net/netfilter/nf_conntrack_standalone.c.old 2006-07-09 21:18:04.0 +0200 +++ linux-2.6.18-rc1-mm1-full/net/netfilter/nf_conntrack_standalone.c 2006-07-09 21:18:27.0 +0200 @@ -428,6 +428,8 @@ /* Sysctl support */ +int nf_conntrack_checksum = 1; + #ifdef CONFIG_SYSCTL /* From nf_conntrack_core.c */ @@ -459,8 +461,6 @@ static int log_invalid_proto_min = 0; static int log_invalid_proto_max = 255; -int nf_conntrack_checksum = 1; - static struct ctl_table_header *nf_ct_sysctl_header; static ctl_table nf_ct_sysctl_table[] = { - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [VLAN]: translate IF_OPER_DORMANT to netif_dormant_on()
From: Krzysztof Halasa [EMAIL PROTECTED] Date: Sun, 09 Jul 2006 22:05:43 +0200 I'm a single developer BTW. So am I, and I've been keeping the core networking and the sparc64 port afloat for more than 10 years. In comparison, very little is being asked of you. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PKT_SCHED]: act_api: Fix module leak while flushing actions
From: Thomas Graf [EMAIL PROTECTED] Date: Sun, 9 Jul 2006 21:57:34 +0200 * David Miller [EMAIL PROTECTED] 2006-07-09 11:38 I'll try to cons something up when I get a chance. The current situation is too error prone. I agree, that's why the new netlink api offers label free methods. The transformation patches for 2.6.19 converting all netlink users to use the new api will resolved these issues. Awesome, I look forward to seeing those patches. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [AX.25] Get rid of the last volatile.
From: Ralf Baechle [EMAIL PROTECTED] Date: Sun, 9 Jul 2006 23:37:45 +0100 This volatile makes no sense - not even wearing pink shades ... Signed-off-by: Ralf Baechle [EMAIL PROTECTED] Applied, thanks Ralf :) - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [IPV4] inetpeer: Get rid of volatile from peer_total
From: Herbert Xu [EMAIL PROTECTED] Date: Mon, 10 Jul 2006 09:07:11 +1000 [IPV4] inetpeer: Get rid of volatile from peer_total The variable peer_total is protected by a lock. The volatile marker makes no sense. This shaves off 20 bytes on i386. Signed-off-by: Herbert Xu [EMAIL PROTECTED] Applied, thanks. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] airo: make debug-like messages printed by airo_print_dbg()
On Mon, 2006-07-10 at 00:23 +0200, Robert Schulze wrote: Hi, ok lets keep that message to be visible to anybody, but put it into one line. Thanks for your comments. Now, I will track down what causes the error on my machine, I think it has something todo with pcmcia... Looks good. This will happen any time the driver tries to talk to the card but can't. So you might want to try looking at whether the card is already pulled out or its resources have been deallocated before this code runs. Obviously we can talk to the card up until it's been pulled out and the kernel notifies us that the card has been unplugged, but perhaps there's a codepath that tries to mistakenly handle both hot-unplug and module removal by writing something to that card (like reset commands). I've seen that before in other places. Dan with kind regards, Robert Schulze --- linux-2.6.17.1/drivers/net/wireless/airo.c.orig 2006-07-08 14:02:12.0 +0200 +++ linux-2.6.17.1/drivers/net/wireless/airo.c2006-07-10 00:19:15.0 +0200 @@ -3897,11 +3897,10 @@ static u16 issuecommand(struct airo_info pRsp-rsp1 = IN4500(ai, RESP1); pRsp-rsp2 = IN4500(ai, RESP2); if ((pRsp-status 0xff00)!=0 pCmd-cmd != CMD_SOFTRESET) { - airo_print_err(ai-dev-name, cmd= %x\n, pCmd-cmd); - airo_print_err(ai-dev-name, status= %x\n, pRsp-status); - airo_print_err(ai-dev-name, Rsp0= %x\n, pRsp-rsp0); - airo_print_err(ai-dev-name, Rsp1= %x\n, pRsp-rsp1); - airo_print_err(ai-dev-name, Rsp2= %x\n, pRsp-rsp2); + airo_print_err(ai-dev-name, + cmd:%x status:%x rsp0:%x rsp1:%x rsp2:%x + pCmd-cmd, pRsp-status, pRsp-rsp0, pRsp-rsp1, + pRsp-rsp2); } // clear stuck command busy if necessary - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [2.6 patch] netfilter: fix SYSCTL=n compile
Adrian Bunk wrote: This patch fixes the following compile errors with CONFIG_SYSCTL=n introduced by commit 39a27a35c5c1b5be499a0576a35c45a011788bf8: Thanks, applied. - To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html