From srompf@isg.de Sun Dec 1 14:07:24 2002 Received: with ECARTIS (v1.0.0; list netdev); Sun, 01 Dec 2002 14:07:27 -0800 (PST) Received: from mail.isg.de (rzfoobar.is-asp.com [217.11.194.155]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB1M7DuR008331 for ; Sun, 1 Dec 2002 14:07:13 -0800 Received: from isg.de (Ae153.pppool.de [213.6.225.83]) by mail.isg.de (Postfix) with ESMTP id C201988BEC; Sun, 1 Dec 2002 22:30:37 +0100 (CET) Message-ID: <3DEA0452.B1F15BFD@isg.de> Date: Sun, 01 Dec 2002 13:45:06 +0100 From: Stefan Rompf X-Mailer: Mozilla 4.79 [en] (X11; U; Linux 2.4.20-rc2-lw-apic i686) X-Accept-Language: en MIME-Version: 1.0 To: David Brownell Cc: netdev@oss.sgi.com Subject: Re: 2.5.50 BUG_TRAP on !dev->deadbeaf, and oopses References: <3DE9290A.7070502@pacbell.net> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1275 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: srompf@isg.de Precedence: bulk X-list: netdev Hi, David Brownell wrote: > KERNEL: assertion (!dev->deadbeaf) failed at net/core/dev.c(2544) > > I think there's another bug, beyond the obvious speling erorz. Namely, > that "deadbeaf" is only set after that BUG_TRAP, or on one error path. > The assertion prevents hotpluggable network drivers from unregistering > when the hardware goes away ... which is a regression. actually, the assertion is triggered when someone tries to unregister a netdevice twice, and that's also why you get > unregister_netdevice: device /dfd74058 never was registered >From a short browsing through usb.c I don't see a similiar bug catcher in usb_device_remove(), so have a look if the USB subsystem itself removes a unplugged device twice for some reason. Stefan From david-b@pacbell.net Mon Dec 2 11:09:43 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 02 Dec 2002 11:09:51 -0800 (PST) Received: from mta7.pltn13.pbi.net (mta7.pltn13.pbi.net [64.164.98.8]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB2J9huR013179 for ; Mon, 2 Dec 2002 11:09:43 -0800 Received: from pacbell.net ([67.118.246.114]) by mta7.pltn13.pbi.net (iPlanet Messaging Server 5.1 (built May 7 2001)) with ESMTP id <0H6I007YCAP740@mta7.pltn13.pbi.net> for netdev@oss.sgi.com; Mon, 02 Dec 2002 11:12:45 -0800 (PST) Date: Mon, 02 Dec 2002 10:44:05 -0800 From: David Brownell Subject: Re: 2.5.50 BUG_TRAP on !dev->deadbeaf, and oopses To: Stefan Rompf Cc: netdev@oss.sgi.com Message-id: <3DEBA9F5.6000606@pacbell.net> MIME-version: 1.0 Content-type: text/plain; format=flowed; charset=us-ascii Content-transfer-encoding: 7bit X-Accept-Language: en-us, en, fr User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9) Gecko/20020513 References: <3DE9290A.7070502@pacbell.net> <3DEA0452.B1F15BFD@isg.de> X-archive-position: 1277 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: david-b@pacbell.net Precedence: bulk X-list: netdev Content-Length: 1608 Lines: 43 Hi Stefan, >> KERNEL: assertion (!dev->deadbeaf) failed at net/core/dev.c(2544) >> >>I think there's another bug, beyond the obvious speling erorz. Namely, >>that "deadbeaf" is only set after that BUG_TRAP, or on one error path. >>The assertion prevents hotpluggable network drivers from unregistering >>when the hardware goes away ... which is a regression. > > > actually, the assertion is triggered when someone tries to unregister a > netdevice twice, and that's also why you get Then why will grep of all kernel files not turn up other places where 'deadbeaf' gets set? There's strange stuff going on here regardless (as well as speling issue), which looks pretty buglike. Plus: this kind of bugcatch should use magic numbers, or maybe zero. Assuming "any nonzero value is valid", like this assertion does, is clearly going to fail for any of the class of bugs highlighted by slab poisoning. (0xa5a5a5a5 gets accepted as valid...) >> unregister_netdevice: device /dfd74058 never was registered > > > From a short browsing through usb.c I don't see a similiar bug catcher > in usb_device_remove(), so have a look if the USB subsystem itself > removes a unplugged device twice for some reason. At least one failure path also involves "rmmod" of the network drivers, where the device hardware is still around; so that code would not always be called. I wouldn't rule out problems in the relevant usbcore/sysfs bits, even now that they seem to have stabilized again (and yes, I was wondering about multiple disconnects too), but all that deadbeaf logic still looks fishy to me. - Dave From jgarzik@pobox.com Mon Dec 2 19:30:55 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 02 Dec 2002 19:30:57 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB33UruR021173 for ; Mon, 2 Dec 2002 19:30:54 -0800 Received: from rdu74-162-040.nc.rr.com ([24.74.162.40] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18J3on-0001o4-00; Tue, 03 Dec 2002 03:33:54 +0000 Message-ID: <3DEC2600.2070306@pobox.com> Date: Mon, 02 Dec 2002 22:33:20 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021126 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Linux Kernel Mailing List CC: netdev@oss.sgi.com, akpm@zip.com.au Subject: Network interface synchronization docs Content-Type: multipart/mixed; boundary="------------050300030504070804060609" X-archive-position: 1278 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Content-Length: 2122 Lines: 81 This is a multi-part message in MIME format. --------------050300030504070804060609 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit I just updated Documentation/networking/netdevices.txt locally to the attached file, which describes the synchronization rules for net drivers in the 2.4.x and 2.5.x kernels. (Astute readers will notice a striking similarity to 2.2.x locking rules as well) Comments and corrections to the attached doc requested. I realize it's not much right now, but this is core info I want to make sure is correct, and that everyone agrees on. Thanks to Robert Olsson for a pointer about dev->poll(). Future notes: this doc will hopefully expand in time to describe not only the netdevice API but also standard ethernet and net driver practices. Patches welcome! Jeff --------------050300030504070804060609 Content-Type: text/plain; name="netdevices.txt" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="netdevices.txt" Network Devices, the Kernel, and You! Introduction ============ The following is a random collection of documentation regarding network devices. struct net_device synchronization rules ======================================= dev->open: Synchronization: rtnl_lock() semaphore. Context: process dev->stop: Synchronization: rtnl_lock() semaphore. Context: process Notes: netif_running() is guaranteed false when this is called dev->do_ioctl: Synchronization: rtnl_lock() semaphore. Context: process dev->get_stats: Synchronization: dev_base_lock rwlock. Context: nominally process, but don't sleep inside an rwlock dev->hard_start_xmit: Synchronization: dev->xmit_lock spinlock. Context: BHs disabled dev->tx_timeout: Synchronization: dev->xmit_lock spinlock. Context: BHs disabled dev->set_multicast_list: Synchronization: dev->xmit_lock spinlock. Context: BHs disabled dev->poll: Synchronization: __LINK_STATE_RX_SCHED bit in dev->state. See dev_close code and comments in net/core/dev.c for more info. Context: softirq --------------050300030504070804060609-- From rz5b@cs.virginia.edu Mon Dec 2 21:35:42 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 02 Dec 2002 21:35:46 -0800 (PST) Received: from ares.cs.Virginia.EDU (mail.cs.Virginia.EDU [128.143.137.19]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB35ZeuR023915 for ; Mon, 2 Dec 2002 21:35:41 -0800 Received: from bobbidi.cs.Virginia.EDU (bobbidi.cs.Virginia.EDU [128.143.67.48]) by ares.cs.Virginia.EDU (8.9.3+Sun/8.9.2/UVACS-2000040300) with ESMTP id AAA19945 for ; Tue, 3 Dec 2002 00:38:43 -0500 (EST) Date: Tue, 3 Dec 2002 00:39:02 -0500 (EST) From: Ronghua Zhang To: netdev@oss.sgi.com Subject: synchronization between bottom half and user context Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1279 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: rz5b@cs.virginia.edu Precedence: bulk X-list: netdev Content-Length: 354 Lines: 11 Can someone tell me when lock should be used to synchronize bh and user context? For examle: in tcp_accept(), lock_sock() is called to avoid any change made by net_bh during its operation. But if tcp_accept() is called, it's impossilbe that net_bh is also executing. (i think this is true for UP, what about SMP?), then why need lock_sock()? ronghua From yan@intruvert.com Tue Dec 3 12:27:32 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 03 Dec 2002 12:27:37 -0800 (PST) Received: from ivexs1.intruvert.com (mx2.intruvert.com [65.209.235.21]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB3KRWuR014414 for ; Tue, 3 Dec 2002 12:27:32 -0800 Received: by ivexs1.intruvert.com with Internet Mail Service (5.5.2653.19) id ; Tue, 3 Dec 2002 12:30:33 -0800 Message-ID: From: Yan-Fa Li To: netdev@oss.sgi.com Subject: TG3 Performance Question Date: Tue, 3 Dec 2002 12:30:33 -0800 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Disposition: inline Content-Type: text/plain Content-Transfer-Encoding: 7bit X-archive-position: 1280 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: yan@intruvert.com Precedence: bulk X-list: netdev Content-Length: 2070 Lines: 56 Hello I'm trying to figure out some performance issues I have with the tg3 driver. I'm trying to increase the performance of an existing test app, a simple http simulator, by improving the hardware. My original setup uses dual 1.1GHz PIII systems on 64bit-66MHz PCI slots and Serverworks LE chipsets. The new setup is on AMD MPX2 systems with a single Athlon 2000MP. Because of packet reordering issues, I have restricted my app to using only a single CPU using the cpu affinity APIs. On the serverworks systems I have DL2K network cards and am able to sustain 400-450mbits of traffic per system pair using a NAPIzed driver and a hacked up 2.4.19 kernel. On the new AMD system I'm using a fresh 2.4.20 with a TG3 card. The DL2K cards I have, have a chipset level incompatibility with the AMD chipset which I believe has been fixed in the TG3 driver and has only been fixed in hardware for the DL2K so I am unable to test them in the AMD box. Basically I am only able to get around the same performance with a 1.6GHz Athlon than I can with a single 1.1GHz PIII. This perplexes me since I thought originally I was CPU bound. Is this: a) network card issue (i.e. the tg3 isn't as a well documented/ tuned as the dl2k yet) ? b) a PCI chipset issue, i.e. the AMD MPX is kinda lame, I've seen comments from Alan Cox that this may be so, especially vs the server works chipset. c) 400-450mbits is the best you'll ever get with a single gigE card in a 64bit/66MHz PCI slot ? I'm assuming that the tg3 and 2.4.20 kernels are both NAPI, looking through the source code seems to indicate they are. With the DL2K driver I am able to specify tx and rx interrupt mitigation values. Is there an equivalent for the tg3 ? I can't see any useful parameters using modinfo -p. Any suggestions you might have to increase the performance would be appreciated. Right now I thinking about trying the following, a) getting a new rev of DL2K that works with the AMD or b) switching motherboards to Serverworks again. Thanks Yan [[HTML alternate version deleted]] From greearb@candelatech.com Tue Dec 3 12:41:56 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 03 Dec 2002 12:41:57 -0800 (PST) Received: from grok.yi.org (IDENT:q4+2c0tAdCTHII6UwBhaYKZ8k2TPAH5L@dhcp101-dsl-usw4.w-link.net [208.161.125.101]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB3KfsuR015868 for ; Tue, 3 Dec 2002 12:41:55 -0800 Received: from candelatech.com (IDENT:QXFqn6vJudJIqZOFtRyGnUjEF9gGrKAA@localhost.localdomain [127.0.0.1]) by grok.yi.org (8.11.6/8.11.2) with ESMTP id gB3Kimq21488; Tue, 3 Dec 2002 12:44:48 -0800 Message-ID: <3DED17C0.2010404@candelatech.com> Date: Tue, 03 Dec 2002 12:44:48 -0800 From: Ben Greear Organization: Candela Technologies User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2a) Gecko/20020910 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Yan-Fa Li CC: netdev@oss.sgi.com Subject: Re: TG3 Performance Question References: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1281 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: greearb@candelatech.com Precedence: bulk X-list: netdev Content-Length: 474 Lines: 17 Yan-Fa Li wrote: > Hello > > I'm trying to figure out some performance issues I have with > the tg3 driver. Are you sure your tg3 NIC is 66/64 PCI? For 66/64, try an e1000 NIC, you should be able to get 800Mbps or better out of it on such a system. Ben -- Ben Greear President of Candela Technologies Inc http://www.candelatech.com ScryMUD: http://scry.wanfear.com http://scry.wanfear.com/~greear From srompf@isg.de Tue Dec 3 15:43:54 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 03 Dec 2002 15:44:05 -0800 (PST) Received: from mail.isg.de (rzfoobar.is-asp.com [217.11.194.155]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB3NhhuR019661 for ; Tue, 3 Dec 2002 15:43:43 -0800 Received: from isg.de (B1ac8.pppool.de [213.7.26.200]) by mail.isg.de (Postfix) with ESMTP id 5A5D4EA6E88; Wed, 4 Dec 2002 00:08:39 +0100 (CET) Message-ID: <3DED302A.E3DEB585@isg.de> Date: Tue, 03 Dec 2002 23:28:58 +0100 From: Stefan Rompf X-Mailer: Mozilla 4.79 [en] (X11; U; Linux 2.4.20 i686) X-Accept-Language: en MIME-Version: 1.0 To: davem@redhat.com Cc: netdev@oss.sgi.com Subject: Re: Patch: Backport of link state notification to 2.4.20 References: <3DD2D204.C9B7FA2D@isg.de> Content-Type: multipart/mixed; boundary="------------8ABD0F6A5B9C2D9D4F3AC90F" X-archive-position: 1284 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: srompf@isg.de Precedence: bulk X-list: netdev Content-Length: 9338 Lines: 332 This is a multi-part message in MIME format. --------------8ABD0F6A5B9C2D9D4F3AC90F Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi David, attached is the recent backport of link state notification for the stable kernel series. The feature is optional and can be configured away to nothing, and tested on several systems. I'd really like to have it in 2.4.21, and as your the one to decide before Marcelo gets it, can you have a look? Stefan --------------8ABD0F6A5B9C2D9D4F3AC90F Content-Type: text/plain; charset=us-ascii; name="patch-linkwatch-2.4.20" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="patch-linkwatch-2.4.20" diff -uNr linux-2.4.20rc1/Documentation/Configure.help linux/Documentation/Configure.help --- linux-2.4.20rc1/Documentation/Configure.help 2002-11-05 00:31:35.000000000 +0100 +++ linux/Documentation/Configure.help 2002-11-13 22:32:46.000000000 +0100 @@ -26011,6 +26011,18 @@ would like kernel messages to be formatted into GDB $O packets so that GDB prints them as program output, say 'Y'. +Device link state notification +CONFIG_LINKWATCH + When this option is enabled, the kernel will forward changes in the + operative ("RUNNING") state of an interface via the netlink socket. + This is most useful when running linux as a router. + + Note that currently not many drivers support this, compliant ones + can be found by watching the RUNNING flag in ifconfig output that + should follow operative state. + + If unsure, say 'N'. + 802.1Q VLAN Support CONFIG_VLAN_8021Q Select this and you will be able to create 802.1Q VLAN interfaces on your diff -uNr linux-2.4.20rc1/include/linux/netdevice.h linux/include/linux/netdevice.h --- linux-2.4.20rc1/include/linux/netdevice.h 2002-11-05 00:31:42.000000000 +0100 +++ linux/include/linux/netdevice.h 2002-11-13 22:32:46.000000000 +0100 @@ -207,7 +207,8 @@ __LINK_STATE_PRESENT, __LINK_STATE_SCHED, __LINK_STATE_NOCARRIER, - __LINK_STATE_RX_SCHED + __LINK_STATE_RX_SCHED, + __LINK_STATE_LINKWATCH_PENDING }; @@ -630,6 +631,10 @@ * who is responsible for serialization of these calls. */ +#ifdef CONFIG_LINKWATCH +extern void linkwatch_fire_event(struct net_device *dev); +#endif + static inline int netif_carrier_ok(struct net_device *dev) { return !test_bit(__LINK_STATE_NOCARRIER, &dev->state); @@ -639,14 +644,24 @@ static inline void netif_carrier_on(struct net_device *dev) { +#ifdef CONFIG_LINKWATCH + if (test_and_clear_bit(__LINK_STATE_NOCARRIER, &dev->state)) + linkwatch_fire_event(dev); +#else clear_bit(__LINK_STATE_NOCARRIER, &dev->state); +#endif if (netif_running(dev)) __netdev_watchdog_up(dev); } static inline void netif_carrier_off(struct net_device *dev) { +#ifdef CONFIG_LINKWATCH + if (!test_and_set_bit(__LINK_STATE_NOCARRIER, &dev->state)) + linkwatch_fire_event(dev); +#else set_bit(__LINK_STATE_NOCARRIER, &dev->state); +#endif } /* Hot-plugging. */ diff -uNr linux-2.4.20rc1/net/Config.in linux/net/Config.in --- linux-2.4.20rc1/net/Config.in 2002-08-03 02:39:46.000000000 +0200 +++ linux/net/Config.in 2002-11-13 22:32:46.000000000 +0100 @@ -48,6 +48,7 @@ bool ' Per-VC IP filter kludge' CONFIG_ATM_BR2684_IPFILTER fi fi + bool 'Device link state notification (EXPERIMENTAL)' CONFIG_LINKWATCH fi tristate '802.1Q VLAN Support' CONFIG_VLAN_8021Q diff -uNr linux-2.4.20rc1/net/core/Makefile linux/net/core/Makefile --- linux-2.4.20rc1/net/core/Makefile 2002-08-03 02:39:46.000000000 +0200 +++ linux/net/core/Makefile 2002-11-13 22:33:32.000000000 +0100 @@ -31,4 +31,6 @@ # Ugly. I wish all wireless drivers were moved in drivers/net/wireless obj-$(CONFIG_NET_PCMCIA_RADIO) += wireless.o +obj-$(CONFIG_LINKWATCH) += link_watch.o + include $(TOPDIR)/Rules.make diff -uNr linux-2.4.20rc1/net/core/dev.c linux/net/core/dev.c --- linux-2.4.20rc1/net/core/dev.c 2002-11-05 00:31:42.000000000 +0100 +++ linux/net/core/dev.c 2002-11-13 22:32:46.000000000 +0100 @@ -194,6 +194,12 @@ #endif +#ifdef CONFIG_LINKWATCH +extern void linkwatch_init(void); +extern void linkwatch_run_queue(void); +#endif + + /****************************************************************************************** Protocol management and registration routines @@ -2628,6 +2634,18 @@ /* Rebroadcast unregister notification */ notifier_call_chain(&netdev_chain, NETDEV_UNREGISTER, dev); } + +#ifdef CONFIG_LINKWATCH + if (test_bit(__LINK_STATE_LINKWATCH_PENDING, &dev->state)) { + /* We must not have linkwatch events pending + * on unregister. If this happens, we simply + * run the queue unscheduled, resulting in a + * noop for this device + */ + linkwatch_run_queue(); + } +#endif + current->state = TASK_INTERRUPTIBLE; schedule_timeout(HZ/4); current->state = TASK_RUNNING; @@ -2675,6 +2693,10 @@ dv_init(); #endif /* CONFIG_NET_DIVERT */ +#ifdef CONFIG_LINKWATCH + linkwatch_init(); +#endif + /* * Initialise the packet receive queues. */ diff -uNr linux-2.4.20rc1/net/core/link_watch.c linux/net/core/link_watch.c --- linux-2.4.20rc1/net/core/link_watch.c 1970-01-01 01:00:00.000000000 +0100 +++ linux/net/core/link_watch.c 2002-11-13 22:36:44.000000000 +0100 @@ -0,0 +1,149 @@ +/* + * Linux network device link state notifaction + * + * Author: + * Stefan Rompf + * + * 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. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +enum lw_bits { + LW_RUNNING = 0, + LW_SE_USED +}; + +static unsigned long linkwatch_flags = 0; +static unsigned long linkwatch_nextevent = 0; + +static void linkwatch_event(void *dummy); +static void linkwatch_timer(unsigned long dummy); + +static struct tq_struct linkwatch_tq; +static struct timer_list linkwatch_ti; + +static LIST_HEAD(lweventlist); +static spinlock_t lweventlist_lock = SPIN_LOCK_UNLOCKED; + +struct lw_event { + struct list_head list; + struct net_device *dev; +}; + +/* Avoid kmalloc() for most systems */ +static struct lw_event singleevent; + +/* Must be called with the rtnl semaphore held */ +void linkwatch_run_queue(void) { + LIST_HEAD(head); + struct list_head *n, *next; + + spin_lock_irq(&lweventlist_lock); + list_splice_init(&lweventlist, &head); + spin_unlock_irq(&lweventlist_lock); + + list_for_each_safe(n, next, &head) { + struct lw_event *event = list_entry(n, struct lw_event, list); + struct net_device *dev = event->dev; + + if (event == &singleevent) { + clear_bit(LW_SE_USED, &linkwatch_flags); + } else { + kfree(event); + } + + /* We are about to handle this device, + * so new events can be accepted + */ + clear_bit(__LINK_STATE_LINKWATCH_PENDING, &dev->state); + + if (dev->flags & IFF_UP) { + netdev_state_change(dev); + } + + dev_put(dev); + } +} + + +static void linkwatch_event(void *dummy) +{ + /* Limit the number of linkwatch events to one + * per second so that a runaway driver does not + * cause a storm of messages on the netlink + * socket + */ + linkwatch_nextevent = jiffies + HZ; + clear_bit(LW_RUNNING, &linkwatch_flags); + + rtnl_lock(); + linkwatch_run_queue(); + rtnl_unlock(); +} + + +static void linkwatch_timer(unsigned long dummy) { + (void)schedule_task(&linkwatch_tq); +} + + +void linkwatch_fire_event(struct net_device *dev) +{ + if (!test_and_set_bit(__LINK_STATE_LINKWATCH_PENDING, &dev->state)) { + unsigned long flags; + struct lw_event *event; + + if (test_and_set_bit(LW_SE_USED, &linkwatch_flags)) { + event = kmalloc(sizeof(struct lw_event), GFP_ATOMIC); + + if (unlikely(event == NULL)) { + clear_bit(__LINK_STATE_LINKWATCH_PENDING, &dev->state); + return; + } + } else { + event = &singleevent; + } + + dev_hold(dev); + event->dev = dev; + + spin_lock_irqsave(&lweventlist_lock, flags); + list_add_tail(&event->list, &lweventlist); + spin_unlock_irqrestore(&lweventlist_lock, flags); + + if (!test_and_set_bit(LW_RUNNING, &linkwatch_flags)) { + unsigned long thisevent = jiffies; + + if (thisevent >= linkwatch_nextevent) { + (void)schedule_task(&linkwatch_tq); + } else { + linkwatch_ti.expires = linkwatch_nextevent; + add_timer(&linkwatch_ti); + } + } + } +} + + +void __init linkwatch_init(void) { + linkwatch_ti.function = linkwatch_timer; + init_timer(&linkwatch_ti); + INIT_TQUEUE(&linkwatch_tq, linkwatch_event, NULL); +} + diff -uNr linux-2.4.20rc1/net/netsyms.c linux/net/netsyms.c --- linux-2.4.20rc1/net/netsyms.c 2002-11-05 00:31:42.000000000 +0100 +++ linux/net/netsyms.c 2002-11-13 22:33:32.000000000 +0100 @@ -591,6 +591,10 @@ EXPORT_SYMBOL(softnet_data); +#ifdef CONFIG_LINKWATCH +EXPORT_SYMBOL(linkwatch_fire_event); +#endif + #if defined(CONFIG_NET_RADIO) || defined(CONFIG_NET_PCMCIA_RADIO) #include EXPORT_SYMBOL(wireless_send_event); --------------8ABD0F6A5B9C2D9D4F3AC90F-- From srompf@isg.de Tue Dec 3 15:43:54 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 03 Dec 2002 15:43:56 -0800 (PST) Received: from mail.isg.de (rzfoobar.is-asp.com [217.11.194.155]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB3NhhuR019660 for ; Tue, 3 Dec 2002 15:43:43 -0800 Received: from isg.de (B1ac8.pppool.de [213.7.26.200]) by mail.isg.de (Postfix) with ESMTP id F2C82EA7414; Wed, 4 Dec 2002 00:08:44 +0100 (CET) Message-ID: <3DED3869.5E47D7A2@isg.de> Date: Wed, 04 Dec 2002 00:04:09 +0100 From: Stefan Rompf X-Mailer: Mozilla 4.79 [en] (X11; U; Linux 2.4.20 i686) X-Accept-Language: en MIME-Version: 1.0 To: jamal Cc: davem@redhat.com, netdev@oss.sgi.com Subject: Re: Patch resubmission: RFC2863 operstatus for 2.5.49 References: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1282 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: srompf@isg.de Precedence: bulk X-list: netdev Content-Length: 729 Lines: 18 Hi Jamal, > Just thought of something, it may be a little tricky but valuable and > i am not quiet sure if it should part of your patch: We probably need to > flush the qdiscs software queues; maybe even the DMA ring i.e simulate > admin down followed by admin up. dev_close() is doing quite a lot of stuff, so we should do nothing more than flush the qdiscs when the link comes up. But is it really useful? Normally, the queues are short anyway to keep latencies low, and fifty additional packets don't hurt. I rather think about clearing neighbor tables and the route cache whenever the operstatus goes down. Anyway, implementation and usage of the notification should not mix up, so it let it be a separate patch. Stefan From srompf@isg.de Tue Dec 3 15:43:54 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 03 Dec 2002 15:43:58 -0800 (PST) Received: from mail.isg.de (rzfoobar.is-asp.com [217.11.194.155]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB3NhhuR019659 for ; Tue, 3 Dec 2002 15:43:43 -0800 Received: from isg.de (B1ac8.pppool.de [213.7.26.200]) by mail.isg.de (Postfix) with ESMTP id 13E36EA7373; Wed, 4 Dec 2002 00:08:29 +0100 (CET) Message-ID: <3DED2EA9.D812C881@isg.de> Date: Tue, 03 Dec 2002 23:22:33 +0100 From: Stefan Rompf X-Mailer: Mozilla 4.79 [en] (X11; U; Linux 2.4.20 i686) X-Accept-Language: en MIME-Version: 1.0 To: "David S. Miller" Cc: netdev@oss.sgi.com Subject: Re: Patch resubmission: RFC2863 operstatus for 2.5.50 References: <3DE33D6D.25B9C9B4@isg.de> <20021126.021546.91313706.davem@redhat.com> Content-Type: multipart/mixed; boundary="------------DD5A4FC259A764B48D9E75EC" X-archive-position: 1283 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: srompf@isg.de Precedence: bulk X-list: netdev Content-Length: 13942 Lines: 481 This is a multi-part message in MIME format. --------------DD5A4FC259A764B48D9E75EC Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi David, here is an updated version with the following changes: -split the patch: First adds the userspace notification, the other (depends on the first) RFC2863 semantics. I am aware that we are well beyond feature freeze, and it makes the code more readable. -simplified locking as suggested -made the notification unconditional. We want it ;-) -fixed a bug in RFC2863 netif_carrier_ok() emulation (was !=, should be ==) Can you have a look? Stefan "David S. Miller" wrote: > > This locking below achieves nothing. > > + read_lock_irqsave(&dev->operstate_lock, flags); > + state = dev->operstate; > + read_unlock_irqrestore(&dev->operstate_lock, flags); > > In fact, the other side, locking when setting this value, can > be done with a simple spinlock. Probably something else in > the device struct can be reused. > > I also don't think this should be conditional, either we want > it or we don't. --------------DD5A4FC259A764B48D9E75EC Content-Type: text/plain; charset=us-ascii; name="patch-lw-2.5.50" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="patch-lw-2.5.50" diff -urN linux-2.5.50/include/linux/netdevice.h linux-2.5.50-lw/include/linux/netdevice.h --- linux-2.5.50/include/linux/netdevice.h 2002-11-22 22:41:08.000000000 +0100 +++ linux-2.5.50-lw/include/linux/netdevice.h 2002-12-02 22:56:34.000000000 +0100 @@ -207,7 +207,8 @@ __LINK_STATE_PRESENT, __LINK_STATE_SCHED, __LINK_STATE_NOCARRIER, - __LINK_STATE_RX_SCHED + __LINK_STATE_RX_SCHED, + __LINK_STATE_LINKWATCH_PENDING }; @@ -631,6 +632,8 @@ * who is responsible for serialization of these calls. */ +extern void linkwatch_fire_event(struct net_device *dev); + static inline int netif_carrier_ok(struct net_device *dev) { return !test_bit(__LINK_STATE_NOCARRIER, &dev->state); @@ -640,14 +643,16 @@ static inline void netif_carrier_on(struct net_device *dev) { - clear_bit(__LINK_STATE_NOCARRIER, &dev->state); + if (test_and_clear_bit(__LINK_STATE_NOCARRIER, &dev->state)) + linkwatch_fire_event(dev); if (netif_running(dev)) __netdev_watchdog_up(dev); } static inline void netif_carrier_off(struct net_device *dev) { - set_bit(__LINK_STATE_NOCARRIER, &dev->state); + if (!test_and_set_bit(__LINK_STATE_NOCARRIER, &dev->state)) + linkwatch_fire_event(dev); } /* Hot-plugging. */ diff -urN linux-2.5.50/net/core/Makefile linux-2.5.50-lw/net/core/Makefile --- linux-2.5.50/net/core/Makefile 2002-12-02 22:37:15.000000000 +0100 +++ linux-2.5.50-lw/net/core/Makefile 2002-12-02 23:16:18.000000000 +0100 @@ -12,7 +12,7 @@ obj-$(CONFIG_FILTER) += filter.o -obj-$(CONFIG_NET) += dev.o dev_mcast.o dst.o neighbour.o rtnetlink.o utils.o +obj-$(CONFIG_NET) += dev.o dev_mcast.o dst.o neighbour.o rtnetlink.o utils.o link_watch.o obj-$(CONFIG_NETFILTER) += netfilter.o obj-$(CONFIG_NET_DIVERT) += dv.o diff -urN linux-2.5.50/net/core/dev.c linux-2.5.50-lw/net/core/dev.c --- linux-2.5.50/net/core/dev.c 2002-11-22 22:40:43.000000000 +0100 +++ linux-2.5.50-lw/net/core/dev.c 2002-12-02 23:08:47.000000000 +0100 @@ -262,6 +262,7 @@ br_write_unlock_bh(BR_NETPROTO_LOCK); } +void linkwatch_run_queue(void); /** * dev_remove_pack - remove packet handler @@ -2642,6 +2643,15 @@ /* Rebroadcast unregister notification */ notifier_call_chain(&netdev_chain, NETDEV_UNREGISTER, dev); + + if (test_bit(__LINK_STATE_LINKWATCH_PENDING, &dev->state)) { + /* We must not have linkwatch events pending + * on unregister. If this happens, we simply + * run the queue unscheduled, resulting in a + * noop for this device + */ + linkwatch_run_queue(); + } } current->state = TASK_INTERRUPTIBLE; schedule_timeout(HZ / 4); diff -urN linux-2.5.50/net/core/link_watch.c linux-2.5.50-lw/net/core/link_watch.c --- linux-2.5.50/net/core/link_watch.c 1970-01-01 01:00:00.000000000 +0100 +++ linux-2.5.50-lw/net/core/link_watch.c 2002-12-02 22:35:00.000000000 +0100 @@ -0,0 +1,134 @@ +/* + * Linux network device link state notifaction + * + * Author: + * Stefan Rompf + * + * 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. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +enum lw_bits { + LW_RUNNING = 0, + LW_SE_USED +}; + +static unsigned long linkwatch_flags = 0; +static unsigned long linkwatch_nextevent = 0; + +static void linkwatch_event(void *dummy); +static DECLARE_WORK(linkwatch_work, linkwatch_event, NULL); + +static LIST_HEAD(lweventlist); +static spinlock_t lweventlist_lock = SPIN_LOCK_UNLOCKED; + +struct lw_event { + struct list_head list; + struct net_device *dev; +}; + +/* Avoid kmalloc() for most systems */ +static struct lw_event singleevent; + +/* Must be called with the rtnl semaphore held */ +void linkwatch_run_queue(void) { + LIST_HEAD(head); + struct list_head *n, *next; + + spin_lock_irq(&lweventlist_lock); + list_splice_init(&lweventlist, &head); + spin_unlock_irq(&lweventlist_lock); + + list_for_each_safe(n, next, &head) { + struct lw_event *event = list_entry(n, struct lw_event, list); + struct net_device *dev = event->dev; + + if (event == &singleevent) { + clear_bit(LW_SE_USED, &linkwatch_flags); + } else { + kfree(event); + } + + /* We are about to handle this device, + * so new events can be accepted + */ + clear_bit(__LINK_STATE_LINKWATCH_PENDING, &dev->state); + + if (dev->flags & IFF_UP) { + netdev_state_change(dev); + } + + dev_put(dev); + } +} + + +static void linkwatch_event(void *dummy) +{ + /* Limit the number of linkwatch events to one + * per second so that a runaway driver does not + * cause a storm of messages on the netlink + * socket + */ + linkwatch_nextevent = jiffies + HZ; + clear_bit(LW_RUNNING, &linkwatch_flags); + + rtnl_lock(); + linkwatch_run_queue(); + rtnl_unlock(); +} + + +void linkwatch_fire_event(struct net_device *dev) +{ + if (!test_and_set_bit(__LINK_STATE_LINKWATCH_PENDING, &dev->state)) { + unsigned long flags; + struct lw_event *event; + + if (test_and_set_bit(LW_SE_USED, &linkwatch_flags)) { + event = kmalloc(sizeof(struct lw_event), GFP_ATOMIC); + + if (unlikely(event == NULL)) { + clear_bit(__LINK_STATE_LINKWATCH_PENDING, &dev->state); + return; + } + } else { + event = &singleevent; + } + + dev_hold(dev); + event->dev = dev; + + spin_lock_irqsave(&lweventlist_lock, flags); + list_add_tail(&event->list, &lweventlist); + spin_unlock_irqrestore(&lweventlist_lock, flags); + + if (!test_and_set_bit(LW_RUNNING, &linkwatch_flags)) { + unsigned long thisevent = jiffies; + + if (thisevent >= linkwatch_nextevent) { + schedule_work(&linkwatch_work); + } else { + schedule_delayed_work(&linkwatch_work, linkwatch_nextevent - thisevent); + } + } + } +} + diff -urN linux-2.5.50/net/netsyms.c linux-2.5.50-lw/net/netsyms.c --- linux-2.5.50/net/netsyms.c 2002-11-22 22:40:39.000000000 +0100 +++ linux-2.5.50-lw/net/netsyms.c 2002-12-02 23:09:51.000000000 +0100 @@ -632,4 +632,6 @@ EXPORT_SYMBOL(wireless_send_event); #endif /* CONFIG_NET_RADIO || CONFIG_NET_PCMCIA_RADIO */ +EXPORT_SYMBOL(linkwatch_fire_event); + #endif /* CONFIG_NET */ --------------DD5A4FC259A764B48D9E75EC Content-Type: text/plain; charset=us-ascii; name="patch-lw-2.5.50-rfc2863" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="patch-lw-2.5.50-rfc2863" diff -urN linux-2.5.50-lw/include/linux/netdevice.h linux-2.5.50-lw-rfc2863/include/linux/netdevice.h --- linux-2.5.50-lw/include/linux/netdevice.h 2002-12-02 22:56:34.000000000 +0100 +++ linux-2.5.50-lw-rfc2863/include/linux/netdevice.h 2002-12-02 22:45:14.000000000 +0100 @@ -204,14 +204,26 @@ { __LINK_STATE_XOFF=0, __LINK_STATE_START, - __LINK_STATE_PRESENT, + __LINK_STATE_PRESENT_OBSOLETE, __LINK_STATE_SCHED, - __LINK_STATE_NOCARRIER, + __LINK_STATE_NOCARRIER_OBSOLETE, __LINK_STATE_RX_SCHED, __LINK_STATE_LINKWATCH_PENDING }; +/* Device operative state as per RFC2863 */ +enum netdev_operstate_t { + NETDEV_OPER_UP = 1, + NETDEV_OPER_DOWN, /* Obsoletes LINK_STATE_NOCARRIER */ + NETDEV_OPER_TESTING, + NETDEV_OPER_UNKNOWN, + NETDEV_OPER_DORMANT, + NETDEV_OPER_NOTPRESENT, /* Obsoletes !LINK_STATE_PRESENT */ + NETDEV_OPER_LOWERDOWN +}; + + /* * This structure holds at boot time configured netdevice settings. They * are then used in the device probing. @@ -309,6 +321,10 @@ * which this device is member of. */ + /* Operative state, access semaphore */ + spinlock_t operstate_lock; + unsigned char operstate; + /* Interface address info. */ unsigned char broadcast[MAX_ADDR_LEN]; /* hw bcast add */ unsigned char dev_addr[MAX_ADDR_LEN]; /* hw address */ @@ -634,36 +650,63 @@ extern void linkwatch_fire_event(struct net_device *dev); +static inline unsigned char netif_set_operstate(struct net_device *dev, unsigned char newstate) +{ + unsigned long flags; + unsigned char oldstate; + + spin_lock_irqsave(&dev->operstate_lock, flags); + oldstate = dev->operstate; + dev->operstate = newstate; + spin_unlock_irqrestore(&dev->operstate_lock, flags); + + if (oldstate != newstate) linkwatch_fire_event(dev); + + return oldstate; +} + +static inline unsigned char netif_get_operstate(struct net_device *dev) +{ + return(dev->operstate); +} + static inline int netif_carrier_ok(struct net_device *dev) { - return !test_bit(__LINK_STATE_NOCARRIER, &dev->state); + return netif_get_operstate(dev) == NETDEV_OPER_UP; +} + +static inline int netif_operstate_to_iff_running(struct net_device *dev) +{ + unsigned char state = netif_get_operstate(dev); + + return((1 << state) & + (1 << NETDEV_OPER_UP | 1 << NETDEV_OPER_UNKNOWN)); } extern void __netdev_watchdog_up(struct net_device *dev); + static inline void netif_carrier_on(struct net_device *dev) { - if (test_and_clear_bit(__LINK_STATE_NOCARRIER, &dev->state)) - linkwatch_fire_event(dev); + netif_set_operstate(dev, NETDEV_OPER_UP); if (netif_running(dev)) __netdev_watchdog_up(dev); } static inline void netif_carrier_off(struct net_device *dev) { - if (!test_and_set_bit(__LINK_STATE_NOCARRIER, &dev->state)) - linkwatch_fire_event(dev); + netif_set_operstate(dev, NETDEV_OPER_DOWN); } /* Hot-plugging. */ static inline int netif_device_present(struct net_device *dev) { - return test_bit(__LINK_STATE_PRESENT, &dev->state); + return netif_get_operstate(dev) != NETDEV_OPER_NOTPRESENT; } static inline void netif_device_detach(struct net_device *dev) { - if (test_and_clear_bit(__LINK_STATE_PRESENT, &dev->state) && + if (netif_set_operstate(dev, NETDEV_OPER_NOTPRESENT) != NETDEV_OPER_NOTPRESENT && netif_running(dev)) { netif_stop_queue(dev); } @@ -671,7 +714,7 @@ static inline void netif_device_attach(struct net_device *dev) { - if (!test_and_set_bit(__LINK_STATE_PRESENT, &dev->state) && + if (netif_set_operstate(dev, NETDEV_OPER_UNKNOWN) == NETDEV_OPER_NOTPRESENT && netif_running(dev)) { netif_wake_queue(dev); __netdev_watchdog_up(dev); diff -urN linux-2.5.50-lw/net/core/dev.c linux-2.5.50-lw-rfc2863/net/core/dev.c --- linux-2.5.50-lw/net/core/dev.c 2002-12-02 23:08:47.000000000 +0100 +++ linux-2.5.50-lw-rfc2863/net/core/dev.c 2002-12-02 23:22:03.000000000 +0100 @@ -199,7 +199,6 @@ int netdev_fastroute_obstacles; #endif - /******************************************************************************* Protocol management and registration routines @@ -2019,7 +2018,7 @@ IFF_RUNNING)) | (dev->gflags & (IFF_PROMISC | IFF_ALLMULTI)); - if (netif_running(dev) && netif_carrier_ok(dev)) + if (netif_running(dev) && netif_operstate_to_iff_running(dev)) ifr->ifr_flags |= IFF_RUNNING; return 0; @@ -2434,6 +2433,10 @@ goto out; #endif /* CONFIG_NET_DIVERT */ + /* Initial operstate */ + spin_lock_init(&dev->operstate_lock); + dev->operstate = NETDEV_OPER_UNKNOWN; + dev->iflink = -1; /* Init, if this function is available */ @@ -2459,13 +2462,6 @@ if (!dev->rebuild_header) dev->rebuild_header = default_rebuild_header; - /* - * Default initial state at registry is that the - * device is present. - */ - - set_bit(__LINK_STATE_PRESENT, &dev->state); - dev->next = NULL; dev_init_scheduler(dev); write_lock_bh(&dev_base_lock); @@ -2746,6 +2742,8 @@ #ifdef CONFIG_NET_FASTROUTE dev->fastpath_lock = RW_LOCK_UNLOCKED; #endif + spin_lock_init(&dev->operstate_lock); + dev->operstate = NETDEV_OPER_UNKNOWN; dev->xmit_lock_owner = -1; dev->iflink = -1; dev_hold(dev); @@ -2778,7 +2776,6 @@ if (!dev->rebuild_header) dev->rebuild_header = default_rebuild_header; dev_init_scheduler(dev); - set_bit(__LINK_STATE_PRESENT, &dev->state); } } diff -urN linux-2.5.50-lw/net/core/rtnetlink.c linux-2.5.50-lw-rfc2863/net/core/rtnetlink.c --- linux-2.5.50-lw/net/core/rtnetlink.c 2002-11-22 22:41:13.000000000 +0100 +++ linux-2.5.50-lw-rfc2863/net/core/rtnetlink.c 2002-12-02 22:35:00.000000000 +0100 @@ -165,7 +165,7 @@ r->ifi_flags = dev->flags; r->ifi_change = change; - if (!netif_running(dev) || !netif_carrier_ok(dev)) + if (!netif_running(dev) || !netif_operstate_to_iff_running(dev)) r->ifi_flags &= ~IFF_RUNNING; else r->ifi_flags |= IFF_RUNNING; --------------DD5A4FC259A764B48D9E75EC-- From jgarzik@pobox.com Tue Dec 3 16:40:59 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 03 Dec 2002 16:41:03 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB40ewuR025683 for ; Tue, 3 Dec 2002 16:40:58 -0800 Received: from rdu74-162-040.nc.rr.com ([24.74.162.40] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18JNdz-0004rj-00; Wed, 04 Dec 2002 00:44:04 +0000 Message-ID: <3DED4FB4.5070700@pobox.com> Date: Tue, 03 Dec 2002 19:43:32 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021126 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Stefan Rompf CC: davem@redhat.com, netdev@oss.sgi.com Subject: Re: Patch: Backport of link state notification to 2.4.20 References: <3DD2D204.C9B7FA2D@isg.de> <3DED302A.E3DEB585@isg.de> In-Reply-To: <3DED302A.E3DEB585@isg.de> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1285 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Content-Length: 5946 Lines: 222 Stefan Rompf wrote: > Hi David, > > attached is the recent backport of link state notification for the > stable kernel series. The feature is optional and can be configured away > to nothing, and tested on several systems. > It might be a backport, but I haven't seen a 2.5.x version posted in a while. If this is going into the stable series, it should already be merged in 2.5.x at the same time, if not first. > I'd really like to have it in 2.4.21, and as your the one to decide > before Marcelo gets it, can you have a look? s/before/if/ :) comments follow. note these are all minor objections: I think the patch needs revising, but I also think it is ok overall and support its eventual inclusion [after tidying]. Not that my opinion matters much here compared to DaveM's (and Jamal's and Alexey's and...)... overall, I have one question: how does netdev_state_change(dev) propagate link status to userspace? Via the IFF_RUNNING flag's presence/absence when IFF_UP is true? > diff -uNr linux-2.4.20rc1/include/linux/netdevice.h linux/include/linux/netdevice.h > --- linux-2.4.20rc1/include/linux/netdevice.h 2002-11-05 00:31:42.000000000 +0100 > +++ linux/include/linux/netdevice.h 2002-11-13 22:32:46.000000000 +0100 > @@ -630,6 +631,10 @@ > * who is responsible for serialization of these calls. > */ > > +#ifdef CONFIG_LINKWATCH > +extern void linkwatch_fire_event(struct net_device *dev); > +#endif remove the ifdef, not needed and ifdefs are discouraged in all Linux code. > diff -uNr linux-2.4.20rc1/net/Config.in linux/net/Config.in > --- linux-2.4.20rc1/net/Config.in 2002-08-03 02:39:46.000000000 +0200 > +++ linux/net/Config.in 2002-11-13 22:32:46.000000000 +0100 > @@ -48,6 +48,7 @@ > bool ' Per-VC IP filter kludge' CONFIG_ATM_BR2684_IPFILTER > fi > fi > + bool 'Device link state notification (EXPERIMENTAL)' CONFIG_LINKWATCH ifyou mark it experimental, then it should be dep_bool ... CONFIG_LINKWATCH $CONFIG_EXPERIMENTAL > diff -uNr linux-2.4.20rc1/net/core/Makefile linux/net/core/Makefile > --- linux-2.4.20rc1/net/core/Makefile 2002-08-03 02:39:46.000000000 +0200 > +++ linux/net/core/Makefile 2002-11-13 22:33:32.000000000 +0100 > @@ -31,4 +31,6 @@ > # Ugly. I wish all wireless drivers were moved in drivers/net/wireless > obj-$(CONFIG_NET_PCMCIA_RADIO) += wireless.o > > +obj-$(CONFIG_LINKWATCH) += link_watch.o > + > include $(TOPDIR)/Rules.make add it to export-objs too (because of below change) > diff -uNr linux-2.4.20rc1/net/core/dev.c linux/net/core/dev.c > --- linux-2.4.20rc1/net/core/dev.c 2002-11-05 00:31:42.000000000 +0100 > +++ linux/net/core/dev.c 2002-11-13 22:32:46.000000000 +0100 > @@ -194,6 +194,12 @@ > #endif > > > +#ifdef CONFIG_LINKWATCH > +extern void linkwatch_init(void); > +extern void linkwatch_run_queue(void); > +#endif ug :) the ifdef can be killed, and the prototypes should be in netdevice.h (or any other header), not in mainline code. > @@ -2675,6 +2693,10 @@ > dv_init(); > #endif /* CONFIG_NET_DIVERT */ > > +#ifdef CONFIG_LINKWATCH > + linkwatch_init(); > +#endif no need for an ifdef, make linkwatch_init() a no-op static inline for the !CONFIG_LINKWATCH case. > +static unsigned long linkwatch_flags = 0; > +static unsigned long linkwatch_nextevent = 0; statics are automatically initialized to zero, don't do it explicitly. you waste a couple bytes in the kernel image storing a zero value. > + > +static void linkwatch_event(void *dummy); > +static void linkwatch_timer(unsigned long dummy); > + > +static struct tq_struct linkwatch_tq; > +static struct timer_list linkwatch_ti; > + > +static LIST_HEAD(lweventlist); > +static spinlock_t lweventlist_lock = SPIN_LOCK_UNLOCKED; why initialize some complex structs programmatically and some explicitly? IMO for consistency you should initialize lweventlist_lock in linkwatch_init(). (or vice versa) > +/* Must be called with the rtnl semaphore held */ > +void linkwatch_run_queue(void) { > + LIST_HEAD(head); > + struct list_head *n, *next; > + > + spin_lock_irq(&lweventlist_lock); > + list_splice_init(&lweventlist, &head); > + spin_unlock_irq(&lweventlist_lock); spin_lock_irq{save,restore} would probably better serve you here... > + > + list_for_each_safe(n, next, &head) { > + struct lw_event *event = list_entry(n, struct lw_event, list); > + struct net_device *dev = event->dev; > + > + if (event == &singleevent) { > + clear_bit(LW_SE_USED, &linkwatch_flags); > + } else { > + kfree(event); > + } style: braces not needed > + > + /* We are about to handle this device, > + * so new events can be accepted > + */ > + clear_bit(__LINK_STATE_LINKWATCH_PENDING, &dev->state); > + > + if (dev->flags & IFF_UP) { > + netdev_state_change(dev); > + } likewise. (pointlessly makes code longer) > + > + dev_put(dev); > + } > +} > + > + > +static void linkwatch_event(void *dummy) > +{ > + /* Limit the number of linkwatch events to one > + * per second so that a runaway driver does not > + * cause a storm of messages on the netlink > + * socket > + */ > + linkwatch_nextevent = jiffies + HZ; > + clear_bit(LW_RUNNING, &linkwatch_flags); the high availability folks would prefer a half-second (HZ >> 1). > +void __init linkwatch_init(void) { > + linkwatch_ti.function = linkwatch_timer; > + init_timer(&linkwatch_ti); > + INIT_TQUEUE(&linkwatch_tq, linkwatch_event, NULL); > +} set the timer function after the initialize the timer :) > + > diff -uNr linux-2.4.20rc1/net/netsyms.c linux/net/netsyms.c > --- linux-2.4.20rc1/net/netsyms.c 2002-11-05 00:31:42.000000000 +0100 > +++ linux/net/netsyms.c 2002-11-13 22:33:32.000000000 +0100 > @@ -591,6 +591,10 @@ > > EXPORT_SYMBOL(softnet_data); > > +#ifdef CONFIG_LINKWATCH > +EXPORT_SYMBOL(linkwatch_fire_event); > +#endif move this to link_watch.c so that the featureset is fully encapsulated. Jeff From jgarzik@pobox.com Tue Dec 3 16:42:54 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 03 Dec 2002 16:42:55 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB40gquR026073 for ; Tue, 3 Dec 2002 16:42:53 -0800 Received: from rdu74-162-040.nc.rr.com ([24.74.162.40] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18JNfr-0004tk-00; Wed, 04 Dec 2002 00:45:59 +0000 Message-ID: <3DED5027.7070807@pobox.com> Date: Tue, 03 Dec 2002 19:45:27 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021126 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Stefan Rompf CC: davem@redhat.com, netdev@oss.sgi.com Subject: Re: Patch: Backport of link state notification to 2.4.20 References: <3DD2D204.C9B7FA2D@isg.de> <3DED302A.E3DEB585@isg.de> <3DED4FB4.5070700@pobox.com> In-Reply-To: <3DED4FB4.5070700@pobox.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1286 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Content-Length: 670 Lines: 22 Jeff Garzik wrote: > Stefan Rompf wrote: > >> Hi David, >> >> attached is the recent backport of link state notification for the >> stable kernel series. The feature is optional and can be configured away >> to nothing, and tested on several systems. >> > > It might be a backport, but I haven't seen a 2.5.x version posted in a > while. If this is going into the stable series, it should already be > merged in 2.5.x at the same time, if not first. ...and of course this email arrives immediately in my inbox ;-) Which leads to the question: why CONFIG_LINKWATCH in 2.4 but not 2.5? Let's do the same in both kernels unless there is a good reason not to... From jgarzik@pobox.com Tue Dec 3 16:50:23 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 03 Dec 2002 16:50:25 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB40oMuR026648 for ; Tue, 3 Dec 2002 16:50:23 -0800 Received: from rdu74-162-040.nc.rr.com ([24.74.162.40] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18JNn6-000501-00; Wed, 04 Dec 2002 00:53:29 +0000 Message-ID: <3DED51E9.1080408@pobox.com> Date: Tue, 03 Dec 2002 19:52:57 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021126 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Stefan Rompf CC: "David S. Miller" , netdev@oss.sgi.com Subject: Re: Patch resubmission: RFC2863 operstatus for 2.5.50 References: <3DE33D6D.25B9C9B4@isg.de> <20021126.021546.91313706.davem@redhat.com> <3DED2EA9.D812C881@isg.de> In-Reply-To: <3DED2EA9.D812C881@isg.de> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1287 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Content-Length: 287 Lines: 12 Pardon my dumb question, but what parts of RFC2863 require kernel additions over and above your link state patch? Your second patch I am less enthusiastic about than the first... :( I wonder if userspace cannot figure out ifOperStatus from existing data we make available? Jeff From anand@eis.iisc.ernet.in Tue Dec 3 23:35:31 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 03 Dec 2002 23:35:33 -0800 (PST) Received: from iisc.ernet.in (www-cache.iisc.ernet.in [144.16.64.3] (may be forged)) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB47ZQuR031859 for ; Tue, 3 Dec 2002 23:35:29 -0800 Received: from eis.iisc.ernet.in (eis.iisc.ernet.in [144.16.64.5]) by iisc.ernet.in (8.9.2/8.9.0) with SMTP id NAA59458 for ; Wed, 4 Dec 2002 13:09:45 +0530 (IST) Received: by eis.iisc.ernet.in (SMI-8.6/SMI-4.1) id NAA02825; Wed, 4 Dec 2002 13:08:31 +0530 From: anand@eis.iisc.ernet.in (SVR Anand) Message-Id: <200212040738.NAA02825@eis.iisc.ernet.in> Subject: tcp flows hash function To: netdev@oss.sgi.com Date: Wed, 4 Dec 2002 13:08:31 +0530 (GMT+05:30) X-Mailer: ELM [version 2.5 PL2] MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1288 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: anand@eis.iisc.ernet.in Precedence: bulk X-list: netdev Content-Length: 1004 Lines: 33 Hi, I am writing a program that requires maintanence of per-connection statistics of many tcp connections based on multi-field classification. The problem is that of fast search and update when there are 1000s of connections. Couple of questions. 1. In many places of network code, I am seeing hashing being used. Can I also use the same ? From the recently published literature on packet classification, people are talking about some sort of trie variants. I would like to know if someone has done performance comparison of the algorithm used in Linux against other schemes. 2. While going through tcp_ipv4.c, I happened to see tcp_hashfn. What is the algorithm behind this ? static __inline__ int tcp_hashfn(__u32 laddr, __u16 lport, __u32 faddr, __u16 fport) { int h = ((laddr ^ lport) ^ (faddr ^ fport)); h ^= h>>16; h ^= h>>8; return h & (tcp_ehash_size - 1); } Any inputs from you will help me proceed further. Anand From srompf@isg.de Wed Dec 4 02:17:10 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 04 Dec 2002 02:17:14 -0800 (PST) Received: from mail.isg.de (rzfoobar.is-asp.com [217.11.194.155]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB4AGxuR018902 for ; Wed, 4 Dec 2002 02:16:59 -0800 Received: from barkeeper.isg.de (barkeeper.is-asp.com [192.168.5.46]) by mail.isg.de (Postfix) with ESMTP id D2BAEEA90A8; Wed, 4 Dec 2002 10:44:58 +0100 (CET) Received: from isg.de (localhost.localdomain [127.0.0.1]) by barkeeper.isg.de (8.9.3/8.9.3) with ESMTP id KAA01050; Wed, 4 Dec 2002 10:44:58 +0100 Message-ID: <3DEDCE9A.61FDEBBC@isg.de> Date: Wed, 04 Dec 2002 10:44:58 +0100 From: Stefan Rompf X-Mailer: Mozilla 4.8 [en] (X11; U; Linux 2.4.20-rc4-sr i686) X-Accept-Language: en MIME-Version: 1.0 To: Jeff Garzik Cc: "David S. Miller" , netdev@oss.sgi.com Subject: Re: Patch resubmission: RFC2863 operstatus for 2.5.50 References: <3DE33D6D.25B9C9B4@isg.de> <20021126.021546.91313706.davem@redhat.com> <3DED2EA9.D812C881@isg.de> <3DED51E9.1080408@pobox.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1289 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: srompf@isg.de Precedence: bulk X-list: netdev Content-Length: 529 Lines: 20 Hi, Jeff Garzik wrote: > Pardon my dumb question, but what parts of RFC2863 require kernel > additions over and above your link state patch? the kernel does not know LOWERLAYERDOWN, TESTING, DORMANT, UNKNOWN. They can be useful when drivers adopt to this scheme. > Your second patch I am less enthusiastic about than the first... :( Well, with your opinion I count two against two: I want it, Jamal has proposed the semantics, and Alexey doesn't want to waste a single bit of a netlink message for this. What now? Stefan From kiran@in.ibm.com Wed Dec 4 04:35:50 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 04 Dec 2002 04:35:53 -0800 (PST) Received: from e3.ny.us.ibm.com (e3.ny.us.ibm.com [32.97.182.103]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB4CZnuR021984 for ; Wed, 4 Dec 2002 04:35:50 -0800 Received: from northrelay04.pok.ibm.com (northrelay04.pok.ibm.com [9.56.224.206]) by e3.ny.us.ibm.com (8.12.2/8.12.2) with ESMTP id gB4Ccrfw117300; Wed, 4 Dec 2002 07:38:53 -0500 Received: from asterix.in.ibm.com (asterix.in.ibm.com [9.182.12.249]) by northrelay04.pok.ibm.com (8.12.3/NCO/VER6.4) with ESMTP id gB4CclpG200538; Wed, 4 Dec 2002 07:38:49 -0500 Received: (from kirant@localhost) by asterix.in.ibm.com (8.11.2/8.11.2) id gB4CbXj21415; Wed, 4 Dec 2002 18:07:33 +0530 Date: Wed, 4 Dec 2002 18:07:32 +0530 From: Ravikiran G Thirumalai To: linux-kernel@vger.kernel.org Cc: netdev , "David S. Miller " , Andrew Morton , dipankar@in.ibm.com Subject: Re: [patch] Change Networking mibs to use kmalloc_percpu -- 2/3 Message-ID: <20021204180732.D17375@in.ibm.com> References: <20021204180510.C17375@in.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20021204180510.C17375@in.ibm.com>; from kiran@in.ibm.com on Wed, Dec 04, 2002 at 06:05:10PM +0530 X-archive-position: 1290 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: kiran@in.ibm.com Precedence: bulk X-list: netdev Content-Length: 9989 Lines: 302 This patch is 2 of 3 D: Name: ipv6mibs-2.5.50-1.patch D: Author: Ravikiran Thirumalai D: Description: Changes ipv6 stats to use kmalloc_percpu from the traditional D: padded NR_CPUS arrays include/net/ipv6.h | 11 ++++-- net/ipv6/af_inet6.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++ net/ipv6/icmp.c | 8 ++-- net/ipv6/ipv6_sockglue.c | 2 - net/ipv6/proc.c | 38 ++++++++++++--------- net/ipv6/udp.c | 2 - 6 files changed, 119 insertions(+), 25 deletions(-) diff -ruN -X dontdiff linux-2.5.50/include/net/ipv6.h mibstats-2.5.50/include/net/ipv6.h --- linux-2.5.50/include/net/ipv6.h Thu Nov 28 04:06:17 2002 +++ mibstats-2.5.50/include/net/ipv6.h Wed Dec 4 12:13:33 2002 @@ -19,6 +19,7 @@ #include #include #include +#include #define SIN6_LEN_RFC2133 24 @@ -105,15 +106,19 @@ /* sysctls */ extern int sysctl_ipv6_bindv6only; -extern struct ipv6_mib ipv6_statistics[NR_CPUS*2]; +DECLARE_SNMP_STAT(struct ipv6_mib, ipv6_statistics); #define IP6_INC_STATS(field) SNMP_INC_STATS(ipv6_statistics, field) #define IP6_INC_STATS_BH(field) SNMP_INC_STATS_BH(ipv6_statistics, field) #define IP6_INC_STATS_USER(field) SNMP_INC_STATS_USER(ipv6_statistics, field) -extern struct icmpv6_mib icmpv6_statistics[NR_CPUS*2]; +DECLARE_SNMP_STAT(struct icmpv6_mib, icmpv6_statistics); #define ICMP6_INC_STATS(field) SNMP_INC_STATS(icmpv6_statistics, field) #define ICMP6_INC_STATS_BH(field) SNMP_INC_STATS_BH(icmpv6_statistics, field) #define ICMP6_INC_STATS_USER(field) SNMP_INC_STATS_USER(icmpv6_statistics, field) -extern struct udp_mib udp_stats_in6[NR_CPUS*2]; +#define ICMP6_STATS_PTR_BH(field) \ + (& \ + ((per_cpu_ptr(icmpv6_statistics[0], smp_processor_id()))-> \ + field)) +DECLARE_SNMP_STAT(struct udp_mib, udp_stats_in6); #define UDP6_INC_STATS(field) SNMP_INC_STATS(udp_stats_in6, field) #define UDP6_INC_STATS_BH(field) SNMP_INC_STATS_BH(udp_stats_in6, field) #define UDP6_INC_STATS_USER(field) SNMP_INC_STATS_USER(udp_stats_in6, field) diff -ruN -X dontdiff linux-2.5.50/net/ipv6/af_inet6.c mibstats-2.5.50/net/ipv6/af_inet6.c --- linux-2.5.50/net/ipv6/af_inet6.c Thu Nov 28 04:06:02 2002 +++ mibstats-2.5.50/net/ipv6/af_inet6.c Wed Dec 4 12:13:33 2002 @@ -619,6 +619,81 @@ inet_unregister_protosw(p); } +static int __init init_ipv6_mibs(void) +{ + int i; + + ipv6_statistics[0] = kmalloc_percpu(sizeof (struct ipv6_mib), + GFP_KERNEL); + if (!ipv6_statistics[0]) + goto err_ip_mib0; + ipv6_statistics[1] = kmalloc_percpu(sizeof (struct ipv6_mib), + GFP_KERNEL); + if (!ipv6_statistics[1]) + goto err_ip_mib1; + + icmpv6_statistics[0] = kmalloc_percpu(sizeof (struct icmpv6_mib), + GFP_KERNEL); + if (!icmpv6_statistics[0]) + goto err_icmp_mib0; + icmpv6_statistics[1] = kmalloc_percpu(sizeof (struct icmpv6_mib), + GFP_KERNEL); + if (!icmpv6_statistics[1]) + goto err_icmp_mib1; + + udp_stats_in6[0] = kmalloc_percpu(sizeof (struct udp_mib), + GFP_KERNEL); + if (!udp_stats_in6[0]) + goto err_udp_mib0; + udp_stats_in6[1] = kmalloc_percpu(sizeof (struct udp_mib), + GFP_KERNEL); + if (!udp_stats_in6[1]) + goto err_udp_mib1; + + /* Zero all percpu versions of the mibs */ + for (i = 0; i < NR_CPUS; i++) { + if (cpu_possible(i)) { + memset(per_cpu_ptr(ipv6_statistics[0], i), 0, + sizeof (struct ipv6_mib)); + memset(per_cpu_ptr(ipv6_statistics[1], i), 0, + sizeof (struct ipv6_mib)); + memset(per_cpu_ptr(icmpv6_statistics[0], i), 0, + sizeof (struct icmpv6_mib)); + memset(per_cpu_ptr(icmpv6_statistics[1], i), 0, + sizeof (struct icmpv6_mib)); + memset(per_cpu_ptr(udp_stats_in6[0], i), 0, + sizeof (struct udp_mib)); + memset(per_cpu_ptr(udp_stats_in6[1], i), 0, + sizeof (struct udp_mib)); + } + } + return 0; + +err_udp_mib1: + kfree_percpu(udp_stats_in6[0]); +err_udp_mib0: + kfree_percpu(icmpv6_statistics[1]); +err_icmp_mib1: + kfree_percpu(icmpv6_statistics[0]); +err_icmp_mib0: + kfree_percpu(ipv6_statistics[1]); +err_ip_mib1: + kfree_percpu(ipv6_statistics[0]); +err_ip_mib0: + return -ENOMEM; + +} + +static void __exit cleanup_ipv6_mibs(void) +{ + kfree_percpu(ipv6_statistics[0]); + kfree_percpu(ipv6_statistics[1]); + kfree_percpu(icmpv6_statistics[0]); + kfree_percpu(icmpv6_statistics[1]); + kfree_percpu(udp_stats_in6[0]); + kfree_percpu(udp_stats_in6[1]); +} + static int __init inet6_init(void) { struct sk_buff *dummy_skb; @@ -668,6 +743,11 @@ * be able to create sockets. (?? is this dangerous ??) */ (void) sock_register(&inet6_family_ops); + + /* Initialise ipv6 mibs */ + err = init_ipv6_mibs(); + if (err) + goto init_mib_fail; /* * ipngwg API draft makes clear that the correct semantics @@ -735,6 +815,8 @@ #if defined(MODULE) && defined(CONFIG_SYSCTL) ipv6_sysctl_unregister(); #endif + cleanup_ipv6_mibs(); +init_mib_fail: return err; } module_init(inet6_init); @@ -765,6 +847,7 @@ #ifdef CONFIG_SYSCTL ipv6_sysctl_unregister(); #endif + cleanup_ipv6_mibs(); } module_exit(inet6_exit); #endif /* MODULE */ diff -ruN -X dontdiff linux-2.5.50/net/ipv6/icmp.c mibstats-2.5.50/net/ipv6/icmp.c --- linux-2.5.50/net/ipv6/icmp.c Thu Nov 28 04:05:55 2002 +++ mibstats-2.5.50/net/ipv6/icmp.c Wed Dec 4 12:13:33 2002 @@ -65,7 +65,7 @@ #include #include -struct icmpv6_mib icmpv6_statistics[NR_CPUS*2]; +DEFINE_SNMP_STAT(struct icmpv6_mib, icmpv6_statistics); /* * ICMP socket for flow control. @@ -377,7 +377,7 @@ ip6_build_xmit(sk, icmpv6_getfrag, &msg, &fl, len, NULL, -1, MSG_DONTWAIT); if (type >= ICMPV6_DEST_UNREACH && type <= ICMPV6_PARAMPROB) - (&(icmpv6_statistics[smp_processor_id()*2].Icmp6OutDestUnreachs))[type-1]++; + ICMP6_STATS_PTR_BH(Icmp6OutDestUnreachs) [type-1]++; ICMP6_INC_STATS_BH(Icmp6OutMsgs); out: icmpv6_xmit_unlock(); @@ -539,9 +539,9 @@ type = hdr->icmp6_type; if (type >= ICMPV6_DEST_UNREACH && type <= ICMPV6_PARAMPROB) - (&icmpv6_statistics[smp_processor_id()*2].Icmp6InDestUnreachs)[type-ICMPV6_DEST_UNREACH]++; + ICMP6_STATS_PTR_BH(Icmp6InDestUnreachs)[type-ICMPV6_DEST_UNREACH]++; else if (type >= ICMPV6_ECHO_REQUEST && type <= NDISC_REDIRECT) - (&icmpv6_statistics[smp_processor_id()*2].Icmp6InEchos)[type-ICMPV6_ECHO_REQUEST]++; + ICMP6_STATS_PTR_BH(Icmp6InEchos)[type-ICMPV6_ECHO_REQUEST]++; switch (type) { case ICMPV6_ECHO_REQUEST: diff -ruN -X dontdiff linux-2.5.50/net/ipv6/ipv6_sockglue.c mibstats-2.5.50/net/ipv6/ipv6_sockglue.c --- linux-2.5.50/net/ipv6/ipv6_sockglue.c Thu Nov 28 04:05:49 2002 +++ mibstats-2.5.50/net/ipv6/ipv6_sockglue.c Wed Dec 4 12:13:33 2002 @@ -51,7 +51,7 @@ #include -struct ipv6_mib ipv6_statistics[NR_CPUS*2]; +DEFINE_SNMP_STAT(struct ipv6_mib, ipv6_statistics); static struct packet_type ipv6_packet_type = { diff -ruN -X dontdiff linux-2.5.50/net/ipv6/proc.c mibstats-2.5.50/net/ipv6/proc.c --- linux-2.5.50/net/ipv6/proc.c Thu Nov 28 04:05:58 2002 +++ mibstats-2.5.50/net/ipv6/proc.c Wed Dec 4 12:13:33 2002 @@ -59,11 +59,11 @@ static struct snmp6_item { char *name; - unsigned long *ptr; - int mibsize; + void **mib; + int offset; } snmp6_list[] = { /* ipv6 mib according to draft-ietf-ipngwg-ipv6-mib-04 */ -#define SNMP6_GEN(x) { #x , &ipv6_statistics[0].x, sizeof(struct ipv6_mib)/sizeof(unsigned long) } +#define SNMP6_GEN(x) { #x , (void **)ipv6_statistics, offsetof(struct ipv6_mib, x) } SNMP6_GEN(Ip6InReceives), SNMP6_GEN(Ip6InHdrErrors), SNMP6_GEN(Ip6InTooBigErrors), @@ -97,7 +97,7 @@ OutRouterAdvertisements too. OutGroupMembQueries too. */ -#define SNMP6_GEN(x) { #x , &icmpv6_statistics[0].x, sizeof(struct icmpv6_mib)/sizeof(unsigned long) } +#define SNMP6_GEN(x) { #x , (void **)icmpv6_statistics, offsetof(struct icmpv6_mib, x) } SNMP6_GEN(Icmp6InMsgs), SNMP6_GEN(Icmp6InErrors), SNMP6_GEN(Icmp6InDestUnreachs), @@ -127,7 +127,7 @@ SNMP6_GEN(Icmp6OutGroupMembResponses), SNMP6_GEN(Icmp6OutGroupMembReductions), #undef SNMP6_GEN -#define SNMP6_GEN(x) { "Udp6" #x , &udp_stats_in6[0].Udp##x, sizeof(struct udp_mib)/sizeof(unsigned long) } +#define SNMP6_GEN(x) { "Udp6" #x , (void **)udp_stats_in6, offsetof(struct udp_mib, Udp##x) } SNMP6_GEN(InDatagrams), SNMP6_GEN(NoPorts), SNMP6_GEN(InErrors), @@ -135,17 +135,23 @@ #undef SNMP6_GEN }; -static unsigned long fold_field(unsigned long *ptr, int size) +static unsigned long +fold_field(void *mib[], int offt) { - unsigned long res = 0; - int i; - - for (i=0; i -struct udp_mib udp_stats_in6[NR_CPUS*2]; +DEFINE_SNMP_STAT(struct udp_mib, udp_stats_in6); /* XXX This is identical to tcp_ipv6.c:ipv6_rcv_saddr_equal, put * XXX it somewhere common. -DaveM From kiran@in.ibm.com Wed Dec 4 04:36:45 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 04 Dec 2002 04:36:48 -0800 (PST) Received: from e6.ny.us.ibm.com (e6.ny.us.ibm.com [32.97.182.106]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB4CaiuR022197 for ; Wed, 4 Dec 2002 04:36:44 -0800 Received: from northrelay04.pok.ibm.com (northrelay04.pok.ibm.com [9.56.224.206]) by e6.ny.us.ibm.com (8.12.2/8.12.2) with ESMTP id gB4CdlvY150586; Wed, 4 Dec 2002 07:39:47 -0500 Received: from asterix.in.ibm.com (asterix.in.ibm.com [9.182.12.249]) by northrelay04.pok.ibm.com (8.12.3/NCO/VER6.4) with ESMTP id gB4CZrpG013754; Wed, 4 Dec 2002 07:35:54 -0500 Received: (from kirant@localhost) by asterix.in.ibm.com (8.11.2/8.11.2) id gB4CZA621397; Wed, 4 Dec 2002 18:05:10 +0530 Date: Wed, 4 Dec 2002 18:05:10 +0530 From: Ravikiran G Thirumalai To: linux-kernel@vger.kernel.org Cc: netdev , "David S. Miller " , Andrew Morton , dipankar@in.ibm.com Subject: [patch] Change Networking mibs to use kmalloc_percpu -- 1/3 Message-ID: <20021204180510.C17375@in.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i X-archive-position: 1291 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: kiran@in.ibm.com Precedence: bulk X-list: netdev Content-Length: 26171 Lines: 758 Here's a patchset to enable networking mibs to use kmalloc_percpu instead of the traditional padded NR_CPUS arrays. Advantages: 1. Removes NR_CPUS bloat due to static definition 2. Can support node local allocation 3. Will work with modules The changes have been split for ipv4, ipv6 and sctp. We can later do away with the __pad and associated logic duing proc reporting (in the mibs) if this patchset is acceptable. This patch is 1 of 3 D: Name: ipv4mibs-2.5.50-1.patch D: Author: Ravikiran Thirumalai D: Description: Changes ipv4 stats to use kmalloc_percpu from the traditional D: padded NR_CPUS arrays include/net/icmp.h | 15 ++++++- include/net/ip.h | 6 +- include/net/snmp.h | 39 +++++++++++++------ include/net/tcp.h | 6 +- include/net/udp.h | 2 net/ipv4/af_inet.c | 61 +++++++++++++++++++++++++++++ net/ipv4/icmp.c | 96 ++++++++++++++++++++++------------------------- net/ipv4/ip_input.c | 2 net/ipv4/proc.c | 37 +++++++++--------- net/ipv4/tcp.c | 13 +++--- net/ipv4/tcp_input.c | 4 - net/ipv4/tcp_minisocks.c | 4 - net/ipv4/tcp_timer.c | 3 - net/ipv4/udp.c | 2 14 files changed, 190 insertions(+), 100 deletions(-) diff -ruN -X dontdiff linux-2.5.50/include/net/icmp.h mibstats-2.5.50/include/net/icmp.h --- linux-2.5.50/include/net/icmp.h Thu Nov 28 04:06:18 2002 +++ mibstats-2.5.50/include/net/icmp.h Wed Dec 4 12:13:33 2002 @@ -23,6 +23,7 @@ #include #include +#include #include struct icmp_err { @@ -31,10 +32,22 @@ }; extern struct icmp_err icmp_err_convert[]; -extern struct icmp_mib icmp_statistics[NR_CPUS*2]; +DECLARE_SNMP_STAT(struct icmp_mib, icmp_statistics); #define ICMP_INC_STATS(field) SNMP_INC_STATS(icmp_statistics, field) #define ICMP_INC_STATS_BH(field) SNMP_INC_STATS_BH(icmp_statistics, field) #define ICMP_INC_STATS_USER(field) SNMP_INC_STATS_USER(icmp_statistics, field) +#define ICMP_INC_STATS_FIELD(offt) \ + (*((unsigned long *) ((void *) \ + per_cpu_ptr(icmp_statistics[!in_softirq()],\ + smp_processor_id())) + offt))++; +#define ICMP_INC_STATS_BH_FIELD(offt) \ + (*((unsigned long *) ((void *) \ + per_cpu_ptr(icmp_statistics[0], \ + smp_processor_id())) + offt))++; +#define ICMP_INC_STATS_USER_FIELD(offt) \ + (*((unsigned long *) ((void *) \ + per_cpu_ptr(icmp_statistics[1], \ + smp_processor_id())) + offt))++; extern void icmp_send(struct sk_buff *skb_in, int type, int code, u32 info); extern int icmp_rcv(struct sk_buff *skb); diff -ruN -X dontdiff linux-2.5.50/include/net/ip.h mibstats-2.5.50/include/net/ip.h --- linux-2.5.50/include/net/ip.h Thu Nov 28 04:06:15 2002 +++ mibstats-2.5.50/include/net/ip.h Wed Dec 4 12:13:33 2002 @@ -149,14 +149,16 @@ }; extern struct ipv4_config ipv4_config; -extern struct ip_mib ip_statistics[NR_CPUS*2]; +DECLARE_SNMP_STAT(struct ip_mib, ip_statistics); #define IP_INC_STATS(field) SNMP_INC_STATS(ip_statistics, field) #define IP_INC_STATS_BH(field) SNMP_INC_STATS_BH(ip_statistics, field) #define IP_INC_STATS_USER(field) SNMP_INC_STATS_USER(ip_statistics, field) -extern struct linux_mib net_statistics[NR_CPUS*2]; +DECLARE_SNMP_STAT(struct linux_mib, net_statistics); #define NET_INC_STATS(field) SNMP_INC_STATS(net_statistics, field) #define NET_INC_STATS_BH(field) SNMP_INC_STATS_BH(net_statistics, field) #define NET_INC_STATS_USER(field) SNMP_INC_STATS_USER(net_statistics, field) +#define NET_ADD_STATS_BH(field, adnd) SNMP_ADD_STATS_BH(net_statistics, field, adnd) +#define NET_ADD_STATS_USER(field, adnd) SNMP_ADD_STATS_USER(net_statistics, field, adnd) extern int sysctl_local_port_range[2]; extern int sysctl_ip_default_ttl; diff -ruN -X dontdiff linux-2.5.50/include/net/snmp.h mibstats-2.5.50/include/net/snmp.h --- linux-2.5.50/include/net/snmp.h Thu Nov 28 04:05:57 2002 +++ mibstats-2.5.50/include/net/snmp.h Wed Dec 4 12:13:33 2002 @@ -62,7 +62,7 @@ unsigned long IpFragFails; unsigned long IpFragCreates; unsigned long __pad[0]; -} ____cacheline_aligned; +}; struct ipv6_mib { @@ -89,7 +89,7 @@ unsigned long Ip6InMcastPkts; unsigned long Ip6OutMcastPkts; unsigned long __pad[0]; -} ____cacheline_aligned; +}; struct icmp_mib { @@ -121,7 +121,7 @@ unsigned long IcmpOutAddrMaskReps; unsigned long dummy; unsigned long __pad[0]; -} ____cacheline_aligned; +}; struct icmpv6_mib { @@ -159,7 +159,7 @@ unsigned long Icmp6OutGroupMembResponses; unsigned long Icmp6OutGroupMembReductions; unsigned long __pad[0]; -} ____cacheline_aligned; +}; struct tcp_mib { @@ -178,7 +178,7 @@ unsigned long TcpInErrs; unsigned long TcpOutRsts; unsigned long __pad[0]; -} ____cacheline_aligned; +}; struct udp_mib { @@ -187,7 +187,7 @@ unsigned long UdpInErrors; unsigned long UdpOutDatagrams; unsigned long __pad[0]; -} ____cacheline_aligned; +}; /* draft-ietf-sigtran-sctp-mib-07.txt */ struct sctp_mib @@ -216,7 +216,7 @@ unsigned long SctpValCookieLife; unsigned long SctpMaxInitRetr; unsigned long __pad[0]; -} ____cacheline_aligned; +}; struct linux_mib { @@ -286,7 +286,7 @@ unsigned long TCPAbortFailed; unsigned long TCPMemoryPressures; unsigned long __pad[0]; -} ____cacheline_aligned; +}; /* @@ -294,8 +294,25 @@ * addl $1,memory is atomic against interrupts (but atomic_inc would be overkill because of the lock * cycles). Wants new nonlocked_atomic_inc() primitives -AK */ -#define SNMP_INC_STATS(mib, field) ((mib)[2*smp_processor_id()+!in_softirq()].field++) -#define SNMP_INC_STATS_BH(mib, field) ((mib)[2*smp_processor_id()].field++) -#define SNMP_INC_STATS_USER(mib, field) ((mib)[2*smp_processor_id()+1].field++) +#define DEFINE_SNMP_STAT(type, name) \ + __typeof__(type) *name[2] +#define DECLARE_SNMP_STAT(type, name) \ + extern __typeof__(type) *name[2] + +#define SNMP_STAT_USRPTR(name) (name[0]) +#define SNMP_STAT_BHPTR(name) (name[1]) + +#define SNMP_INC_STATS_BH(mib, field) \ + (per_cpu_ptr(mib[0], smp_processor_id())->field++) +#define SNMP_INC_STATS_USER(mib, field) \ + (per_cpu_ptr(mib[1], smp_processor_id())->field++) +#define SNMP_INC_STATS(mib, field) \ + (per_cpu_ptr(mib[!in_softirq()], smp_processor_id())->field++) +#define SNMP_DEC_STATS(mib, field) \ + (per_cpu_ptr(mib[!in_softirq()], smp_processor_id())->field--) +#define SNMP_ADD_STATS_BH(mib, field, addend) \ + (per_cpu_ptr(mib[0], smp_processor_id())->field += addend) +#define SNMP_ADD_STATS_USER(mib, field, addend) \ + (per_cpu_ptr(mib[1], smp_processor_id())->field += addend) #endif diff -ruN -X dontdiff linux-2.5.50/include/net/tcp.h mibstats-2.5.50/include/net/tcp.h --- linux-2.5.50/include/net/tcp.h Thu Nov 28 04:05:50 2002 +++ mibstats-2.5.50/include/net/tcp.h Wed Dec 4 12:13:33 2002 @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE) @@ -630,10 +631,11 @@ extern struct proto tcp_prot; -extern struct tcp_mib tcp_statistics[NR_CPUS*2]; +DECLARE_SNMP_STAT(struct tcp_mib, tcp_statistics); #define TCP_INC_STATS(field) SNMP_INC_STATS(tcp_statistics, field) #define TCP_INC_STATS_BH(field) SNMP_INC_STATS_BH(tcp_statistics, field) #define TCP_INC_STATS_USER(field) SNMP_INC_STATS_USER(tcp_statistics, field) +#define TCP_DEC_STATS(field) SNMP_DEC_STATS(tcp_statistics, field) extern void tcp_put_port(struct sock *sk); extern void __tcp_put_port(struct sock *sk); @@ -1399,7 +1401,7 @@ /* fall through */ default: if (oldstate==TCP_ESTABLISHED) - tcp_statistics[smp_processor_id()*2+!in_softirq()].TcpCurrEstab--; + TCP_DEC_STATS(TcpCurrEstab); } /* Change state AFTER socket is unhashed to avoid closed diff -ruN -X dontdiff linux-2.5.50/include/net/udp.h mibstats-2.5.50/include/net/udp.h --- linux-2.5.50/include/net/udp.h Thu Nov 28 04:06:17 2002 +++ mibstats-2.5.50/include/net/udp.h Wed Dec 4 12:13:33 2002 @@ -71,7 +71,7 @@ extern int udp_ioctl(struct sock *sk, int cmd, unsigned long arg); extern int udp_disconnect(struct sock *sk, int flags); -extern struct udp_mib udp_statistics[NR_CPUS*2]; +DECLARE_SNMP_STAT(struct udp_mib, udp_statistics); #define UDP_INC_STATS(field) SNMP_INC_STATS(udp_statistics, field) #define UDP_INC_STATS_BH(field) SNMP_INC_STATS_BH(udp_statistics, field) #define UDP_INC_STATS_USER(field) SNMP_INC_STATS_USER(udp_statistics, field) diff -ruN -X dontdiff linux-2.5.50/net/ipv4/af_inet.c mibstats-2.5.50/net/ipv4/af_inet.c --- linux-2.5.50/net/ipv4/af_inet.c Thu Nov 28 04:05:50 2002 +++ mibstats-2.5.50/net/ipv4/af_inet.c Wed Dec 4 12:13:33 2002 @@ -115,7 +115,7 @@ #include #endif -struct linux_mib net_statistics[NR_CPUS * 2]; +DEFINE_SNMP_STAT(struct linux_mib, net_statistics); #ifdef INET_REFCNT_DEBUG atomic_t inet_sock_nr; @@ -1055,6 +1055,59 @@ .handler = icmp_rcv, }; +static int __init init_ipv4_mibs(void) +{ + int i; + + net_statistics[0] = + kmalloc_percpu(sizeof (struct linux_mib), GFP_KERNEL); + net_statistics[1] = + kmalloc_percpu(sizeof (struct linux_mib), GFP_KERNEL); + ip_statistics[0] = kmalloc_percpu(sizeof (struct ip_mib), GFP_KERNEL); + ip_statistics[1] = kmalloc_percpu(sizeof (struct ip_mib), GFP_KERNEL); + icmp_statistics[0] = + kmalloc_percpu(sizeof (struct icmp_mib), GFP_KERNEL); + icmp_statistics[1] = + kmalloc_percpu(sizeof (struct icmp_mib), GFP_KERNEL); + tcp_statistics[0] = kmalloc_percpu(sizeof (struct tcp_mib), GFP_KERNEL); + tcp_statistics[1] = kmalloc_percpu(sizeof (struct tcp_mib), GFP_KERNEL); + udp_statistics[0] = kmalloc_percpu(sizeof (struct udp_mib), GFP_KERNEL); + udp_statistics[1] = kmalloc_percpu(sizeof (struct udp_mib), GFP_KERNEL); + if (! + (net_statistics[0] && net_statistics[1] && ip_statistics[0] + && ip_statistics[1] && tcp_statistics[0] && tcp_statistics[1] + && udp_statistics[0] && udp_statistics[1])) + return -ENOMEM; + + /* Set all the per cpu copies of the mibs to zero */ + for (i = 0; i < NR_CPUS; i++) { + if (cpu_possible(i)) { + memset(per_cpu_ptr(net_statistics[0], i), 0, + sizeof (struct linux_mib)); + memset(per_cpu_ptr(net_statistics[1], i), 0, + sizeof (struct linux_mib)); + memset(per_cpu_ptr(ip_statistics[0], i), 0, + sizeof (struct ip_mib)); + memset(per_cpu_ptr(ip_statistics[1], i), 0, + sizeof (struct ip_mib)); + memset(per_cpu_ptr(icmp_statistics[0], i), 0, + sizeof (struct icmp_mib)); + memset(per_cpu_ptr(icmp_statistics[1], i), 0, + sizeof (struct icmp_mib)); + memset(per_cpu_ptr(tcp_statistics[0], i), 0, + sizeof (struct tcp_mib)); + memset(per_cpu_ptr(tcp_statistics[1], i), 0, + sizeof (struct tcp_mib)); + memset(per_cpu_ptr(udp_statistics[0], i), 0, + sizeof (struct udp_mib)); + memset(per_cpu_ptr(udp_statistics[1], i), 0, + sizeof (struct udp_mib)); + } + } + + return 0; +} + int ipv4_proc_init(void); static int __init inet_init(void) @@ -1150,7 +1203,13 @@ #if defined(CONFIG_IP_MROUTE) ip_mr_init(); #endif + /* + * Initialise per-cpu ipv4 mibs + */ + if(init_ipv4_mibs()) + printk(KERN_CRIT "inet_init: Cannot init ipv4 mibs\n"); ; + ipv4_proc_init(); return 0; } diff -ruN -X dontdiff linux-2.5.50/net/ipv4/icmp.c mibstats-2.5.50/net/ipv4/icmp.c --- linux-2.5.50/net/ipv4/icmp.c Thu Nov 28 04:06:20 2002 +++ mibstats-2.5.50/net/ipv4/icmp.c Wed Dec 4 12:13:33 2002 @@ -113,7 +113,7 @@ /* * Statistics */ -struct icmp_mib icmp_statistics[NR_CPUS * 2]; +DEFINE_SNMP_STAT(struct icmp_mib, icmp_statistics); /* An array of errno for error messages from dest unreach. */ /* RFC 1122: 3.2.2.1 States that NET_UNREACH, HOS_UNREACH and SR_FAIELD MUST be considered 'transient errs'. */ @@ -213,12 +213,11 @@ * ICMP control array. This specifies what to do with each ICMP. */ -struct icmp_control -{ - unsigned long *output; /* Address to increment on output */ - unsigned long *input; /* Address to increment on input */ +struct icmp_control { + int output_off; /* Field offset for increment on output */ + int input_off; /* Field offset for increment on input */ void (*handler)(struct sk_buff *skb); - short error; /* This ICMP is classed as an error message */ + short error; /* This ICMP is classed as an error message */ }; static struct icmp_control icmp_pointers[NR_ICMP_TYPES+1]; @@ -343,10 +342,7 @@ static void icmp_out_count(int type) { if (type <= NR_ICMP_TYPES) { - (icmp_pointers[type].output)[(smp_processor_id() * 2 + - !in_softirq()) * - sizeof(struct icmp_mib) / - sizeof(unsigned long)]++; + ICMP_INC_STATS_FIELD(icmp_pointers[type].output_off); ICMP_INC_STATS(IcmpOutMsgs); } } @@ -1005,9 +1001,7 @@ } } - icmp_pointers[icmph->type].input[smp_processor_id() * 2 * - sizeof(struct icmp_mib) / - sizeof(unsigned long)]++; + ICMP_INC_STATS_BH_FIELD(icmp_pointers[icmph->type].input_off); (icmp_pointers[icmph->type].handler)(skb); drop: @@ -1024,122 +1018,122 @@ static struct icmp_control icmp_pointers[NR_ICMP_TYPES + 1] = { /* ECHO REPLY (0) */ [0] = { - .output = &icmp_statistics[0].IcmpOutEchoReps, - .input = &icmp_statistics[0].IcmpInEchoReps, + .output_off = offsetof(struct icmp_mib, IcmpOutEchoReps), + .input_off = offsetof(struct icmp_mib, IcmpInEchoReps), .handler = icmp_discard, }, [1] = { - .output = &icmp_statistics[0].dummy, - .input = &icmp_statistics[0].IcmpInErrors, + .output_off = offsetof(struct icmp_mib, dummy), + .input_off = offsetof(struct icmp_mib,IcmpInErrors), .handler = icmp_discard, .error = 1, }, [2] = { - .output = &icmp_statistics[0].dummy, - .input = &icmp_statistics[0].IcmpInErrors, + .output_off = offsetof(struct icmp_mib, dummy), + .input_off = offsetof(struct icmp_mib,IcmpInErrors), .handler = icmp_discard, .error = 1, }, /* DEST UNREACH (3) */ [3] = { - .output = &icmp_statistics[0].IcmpOutDestUnreachs, - .input = &icmp_statistics[0].IcmpInDestUnreachs, + .output_off = offsetof(struct icmp_mib, IcmpOutDestUnreachs), + .input_off = offsetof(struct icmp_mib, IcmpInDestUnreachs), .handler = icmp_unreach, .error = 1, }, /* SOURCE QUENCH (4) */ [4] = { - .output = &icmp_statistics[0].IcmpOutSrcQuenchs, - .input = &icmp_statistics[0].IcmpInSrcQuenchs, + .output_off = offsetof(struct icmp_mib, IcmpOutSrcQuenchs), + .input_off = offsetof(struct icmp_mib, IcmpInSrcQuenchs), icmp_unreach, .error = 1, }, /* REDIRECT (5) */ [5] = { - .output = &icmp_statistics[0].IcmpOutRedirects, - .input = &icmp_statistics[0].IcmpInRedirects, + .output_off = offsetof(struct icmp_mib, IcmpOutRedirects), + .input_off = offsetof(struct icmp_mib, IcmpInRedirects), .handler = icmp_redirect, .error = 1, }, [6] = { - .output = &icmp_statistics[0].dummy, - .input = &icmp_statistics[0].IcmpInErrors, + .output_off = offsetof(struct icmp_mib, dummy), + .input_off = offsetof(struct icmp_mib, IcmpInErrors), .handler = icmp_discard, .error = 1, }, [7] = { - .output = &icmp_statistics[0].dummy, - .input = &icmp_statistics[0].IcmpInErrors, + .output_off = offsetof(struct icmp_mib, dummy), + .input_off = offsetof(struct icmp_mib, IcmpInErrors), .handler = icmp_discard, .error = 1, }, /* ECHO (8) */ [8] = { - .output = &icmp_statistics[0].IcmpOutEchos, - .input = &icmp_statistics[0].IcmpInEchos, + .output_off = offsetof(struct icmp_mib, IcmpOutEchos), + .input_off = offsetof(struct icmp_mib, IcmpInEchos), .handler = icmp_echo, .error = 0, }, [9] = { - .output = &icmp_statistics[0].dummy, - .input = &icmp_statistics[0].IcmpInErrors, + .output_off = offsetof(struct icmp_mib, dummy), + .input_off = offsetof(struct icmp_mib, IcmpInErrors), .handler = icmp_discard, .error = 1, }, [10] = { - .output = &icmp_statistics[0].dummy, - .input = &icmp_statistics[0].IcmpInErrors, + .output_off = offsetof(struct icmp_mib, dummy), + .input_off = offsetof(struct icmp_mib, IcmpInErrors), .handler = icmp_discard, .error = 1, }, /* TIME EXCEEDED (11) */ [11] = { - .output = &icmp_statistics[0].IcmpOutTimeExcds, - .input = &icmp_statistics[0].IcmpInTimeExcds, + .output_off = offsetof(struct icmp_mib, IcmpOutTimeExcds), + .input_off = offsetof(struct icmp_mib,IcmpInTimeExcds), .handler = icmp_unreach, .error = 1, }, /* PARAMETER PROBLEM (12) */ [12] = { - .output = &icmp_statistics[0].IcmpOutParmProbs, - .input = &icmp_statistics[0].IcmpInParmProbs, + .output_off = offsetof(struct icmp_mib, IcmpOutParmProbs), + .input_off = offsetof(struct icmp_mib, IcmpInParmProbs), .handler = icmp_unreach, .error = 1, }, /* TIMESTAMP (13) */ [13] = { - .output = &icmp_statistics[0].IcmpOutTimestamps, - .input = &icmp_statistics[0].IcmpInTimestamps, + .output_off = offsetof(struct icmp_mib, IcmpOutTimestamps), + .input_off = offsetof(struct icmp_mib, IcmpInTimestamps), .handler = icmp_timestamp, }, /* TIMESTAMP REPLY (14) */ [14] = { - .output = &icmp_statistics[0].IcmpOutTimestampReps, - .input = &icmp_statistics[0].IcmpInTimestampReps, + .output_off = offsetof(struct icmp_mib, IcmpOutTimestampReps), + .input_off = offsetof(struct icmp_mib, IcmpInTimestampReps), .handler = icmp_discard, }, /* INFO (15) */ [15] = { - .output = &icmp_statistics[0].dummy, - .input = &icmp_statistics[0].dummy, + .output_off = offsetof(struct icmp_mib, dummy), + .input_off = offsetof(struct icmp_mib, dummy), .handler = icmp_discard, }, /* INFO REPLY (16) */ [16] = { - .output = &icmp_statistics[0].dummy, - .input = &icmp_statistics[0].dummy, + .output_off = offsetof(struct icmp_mib, dummy), + .input_off = offsetof(struct icmp_mib, dummy), .handler = icmp_discard, }, /* ADDR MASK (17) */ [17] = { - .output = &icmp_statistics[0].IcmpOutAddrMasks, - .input = &icmp_statistics[0].IcmpInAddrMasks, + .output_off = offsetof(struct icmp_mib, IcmpOutAddrMasks), + .input_off = offsetof(struct icmp_mib, IcmpInAddrMasks), .handler = icmp_address, }, /* ADDR MASK REPLY (18) */ [18] = { - .output = &icmp_statistics[0].IcmpOutAddrMaskReps, - .input = &icmp_statistics[0].IcmpInAddrMaskReps, + .output_off = offsetof(struct icmp_mib, IcmpOutAddrMaskReps), + .input_off = offsetof(struct icmp_mib, IcmpInAddrMaskReps), .handler = icmp_address_reply, } }; diff -ruN -X dontdiff linux-2.5.50/net/ipv4/ip_input.c mibstats-2.5.50/net/ipv4/ip_input.c --- linux-2.5.50/net/ipv4/ip_input.c Thu Nov 28 04:05:49 2002 +++ mibstats-2.5.50/net/ipv4/ip_input.c Wed Dec 4 12:13:33 2002 @@ -149,7 +149,7 @@ * SNMP management statistics */ -struct ip_mib ip_statistics[NR_CPUS*2]; +DEFINE_SNMP_STAT(struct ip_mib, ip_statistics); /* * Process Router Attention IP option diff -ruN -X dontdiff linux-2.5.50/net/ipv4/proc.c mibstats-2.5.50/net/ipv4/proc.c --- linux-2.5.50/net/ipv4/proc.c Thu Nov 28 04:05:48 2002 +++ mibstats-2.5.50/net/ipv4/proc.c Wed Dec 4 12:13:33 2002 @@ -86,16 +86,21 @@ .release = single_release, }; -static unsigned long fold_field(unsigned long *begin, int sz, int nr) +static unsigned long +fold_field(void *mib[], int nr) { unsigned long res = 0; int i; - sz /= sizeof(unsigned long); - for (i = 0; i < NR_CPUS; i++) { - res += begin[2 * i * sz + nr]; - res += begin[(2 * i + 1) * sz + nr]; + if (!cpu_possible(i)) + continue; + res += + *((unsigned long *) (((void *) per_cpu_ptr(mib[0], i)) + + sizeof (unsigned long) * nr)); + res += + *((unsigned long *) (((void *) per_cpu_ptr(mib[0], i)) + + sizeof (unsigned long) * nr)); } return res; } @@ -118,8 +123,7 @@ for (i = 0; i < offsetof(struct ip_mib, __pad) / sizeof(unsigned long); i++) seq_printf(seq, " %lu", - fold_field((unsigned long *)ip_statistics, - sizeof(struct ip_mib), i)); + fold_field((void **) ip_statistics, i)); seq_printf(seq, "\nIcmp: InMsgs InErrors InDestUnreachs InTimeExcds " "InParmProbs InSrcQuenchs InRedirects InEchos " @@ -132,8 +136,7 @@ for (i = 0; i < offsetof(struct icmp_mib, dummy) / sizeof(unsigned long); i++) seq_printf(seq, " %lu", - fold_field((unsigned long *)icmp_statistics, - sizeof(struct icmp_mib), i)); + fold_field((void **) icmp_statistics, i)); seq_printf(seq, "\nTcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens " "PassiveOpens AttemptFails EstabResets CurrEstab " @@ -142,17 +145,15 @@ for (i = 0; i < offsetof(struct tcp_mib, __pad) / sizeof(unsigned long); i++) seq_printf(seq, " %lu", - fold_field((unsigned long *)tcp_statistics, - sizeof(struct tcp_mib), i)); + fold_field((void **) tcp_statistics, i)); seq_printf(seq, "\nUdp: InDatagrams NoPorts InErrors OutDatagrams\n" "Udp:"); for (i = 0; i < offsetof(struct udp_mib, __pad) / sizeof(unsigned long); i++) - seq_printf(seq, " %lu", - fold_field((unsigned long *)udp_statistics, - sizeof(struct udp_mib), i)); + seq_printf(seq, " %lu", + fold_field((void **) udp_statistics, i)); seq_putc(seq, '\n'); return 0; @@ -206,10 +207,10 @@ " TCPAbortFailed TCPMemoryPressures\n" "TcpExt:"); for (i = 0; - i < offsetof(struct linux_mib, __pad) / sizeof(unsigned long); i++) - seq_printf(seq, " %lu", - fold_field((unsigned long *)net_statistics, - sizeof(struct linux_mib), i)); + i < offsetof(struct linux_mib, __pad) / sizeof(unsigned long); + i++) + seq_printf(seq, " %lu", + fold_field((void **) net_statistics, i)); seq_putc(seq, '\n'); return 0; } diff -ruN -X dontdiff linux-2.5.50/net/ipv4/tcp.c mibstats-2.5.50/net/ipv4/tcp.c --- linux-2.5.50/net/ipv4/tcp.c Thu Nov 28 04:05:54 2002 +++ mibstats-2.5.50/net/ipv4/tcp.c Wed Dec 4 12:13:33 2002 @@ -258,13 +258,15 @@ #include #include #include +#include + #include #include int sysctl_tcp_fin_timeout = TCP_FIN_TIMEOUT; -struct tcp_mib tcp_statistics[NR_CPUS * 2]; +DEFINE_SNMP_STAT(struct tcp_mib, tcp_statistics); kmem_cache_t *tcp_openreq_cachep; kmem_cache_t *tcp_bucket_cachep; @@ -1395,8 +1397,7 @@ struct sk_buff *skb; struct tcp_opt *tp = tcp_sk(sk); - net_statistics[smp_processor_id() * 2 + 1].TCPPrequeued += - skb_queue_len(&tp->ucopy.prequeue); + NET_ADD_STATS_USER(TCPPrequeued, skb_queue_len(&tp->ucopy.prequeue)); /* RX process wants to run with disabled BHs, though it is not * necessary */ @@ -1676,7 +1677,7 @@ /* __ Restore normal policy in scheduler __ */ if ((chunk = len - tp->ucopy.len) != 0) { - net_statistics[smp_processor_id() * 2 + 1].TCPDirectCopyFromBacklog += chunk; + NET_ADD_STATS_USER(TCPDirectCopyFromBacklog, chunk); len -= chunk; copied += chunk; } @@ -1687,7 +1688,7 @@ tcp_prequeue_process(sk); if ((chunk = len - tp->ucopy.len) != 0) { - net_statistics[smp_processor_id() * 2 + 1].TCPDirectCopyFromPrequeue += chunk; + NET_ADD_STATS_USER(TCPDirectCopyFromPrequeue, chunk); len -= chunk; copied += chunk; } @@ -1770,7 +1771,7 @@ tcp_prequeue_process(sk); if (copied > 0 && (chunk = len - tp->ucopy.len) != 0) { - net_statistics[smp_processor_id() * 2 + 1].TCPDirectCopyFromPrequeue += chunk; + NET_ADD_STATS_USER(TCPDirectCopyFromPrequeue, chunk); len -= chunk; copied += chunk; } diff -ruN -X dontdiff linux-2.5.50/net/ipv4/tcp_input.c mibstats-2.5.50/net/ipv4/tcp_input.c --- linux-2.5.50/net/ipv4/tcp_input.c Thu Nov 28 04:06:16 2002 +++ mibstats-2.5.50/net/ipv4/tcp_input.c Wed Dec 4 12:13:33 2002 @@ -3043,8 +3043,8 @@ /* First, purge the out_of_order queue. */ if (skb_queue_len(&tp->out_of_order_queue)) { - net_statistics[smp_processor_id() * 2].OfoPruned += - skb_queue_len(&tp->out_of_order_queue); + NET_ADD_STATS_BH(OfoPruned, + skb_queue_len(&tp->out_of_order_queue)); __skb_queue_purge(&tp->out_of_order_queue); /* Reset SACK state. A conforming SACK implementation will diff -ruN -X dontdiff linux-2.5.50/net/ipv4/tcp_minisocks.c mibstats-2.5.50/net/ipv4/tcp_minisocks.c --- linux-2.5.50/net/ipv4/tcp_minisocks.c Thu Nov 28 04:06:16 2002 +++ mibstats-2.5.50/net/ipv4/tcp_minisocks.c Wed Dec 4 12:13:33 2002 @@ -464,7 +464,7 @@ if ((tcp_tw_count -= killed) != 0) mod_timer(&tcp_tw_timer, jiffies+TCP_TWKILL_PERIOD); - net_statistics[smp_processor_id()*2].TimeWaited += killed; + NET_ADD_STATS_BH(TimeWaited, killed); out: spin_unlock(&tw_death_lock); } @@ -628,7 +628,7 @@ out: if ((tcp_tw_count -= killed) == 0) del_timer(&tcp_tw_timer); - net_statistics[smp_processor_id()*2].TimeWaitKilled += killed; + NET_ADD_STATS_BH(TimeWaitKilled, killed); spin_unlock(&tw_death_lock); } diff -ruN -X dontdiff linux-2.5.50/net/ipv4/tcp_timer.c mibstats-2.5.50/net/ipv4/tcp_timer.c --- linux-2.5.50/net/ipv4/tcp_timer.c Thu Nov 28 04:06:19 2002 +++ mibstats-2.5.50/net/ipv4/tcp_timer.c Wed Dec 4 12:13:33 2002 @@ -237,7 +237,8 @@ if (skb_queue_len(&tp->ucopy.prequeue)) { struct sk_buff *skb; - net_statistics[smp_processor_id()*2].TCPSchedulerFailed += skb_queue_len(&tp->ucopy.prequeue); + NET_ADD_STATS_BH(TCPSchedulerFailed, + skb_queue_len(&tp->ucopy.prequeue)); while ((skb = __skb_dequeue(&tp->ucopy.prequeue)) != NULL) sk->backlog_rcv(sk, skb); diff -ruN -X dontdiff linux-2.5.50/net/ipv4/udp.c mibstats-2.5.50/net/ipv4/udp.c --- linux-2.5.50/net/ipv4/udp.c Thu Nov 28 04:05:51 2002 +++ mibstats-2.5.50/net/ipv4/udp.c Wed Dec 4 12:13:33 2002 @@ -110,7 +110,7 @@ * Snmp MIB for the UDP layer */ -struct udp_mib udp_statistics[NR_CPUS*2]; +DEFINE_SNMP_STAT(struct udp_mib, udp_statistics); struct sock *udp_hash[UDP_HTABLE_SIZE]; rwlock_t udp_hash_lock = RW_LOCK_UNLOCKED; From kiran@in.ibm.com Wed Dec 4 04:37:05 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 04 Dec 2002 04:37:07 -0800 (PST) Received: from e5.ny.us.ibm.com (e5.ny.us.ibm.com [32.97.182.105]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB4Cb5uR022366 for ; Wed, 4 Dec 2002 04:37:05 -0800 Received: from northrelay03.pok.ibm.com (northrelay03.pok.ibm.com [9.56.224.151]) by e5.ny.us.ibm.com (8.12.2/8.12.2) with ESMTP id gB4Ce8rb230850; Wed, 4 Dec 2002 07:40:08 -0500 Received: from asterix.in.ibm.com (asterix.in.ibm.com [9.182.12.249]) by northrelay03.pok.ibm.com (8.12.3/NCO/VER6.4) with ESMTP id gB4Ce4ot048652; Wed, 4 Dec 2002 07:40:05 -0500 Received: (from kirant@localhost) by asterix.in.ibm.com (8.11.2/8.11.2) id gB4CdM621450; Wed, 4 Dec 2002 18:09:22 +0530 Date: Wed, 4 Dec 2002 18:09:22 +0530 From: Ravikiran G Thirumalai To: linux-kernel@vger.kernel.org Cc: netdev , "David S. Miller " , Andrew Morton , dipankar@in.ibm.com Subject: Re: [patch] Change Networking mibs to use kmalloc_percpu -- 3/3 Message-ID: <20021204180922.E17375@in.ibm.com> References: <20021204180510.C17375@in.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20021204180510.C17375@in.ibm.com>; from kiran@in.ibm.com on Wed, Dec 04, 2002 at 06:05:10PM +0530 X-archive-position: 1292 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: kiran@in.ibm.com Precedence: bulk X-list: netdev Content-Length: 3224 Lines: 108 This patch is 3 of 3 D: Name: sctpmibs-2.5.50-1.patch D: Author: Ravikiran Thirumalai D: Description: Changes sctp stats to use kmalloc_percpu from the traditional D: padded NR_CPUS arrays include/net/sctp/sctp.h | 2 +- net/sctp/protocol.c | 44 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 2 deletions(-) diff -ruN -X dontdiff linux-2.5.50/include/net/sctp/sctp.h mibstats-2.5.50/include/net/sctp/sctp.h --- linux-2.5.50/include/net/sctp/sctp.h Thu Nov 28 04:05:53 2002 +++ mibstats-2.5.50/include/net/sctp/sctp.h Wed Dec 4 12:13:33 2002 @@ -203,7 +203,7 @@ #define SCTP_SOCK_SLEEP_POST(sk) SOCK_SLEEP_POST(sk) /* SCTP SNMP MIB stats handlers */ -extern struct sctp_mib sctp_statistics[NR_CPUS * 2]; +DECLARE_SNMP_STAT(struct sctp_mib, sctp_statistics); #define SCTP_INC_STATS(field) SNMP_INC_STATS(sctp_statistics, field) #define SCTP_INC_STATS_BH(field) SNMP_INC_STATS_BH(sctp_statistics, field) #define SCTP_INC_STATS_USER(field) SNMP_INC_STATS_USER(sctp_statistics, field) diff -ruN -X dontdiff linux-2.5.50/net/sctp/protocol.c mibstats-2.5.50/net/sctp/protocol.c --- linux-2.5.50/net/sctp/protocol.c Thu Nov 28 04:06:05 2002 +++ mibstats-2.5.50/net/sctp/protocol.c Wed Dec 4 12:13:33 2002 @@ -59,7 +59,7 @@ /* Global data structures. */ sctp_protocol_t sctp_proto; struct proc_dir_entry *proc_net_sctp; -struct sctp_mib sctp_statistics[NR_CPUS * 2]; +DEFINE_SNMP_STAT(struct sctp_mib, sctp_statistics); /* This is the global socket data structure used for responding to * the Out-of-the-blue (OOTB) packets. A control sock will be created @@ -597,6 +597,40 @@ } } +static int __init init_sctp_mibs(void) +{ + int i; + + sctp_statistics[0] = kmalloc_percpu(sizeof (struct sctp_mib), + GFP_KERNEL); + if (!sctp_statistics[0]) + return -ENOMEM; + sctp_statistics[1] = kmalloc_percpu(sizeof (struct sctp_mib), + GFP_KERNEL); + if (!sctp_statistics[1]) { + kfree_percpu(sctp_statistics[0]); + return -ENOMEM; + } + + /* Zero all percpu versions of the mibs */ + for (i = 0; i < NR_CPUS; i++) { + if (cpu_possible(i)) { + memset(per_cpu_ptr(sctp_statistics[0], i), 0, + sizeof (struct sctp_mib)); + memset(per_cpu_ptr(sctp_statistics[1], i), 0, + sizeof (struct sctp_mib)); + } + } + return 0; + +} + +static void cleanup_sctp_mibs(void) +{ + kfree_percpu(sctp_statistics[0]); + kfree_percpu(sctp_statistics[1]); +} + /* Initialize the universe into something sensible. */ int sctp_init(void) { @@ -610,6 +644,11 @@ /* Add SCTP to inetsw linked list. */ inet_register_protosw(&sctp_protosw); + /* Allocate and initialise sctp mibs. */ + status = init_sctp_mibs(); + if (status) + goto err_init_mibs; + /* Initialize proc fs directory. */ sctp_proc_init(); @@ -745,6 +784,8 @@ err_ahash_alloc: sctp_dbg_objcnt_exit(); sctp_proc_exit(); + cleanup_sctp_mibs(); +err_init_mibs: inet_del_protocol(&sctp_protocol, IPPROTO_SCTP); inet_unregister_protosw(&sctp_protosw); return status; @@ -774,6 +815,7 @@ sctp_dbg_objcnt_exit(); sctp_proc_exit(); + cleanup_sctp_mibs(); inet_del_protocol(&sctp_protocol, IPPROTO_SCTP); inet_unregister_protosw(&sctp_protosw); From hadi@cyberus.ca Wed Dec 4 04:56:21 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 04 Dec 2002 04:56:22 -0800 (PST) Received: from cyberus.ca (mail.cyberus.ca [216.191.240.111]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB4CuKuR023212 for ; Wed, 4 Dec 2002 04:56:21 -0800 Received: from shell.cyberus.ca (shell [216.191.240.114]) by cyberus.ca (8.9.3/8.9.3/Cyberus Online Inc.) with ESMTP id HAA17854; Wed, 4 Dec 2002 07:59:29 -0500 (EST) Received: from localhost (hadi@localhost) by shell.cyberus.ca (8.11.6+Sun/8.11.6) with ESMTP id gB4CpYr03925; Wed, 4 Dec 2002 07:51:34 -0500 (EST) X-Authentication-Warning: shell.cyberus.ca: hadi owned process doing -bs Date: Wed, 4 Dec 2002 07:51:34 -0500 (EST) From: jamal To: Ronghua Zhang cc: Subject: Re: synchronization between bottom half and user context In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1293 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: hadi@cyberus.ca Precedence: bulk X-list: netdev Content-Length: 657 Lines: 21 On Tue, 3 Dec 2002, Ronghua Zhang wrote: > Can someone tell me when lock should be used to synchronize bh and user > context? > > For examle: in tcp_accept(), lock_sock() is called to avoid any change > made by net_bh during its operation. But if tcp_accept() is called, it's > impossilbe that net_bh is also executing. (i think this is true for UP, > what about SMP?), then why need lock_sock()? > to serialize packets towards the socket; The linux network stack is threaded, you can have upto n packets to the same socket coming up the stack in parallel on an n-SMP machine; think of that and the fact that TCP data must be sequenced. cheers, jamal From hadi@cyberus.ca Wed Dec 4 05:10:55 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 04 Dec 2002 05:10:59 -0800 (PST) Received: from cyberus.ca (mail.cyberus.ca [216.191.240.111]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB4DAsuR023738 for ; Wed, 4 Dec 2002 05:10:55 -0800 Received: from shell.cyberus.ca (shell [216.191.240.114]) by cyberus.ca (8.9.3/8.9.3/Cyberus Online Inc.) with ESMTP id IAA22127; Wed, 4 Dec 2002 08:14:02 -0500 (EST) Received: from localhost (hadi@localhost) by shell.cyberus.ca (8.11.6+Sun/8.11.6) with ESMTP id gB4D67G03951; Wed, 4 Dec 2002 08:06:07 -0500 (EST) X-Authentication-Warning: shell.cyberus.ca: hadi owned process doing -bs Date: Wed, 4 Dec 2002 08:06:07 -0500 (EST) From: jamal To: Stefan Rompf cc: , Subject: Re: Patch resubmission: RFC2863 operstatus for 2.5.49 In-Reply-To: <3DED3869.5E47D7A2@isg.de> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1294 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: hadi@cyberus.ca Precedence: bulk X-list: netdev Content-Length: 1237 Lines: 34 On Wed, 4 Dec 2002, Stefan Rompf wrote: > Hi Jamal, > > > Just thought of something, it may be a little tricky but valuable and > > i am not quiet sure if it should part of your patch: We probably need to > > flush the qdiscs software queues; maybe even the DMA ring i.e simulate > > admin down followed by admin up. > > dev_close() is doing quite a lot of stuff, so we should do nothing more > than flush the qdiscs when the link comes up. But is it really useful? Indeed it is, infact i have been bitten by buffered packets confusing an upstream switch with buffered VRRP packets when someone stepped on a cable that i later reconnected. Typically about 30 seconds later an arp fixes the problem - if the queue had been properly flushed thered be no problem. I think maybe flushing all routes and neighbors pointing out that device is also useful. > Normally, the queues are short anyway to keep latencies low, and fifty > additional packets don't hurt. I rather think about clearing neighbor > tables and the route cache whenever the operstatus goes down. > > Anyway, implementation and usage of the notification should not mix up, > so it let it be a separate patch. Agreed; just queueing more work for you ;-> cheers, jamal From hadi@cyberus.ca Wed Dec 4 05:16:13 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 04 Dec 2002 05:16:15 -0800 (PST) Received: from cyberus.ca (mail.cyberus.ca [216.191.240.111]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB4DGDuR027539 for ; Wed, 4 Dec 2002 05:16:13 -0800 Received: from shell.cyberus.ca (shell [216.191.240.114]) by cyberus.ca (8.9.3/8.9.3/Cyberus Online Inc.) with ESMTP id IAA23749; Wed, 4 Dec 2002 08:19:22 -0500 (EST) Received: from localhost (hadi@localhost) by shell.cyberus.ca (8.11.6+Sun/8.11.6) with ESMTP id gB4DBRG03961; Wed, 4 Dec 2002 08:11:27 -0500 (EST) X-Authentication-Warning: shell.cyberus.ca: hadi owned process doing -bs Date: Wed, 4 Dec 2002 08:11:27 -0500 (EST) From: jamal To: Jeff Garzik cc: Stefan Rompf , "David S. Miller" , Subject: Re: Patch resubmission: RFC2863 operstatus for 2.5.50 In-Reply-To: <3DED51E9.1080408@pobox.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1296 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: hadi@cyberus.ca Precedence: bulk X-list: netdev Content-Length: 669 Lines: 23 On Tue, 3 Dec 2002, Jeff Garzik wrote: > Pardon my dumb question, but what parts of RFC2863 require kernel > additions over and above your link state patch? > > Your second patch I am less enthusiastic about than the first... :( > > I wonder if userspace cannot figure out ifOperStatus from existing data > we make available? > Stefans curtrent patch makes the info available via netlink. What dont you like about it Jeff? Take a quick look at RFC2863 and scan for IfAdminStatus and IfOperStatus. The modelling RFC2863 has is pretty good and thats what Stefan has followed (after we weeded a few crappy pieces off the RFC; we discussed on netdev). cheers, jamal From hadi@cyberus.ca Wed Dec 4 05:22:34 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 04 Dec 2002 05:22:35 -0800 (PST) Received: from cyberus.ca (mail.cyberus.ca [216.191.240.111]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB4DMXuR028256 for ; Wed, 4 Dec 2002 05:22:34 -0800 Received: from shell.cyberus.ca (shell [216.191.240.114]) by cyberus.ca (8.9.3/8.9.3/Cyberus Online Inc.) with ESMTP id IAA25822; Wed, 4 Dec 2002 08:25:42 -0500 (EST) Received: from localhost (hadi@localhost) by shell.cyberus.ca (8.11.6+Sun/8.11.6) with ESMTP id gB4DHkk03973; Wed, 4 Dec 2002 08:17:47 -0500 (EST) X-Authentication-Warning: shell.cyberus.ca: hadi owned process doing -bs Date: Wed, 4 Dec 2002 08:17:46 -0500 (EST) From: jamal To: SVR Anand cc: Subject: Re: tcp flows hash function In-Reply-To: <200212040738.NAA02825@eis.iisc.ernet.in> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1297 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: hadi@cyberus.ca Precedence: bulk X-list: netdev Content-Length: 1594 Lines: 53 Anand, why dont you give a shot at the comparisons and post your results. You have already extracted the hashing function; so write a small program in user space that you feed headers from real world webservers for example to tcp_hashfn(); see how well the hashing is distributed amongst the hash buckets; this should give you the rough number of lookups needed in the linux hash function. Then try some of the trie schemes with the same data. I'd be interested in your results. cheers, jamal On Wed, 4 Dec 2002, SVR Anand wrote: > Hi, > > I am writing a program that requires maintanence of per-connection statistics > of many tcp connections based on multi-field classification. The problem is > that of fast search and update when there are 1000s of connections. Couple of > questions. > > 1. In many places of network code, I am seeing hashing being used. Can I also > use the same ? > > >From the recently published literature on packet classification, people are > talking about some sort of trie variants. I would like to know if someone has > done performance comparison of the algorithm used in Linux against other > schemes. > > > 2. While going through tcp_ipv4.c, I happened to see tcp_hashfn. What is the > algorithm behind this ? > > static __inline__ int tcp_hashfn(__u32 laddr, __u16 lport, > __u32 faddr, __u16 fport) > { > int h = ((laddr ^ lport) ^ (faddr ^ fport)); > h ^= h>>16; > h ^= h>>8; > return h & (tcp_ehash_size - 1); > } > > > Any inputs from you will help me proceed further. > > Anand > > From yan@intruvert.com Wed Dec 4 06:57:35 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 04 Dec 2002 06:57:40 -0800 (PST) Received: from ivexs1.intruvert.com (mx2.intruvert.com [65.209.235.21]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB4EvYuR003176 for ; Wed, 4 Dec 2002 06:57:35 -0800 Received: by ivexs1.intruvert.com with Internet Mail Service (5.5.2653.19) id ; Wed, 4 Dec 2002 07:00:37 -0800 Message-ID: From: Yan-Fa Li To: "'Ben Greear'" , Yan-Fa Li Cc: netdev@oss.sgi.com Subject: RE: TG3 Performance Question Date: Tue, 3 Dec 2002 13:04:51 -0800 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Disposition: inline Content-Type: text/plain Content-Transfer-Encoding: 7bit X-archive-position: 1298 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: yan@intruvert.com Precedence: bulk X-list: netdev Content-Length: 1642 Lines: 55 Yes, lspci: 00:08.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5701 Gigabit Ethernet (rev 15) Subsystem: 3Com Corporation 3C996B-T 1000BaseTX Flags: bus master, 66Mhz, medium devsel, latency 248, IRQ 10 Memory at f8200000 (64-bit, non-prefetchable) [size=64K] Capabilities: [40] PCI-X non-bridge device. Capabilities: [48] Power Management version 2 Capabilities: [50] Vital Product Data Capabilities: [58] Message Signalled Interrupts: 64bit+ Queue=0/3 Enable- would seem to indicate that it is 66/66. The latency is my fault, I set it manually to see if it would help performance. Unfortunately I don't think the E1000 with will with the AMD chipset, and I don't think Intel will be releasing a fix somehow. Do you have access to an AMD760MPX ? I would love it if someone could verify this is a working combination before I go out and spend more money. Y -----Original Message----- From: Ben Greear [mailto:greearb@candelatech.com] Sent: Tuesday, December 03, 2002 12:45 PM To: Yan-Fa Li Cc: netdev@oss.sgi.com Subject: Re: TG3 Performance Question Yan-Fa Li wrote: > Hello > > I'm trying to figure out some performance issues I have with the tg3 > driver. Are you sure your tg3 NIC is 66/64 PCI? For 66/64, try an e1000 NIC, you should be able to get 800Mbps or better out of it on such a system. Ben -- Ben Greear President of Candela Technologies Inc http://www.candelatech.com ScryMUD: http://scry.wanfear.com http://scry.wanfear.com/~greear [[HTML alternate version deleted]] From rz5b@cs.virginia.edu Wed Dec 4 07:28:11 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 04 Dec 2002 07:28:12 -0800 (PST) Received: from ares.cs.Virginia.EDU (mail.cs.Virginia.EDU [128.143.137.19]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB4FSAuR003816 for ; Wed, 4 Dec 2002 07:28:10 -0800 Received: from bobbidi.cs.Virginia.EDU (bobbidi.cs.Virginia.EDU [128.143.67.48]) by ares.cs.Virginia.EDU (8.9.3+Sun/8.9.2/UVACS-2000040300) with ESMTP id KAA19829; Wed, 4 Dec 2002 10:31:15 -0500 (EST) Date: Wed, 4 Dec 2002 10:31:49 -0500 (EST) From: Ronghua Zhang To: jamal cc: netdev@oss.sgi.com Subject: Re: synchronization between bottom half and user context In-Reply-To: Message-ID: References: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1299 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: rz5b@cs.virginia.edu Precedence: bulk X-list: netdev Content-Length: 922 Lines: 30 Do you mean that net_bh can be running on several CPU at the same time? If it is juat a UP, can I say that socket system call and net_bh is always serialized even without lock_sock()? Ronghua On Wed, 4 Dec 2002, jamal wrote: > > > On Tue, 3 Dec 2002, Ronghua Zhang wrote: > > > Can someone tell me when lock should be used to synchronize bh and user > > context? > > > > For examle: in tcp_accept(), lock_sock() is called to avoid any change > > made by net_bh during its operation. But if tcp_accept() is called, it's > > impossilbe that net_bh is also executing. (i think this is true for UP, > > what about SMP?), then why need lock_sock()? > > > > to serialize packets towards the socket; The linux network stack > is threaded, you can have upto n packets to the same socket coming up the > stack in parallel on an n-SMP machine; think of that and the fact that TCP > data must be sequenced. > > cheers, > jamal > From davem@redhat.com Wed Dec 4 09:01:26 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 04 Dec 2002 09:01:29 -0800 (PST) Received: from pizda.ninka.net (IDENT:root@pizda.ninka.net [216.101.162.242]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB4H1QuR006462 for ; Wed, 4 Dec 2002 09:01:26 -0800 Received: from localhost (IDENT:davem@localhost.localdomain [127.0.0.1]) by pizda.ninka.net (8.9.3/8.9.3) with ESMTP id JAA23638; Wed, 4 Dec 2002 09:01:53 -0800 Date: Wed, 04 Dec 2002 09:01:52 -0800 (PST) Message-Id: <20021204.090152.97851491.davem@redhat.com> To: kiran@in.ibm.com Cc: linux-kernel@vger.kernel.org, netdev@oss.sgi.com, akpm@digeo.com, dipankar@in.ibm.com Subject: Re: [patch] Change Networking mibs to use kmalloc_percpu -- 1/3 From: "David S. Miller" In-Reply-To: <20021204180510.C17375@in.ibm.com> References: <20021204180510.C17375@in.ibm.com> X-FalunGong: Information control. X-Mailer: Mew version 2.1 on Emacs 21.1 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1300 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: davem@redhat.com Precedence: bulk X-list: netdev Content-Length: 530 Lines: 17 From: Ravikiran G Thirumalai Date: Wed, 4 Dec 2002 18:05:10 +0530 Here's a patchset to enable networking mibs to use kmalloc_percpu instead of the traditional padded NR_CPUS arrays. Advantages: 1. Removes NR_CPUS bloat due to static definition 2. Can support node local allocation 3. Will work with modules I totally support this work. Once the kmalloc percpu bits hit Linus's tree, just retransmit these diffs to me privately and I'll put them into my net-2.5 tree. Thanks. From greearb@candelatech.com Wed Dec 4 09:17:02 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 04 Dec 2002 09:17:03 -0800 (PST) Received: from grok.yi.org (IDENT:XZJt15nWDGVGF6FpDZeC0ln1IIcQSRJg@dhcp101-dsl-usw4.w-link.net [208.161.125.101]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB4HH1uR007438 for ; Wed, 4 Dec 2002 09:17:01 -0800 Received: from candelatech.com (IDENT:rZ1/LYC0sTY0llXJv+oFL8TgbGBeTEBY@localhost.localdomain [127.0.0.1]) by grok.yi.org (8.11.6/8.11.2) with ESMTP id gB4HK7q30759; Wed, 4 Dec 2002 09:20:07 -0800 Message-ID: <3DEE3947.8000604@candelatech.com> Date: Wed, 04 Dec 2002 09:20:07 -0800 From: Ben Greear Organization: Candela Technologies User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2a) Gecko/20020910 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Yan-Fa Li CC: netdev@oss.sgi.com Subject: Re: TG3 Performance Question References: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1301 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: greearb@candelatech.com Precedence: bulk X-list: netdev Content-Length: 452 Lines: 17 Yan-Fa Li wrote: > to see if it would help performance. Unfortunately I don't think the E1000 > with > will with the AMD chipset, and I don't think Intel will be releasing a fix The e1000 works with my dual AMD motherboard... Ben -- Ben Greear President of Candela Technologies Inc http://www.candelatech.com ScryMUD: http://scry.wanfear.com http://scry.wanfear.com/~greear From jgarzik@pobox.com Wed Dec 4 09:39:01 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 04 Dec 2002 09:39:06 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB4Hd0uR011129 for ; Wed, 4 Dec 2002 09:39:01 -0800 Received: from nat-pool-rdu.redhat.com ([66.187.233.200] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18JdXF-00010D-00; Wed, 04 Dec 2002 17:42:09 +0000 Message-ID: <3DEE3E6E.30407@pobox.com> Date: Wed, 04 Dec 2002 12:42:06 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202 X-Accept-Language: en-us, en MIME-Version: 1.0 To: jamal CC: Stefan Rompf , "David S. Miller" , netdev@oss.sgi.com Subject: Re: Patch resubmission: RFC2863 operstatus for 2.5.50 References: In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1302 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Content-Length: 2264 Lines: 56 jamal wrote: > Stefans curtrent patch makes the info available via netlink. He has two patches: link change notification, and RFC2863 operstatus. I agree with the first one and support its inclusion; the second one I question its need. (just for context, I am referring to message <3DED2EA9.D812C881@isg.de> dated Dec 3) > What dont you like about it Jeff? Take a quick look at RFC2863 > and scan for IfAdminStatus and IfOperStatus. The modelling RFC2863 > has is pretty good and thats what Stefan has followed (after we weeded > a few crappy pieces off the RFC; we discussed on netdev). I had looked at ifAdminStatus and ifOperStatus before I posted :) My argument is, _after_ Stefan's link state patch is applied, why do we need the additional patch? [this question is meant to be delivered in an honest, not snide way...] For ifAdminStatus, you have "up", "down", and "testing" states. Since we have no concept of a testing state, if we eliminate that we have "up" and "down", two states we can obviously handle. For ifOperStatus, we have "up", "down" and "testing", which are applicable (or not) to Linux as with ifAdminStatus. Further we have states "dormant", "unknown", "notPresent", "lowerLayerDown". I'll discuss each of these in detail. "dormant" - not used in Stefan's patch, which I agree with. "unknown" - only used in Stefan's patch before interface is first up'd, which is IMO inaccurate. Accurate use of "up" and "down", to me, implies -no- use of "unknown" state. Because as soon as we are initialized, all ethernet details are known, thus "down" is more applicable. The Linux net stack's atomicity is such that leaking an "unknown" state would be a bug, too. "notPresent" - analagous to Linux's netif_device_xxx, and Stefan's patch acknowledges this. However, the use of netif_device_xxx in drivers is really only used when the hardware is suspended. If hardware goes away, the interface goes away too, almost immediately. "lowerLayerDown" - not used in Stefan's patch, which I agree with. So, Stefan's 2nd patch really only adds "unknown" and "notPresent" states to current behavior -- and the applicability of those states to Linux is IMO questionable. Questions/comments requested. Regards, Jeff From jgarzik@pobox.com Wed Dec 4 10:12:28 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 04 Dec 2002 10:12:29 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB4ICRuR011880 for ; Wed, 4 Dec 2002 10:12:27 -0800 Received: from nat-pool-rdu.redhat.com ([66.187.233.200] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18Je3c-0001kP-00; Wed, 04 Dec 2002 18:15:36 +0000 Message-ID: <3DEE463E.7050303@pobox.com> Date: Wed, 04 Dec 2002 13:15:26 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Stefan Rompf CC: "David S. Miller" , netdev@oss.sgi.com Subject: Re: Patch resubmission: RFC2863 operstatus for 2.5.50 References: <3DE33D6D.25B9C9B4@isg.de> <20021126.021546.91313706.davem@redhat.com> <3DED2EA9.D812C881@isg.de> <3DED51E9.1080408@pobox.com> <3DEDCE9A.61FDEBBC@isg.de> In-Reply-To: <3DEDCE9A.61FDEBBC@isg.de> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1304 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Content-Length: 370 Lines: 12 Stefan Rompf wrote: >>Your second patch I am less enthusiastic about than the first... :( > > > Well, with your opinion I count two against two: I want it, Jamal has > proposed the semantics, and Alexey doesn't want to waste a single bit of > a netlink message for this. Well, for generic net stack issues, I weight Jamal and Alexey's opinion more than my own ;-) From davem@redhat.com Wed Dec 4 11:39:01 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 04 Dec 2002 11:39:07 -0800 (PST) Received: from pizda.ninka.net (IDENT:root@pizda.ninka.net [216.101.162.242]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB4Jd0uR014354 for ; Wed, 4 Dec 2002 11:39:01 -0800 Received: from localhost (IDENT:davem@localhost.localdomain [127.0.0.1]) by pizda.ninka.net (8.9.3/8.9.3) with ESMTP id LAA24250; Wed, 4 Dec 2002 11:39:24 -0800 Date: Wed, 04 Dec 2002 11:39:23 -0800 (PST) Message-Id: <20021204.113923.16680312.davem@redhat.com> To: srompf@isg.de Cc: netdev@oss.sgi.com Subject: Re: Patch resubmission: RFC2863 operstatus for 2.5.50 From: "David S. Miller" In-Reply-To: <3DED2EA9.D812C881@isg.de> References: <3DE33D6D.25B9C9B4@isg.de> <20021126.021546.91313706.davem@redhat.com> <3DED2EA9.D812C881@isg.de> X-FalunGong: Information control. X-Mailer: Mew version 2.1 on Emacs 21.1 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1305 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: davem@redhat.com Precedence: bulk X-list: netdev Content-Length: 125 Lines: 6 I've applied your first patch to 2.5.x, I'm awaiting more discussion wrt. Jeff's comments on your second one :-) Thanks. From acme@conectiva.com.br Wed Dec 4 14:31:50 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 04 Dec 2002 14:31:54 -0800 (PST) Received: from orion.netbank.com.br (orion.netbank.com.br [200.203.199.90]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB4MVmuR012927 for ; Wed, 4 Dec 2002 14:31:50 -0800 Received: from [200.181.171.189] (helo=brinquendo.conectiva.com.br) by orion.netbank.com.br with asmtp (Exim 3.33 #1) id 18Ji92-0003ZJ-00; Wed, 04 Dec 2002 20:37:29 -0200 Received: by brinquendo.conectiva.com.br (Postfix, from userid 500) id 7E7071966C; Wed, 4 Dec 2002 22:34:28 +0000 (UTC) Date: Wed, 4 Dec 2002 20:34:27 -0200 From: Arnaldo Carvalho de Melo To: "David S. Miller" Cc: kiran@in.ibm.com, linux-kernel@vger.kernel.org, netdev@oss.sgi.com, akpm@digeo.com, dipankar@in.ibm.com Subject: Re: [patch] Change Networking mibs to use kmalloc_percpu -- 1/3 Message-ID: <20021204223427.GA23578@conectiva.com.br> Mail-Followup-To: Arnaldo Carvalho de Melo , "David S. Miller" , kiran@in.ibm.com, linux-kernel@vger.kernel.org, netdev@oss.sgi.com, akpm@digeo.com, dipankar@in.ibm.com References: <20021204180510.C17375@in.ibm.com> <20021204.090152.97851491.davem@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20021204.090152.97851491.davem@redhat.com> User-Agent: Mutt/1.4i X-Url: http://advogato.org/person/acme X-archive-position: 1306 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: acme@conectiva.com.br Precedence: bulk X-list: netdev Content-Length: 777 Lines: 21 Em Wed, Dec 04, 2002 at 09:01:52AM -0800, David S. Miller escreveu: > From: Ravikiran G Thirumalai > Date: Wed, 4 Dec 2002 18:05:10 +0530 > > Here's a patchset to enable networking mibs to use kmalloc_percpu instead > of the traditional padded NR_CPUS arrays. > > Advantages: > 1. Removes NR_CPUS bloat due to static definition > 2. Can support node local allocation > 3. Will work with modules > > I totally support this work. Once the kmalloc percpu bits hit > Linus's tree, just retransmit these diffs to me privately and > I'll put them into my net-2.5 tree. Cool stuff! I was planning to macroise this so that things like this would be possible without source impact but now its just there, keep it up :-) - Arnaldo From cwalker@thezenith.com Wed Dec 4 15:29:48 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 04 Dec 2002 15:29:52 -0800 (PST) Received: from whlexch.thezenith.com (host-65-119-25-226.thezenith.com [65.119.25.226] (may be forged)) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB4NTmuR013714 for ; Wed, 4 Dec 2002 15:29:48 -0800 Received: by whlexch.thezenith.com with Internet Mail Service (5.5.2653.19) id ; Wed, 4 Dec 2002 15:32:52 -0800 Message-ID: <1FB25D2C0FC3D11193C10050046E9254079A4952@whlexch.thezenith.com> From: "Walker, Caleb" To: "'netdev@oss.sgi.com'" Subject: Where do I ask Vortex Driver Questions? Date: Wed, 4 Dec 2002 15:32:51 -0800 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: text/plain X-archive-position: 1307 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: cwalker@thezenith.com Precedence: bulk X-list: netdev Content-Length: 921 Lines: 18 I apologize for taking your time with this email, but I am wondering if you could tell me where I can ask such questions as: How do I set the card up to run at 100MB/Half Duplex? The document is a little hard to understand for someone as ignorant as me. I get everything but what half of the hex numbers mean. Thank you, Caleb Walker ------------------------------------------------------------------------- This email and any attachments constitute non-public information for use only by intended recipient(s) and may contain confidential information. If you are not an intended recipient, please notify our Information Security Officer immediately at (941) 906-5844 and permanently delete the original of this email and any attachments, as well as any copies or printouts thereof.The unauthorized use, dissemination, distribution or reproduction of this email and any attachments is prohibited and may be unlawful. From bogdan.costescu@iwr.uni-heidelberg.de Thu Dec 5 07:07:24 2002 Received: with ECARTIS (v1.0.0; list netdev); Thu, 05 Dec 2002 07:07:26 -0800 (PST) Received: from mail.iwr.uni-heidelberg.de (mail.iwr.uni-heidelberg.de [129.206.104.30]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB5F7NuR006289 for ; Thu, 5 Dec 2002 07:07:24 -0800 Received: from kenzo.iwr.uni-heidelberg.de (kenzo.iwr.uni-heidelberg.de [129.206.120.29]) by mail.iwr.uni-heidelberg.de (8.11.1/8.11.1) with ESMTP id gB5FAaG24055; Thu, 5 Dec 2002 16:10:36 +0100 (MET) Received: from localhost (bogdan@localhost) by kenzo.iwr.uni-heidelberg.de (8.11.6/8.11.6) with ESMTP id gB5FAZl13945; Thu, 5 Dec 2002 16:10:35 +0100 Date: Thu, 5 Dec 2002 16:10:35 +0100 (CET) From: Bogdan Costescu To: "Walker, Caleb" cc: "'netdev@oss.sgi.com'" Subject: Re: Where do I ask Vortex Driver Questions? In-Reply-To: <1FB25D2C0FC3D11193C10050046E9254079A4952@whlexch.thezenith.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1310 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: bogdan.costescu@iwr.uni-heidelberg.de Precedence: bulk X-list: netdev Content-Length: 859 Lines: 26 On Wed, 4 Dec 2002, Walker, Caleb wrote: > I apologize for taking your time with this email, but I am wondering if you > could tell me where I can ask such questions as: Most probably on vortex@scyld.com which is a list dedicated to vortex driver related discussions. > How do I set the card up to run at 100MB/Half Duplex? This is answered in Documentation/networking/vortex.txt in your kernel source tree or at http://www.scyld.com/network/vortex.html (depending on the driver that you're using). > The document is a little hard to understand for someone as ignorant as me. Err, which document ? -- Bogdan Costescu IWR - Interdisziplinaeres Zentrum fuer Wissenschaftliches Rechnen Universitaet Heidelberg, INF 368, D-69120 Heidelberg, GERMANY Telephone: +49 6221 54 8869, Telefax: +49 6221 54 8868 E-mail: Bogdan.Costescu@IWR.Uni-Heidelberg.De From rz5b@cs.virginia.edu Thu Dec 5 13:32:06 2002 Received: with ECARTIS (v1.0.0; list netdev); Thu, 05 Dec 2002 13:32:11 -0800 (PST) Received: from ares.cs.Virginia.EDU (ares.cs.Virginia.EDU [128.143.137.19]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB5LW5uR026609 for ; Thu, 5 Dec 2002 13:32:06 -0800 Received: from bobbidi.cs.Virginia.EDU (bobbidi.cs.Virginia.EDU [128.143.67.48]) by ares.cs.Virginia.EDU (8.9.3+Sun/8.9.2/UVACS-2000040300) with ESMTP id QAA18803; Thu, 5 Dec 2002 16:35:18 -0500 (EST) Date: Thu, 5 Dec 2002 16:36:09 -0500 (EST) From: Ronghua Zhang To: kernelnewbies@nl.linux.org cc: netdev@oss.sgi.com, , Subject: synchronization between net_bh and user-context Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1311 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: rz5b@cs.virginia.edu Precedence: bulk X-list: netdev Content-Length: 1134 Lines: 30 I am reading the TCP/IP code of kernel 2.2.15 and doing some development based on it(yes, I know it's an old version, but I have to). I got a little confused about the synchronization between net_bh and user-context, and hope someone can help me out. Specifically, why the following is impossible? destroy_sock is called on CPU1, and a little bit later net_bh() is executed on CPU2, which will grab the pointer to the socket just before it's destroyed, and its later access becomes invalid. CPU 1 CPU2 destroy_sock() lock_sock() sk->sock_readers++ synchronize_bh(), no bh is running now net_bh() get called =>tcp_v4_rcv() sk = __tcp_v4_lookup(...) sk has not been destroyed tcp_v4_destroy_sock() kill_sk_now() free sk now sk has been destroyed if (!atomic_read(&sk->sock_readers)) <-- sk become invalid ronghua From Sam.Bingner@hickam.af.mil Thu Dec 5 15:54:55 2002 Received: with ECARTIS (v1.0.0; list netdev); Thu, 05 Dec 2002 15:54:58 -0800 (PST) Received: from hic-sr1.hickam.af.mil (HIC-SR1.hickam.af.mil [131.38.214.75]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB5NssuR004762 for ; Thu, 5 Dec 2002 15:54:55 -0800 Received: from fsknmd01.hickam.pacaf.ds.af.mil (FSKNMD01.hickam.af.mil [131.38.158.106]) by hic-sr1.hickam.af.mil (Switch-2.2.2/Switch-2.2.0) with ESMTP id gB5Nra409885; Thu, 5 Dec 2002 13:53:36 -1000 Received: by fsknmd01.hickam.pacaf.ds.af.mil with Internet Mail Service (5.5.2653.19) id ; Thu, 5 Dec 2002 23:50:51 -0000 Message-ID: From: Bingner Sam J Contractor PACAF CSS/SCHE To: "'Roberto Nibali'" , Phil Oester Cc: "David S. Miller" , "'ja@ssi.bg'" , "'linux-kernel@vger.kernel.org'" , "'netdev@oss.sgi.com'" Subject: RE: hidden interface (ARP) 2.4.20 Date: Thu, 5 Dec 2002 23:57:18 -0000 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: text/plain; charset="iso-8859-1" X-archive-position: 1312 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: Sam.Bingner@hickam.af.mil Precedence: bulk X-list: netdev Content-Length: 3175 Lines: 82 to risk getting jumped on again, I still don't see why an address that is -=ASSIGNED TO AN INTERFACE=- should be responded to on a completely different interface... if we wanted the ip address to be assigned to the system, there should be a pseudo interface that will work on any of the interfaces attached. Why assign an address to an interface if it would work just the same if you assigned it to the loopback adapter? Why would you assign an address to the loopback adapter if you wanted it to be accessed from the world? Anyways, just wasting my breath by expressing my point of view... have fun Also, if anybody has a link to something that explains how to do this using an alternate method, or usage for arp_filter... I'd appreciate it if you could email me... I've been searching for like 2 hours and I havn't found anything useful. Sam Bingner -----Original Message----- From: Roberto Nibali [mailto:ratz@drugphish.ch] Sent: Thursday, December 05, 2002 12:51 PM To: Phil Oester Cc: David S. Miller; Bingner Sam J Contractor PACAF CSS/SCHE; 'ja@ssi.bg'; 'linux-kernel@vger.kernel.org' Subject: Re: hidden interface (ARP) 2.4.20 Hello, First I would like to ask people not to post such patches to lkml but rather to the LVS list, because this affects only LVS so far and we cover all kernel versions pretty much up to date. Julian just needs to do the s/__constant_htons/htons/ fixes and upload the changes to his site ;) The inclusion of the hidden feature has been discussed almost to death on netdev (where these questions should have gone in the first place) and it was decided against inclusion of this patch for various reasons. Phil Oester wrote: > So we should enable netfilter for all x-hundred webservers we have? Or play games with routing tables? Yes. What is the problem? You need to setup the x-hundred webservers anyway, 2 routing entry lines certainly won't hurt. Yes, I understand that if you're in process of upgrading your webservers from 2.2.x to 2.4.x this is a bit of an additional pain. There are also other solutions to this arp problem, but please address this on the LVS mailinglist. > Why was something which: > > a) works > b) was present in 2.2.xx kernels > c) is trivial to include and doesn't seem to 'hurt' anything > > ripped from 2.4 kernels? http://marc.theaimsgroup.com/?t=95743539800002&r=1&w=2 > What some people fail to grasp is that _many_ people in the real world are using > the hidden flag in load balancing scenarios for its simplicity. > Removing it (without any particularly valid reason that anyone is > aware of) doesn't make much sense. Depends if it was a hack before that shouldn't have been there in the first place. In an evolutionary process things get optimized ... as has happened with the network stack code. > -Phil > > p.s. flame away, Dave Search the LVS and the netdev archives for constructive discussions about it. No need to flame anyone. But hey, if people keep coming up with this, DaveM and Alexey might get weak and put it back in 2.5.x :) Best regards, Roberto Nibali, ratz -- echo '[q]sa[ln0=aln256%Pln256/snlbx]sb3135071790101768542287578439snlbxq'|dc From zjp@iscas.ac.cn Thu Dec 5 17:18:00 2002 Received: with ECARTIS (v1.0.0; list netdev); Thu, 05 Dec 2002 17:18:05 -0800 (PST) Received: from mail.iscas.ac.cn ([159.226.5.56]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB61HxuR006397 for ; Thu, 5 Dec 2002 17:18:00 -0800 Received: (qmail 25948 invoked by uid 104); 6 Dec 2002 01:21:16 -0000 Received: from zjp@iscas.ac.cn by mail.iscas.ac.cn by uid 0 with qmail-scanner-1.14 (hbedv: 6.15.0.1. hbedv: operating system: Linux (glibc). hbedv: product version: 2.0.4. hbedv: engine version: 6.15.0.1. hbedv: packlib version: 2.0.0.8 (supports 19 formats). hbedv: vdf version: 6.15.0.7 (66928 recognized forms). hbedv: . hbedv: product: AntiVir Workstation. hbedv: key file: hbedv.key. hbedv: registered user: irene, 123. hbedv: serial number: 1001020203. hbedv: key expires: 31 May 2003. hbedv: run mode: PRIVATE. hbedv: . hbedv: product: AntiVir MailGate. hbedv: key file: hbedv.key. hbedv: registered user: irene, 123. hbedv: serial number: 1001020203. hbedv: key expires: 31 May 2003. hbedv: run mode: PRIVATE. hbedv: . hbedv: product: AntiVir (command line scanner). hbedv: key file: hbedv.key. hbedv: registered user: irene, 123. hbedv: serial number: 1001020203. hbedv: key expires: 31 May 2003. hbedv: run mode: PRIVATE. Clear:. Processed in 0.213769 secs); 06 Dec 2002 01:21:16 -0000 Received: from unknown (HELO zhengjp) (zjp@192.168.6.108) by mail.iscas.ac.cn with SMTP; 6 Dec 2002 01:21:16 -0000 Message-ID: <001801c29cc6$25688660$6c06a8c0@zhengjp> From: "Zheng Jianping" To: Subject: ip6_ra_control Date: Fri, 6 Dec 2002 09:23:55 +0800 MIME-Version: 1.0 X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.00.2919.6700 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700 Content-Disposition: inline Content-Type: text/plain Content-Transfer-Encoding: 7bit X-archive-position: 1313 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: zjp@iscas.ac.cn Precedence: bulk X-list: netdev Content-Length: 191 Lines: 11 Hi, What's this function mean, and when&how to call it? int ip6_ra_control(struct sock *sk, int sel, void (*destructor)(struct sock *)) Thanks, Zheng [[HTML alternate version deleted]] From yoshfuji@linux-ipv6.org Thu Dec 5 17:53:09 2002 Received: with ECARTIS (v1.0.0; list netdev); Thu, 05 Dec 2002 17:53:11 -0800 (PST) Received: from yue.hongo.wide.ad.jp (yue.hongo.wide.ad.jp [203.178.139.94]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB61r8uR007339 for ; Thu, 5 Dec 2002 17:53:08 -0800 Received: from localhost (localhost [127.0.0.1]) by yue.hongo.wide.ad.jp (8.12.3+3.5Wbeta/8.12.3/Debian -4) with ESMTP id gB61vFGR011517; Fri, 6 Dec 2002 10:57:16 +0900 Date: Fri, 06 Dec 2002 10:57:15 +0900 (JST) Message-Id: <20021206.105715.03276611.yoshfuji@linux-ipv6.org> To: zjp@iscas.ac.cn Cc: netdev@oss.sgi.com Subject: Re: ip6_ra_control From: YOSHIFUJI Hideaki / =?iso-2022-jp?B?GyRCNUhGIzFRTEAbKEI=?= In-Reply-To: <001801c29cc6$25688660$6c06a8c0@zhengjp> References: <001801c29cc6$25688660$6c06a8c0@zhengjp> Organization: USAGI Project X-URL: http://www.yoshifuji.org/%7Ehideaki/ X-Fingerprint: 90 22 65 EB 1E CF 3A D1 0B DF 80 D8 48 07 F8 94 E0 62 0E EA X-PGP-Key-URL: http://www.yoshifuji.org/%7Ehideaki/hideaki@yoshifuji.org.asc X-Face: "5$Al-.M>NJ%a'@hhZdQm:."qn~PA^gq4o*>iCFToq*bAi#4FRtx}enhuQKz7fNqQz\BYU] $~O_5m-9'}MIs`XGwIEscw;e5b>n"B_?j/AkL~i/MEaZBLP X-Mailer: Mew version 2.2 on Emacs 20.7 / Mule 4.1 (AOI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1314 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: yoshfuji@linux-ipv6.org Precedence: bulk X-list: netdev Content-Length: 525 Lines: 12 In article <001801c29cc6$25688660$6c06a8c0@zhengjp> (at Fri, 6 Dec 2002 09:23:55 +0800), "Zheng Jianping" says: > What's this function mean, and when&how to call it? > int ip6_ra_control(struct sock *sk, int sel, void (*destructor)(struct sock *)) setsockopt(sock, IPPPROTO_IPV6, IPV6_ROUTER_ALERT, &i, sizeof(i)) to receive packet with Router Alert Hop-by-Hop option on routers. -- Hideaki YOSHIFUJI @ USAGI Project GPG FP: 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA From zjp@iscas.ac.cn Fri Dec 6 01:21:09 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 06 Dec 2002 01:21:14 -0800 (PST) Received: from mail.iscas.ac.cn ([159.226.5.56]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB69L7uR016439 for ; Fri, 6 Dec 2002 01:21:09 -0800 Received: (qmail 6255 invoked by uid 104); 6 Dec 2002 09:24:26 -0000 Received: from zjp@iscas.ac.cn by mail.iscas.ac.cn by uid 0 with qmail-scanner-1.14 (hbedv: 6.15.0.1. hbedv: operating system: Linux (glibc). hbedv: product version: 2.0.4. hbedv: engine version: 6.15.0.1. hbedv: packlib version: 2.0.0.8 (supports 19 formats). hbedv: vdf version: 6.15.0.7 (66928 recognized forms). hbedv: . hbedv: product: AntiVir Workstation. hbedv: key file: hbedv.key. hbedv: registered user: irene, 123. hbedv: serial number: 1001020203. hbedv: key expires: 31 May 2003. hbedv: run mode: PRIVATE. hbedv: . hbedv: product: AntiVir MailGate. hbedv: key file: hbedv.key. hbedv: registered user: irene, 123. hbedv: serial number: 1001020203. hbedv: key expires: 31 May 2003. hbedv: run mode: PRIVATE. hbedv: . hbedv: product: AntiVir (command line scanner). hbedv: key file: hbedv.key. hbedv: registered user: irene, 123. hbedv: serial number: 1001020203. hbedv: key expires: 31 May 2003. hbedv: run mode: PRIVATE. Clear:. Processed in 0.217447 secs); 06 Dec 2002 09:24:26 -0000 Received: from unknown (HELO zhengjp) (zjp@192.168.6.108) by mail.iscas.ac.cn with SMTP; 6 Dec 2002 09:24:26 -0000 Message-ID: <004701c29d09$a58e7b40$6c06a8c0@zhengjp> From: "Zheng Jianping" To: Subject: How kernel send message to daemon? Date: Fri, 6 Dec 2002 17:27:07 +0800 MIME-Version: 1.0 X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.00.2919.6700 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700 Content-Disposition: inline Content-Type: text/plain Content-Transfer-Encoding: 7bit X-archive-position: 1318 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: zjp@iscas.ac.cn Precedence: bulk X-list: netdev Content-Length: 206 Lines: 10 Hi, In IPv6 packet forwarding processing, the kernel receives a 'bad' message. Now I want the kernel inform the daemon( a routing protocl ) . Howto? Thanks, Zheng [[HTML alternate version deleted]] From jmorris@intercode.com.au Fri Dec 6 05:24:12 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 06 Dec 2002 05:24:18 -0800 (PST) Received: from blackbird.intercode.com.au (IDENT:root@blackbird.intercode.com.au [203.32.101.10]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB6DO9uR028932 for ; Fri, 6 Dec 2002 05:24:10 -0800 Received: from localhost (jmorris@localhost) by blackbird.intercode.com.au (8.9.3/8.9.3) with ESMTP id AAA13452; Sat, 7 Dec 2002 00:27:16 +1100 Date: Sat, 7 Dec 2002 00:27:16 +1100 (EST) From: James Morris To: Zheng Jianping cc: netdev@oss.sgi.com Subject: Re: How kernel send message to daemon? In-Reply-To: <004701c29d09$a58e7b40$6c06a8c0@zhengjp> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1319 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jmorris@intercode.com.au Precedence: bulk X-list: netdev Content-Length: 293 Lines: 15 On Fri, 6 Dec 2002, Zheng Jianping wrote: > Hi, > > In IPv6 packet forwarding processing, the kernel receives a 'bad' > message. Now I want the kernel inform the daemon( a routing protocl ) . > Howto? Try Netlink (have a look at rtnetlink.c). -- James Morris From jgarzik@pobox.com Sat Dec 7 14:34:36 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 07 Dec 2002 14:34:40 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB7MYZuR016319 for ; Sat, 7 Dec 2002 14:34:35 -0800 Received: from c-24-98-88-232.atl.client2.attbi.com ([24.98.88.232] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18KnaA-0002qp-00; Sat, 07 Dec 2002 22:37:58 +0000 Message-ID: <3DF2781D.3030209@pobox.com> Date: Sat, 07 Dec 2002 17:37:17 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Linux Kernel Mailing List , netdev@oss.sgi.com CC: "David S. Miller" Subject: [RFC][PATCH] net drivers and cache alignment Content-Type: multipart/mixed; boundary="------------070601080505050708040803" X-archive-position: 1320 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Content-Length: 5525 Lines: 197 This is a multi-part message in MIME format. --------------070601080505050708040803 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit One of the [many] nice properties of the traditional Don Becker drivers has been that often the driver-private structures are arranged such that the structure is broken up on cacheline boundaries. The RX thread has a cacheline, the TX thread has a cacheline, etc. Jes Sorensen also independently, in his review of 8139cp.c, suggested that the driver-private struct be update with attention to cacheline boundaries. Early next year, I would like to start cleaning up some of the net drivers along these lines (no pun intended). To make it easier for vendors and random coders to cacheline-align struct members, I would like to make more explicit these cacheline boundaries, in a manner that is portable between 32-bit and 64-bit systems. I attach a sample implementation, and request feedback on this approach. The general idea is to make implementing this sort of concept "harder to screw up." --------------070601080505050708040803 Content-Type: text/plain; name="patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="patch" ===== drivers/net/tg3.c 1.41 vs edited ===== --- 1.41/drivers/net/tg3.c Wed Nov 20 00:49:23 2002 +++ edited/drivers/net/tg3.c Sat Dec 7 17:12:38 2002 @@ -25,6 +25,7 @@ #include #include #include +#include #include #include ===== drivers/net/tg3.h 1.19 vs edited ===== --- 1.19/drivers/net/tg3.h Mon Nov 11 05:27:52 2002 +++ edited/drivers/net/tg3.h Sat Dec 7 17:20:25 2002 @@ -1741,17 +1741,66 @@ * necessary for acquisition of 'tx_lock'. */ spinlock_t lock; - spinlock_t tx_lock; + spinlock_t indirect_lock; + + unsigned long regs; + struct net_device *dev; + struct pci_dev *pdev; + + struct tg3_hw_status *hw_status; + dma_addr_t status_mapping; + + u32 msg_enable; + + /* end "general, frequently-used members" cacheline section */ + ALIGNED_PAD(_pad1_) u32 tx_prod; u32 tx_cons; + u32 tx_pending; + + spinlock_t tx_lock; + + /* TX descs are only used if TG3_FLAG_HOST_TXDS is set. */ + struct tg3_tx_buffer_desc *tx_ring; + struct tx_ring_info *tx_buffers; + dma_addr_t tx_desc_mapping; + + /* end "tx thread" cacheline section */ + ALIGNED_PAD(_pad2_) + u32 rx_rcb_ptr; u32 rx_std_ptr; u32 rx_jumbo_ptr; #if TG3_MINI_RING_WORKS u32 rx_mini_ptr; #endif - spinlock_t indirect_lock; + u32 rx_pending; +#if TG3_MINI_RING_WORKS + u32 rx_mini_pending; +#endif + u32 rx_jumbo_pending; +#if TG3_VLAN_TAG_USED + struct vlan_group *vlgrp; +#endif + + struct tg3_rx_buffer_desc *rx_std; + struct ring_info *rx_std_buffers; + dma_addr_t rx_std_mapping; +#if TG3_MINI_RING_WORKS + struct tg3_rx_buffer_desc *rx_mini; + struct ring_info *rx_mini_buffers; + dma_addr_t rx_mini_mapping; +#endif + struct tg3_rx_buffer_desc *rx_jumbo; + struct ring_info *rx_jumbo_buffers; + dma_addr_t rx_jumbo_mapping; + + struct tg3_rx_buffer_desc *rx_rcb; + dma_addr_t rx_rcb_mapping; + + /* end "rx thread" cacheline section */ + ALIGNED_PAD(_pad3_) struct net_device_stats net_stats; struct net_device_stats net_stats_prev; @@ -1791,8 +1840,6 @@ #define TG3_FLAG_SPLIT_MODE 0x40000000 #define TG3_FLAG_INIT_COMPLETE 0x80000000 - u32 msg_enable; - u32 split_mode_max_reqs; #define SPLIT_MODE_5704_MAX_REQ 3 @@ -1806,13 +1853,6 @@ struct tg3_link_config link_config; struct tg3_bufmgr_config bufmgr_config; - u32 rx_pending; -#if TG3_MINI_RING_WORKS - u32 rx_mini_pending; -#endif - u32 rx_jumbo_pending; - u32 tx_pending; - /* cache h/w values, often passed straight to h/w */ u32 rx_mode; u32 tx_mode; @@ -1865,38 +1905,10 @@ (X) == PHY_ID_BCM5703 || (X) == PHY_ID_BCM5704 || \ (X) == PHY_ID_BCM8002 || (X) == PHY_ID_SERDES) - unsigned long regs; - struct pci_dev *pdev; - struct net_device *dev; -#if TG3_VLAN_TAG_USED - struct vlan_group *vlgrp; -#endif - - struct tg3_rx_buffer_desc *rx_std; - struct ring_info *rx_std_buffers; - dma_addr_t rx_std_mapping; -#if TG3_MINI_RING_WORKS - struct tg3_rx_buffer_desc *rx_mini; - struct ring_info *rx_mini_buffers; - dma_addr_t rx_mini_mapping; -#endif - struct tg3_rx_buffer_desc *rx_jumbo; - struct ring_info *rx_jumbo_buffers; - dma_addr_t rx_jumbo_mapping; - - struct tg3_rx_buffer_desc *rx_rcb; - dma_addr_t rx_rcb_mapping; - - /* TX descs are only used if TG3_FLAG_HOST_TXDS is set. */ - struct tg3_tx_buffer_desc *tx_ring; - struct tx_ring_info *tx_buffers; - dma_addr_t tx_desc_mapping; - - struct tg3_hw_status *hw_status; - dma_addr_t status_mapping; - struct tg3_hw_stats *hw_stats; dma_addr_t stats_mapping; + + /* end "everything else" cacheline(s) section */ }; #endif /* !(_T3_H) */ ===== include/linux/cache.h 1.5 vs edited ===== --- 1.5/include/linux/cache.h Tue Aug 27 16:04:10 2002 +++ edited/include/linux/cache.h Sat Dec 7 17:12:13 2002 @@ -53,4 +53,14 @@ #endif #endif +/* helper used inside struct definitions to break up struct at + * cacheline boundaries. + * Note: do not add a semi-colon (';') after an ALIGNED_PAD use. + */ +struct dummy_cacheline_struct { + int x; +} ____cacheline_aligned; +#define ALIGNED_PAD(name) \ + struct dummy_cacheline_struct name; + #endif /* __LINUX_CACHE_H */ --------------070601080505050708040803-- From davem@redhat.com Sat Dec 7 14:39:56 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 07 Dec 2002 14:39:57 -0800 (PST) Received: from pizda.ninka.net (IDENT:root@pizda.ninka.net [216.101.162.242]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB7MdtuR016674 for ; Sat, 7 Dec 2002 14:39:55 -0800 Received: from localhost (IDENT:davem@localhost.localdomain [127.0.0.1]) by pizda.ninka.net (8.9.3/8.9.3) with ESMTP id OAA03473; Sat, 7 Dec 2002 14:40:05 -0800 Date: Sat, 07 Dec 2002 14:40:04 -0800 (PST) Message-Id: <20021207.144004.45605764.davem@redhat.com> To: jgarzik@pobox.com Cc: linux-kernel@vger.kernel.org, netdev@oss.sgi.com Subject: Re: [RFC][PATCH] net drivers and cache alignment From: "David S. Miller" In-Reply-To: <3DF2781D.3030209@pobox.com> References: <3DF2781D.3030209@pobox.com> X-FalunGong: Information control. X-Mailer: Mew version 2.1 on Emacs 21.1 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1321 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: davem@redhat.com Precedence: bulk X-list: netdev Content-Length: 141 Lines: 5 Can't the cacheline_aligned attribute be applied to individual struct members? I remember doing this for thread_struct on sparc ages ago. From jgarzik@pobox.com Sat Dec 7 14:43:50 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 07 Dec 2002 14:43:52 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB7MhnuR017052 for ; Sat, 7 Dec 2002 14:43:50 -0800 Received: from c-24-98-88-232.atl.client2.attbi.com ([24.98.88.232] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18Knj7-0002ya-00; Sat, 07 Dec 2002 22:47:13 +0000 Message-ID: <3DF27A48.2090903@pobox.com> Date: Sat, 07 Dec 2002 17:46:32 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "David S. Miller" CC: linux-kernel@vger.kernel.org, netdev@oss.sgi.com Subject: Re: [RFC][PATCH] net drivers and cache alignment References: <3DF2781D.3030209@pobox.com> <20021207.144004.45605764.davem@redhat.com> In-Reply-To: <20021207.144004.45605764.davem@redhat.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1322 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Content-Length: 257 Lines: 10 David S. Miller wrote: > Can't the cacheline_aligned attribute be applied to individual > struct members? I remember doing this for thread_struct on > sparc ages ago. I was hoping someone who knows gcc better than me knew that, and would speak up ;-) From jgarzik@pobox.com Sat Dec 7 15:03:33 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 07 Dec 2002 15:03:38 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB7N3WuR017552 for ; Sat, 7 Dec 2002 15:03:33 -0800 Received: from c-24-98-88-232.atl.client2.attbi.com ([24.98.88.232] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18Ko2B-0003HO-00; Sat, 07 Dec 2002 23:06:55 +0000 Message-ID: <3DF27EE7.4010508@pobox.com> Date: Sat, 07 Dec 2002 18:06:15 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "David S. Miller" CC: linux-kernel@vger.kernel.org, netdev@oss.sgi.com, Andrew Morton Subject: [RFC][PATCH] net drivers and cache alignment References: <3DF2781D.3030209@pobox.com> <20021207.144004.45605764.davem@redhat.com> In-Reply-To: <20021207.144004.45605764.davem@redhat.com> Content-Type: multipart/mixed; boundary="------------080805080000030003020904" X-archive-position: 1323 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Content-Length: 4802 Lines: 179 This is a multi-part message in MIME format. --------------080805080000030003020904 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit David S. Miller wrote: > Can't the cacheline_aligned attribute be applied to individual > struct members? I remember doing this for thread_struct on > sparc ages ago. Looks like it from the 2.4 processor.h code. Attached is cut #2. Thanks for all the near-instant feedback so far :) Andrew, does the attached still need padding on SMP? --------------080805080000030003020904 Content-Type: text/plain; name="patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="patch" ===== drivers/net/tg3.c 1.41 vs edited ===== --- 1.41/drivers/net/tg3.c Wed Nov 20 00:49:23 2002 +++ edited/drivers/net/tg3.c Sat Dec 7 17:12:38 2002 @@ -25,6 +25,7 @@ #include #include #include +#include #include #include ===== drivers/net/tg3.h 1.19 vs edited ===== --- 1.19/drivers/net/tg3.h Mon Nov 11 05:27:52 2002 +++ edited/drivers/net/tg3.h Sat Dec 7 18:01:08 2002 @@ -1728,6 +1728,8 @@ }; struct tg3 { + /* begin "general, frequently-used members" cacheline section */ + /* SMP locking strategy: * * lock: Held during all operations except TX packet @@ -1740,20 +1742,63 @@ * be disabled to take 'lock' but only softirq disabling is * necessary for acquisition of 'tx_lock'. */ - spinlock_t lock; - spinlock_t tx_lock; + spinlock_t lock ____cacheline_aligned; + spinlock_t indirect_lock; - u32 tx_prod; + unsigned long regs; + struct net_device *dev; + struct pci_dev *pdev; + + struct tg3_hw_status *hw_status; + dma_addr_t status_mapping; + + u32 msg_enable; + + /* begin "tx thread" cacheline section */ + u32 tx_prod ____cacheline_aligned; u32 tx_cons; - u32 rx_rcb_ptr; + u32 tx_pending; + + spinlock_t tx_lock; + + /* TX descs are only used if TG3_FLAG_HOST_TXDS is set. */ + struct tg3_tx_buffer_desc *tx_ring; + struct tx_ring_info *tx_buffers; + dma_addr_t tx_desc_mapping; + + /* begin "rx thread" cacheline section */ + u32 rx_rcb_ptr ____cacheline_aligned; u32 rx_std_ptr; u32 rx_jumbo_ptr; #if TG3_MINI_RING_WORKS u32 rx_mini_ptr; #endif - spinlock_t indirect_lock; + u32 rx_pending; +#if TG3_MINI_RING_WORKS + u32 rx_mini_pending; +#endif + u32 rx_jumbo_pending; +#if TG3_VLAN_TAG_USED + struct vlan_group *vlgrp; +#endif + + struct tg3_rx_buffer_desc *rx_std; + struct ring_info *rx_std_buffers; + dma_addr_t rx_std_mapping; +#if TG3_MINI_RING_WORKS + struct tg3_rx_buffer_desc *rx_mini; + struct ring_info *rx_mini_buffers; + dma_addr_t rx_mini_mapping; +#endif + struct tg3_rx_buffer_desc *rx_jumbo; + struct ring_info *rx_jumbo_buffers; + dma_addr_t rx_jumbo_mapping; - struct net_device_stats net_stats; + struct tg3_rx_buffer_desc *rx_rcb; + dma_addr_t rx_rcb_mapping; + + /* begin "everything else" cacheline(s) section */ + struct net_device_stats net_stats ____cacheline_aligned; struct net_device_stats net_stats_prev; unsigned long phy_crc_errors; @@ -1791,8 +1836,6 @@ #define TG3_FLAG_SPLIT_MODE 0x40000000 #define TG3_FLAG_INIT_COMPLETE 0x80000000 - u32 msg_enable; - u32 split_mode_max_reqs; #define SPLIT_MODE_5704_MAX_REQ 3 @@ -1806,13 +1849,6 @@ struct tg3_link_config link_config; struct tg3_bufmgr_config bufmgr_config; - u32 rx_pending; -#if TG3_MINI_RING_WORKS - u32 rx_mini_pending; -#endif - u32 rx_jumbo_pending; - u32 tx_pending; - /* cache h/w values, often passed straight to h/w */ u32 rx_mode; u32 tx_mode; @@ -1864,36 +1900,6 @@ (X) == PHY_ID_BCM5411 || (X) == PHY_ID_BCM5701 || \ (X) == PHY_ID_BCM5703 || (X) == PHY_ID_BCM5704 || \ (X) == PHY_ID_BCM8002 || (X) == PHY_ID_SERDES) - - unsigned long regs; - struct pci_dev *pdev; - struct net_device *dev; -#if TG3_VLAN_TAG_USED - struct vlan_group *vlgrp; -#endif - - struct tg3_rx_buffer_desc *rx_std; - struct ring_info *rx_std_buffers; - dma_addr_t rx_std_mapping; -#if TG3_MINI_RING_WORKS - struct tg3_rx_buffer_desc *rx_mini; - struct ring_info *rx_mini_buffers; - dma_addr_t rx_mini_mapping; -#endif - struct tg3_rx_buffer_desc *rx_jumbo; - struct ring_info *rx_jumbo_buffers; - dma_addr_t rx_jumbo_mapping; - - struct tg3_rx_buffer_desc *rx_rcb; - dma_addr_t rx_rcb_mapping; - - /* TX descs are only used if TG3_FLAG_HOST_TXDS is set. */ - struct tg3_tx_buffer_desc *tx_ring; - struct tx_ring_info *tx_buffers; - dma_addr_t tx_desc_mapping; - - struct tg3_hw_status *hw_status; - dma_addr_t status_mapping; struct tg3_hw_stats *hw_stats; dma_addr_t stats_mapping; --------------080805080000030003020904-- From Andrew.Morton@digeo.com Sat Dec 7 15:25:59 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 07 Dec 2002 15:26:01 -0800 (PST) Received: from packet.digeo.com (packet.digeo.com [12.110.80.53]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB7NPxuR018148 for ; Sat, 7 Dec 2002 15:25:59 -0800 Received: from digeo-nav01.digeo.com (digeo-nav01.digeo.com [192.168.1.233]) by packet.digeo.com (8.9.3+Sun/8.9.3) with SMTP id PAA18670 for ; Sat, 7 Dec 2002 15:29:17 -0800 (PST) Received: from digeo-e2k03.digeo.com ([192.168.2.44]) by digeo-nav01.digeo.com (NAVGW 2.5.2.12) with SMTP id M2002120715310031349 ; Sat, 07 Dec 2002 15:31:00 -0800 Received: from pao-ex01.pao.digeo.com ([172.17.144.34]) by digeo-e2k03.digeo.com with Microsoft SMTPSVC(5.0.2195.5329); Sat, 7 Dec 2002 15:29:18 -0800 Received: from digeo.com ([172.17.144.18]) by pao-ex01.pao.digeo.com with Microsoft SMTPSVC(5.0.2195.4905); Sat, 7 Dec 2002 15:29:17 -0800 Message-ID: <3DF2844C.F9216283@digeo.com> Date: Sat, 07 Dec 2002 15:29:16 -0800 From: Andrew Morton X-Mailer: Mozilla 4.79 [en] (X11; U; Linux 2.5.46 i686) X-Accept-Language: en MIME-Version: 1.0 To: Jeff Garzik CC: "David S. Miller" , linux-kernel@vger.kernel.org, netdev@oss.sgi.com Subject: Re: [RFC][PATCH] net drivers and cache alignment References: <3DF2781D.3030209@pobox.com> <20021207.144004.45605764.davem@redhat.com> <3DF27EE7.4010508@pobox.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 07 Dec 2002 23:29:17.0171 (UTC) FILETIME=[75D7DC30:01C29E48] X-archive-position: 1324 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: akpm@digeo.com Precedence: bulk X-list: netdev Content-Length: 1043 Lines: 42 Jeff Garzik wrote: > > David S. Miller wrote: > > Can't the cacheline_aligned attribute be applied to individual > > struct members? I remember doing this for thread_struct on > > sparc ages ago. > > Looks like it from the 2.4 processor.h code. > > Attached is cut #2. Thanks for all the near-instant feedback so far :) > Andrew, does the attached still need padding on SMP? It needs padding _only_ on SMP. ____cacheline_aligned_in_smp. #define offsetof(t, m) ((int)(&((t *)0)->m)) struct foo { int a; int b __attribute__((__aligned__(1024))); int c; } foo; main() { printf("%d\n", sizeof(struct foo)); printf("%d\n", offsetof(struct foo, a)); printf("%d\n", offsetof(struct foo, b)); printf("%d\n", offsetof(struct foo, c)); } ./a.out 2048 0 1024 1028 So your patch will do what you want it to do. You should just tag the first member of a group with ____cacheline_aligned_in_smp, and keep an eye on things with offsetof(). Not sure why sizeof() returned 2048 though. From davem@redhat.com Sat Dec 7 15:30:37 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 07 Dec 2002 15:30:43 -0800 (PST) Received: from pizda.ninka.net (IDENT:root@pizda.ninka.net [216.101.162.242]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB7NUbuR018504 for ; Sat, 7 Dec 2002 15:30:37 -0800 Received: from localhost (IDENT:davem@localhost.localdomain [127.0.0.1]) by pizda.ninka.net (8.9.3/8.9.3) with ESMTP id PAA03608; Sat, 7 Dec 2002 15:30:45 -0800 Date: Sat, 07 Dec 2002 15:30:45 -0800 (PST) Message-Id: <20021207.153045.26640406.davem@redhat.com> To: akpm@digeo.com Cc: jgarzik@pobox.com, linux-kernel@vger.kernel.org, netdev@oss.sgi.com Subject: Re: [RFC][PATCH] net drivers and cache alignment From: "David S. Miller" In-Reply-To: <3DF2844C.F9216283@digeo.com> References: <20021207.144004.45605764.davem@redhat.com> <3DF27EE7.4010508@pobox.com> <3DF2844C.F9216283@digeo.com> X-FalunGong: Information control. X-Mailer: Mew version 2.1 on Emacs 21.1 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1325 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: davem@redhat.com Precedence: bulk X-list: netdev Content-Length: 432 Lines: 13 From: Andrew Morton Date: Sat, 07 Dec 2002 15:29:16 -0800 Jeff Garzik wrote: > Attached is cut #2. Thanks for all the near-instant feedback so far :) > Andrew, does the attached still need padding on SMP? It needs padding _only_ on SMP. ____cacheline_aligned_in_smp. non-smp machines lack L2 caches? That's new to me :-) More seriously, there are real benefits on non-SMP systems. From jgarzik@pobox.com Sat Dec 7 15:34:08 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 07 Dec 2002 15:34:09 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB7NY7uR018867 for ; Sat, 7 Dec 2002 15:34:07 -0800 Received: from c-24-98-88-232.atl.client2.attbi.com ([24.98.88.232] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18KoVm-0003kA-00; Sat, 07 Dec 2002 23:37:30 +0000 Message-ID: <3DF28610.3000004@pobox.com> Date: Sat, 07 Dec 2002 18:36:48 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Andrew Morton CC: "David S. Miller" , linux-kernel@vger.kernel.org, netdev@oss.sgi.com Subject: Re: [RFC][PATCH] net drivers and cache alignment References: <3DF2781D.3030209@pobox.com> <20021207.144004.45605764.davem@redhat.com> <3DF27EE7.4010508@pobox.com> <3DF2844C.F9216283@digeo.com> In-Reply-To: <3DF2844C.F9216283@digeo.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1326 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Content-Length: 670 Lines: 22 Andrew Morton wrote: > It needs padding _only_ on SMP. ____cacheline_aligned_in_smp. [...] > So your patch will do what you want it to do. You should just tag the > first member of a group with ____cacheline_aligned_in_smp, and keep an > eye on things with offsetof(). thanks. For this case, though, I want to align on cacheline bounaries even on UP, right? That's why I picked ____cacheline_aligned. It uses L1_CACHE_BYTES when !CONFIG_SMP. Other uses of ____cacheline_aligned in the kernel seem to relate to irq matters, just like my groupings in tg3.h. [obviously benchmarking can answer some of this, but I want to hammer out silliness first] Jeff From jamagallon@able.es Sat Dec 7 15:34:52 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 07 Dec 2002 15:34:54 -0800 (PST) Received: from smtp09.retemail.es (smtp09.iddeo.es [62.81.186.19]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB7NYouR019123 for ; Sat, 7 Dec 2002 15:34:51 -0800 Received: from werewolf.able.es ([212.97.172.115]) by smtp09.retemail.es (InterMail vM.5.01.05.12 201-253-122-126-112-20020820) with ESMTP id <20021207233811.GORR1188.smtp09.retemail.es@werewolf.able.es>; Sun, 8 Dec 2002 00:38:11 +0100 Date: Sun, 8 Dec 2002 00:37:46 +0100 From: "J.A. Magallon" To: Andrew Morton Cc: Jeff Garzik , "David S. Miller" , linux-kernel@vger.kernel.org, netdev@oss.sgi.com Subject: Re: [RFC][PATCH] net drivers and cache alignment Message-ID: <20021207233745.GE3183@werewolf.able.es> References: <3DF2781D.3030209@pobox.com> <20021207.144004.45605764.davem@redhat.com> <3DF27EE7.4010508@pobox.com> <3DF2844C.F9216283@digeo.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <3DF2844C.F9216283@digeo.com>; from akpm@digeo.com on Sun, Dec 08, 2002 at 00:29:16 +0100 X-Mailer: Balsa 1.4.1 X-archive-position: 1327 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jamagallon@able.es Precedence: bulk X-list: netdev Content-Length: 1441 Lines: 62 On 2002.12.08 Andrew Morton wrote: >Jeff Garzik wrote: >> >> David S. Miller wrote: >> > Can't the cacheline_aligned attribute be applied to individual >> > struct members? I remember doing this for thread_struct on >> > sparc ages ago. >> >> Looks like it from the 2.4 processor.h code. >> >> Attached is cut #2. Thanks for all the near-instant feedback so far :) >> Andrew, does the attached still need padding on SMP? > What do you all think about this: #include #define CACHE_LINE_SIZE 128 #define ____cacheline_aligned __attribute__((__aligned__(CACHE_LINE_SIZE))) #define __cacheline_start struct { } ____cacheline_aligned; #define offsetof(t, m) ((int)(&((t *)0)->m)) struct S { __cacheline_start int x; __cacheline_start int y; int z; }; int main() { struct S s; printf("%d\n",sizeof(struct S)); printf("%d\n",offsetof(struct S,x)); printf("%d\n",offsetof(struct S,y)); printf("%d\n",offsetof(struct S,z)); } werewolf:~> vi kk.c werewolf:~> kk 256 0 128 132 So you don't have to modify any field, just put __cacheline_start where needed ? (and does not add any extra sizeof(int) overhead). -- J.A. Magallon \ Software is like sex: werewolf.able.es \ It's better when it's free Mandrake Linux release 9.1 (Cooker) for i586 Linux 2.4.20-jam1 (gcc 3.2 (Mandrake Linux 9.1 3.2-4mdk)) From Andrew.Morton@digeo.com Sat Dec 7 15:38:43 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 07 Dec 2002 15:38:47 -0800 (PST) Received: from packet.digeo.com (packet.digeo.com [12.110.80.53]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB7NcguR019615 for ; Sat, 7 Dec 2002 15:38:42 -0800 Received: from digeo-nav01.digeo.com (digeo-nav01.digeo.com [192.168.1.233]) by packet.digeo.com (8.9.3+Sun/8.9.3) with SMTP id PAA18874 for ; Sat, 7 Dec 2002 15:42:01 -0800 (PST) Received: from digeo-e2k03.digeo.com ([192.168.2.44]) by digeo-nav01.digeo.com (NAVGW 2.5.2.12) with SMTP id M2002120715434417363 ; Sat, 07 Dec 2002 15:43:44 -0800 Received: from pao-ex01.pao.digeo.com ([172.17.144.34]) by digeo-e2k03.digeo.com with Microsoft SMTPSVC(5.0.2195.5329); Sat, 7 Dec 2002 15:42:01 -0800 Received: from digeo.com ([172.17.144.18]) by pao-ex01.pao.digeo.com with Microsoft SMTPSVC(5.0.2195.4905); Sat, 7 Dec 2002 15:42:00 -0800 Message-ID: <3DF28748.186AB31F@digeo.com> Date: Sat, 07 Dec 2002 15:42:00 -0800 From: Andrew Morton X-Mailer: Mozilla 4.79 [en] (X11; U; Linux 2.5.46 i686) X-Accept-Language: en MIME-Version: 1.0 To: "David S. Miller" CC: jgarzik@pobox.com, linux-kernel@vger.kernel.org, netdev@oss.sgi.com Subject: Re: [RFC][PATCH] net drivers and cache alignment References: <3DF2844C.F9216283@digeo.com> <20021207.153045.26640406.davem@redhat.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 07 Dec 2002 23:42:00.0630 (UTC) FILETIME=[3CE67560:01C29E4A] X-archive-position: 1328 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: akpm@digeo.com Precedence: bulk X-list: netdev Content-Length: 630 Lines: 19 "David S. Miller" wrote: > > From: Andrew Morton > Date: Sat, 07 Dec 2002 15:29:16 -0800 > > Jeff Garzik wrote: > > Attached is cut #2. Thanks for all the near-instant feedback so far :) > > Andrew, does the attached still need padding on SMP? > > It needs padding _only_ on SMP. ____cacheline_aligned_in_smp. > > non-smp machines lack L2 caches? That's new to me :-) > > More seriously, there are real benefits on non-SMP systems. Then I am most confused. None of these fields will be put under busmastering or anything like that, so what advantage is there in spreading them out? From jgarzik@pobox.com Sat Dec 7 15:40:22 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 07 Dec 2002 15:40:24 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB7NeLuR019913 for ; Sat, 7 Dec 2002 15:40:21 -0800 Received: from c-24-98-88-232.atl.client2.attbi.com ([24.98.88.232] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18Kobl-0003pC-00; Sat, 07 Dec 2002 23:43:41 +0000 Message-ID: <3DF28781.3070405@pobox.com> Date: Sat, 07 Dec 2002 18:42:57 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "J.A. Magallon" CC: Andrew Morton , "David S. Miller" , linux-kernel@vger.kernel.org, netdev@oss.sgi.com Subject: Re: [RFC][PATCH] net drivers and cache alignment References: <3DF2781D.3030209@pobox.com> <20021207.144004.45605764.davem@redhat.com> <3DF27EE7.4010508@pobox.com> <3DF2844C.F9216283@digeo.com> <20021207233745.GE3183@werewolf.able.es> In-Reply-To: <20021207233745.GE3183@werewolf.able.es> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1329 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Content-Length: 819 Lines: 34 J.A. Magallon wrote: > On 2002.12.08 Andrew Morton wrote: > >>Jeff Garzik wrote: >> >>>David S. Miller wrote: >>> >>>>Can't the cacheline_aligned attribute be applied to individual >>>>struct members? I remember doing this for thread_struct on >>>>sparc ages ago. >>> >>>Looks like it from the 2.4 processor.h code. >>> >>>Attached is cut #2. Thanks for all the near-instant feedback so far :) >>> Andrew, does the attached still need padding on SMP? >> > > What do you all think about this: > > #include > > #define CACHE_LINE_SIZE 128 > #define ____cacheline_aligned __attribute__((__aligned__(CACHE_LINE_SIZE))) > > #define __cacheline_start struct { } ____cacheline_aligned; if you can mark struct members with attributes, as it appears you can, there's no need to define a struct. Jeff From Andrew.Morton@digeo.com Sat Dec 7 15:42:05 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 07 Dec 2002 15:42:06 -0800 (PST) Received: from packet.digeo.com (packet.digeo.com [12.110.80.53]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB7Ng5uR020334 for ; Sat, 7 Dec 2002 15:42:05 -0800 Received: from digeo-nav01.digeo.com (digeo-nav01.digeo.com [192.168.1.233]) by packet.digeo.com (8.9.3+Sun/8.9.3) with SMTP id PAA18945 for ; Sat, 7 Dec 2002 15:45:23 -0800 (PST) Received: from digeo-e2k03.digeo.com ([192.168.2.44]) by digeo-nav01.digeo.com (NAVGW 2.5.2.12) with SMTP id M2002120715470616840 ; Sat, 07 Dec 2002 15:47:06 -0800 Received: from pao-ex01.pao.digeo.com ([172.17.144.34]) by digeo-e2k03.digeo.com with Microsoft SMTPSVC(5.0.2195.5329); Sat, 7 Dec 2002 15:45:23 -0800 Received: from digeo.com ([172.17.144.18]) by pao-ex01.pao.digeo.com with Microsoft SMTPSVC(5.0.2195.4905); Sat, 7 Dec 2002 15:45:22 -0800 Message-ID: <3DF28811.F6580BA6@digeo.com> Date: Sat, 07 Dec 2002 15:45:21 -0800 From: Andrew Morton X-Mailer: Mozilla 4.79 [en] (X11; U; Linux 2.5.46 i686) X-Accept-Language: en MIME-Version: 1.0 To: "J.A. Magallon" CC: Jeff Garzik , "David S. Miller" , linux-kernel@vger.kernel.org, netdev@oss.sgi.com Subject: Re: [RFC][PATCH] net drivers and cache alignment References: <3DF2781D.3030209@pobox.com> <20021207.144004.45605764.davem@redhat.com> <3DF27EE7.4010508@pobox.com> <3DF2844C.F9216283@digeo.com> <20021207233745.GE3183@werewolf.able.es> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 07 Dec 2002 23:45:22.0378 (UTC) FILETIME=[B526C2A0:01C29E4A] X-archive-position: 1330 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: akpm@digeo.com Precedence: bulk X-list: netdev Content-Length: 446 Lines: 13 "J.A. Magallon" wrote: > > #define __cacheline_start struct { } ____cacheline_aligned; That will generate a warning on faster^Wolder versions of gcc. mnm:/home/akpm> gcc t2.c t2.c:11: warning: unnamed struct/union that defines no instances t2.c:15: warning: unnamed struct/union that defines no instances mnm:/home/akpm> gcc -v Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/specs gcc version 2.95.3 20010315 (release) From Andrew.Morton@digeo.com Sat Dec 7 15:48:19 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 07 Dec 2002 15:48:21 -0800 (PST) Received: from packet.digeo.com (packet.digeo.com [12.110.80.53]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB7NmJuR020748 for ; Sat, 7 Dec 2002 15:48:19 -0800 Received: from digeo-nav01.digeo.com (digeo-nav01.digeo.com [192.168.1.233]) by packet.digeo.com (8.9.3+Sun/8.9.3) with SMTP id PAA19081 for ; Sat, 7 Dec 2002 15:51:38 -0800 (PST) Received: from digeo-e2k03.digeo.com ([192.168.2.44]) by digeo-nav01.digeo.com (NAVGW 2.5.2.12) with SMTP id M2002120715532000144 ; Sat, 07 Dec 2002 15:53:20 -0800 Received: from pao-ex01.pao.digeo.com ([172.17.144.34]) by digeo-e2k03.digeo.com with Microsoft SMTPSVC(5.0.2195.5329); Sat, 7 Dec 2002 15:51:38 -0800 Received: from digeo.com ([172.17.144.18]) by pao-ex01.pao.digeo.com with Microsoft SMTPSVC(5.0.2195.4905); Sat, 7 Dec 2002 15:51:36 -0800 Message-ID: <3DF28988.93F268EA@digeo.com> Date: Sat, 07 Dec 2002 15:51:36 -0800 From: Andrew Morton X-Mailer: Mozilla 4.79 [en] (X11; U; Linux 2.5.46 i686) X-Accept-Language: en MIME-Version: 1.0 To: "David S. Miller" , jgarzik@pobox.com, linux-kernel@vger.kernel.org, netdev@oss.sgi.com Subject: Re: [RFC][PATCH] net drivers and cache alignment References: <3DF2844C.F9216283@digeo.com> <20021207.153045.26640406.davem@redhat.com> <3DF28748.186AB31F@digeo.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 07 Dec 2002 23:51:36.0841 (UTC) FILETIME=[94594790:01C29E4B] X-archive-position: 1331 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: akpm@digeo.com Precedence: bulk X-list: netdev Content-Length: 897 Lines: 27 Andrew Morton wrote: > > "David S. Miller" wrote: > > > > From: Andrew Morton > > Date: Sat, 07 Dec 2002 15:29:16 -0800 > > > > Jeff Garzik wrote: > > > Attached is cut #2. Thanks for all the near-instant feedback so far :) > > > Andrew, does the attached still need padding on SMP? > > > > It needs padding _only_ on SMP. ____cacheline_aligned_in_smp. > > > > non-smp machines lack L2 caches? That's new to me :-) > > > > More seriously, there are real benefits on non-SMP systems. > > Then I am most confused. None of these fields will be put under > busmastering or anything like that, so what advantage is there in > spreading them out? Oh I see what you want - to be able to pick up all the operating fields in a single fetch. That will increase the overall cache footprint though. I wonder if it's really a net win, over just keeping it small. From jamagallon@able.es Sat Dec 7 15:49:54 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 07 Dec 2002 15:49:56 -0800 (PST) Received: from smtp07.retemail.es (smtp07.iddeo.es [62.81.186.17]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB7NnruR021013 for ; Sat, 7 Dec 2002 15:49:54 -0800 Received: from werewolf.able.es ([212.97.172.115]) by smtp07.retemail.es (InterMail vM.5.01.05.12 201-253-122-126-112-20020820) with ESMTP id <20021207235316.HCKY1229.smtp07.retemail.es@werewolf.able.es>; Sun, 8 Dec 2002 00:53:16 +0100 Date: Sun, 8 Dec 2002 00:52:55 +0100 From: "J.A. Magallon" To: Andrew Morton Cc: "J.A. Magallon" , Jeff Garzik , "David S. Miller" , linux-kernel@vger.kernel.org, netdev@oss.sgi.com Subject: Re: [RFC][PATCH] net drivers and cache alignment Message-ID: <20021207235255.GA3754@werewolf.able.es> References: <3DF2781D.3030209@pobox.com> <20021207.144004.45605764.davem@redhat.com> <3DF27EE7.4010508@pobox.com> <3DF2844C.F9216283@digeo.com> <20021207233745.GE3183@werewolf.able.es> <3DF28811.F6580BA6@digeo.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <3DF28811.F6580BA6@digeo.com>; from akpm@digeo.com on Sun, Dec 08, 2002 at 00:45:21 +0100 X-Mailer: Balsa 1.4.1 X-archive-position: 1332 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jamagallon@able.es Precedence: bulk X-list: netdev Content-Length: 1006 Lines: 29 On 2002.12.08 Andrew Morton wrote: >"J.A. Magallon" wrote: >> >> #define __cacheline_start struct { } ____cacheline_aligned; > >That will generate a warning on faster^Wolder versions of gcc. > >mnm:/home/akpm> gcc t2.c >t2.c:11: warning: unnamed struct/union that defines no instances >t2.c:15: warning: unnamed struct/union that defines no instances >mnm:/home/akpm> gcc -v >Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/specs >gcc version 2.95.3 20010315 (release) > And how 'bout this (do not have any gcc oldie available to test): #define __cacheline_start union { int :0; } ____cacheline_aligned; It passes gcc-3.2 -Wall... I think it's nicer to insert __c_s than to go field by field marking them... -- J.A. Magallon \ Software is like sex: werewolf.able.es \ It's better when it's free Mandrake Linux release 9.1 (Cooker) for i586 Linux 2.4.20-jam1 (gcc 3.2 (Mandrake Linux 9.1 3.2-4mdk)) From drow@false.org Sat Dec 7 17:10:37 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 07 Dec 2002 17:10:40 -0800 (PST) Received: from crack.them.org (mail@crack.them.org [65.125.64.184]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB81AauR022423 for ; Sat, 7 Dec 2002 17:10:37 -0800 Received: from nevyn.them.org ([66.93.61.169] ident=mail) by crack.them.org with asmtp (Exim 3.12 #1 (Debian)) id 18Krt9-0004GZ-00; Sat, 07 Dec 2002 21:13:52 -0600 Received: from drow by nevyn.them.org with local (Exim 3.36 #1 (Debian)) id 18Kq1D-00028p-00; Sat, 07 Dec 2002 20:14:03 -0500 Date: Sat, 7 Dec 2002 20:14:03 -0500 From: Daniel Jacobowitz To: Andrew Morton Cc: Jeff Garzik , "David S. Miller" , linux-kernel@vger.kernel.org, netdev@oss.sgi.com Subject: Re: [RFC][PATCH] net drivers and cache alignment Message-ID: <20021208011403.GA7729@nevyn.them.org> Mail-Followup-To: Andrew Morton , Jeff Garzik , "David S. Miller" , linux-kernel@vger.kernel.org, netdev@oss.sgi.com References: <3DF2781D.3030209@pobox.com> <20021207.144004.45605764.davem@redhat.com> <3DF27EE7.4010508@pobox.com> <3DF2844C.F9216283@digeo.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3DF2844C.F9216283@digeo.com> User-Agent: Mutt/1.5.1i X-archive-position: 1333 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: dan@debian.org Precedence: bulk X-list: netdev Content-Length: 1511 Lines: 55 On Sat, Dec 07, 2002 at 03:29:16PM -0800, Andrew Morton wrote: > Jeff Garzik wrote: > > > > David S. Miller wrote: > > > Can't the cacheline_aligned attribute be applied to individual > > > struct members? I remember doing this for thread_struct on > > > sparc ages ago. > > > > Looks like it from the 2.4 processor.h code. > > > > Attached is cut #2. Thanks for all the near-instant feedback so far :) > > Andrew, does the attached still need padding on SMP? > > It needs padding _only_ on SMP. ____cacheline_aligned_in_smp. > > #define offsetof(t, m) ((int)(&((t *)0)->m)) > > struct foo { > int a; > int b __attribute__((__aligned__(1024))); > int c; > } foo; > > main() > { > printf("%d\n", sizeof(struct foo)); > printf("%d\n", offsetof(struct foo, a)); > printf("%d\n", offsetof(struct foo, b)); > printf("%d\n", offsetof(struct foo, c)); > } > > ./a.out > 2048 > 0 > 1024 > 1028 > > So your patch will do what you want it to do. You should just tag the > first member of a group with ____cacheline_aligned_in_smp, and keep an > eye on things with offsetof(). > > Not sure why sizeof() returned 2048 though. The structure contains an __aligned__(1024) item. Think about an array of 'struct foo' items. They have to be 2048 bytes or you won't align correctly. C allows for empty space in structure padding, but not in arrays, AFAIK. -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer From davem@redhat.com Sun Dec 8 12:00:41 2002 Received: with ECARTIS (v1.0.0; list netdev); Sun, 08 Dec 2002 12:00:45 -0800 (PST) Received: from pizda.ninka.net (IDENT:root@pizda.ninka.net [216.101.162.242]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB8K0fuR006713 for ; Sun, 8 Dec 2002 12:00:41 -0800 Received: from localhost (IDENT:davem@localhost.localdomain [127.0.0.1]) by pizda.ninka.net (8.9.3/8.9.3) with ESMTP id MAA21843; Sun, 8 Dec 2002 12:00:45 -0800 Date: Sun, 08 Dec 2002 12:00:44 -0800 (PST) Message-Id: <20021208.120044.08024570.davem@redhat.com> To: akpm@digeo.com Cc: jgarzik@pobox.com, linux-kernel@vger.kernel.org, netdev@oss.sgi.com Subject: Re: [RFC][PATCH] net drivers and cache alignment From: "David S. Miller" In-Reply-To: <3DF28748.186AB31F@digeo.com> References: <3DF2844C.F9216283@digeo.com> <20021207.153045.26640406.davem@redhat.com> <3DF28748.186AB31F@digeo.com> X-FalunGong: Information control. X-Mailer: Mew version 2.1 on Emacs 21.1 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1335 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: davem@redhat.com Precedence: bulk X-list: netdev Content-Length: 830 Lines: 23 From: Andrew Morton Date: Sat, 07 Dec 2002 15:42:00 -0800 "David S. Miller" wrote: > non-smp machines lack L2 caches? That's new to me :-) > > More seriously, there are real benefits on non-SMP systems. Then I am most confused. None of these fields will be put under busmastering or anything like that, so what advantage is there in spreading them out? When you are in the "tx path" you'll take one L2 cache miss to bring all the necessary information into the cpu's caches. Otherwise, when data is arbitrarily scattered over multiple L2 cache lines, you'll need to service potentially more L2 cache misses. This optimization has nothing to do with false data sharing amoungst multiple processors. It's about packing the data accesses optimally for specific code paths. From david-b@pacbell.net Sun Dec 8 14:37:09 2002 Received: with ECARTIS (v1.0.0; list netdev); Sun, 08 Dec 2002 14:37:13 -0800 (PST) Received: from mta7.pltn13.pbi.net (mta7.pltn13.pbi.net [64.164.98.8]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB8Mb9uR010738 for ; Sun, 8 Dec 2002 14:37:09 -0800 Received: from pacbell.net ([67.118.246.27]) by mta7.pltn13.pbi.net (iPlanet Messaging Server 5.1 HotFix 1.6 (built Oct 18 2002)) with ESMTP id <0H6T009YOO6FKV@mta7.pltn13.pbi.net> for netdev@oss.sgi.com; Sun, 08 Dec 2002 14:37:29 -0800 (PST) Date: Sun, 08 Dec 2002 14:42:16 -0800 From: David Brownell Subject: Re: 2.5.50 BUG_TRAP on !dev->deadbeaf, and oopses To: Stefan Rompf Cc: netdev@oss.sgi.com Message-id: <3DF3CAC8.5070309@pacbell.net> MIME-version: 1.0 Content-type: text/plain; format=flowed; charset=us-ascii Content-transfer-encoding: 7bit X-Accept-Language: en-us, en, fr User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9) Gecko/20020513 References: <3DE9290A.7070502@pacbell.net> <3DEA0452.B1F15BFD@isg.de> <3DEBA9F5.6000606@pacbell.net> X-archive-position: 1336 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: david-b@pacbell.net Precedence: bulk X-list: netdev Content-Length: 3031 Lines: 82 Following up on my earlier reply ... > Hi Stefan, > >>> KERNEL: assertion (!dev->deadbeaf) failed at net/core/dev.c(2544) >>> >>> I think there's another bug, beyond the obvious speling erorz. Namely, >>> that "deadbeaf" is only set after that BUG_TRAP, or on one error path. >>> The assertion prevents hotpluggable network drivers from unregistering >>> when the hardware goes away ... which is a regression. >> >> >> >> actually, the assertion is triggered when someone tries to unregister a >> netdevice twice, and that's also why you get FWIW I just added a printk so I could see if the disconnect() method was called more than once (by USB) per your guess ... no, it wasn't. It's called once, leading to flakey diagnostices and a BUG(). So this is clearly some kind of network layer problem, as I described in my original message (and then in this one). Behavioral proof, as well as the one that came from inspecting the kernel source code and noticing that "deadbeaf" clearly can't be achieving what it seems to be intending to do... Is there someone who has a clear explanation of exactly how "deadbeaf" was once expected to work -- and now (since sometime before about 2.5.40) evidently doesn't? It seems to be driven by side effects, and whatever comments are in the code aren't any help. The only case "deadbeaf" could be set is still documented as an error path ... but evidently those USB drivers don't hit that "error" path any more on 2.5 (but they do on 2.4, and did earlier in 2.5 also). My thought is that there were some bugs covering for each other, and one of them got fixed ... exposing this. But without knowing what the networking code was really expecting to do, I can't fix anything. > Then why will grep of all kernel files not turn up other places where > 'deadbeaf' gets set? There's strange stuff going on here regardless > (as well as speling issue), which looks pretty buglike. > > Plus: this kind of bugcatch should use magic numbers, or maybe zero. > Assuming "any nonzero value is valid", like this assertion does, is > clearly going to fail for any of the class of bugs highlighted by > slab poisoning. (0xa5a5a5a5 gets accepted as valid...) > > >>> unregister_netdevice: device /dfd74058 never was registered >> >> >> >> From a short browsing through usb.c I don't see a similiar bug catcher >> in usb_device_remove(), so have a look if the USB subsystem itself >> removes a unplugged device twice for some reason. > > > At least one failure path also involves "rmmod" of the network > drivers, where the device hardware is still around; so that code > would not always be called. > > I wouldn't rule out problems in the relevant usbcore/sysfs bits, > even now that they seem to have stabilized again (and yes, I was > wondering about multiple disconnects too), but all that deadbeaf > logic still looks fishy to me. Right now I _would_ absolutely rule out such a problem. And that "deadbeaf" stuff still looks more than a little bit dubious. > - Dave > > > From hadi@cyberus.ca Mon Dec 9 05:32:15 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 09 Dec 2002 05:32:19 -0800 (PST) Received: from cyberus.ca (mail.cyberus.ca [216.191.240.111]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB9DWEuR020182 for ; Mon, 9 Dec 2002 05:32:15 -0800 Received: from shell.cyberus.ca (shell [216.191.240.114]) by cyberus.ca (8.9.3/8.9.3/Cyberus Online Inc.) with ESMTP id IAA27259; Mon, 9 Dec 2002 08:35:44 -0500 (EST) Received: from localhost (hadi@localhost) by shell.cyberus.ca (8.11.6+Sun/8.11.6) with ESMTP id gB9DRdU19286; Mon, 9 Dec 2002 08:27:39 -0500 (EST) X-Authentication-Warning: shell.cyberus.ca: hadi owned process doing -bs Date: Mon, 9 Dec 2002 08:27:39 -0500 (EST) From: jamal To: Jeff Garzik cc: Stefan Rompf , "David S. Miller" , Subject: Re: Patch resubmission: RFC2863 operstatus for 2.5.50 In-Reply-To: <3DEE3E6E.30407@pobox.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1337 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: hadi@cyberus.ca Precedence: bulk X-list: netdev Content-Length: 3494 Lines: 79 On Wed, 4 Dec 2002, Jeff Garzik wrote: > jamal wrote: > > Stefans curtrent patch makes the info available via netlink. > > He has two patches: link change notification, and RFC2863 operstatus. > I agree with the first one and support its inclusion; the second one I > question its need. > > (just for context, I am referring to message <3DED2EA9.D812C881@isg.de> > dated Dec 3) > > > > What dont you like about it Jeff? Take a quick look at RFC2863 > > and scan for IfAdminStatus and IfOperStatus. The modelling RFC2863 > > has is pretty good and thats what Stefan has followed (after we weeded > > a few crappy pieces off the RFC; we discussed on netdev). > > I had looked at ifAdminStatus and ifOperStatus before I posted :) > > My argument is, _after_ Stefan's link state patch is applied, why do we > need the additional patch? [this question is meant to be delivered in > an honest, not snide way...] > I somehow deleted the original email he sent with the patches. What two patches? I thought he had one which was a backport and another which was for 2.5.x (sorry, i actually have seen those patches a few times so i didnt bother reviewing anything); In any case, when you look at this stuff think as well of devices that are software netddevices example VLANs or PPP or some of the USB, Irda etc and you want the status properly reflected (and some of that status may not make sense to ethernet for example). > For ifAdminStatus, you have "up", "down", and "testing" states. Since > we have no concept of a testing state, if we eliminate that we have "up" > and "down", two states we can obviously handle. > > For ifOperStatus, we have "up", "down" and "testing", which are > applicable (or not) to Linux as with ifAdminStatus. Further we have > states "dormant", "unknown", "notPresent", "lowerLayerDown". I'll > discuss each of these in detail. > > "dormant" - not used in Stefan's patch, which I agree with. > "unknown" - only used in Stefan's patch before interface is first up'd, > which is IMO inaccurate. Accurate use of "up" and "down", to me, > implies -no- use of "unknown" state. Because as soon as we are > initialized, all ethernet details are known, thus "down" is more > applicable. The Linux net stack's atomicity is such that leaking an > "unknown" state would be a bug, too. > "notPresent" - analagous to Linux's netif_device_xxx, and Stefan's patch > acknowledges this. However, the use of netif_device_xxx in drivers is > really only used when the hardware is suspended. If hardware goes away, > the interface goes away too, almost immediately. > "lowerLayerDown" - not used in Stefan's patch, which I agree with. > > So, Stefan's 2nd patch really only adds "unknown" and "notPresent" > states to current behavior -- and the applicability of those states to > Linux is IMO questionable. > If all he is adding are some enumerated types, theres no harm. I cant remember the details of the discussions - but we had long winding discussions on the different states. Note you need both admin and operational status and physically thet may mean different things (think PPP and ethernet for example). You also need to properly reflect the status for all sorts of netdevices. As long as those requirements are met, then all is good. The RFC is not the final word but it draws from experiences people had for years doing this kind of stuff - so it is a good idea to draw from their experiences (but ok to ignore it if it sounds unrealistic). cheers, jamal From hadi@cyberus.ca Mon Dec 9 05:34:15 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 09 Dec 2002 05:34:17 -0800 (PST) Received: from cyberus.ca (mail.cyberus.ca [216.191.240.111]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB9DYEuR020394 for ; Mon, 9 Dec 2002 05:34:15 -0800 Received: from shell.cyberus.ca (shell [216.191.240.114]) by cyberus.ca (8.9.3/8.9.3/Cyberus Online Inc.) with ESMTP id IAA27953; Mon, 9 Dec 2002 08:37:45 -0500 (EST) Received: from localhost (hadi@localhost) by shell.cyberus.ca (8.11.6+Sun/8.11.6) with ESMTP id gB9DTjG19296; Mon, 9 Dec 2002 08:29:45 -0500 (EST) X-Authentication-Warning: shell.cyberus.ca: hadi owned process doing -bs Date: Mon, 9 Dec 2002 08:29:45 -0500 (EST) From: jamal To: Ronghua Zhang cc: Subject: Re: synchronization between bottom half and user context In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1338 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: hadi@cyberus.ca Precedence: bulk X-list: netdev Content-Length: 1369 Lines: 50 To reitarate: 1) serialization is against n-CPUs towards the socket. 2) ordered data (dont care whether its 1 or n-CPUs). TCP cares, UDP doesnt. The main TCP path towards the socket runs in softirq context - you can have the same softirq code running on multiple CPUs at the same time. The system call is in process context. cheers, jamal On Wed, 4 Dec 2002, Ronghua Zhang wrote: > Do you mean that net_bh can be running on several CPU at the same time? > If it is juat a UP, can I say that socket system call and net_bh is always > serialized even without lock_sock()? > > Ronghua > > On Wed, 4 Dec 2002, jamal wrote: > > > > > > > On Tue, 3 Dec 2002, Ronghua Zhang wrote: > > > > > Can someone tell me when lock should be used to synchronize bh and user > > > context? > > > > > > For examle: in tcp_accept(), lock_sock() is called to avoid any change > > > made by net_bh during its operation. But if tcp_accept() is called, it's > > > impossilbe that net_bh is also executing. (i think this is true for UP, > > > what about SMP?), then why need lock_sock()? > > > > > > > to serialize packets towards the socket; The linux network stack > > is threaded, you can have upto n packets to the same socket coming up the > > stack in parallel on an n-SMP machine; think of that and the fact that TCP > > data must be sequenced. > > > > cheers, > > jamal > > > > From david-b@pacbell.net Mon Dec 9 11:54:42 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 09 Dec 2002 11:54:47 -0800 (PST) Received: from mta7.pltn13.pbi.net (mta7.pltn13.pbi.net [64.164.98.8]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB9JsguR030853 for ; Mon, 9 Dec 2002 11:54:42 -0800 Received: from pacbell.net ([67.118.246.52]) by mta7.pltn13.pbi.net (iPlanet Messaging Server 5.1 HotFix 1.6 (built Oct 18 2002)) with ESMTP id <0H6V005K7BGZ82@mta7.pltn13.pbi.net> for netdev@oss.sgi.com; Mon, 09 Dec 2002 11:58:14 -0800 (PST) Date: Mon, 09 Dec 2002 11:51:18 -0800 From: David Brownell Subject: Re: 2.5.50 BUG_TRAP on !dev->deadbeaf, and oopses To: Stefan Rompf Cc: netdev@oss.sgi.com Message-id: <3DF4F436.6020807@pacbell.net> MIME-version: 1.0 Content-type: text/plain; format=flowed; charset=us-ascii Content-transfer-encoding: 7bit X-Accept-Language: en-us, en, fr User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9) Gecko/20020513 References: <3DE9290A.7070502@pacbell.net> <3DEA0452.B1F15BFD@isg.de> <3DEBA9F5.6000606@pacbell.net> <3DF3CAC8.5070309@pacbell.net> X-archive-position: 1339 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: david-b@pacbell.net Precedence: bulk X-list: netdev Content-Length: 1101 Lines: 27 > Is there someone who has a clear explanation of exactly how "deadbeaf" > was once expected to work -- and now (since sometime before about > 2.5.40) evidently doesn't? > > It seems to be driven by side effects, and whatever comments are in > the code aren't any help. The only case "deadbeaf" could be set is > still documented as an error path ... All that still holds true. There's something fishy going on, or just old cruft that's lingered. I suppose I should just patch it and see if contradictory information appears then. >> Plus: this kind of bugcatch should use magic numbers, or maybe zero. >> Assuming "any nonzero value is valid", like this assertion does, is >> clearly going to fail for any of the class of bugs highlighted by >> slab poisoning. (0xa5a5a5a5 gets accepted as valid...) Actually I found a place where the wrong pointer was being used. Heh -- lucky me, to make my point that way ... a stray pointer happened to point to a zero, and so triggered that warning. As a bugcatch it's pretty poor: it wouldn't normally trigger on that kind of bug, either. - Dave From srompf@isg.de Mon Dec 9 15:13:52 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 09 Dec 2002 15:13:54 -0800 (PST) Received: from mail.isg.de (rzfoobar.is-asp.com [217.11.194.155]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB9NDpuR005573 for ; Mon, 9 Dec 2002 15:13:52 -0800 Received: from isg.de (Bd37e.pppool.de [213.7.211.126]) by mail.isg.de (Postfix) with ESMTP id DB08DEC3172; Tue, 10 Dec 2002 00:17:16 +0100 (CET) Message-ID: <3DF52302.D0DBE637@isg.de> Date: Tue, 10 Dec 2002 00:10:58 +0100 From: Stefan Rompf X-Mailer: Mozilla 4.79 [en] (X11; U; Linux 2.4.20 i686) X-Accept-Language: en MIME-Version: 1.0 To: netdev@oss.sgi.com Cc: jamal , Jeff Garzik , "David S. Miller" Subject: Re: Patch resubmission: RFC2863 operstatus for 2.5.50 References: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1340 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: srompf@isg.de Precedence: bulk X-list: netdev Content-Length: 1905 Lines: 45 Hi, > > My argument is, _after_ Stefan's link state patch is applied, why do we > > need the additional patch? [this question is meant to be delivered in > > an honest, not snide way...] > > > > I somehow deleted the original email he sent with the patches. What two > patches? I thought he had one which was a backport and another which > was for 2.5.x I've splitted the patch into userspace notification and RFC2863 part to separate the features clearly and get the discussion running again. That seem to have worked ;-) > (sorry, i actually have seen those patches a few times so i > didnt bother reviewing anything); In any case, when you look at this stuff > think as well of devices that are software netddevices example VLANs or > PPP or some of the USB, Irda etc and you want the status properly > reflected (and some of that status may not make sense to ethernet for > example). As an example, how do we flag a sleeping dial on demand device with the current Linux semantics? Is it oper up, because it may be able to transmit packets and should be considered, or is it oper down, simply as no protocol has been negotiated. RFC2863 can provice a clear state: Dormant. Beside this, we currently have the situation that we can put a device into admin up and not present, simply by calling netdev_carrier_on() and netdev_detach(). I consider that broken, a device cannot be both removed and ready. I'm aware that I did not provide updates to drivers to use the new states, but that's just the nature of infrastructure creating patches. Also, I cannot forwarding the RFC2863 state to userspace as long as Alexey refuses space in the netlink message for it. Ok, IMHO the pro and contra arguments are said. So let's decide: Do we want RFC2863 semantics (of course yes ;-) and David either accepts the second part of the patch or I continue working on it, or do we just drop that part? Stefan From garzik@gtf.org Mon Dec 9 15:22:34 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 09 Dec 2002 15:22:35 -0800 (PST) Received: from havoc.gtf.org (havoc.daloft.com [64.213.145.173]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB9NMXuR006008 for ; Mon, 9 Dec 2002 15:22:33 -0800 Received: by havoc.gtf.org (Postfix, from userid 500) id 2E2DC6644; Mon, 9 Dec 2002 18:25:59 -0500 (EST) Date: Mon, 9 Dec 2002 18:25:59 -0500 From: Jeff Garzik To: Stefan Rompf Cc: netdev@oss.sgi.com Subject: Re: Patch: link state detection for 8139too against 2.4.20rc2 / 2.5 Message-ID: <20021209232559.GA9473@gtf.org> References: <3DA96BCC.B2589AC0@isg.de> <3DE0CA4C.730699FC@isg.de> <3DF51ADB.47E83F81@isg.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3DF51ADB.47E83F81@isg.de> User-Agent: Mutt/1.3.28i X-archive-position: 1341 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Content-Length: 1139 Lines: 37 On Mon, Dec 09, 2002 at 11:36:11PM +0100, Stefan Rompf wrote: > Hi, > > Jeff Garzik wrote: > > > > ...that was some days ago. I've seen that Jeff is enhancing the MII > > > interface library, so I used the functions provided there. Patch is > > > against 2.4.20rc2 and 2.5 with some offset. Please apply if it looks > > > good. > > [...] > > > close -- you don't want to unconditionally "initialize" the media > > (mii_check_media second arg). > > I've just seen the reason: No need to read the MII_ADVERTISE register > once the structure has been initialized. Expect another patch the next > days. Thanks. > > the phy code is gonna be pretty darned similar. Eventually the phy code > > needs to move to a common 8139lib.c, because both old-8139 line and > > May be. However, I cannot help there. I just have one card of the 8139 > family, and all I could produce is some compiles for me stuff - > something that I would not consider helpful. I would consider it helpful. If you are willing to do the coding and worksforme testing, I can review and do further testing. Part of the power of open source :) Jeff From srompf@isg.de Mon Dec 9 15:50:22 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 09 Dec 2002 15:50:26 -0800 (PST) Received: from mail.isg.de (rzfoobar.is-asp.com [217.11.194.155]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gB9NoBuR006561 for ; Mon, 9 Dec 2002 15:50:12 -0800 Received: from isg.de (Bd37e.pppool.de [213.7.211.126]) by mail.isg.de (Postfix) with ESMTP id 24E00EC316B; Tue, 10 Dec 2002 00:17:07 +0100 (CET) Message-ID: <3DF51ADB.47E83F81@isg.de> Date: Mon, 09 Dec 2002 23:36:11 +0100 From: Stefan Rompf X-Mailer: Mozilla 4.79 [en] (X11; U; Linux 2.4.20 i686) X-Accept-Language: en MIME-Version: 1.0 To: jgarzik@pobox.com Cc: netdev@oss.sgi.com Subject: Re: Patch: link state detection for 8139too against 2.4.20rc2 / 2.5 References: <3DA96BCC.B2589AC0@isg.de> <3DE0CA4C.730699FC@isg.de> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1342 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: srompf@isg.de Precedence: bulk X-list: netdev Content-Length: 848 Lines: 28 Hi, Jeff Garzik wrote: > > ...that was some days ago. I've seen that Jeff is enhancing the MII > > interface library, so I used the functions provided there. Patch is > > against 2.4.20rc2 and 2.5 with some offset. Please apply if it looks > > good. [...] > close -- you don't want to unconditionally "initialize" the media > (mii_check_media second arg). I've just seen the reason: No need to read the MII_ADVERTISE register once the structure has been initialized. Expect another patch the next days. > the phy code is gonna be pretty darned similar. Eventually the phy code > needs to move to a common 8139lib.c, because both old-8139 line and May be. However, I cannot help there. I just have one card of the 8139 family, and all I could produce is some compiles for me stuff - something that I would not consider helpful. Stefan From garzik@gtf.org Mon Dec 9 19:52:51 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 09 Dec 2002 19:53:00 -0800 (PST) Received: from havoc.gtf.org (havoc.daloft.com [64.213.145.173]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBA3qKuR009739 for ; Mon, 9 Dec 2002 19:52:51 -0800 Received: by havoc.gtf.org (Postfix, from userid 500) id 34FF36643; Mon, 9 Dec 2002 22:55:32 -0500 (EST) Date: Mon, 9 Dec 2002 22:55:32 -0500 From: Jeff Garzik To: jamal Cc: Stefan Rompf , "David S. Miller" , netdev@oss.sgi.com Subject: Re: Patch resubmission: RFC2863 operstatus for 2.5.50 Message-ID: <20021210035532.GA22559@gtf.org> References: <3DEE3E6E.30407@pobox.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.3.28i X-archive-position: 1344 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Content-Length: 2710 Lines: 56 On Mon, Dec 09, 2002 at 08:27:39AM -0500, jamal wrote: > On Wed, 4 Dec 2002, Jeff Garzik wrote: > > For ifAdminStatus, you have "up", "down", and "testing" states. Since > > we have no concept of a testing state, if we eliminate that we have "up" > > and "down", two states we can obviously handle. > > > > For ifOperStatus, we have "up", "down" and "testing", which are > > applicable (or not) to Linux as with ifAdminStatus. Further we have > > states "dormant", "unknown", "notPresent", "lowerLayerDown". I'll > > discuss each of these in detail. > > > > "dormant" - not used in Stefan's patch, which I agree with. > > "unknown" - only used in Stefan's patch before interface is first up'd, > > which is IMO inaccurate. Accurate use of "up" and "down", to me, > > implies -no- use of "unknown" state. Because as soon as we are > > initialized, all ethernet details are known, thus "down" is more > > applicable. The Linux net stack's atomicity is such that leaking an > > "unknown" state would be a bug, too. > > "notPresent" - analagous to Linux's netif_device_xxx, and Stefan's patch > > acknowledges this. However, the use of netif_device_xxx in drivers is > > really only used when the hardware is suspended. If hardware goes away, > > the interface goes away too, almost immediately. > > "lowerLayerDown" - not used in Stefan's patch, which I agree with. > > > > So, Stefan's 2nd patch really only adds "unknown" and "notPresent" > > states to current behavior -- and the applicability of those states to > > Linux is IMO questionable. > > > > If all he is adding are some enumerated types, theres no harm. I cant > remember the details of the discussions - but we had long winding > discussions on the different states. I would summarize his patch as adding variable to represent literally ifOperStatus, along with a lock and apparatus to set this variable. The value may be deduced, without having to literally track it. > Note you need both admin and operational status and physically thet may > mean different things (think PPP and ethernet for example). You also need > to properly reflect the status for all sorts of netdevices. As long as > those requirements are met, then all is good. The RFC is not the final > word but it draws from experiences people had for years doing this kind > of stuff - so it is a good idea to draw from their experiences (but ok to > ignore it if it sounds unrealistic). I think we do agree on interpretation as you describe it here. And the linkwatch patch is now in Linux 2.5.51. I just think the further patch to "track literally" ifOperStatus is not needed. However, that is presented as an opinion and RFC, not a statement of fact :) Jeff From kiran@in.ibm.com Tue Dec 10 05:23:12 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 10 Dec 2002 05:23:17 -0800 (PST) Received: from e5.ny.us.ibm.com (e5.ny.us.ibm.com [32.97.182.105]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBADNAuR022453 for ; Tue, 10 Dec 2002 05:23:11 -0800 Received: from northrelay04.pok.ibm.com (northrelay04.pok.ibm.com [9.56.224.206]) by e5.ny.us.ibm.com (8.12.2/8.12.2) with ESMTP id gBADQeQ0146262; Tue, 10 Dec 2002 08:26:40 -0500 Received: from asterix.in.ibm.com (asterix.in.ibm.com [9.182.12.249]) by northrelay04.pok.ibm.com (8.12.3/NCO/VER6.4) with ESMTP id gBADQQ3X049804; Tue, 10 Dec 2002 08:26:34 -0500 Received: (from kirant@localhost) by asterix.in.ibm.com (8.11.2/8.11.2) id gBADP2u16901; Tue, 10 Dec 2002 18:55:02 +0530 Date: Tue, 10 Dec 2002 18:55:02 +0530 From: Ravikiran G Thirumalai To: "David S. Miller " Cc: netdev , linux-kernel@vger.kernel.org Subject: [trivial] Use __init and __exit for sctp_init and sctp_exit Message-ID: <20021210185502.G17375@in.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i X-archive-position: 1345 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: kiran@in.ibm.com Precedence: bulk X-list: netdev Content-Length: 777 Lines: 31 These module_init and module_exit routines should have been marked __init and __exit like every where else I guess... Please apply Thanks, Kiran diff -ruN -X dontdiff linux-2.5.51/net/sctp/protocol.c sctp_fix-2.5.51/net/sctp/protocol.c --- linux-2.5.51/net/sctp/protocol.c Tue Dec 10 08:16:10 2002 +++ sctp_fix-2.5.51/net/sctp/protocol.c Tue Dec 10 18:48:07 2002 @@ -598,7 +598,7 @@ } /* Initialize the universe into something sensible. */ -int sctp_init(void) +int __init sctp_init(void) { int i; int status = 0; @@ -751,7 +751,7 @@ } /* Exit handler for the SCTP protocol. */ -void sctp_exit(void) +void __exit sctp_exit(void) { /* BUG. This should probably do something useful like clean * up all the remaining associations and all that memory. From kaber@trash.net Tue Dec 10 05:32:51 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 10 Dec 2002 05:32:54 -0800 (PST) Received: from el-zoido.localnet (port-212-202-202-93.reverse.qdsl-home.de [212.202.202.93]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBADWnuR023761 for ; Tue, 10 Dec 2002 05:32:50 -0800 Received: from trash.net (ws.localnet [192.168.0.23]) by el-zoido.localnet (8.11.6/linuxconf) with ESMTP id gBADaia04871; Tue, 10 Dec 2002 14:36:44 +0100 Message-ID: <3DF5EDBE.7000707@trash.net> Date: Tue, 10 Dec 2002 14:35:58 +0100 From: Patrick McHardy User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021208 Debian/1.2.1-2 X-Accept-Language: en MIME-Version: 1.0 To: Netfilter Development Mailinglist CC: netdev@oss.sgi.com Subject: [PATCH]: forgotten dev_put for bridge-devices in nf_reinject Content-Type: multipart/mixed; boundary="------------000505020000010609080306" X-archive-position: 1346 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: kaber@trash.net Precedence: bulk X-list: netdev Content-Length: 1201 Lines: 43 This is a multi-part message in MIME format. --------------000505020000010609080306 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Hi. The attached patch releases the bridge devices grabbed in nf_queue after reinjecting the packet. Seems someone forgot these (or planned to get Rusty killed) ;) Bye, Patrick --------------000505020000010609080306 Content-Type: text/plain; name="nfqueue-bridge-devput.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="nfqueue-bridge-devput.diff" --- linux-2.5.50/net/core/netfilter.c.orig 2002-12-10 14:16:20.000000000 +0100 +++ linux-2.5.50/net/core/netfilter.c 2002-12-10 14:19:23.000000000 +0100 @@ -574,7 +574,15 @@ /* Release those devices we held, or Alexey will kill me. */ if (info->indev) dev_put(info->indev); if (info->outdev) dev_put(info->outdev); - +#if defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE) + if (skb->nf_bridge) { + if (skb->nf_bridge->physindev) + dev_put(skb->nf_bridge->physindev); + if (skb->nf_bridge->physoutdev) + dev_put(skb->nf_bridge->physoutdev); + } +#endif + kfree(info); return; } --------------000505020000010609080306-- From manfred@colorfullife.com Tue Dec 10 12:32:00 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 10 Dec 2002 12:32:07 -0800 (PST) Received: from dbl.q-ag.de (IDENT:root@dbl.q-ag.de [80.146.160.66]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBAKVwuR012082 for ; Tue, 10 Dec 2002 12:31:59 -0800 Received: from colorfullife.com (IDENT:root@localhost.localdomain [127.0.0.1]) by dbl.q-ag.de (8.11.6/8.11.6) with ESMTP id gBAKZXH07537 for ; Tue, 10 Dec 2002 21:35:33 +0100 Message-ID: <3DF65013.2090303@colorfullife.com> Date: Tue, 10 Dec 2002 21:35:31 +0100 From: Manfred Spraul User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202 X-Accept-Language: en-us, en MIME-Version: 1.0 To: netdev@oss.sgi.com Subject: ether_crc wrong in 2.5.50 Content-Type: multipart/mixed; boundary="------------040607060806030409070906" X-archive-position: 1347 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: manfred@colorfullife.com Precedence: bulk X-list: netdev Content-Length: 4800 Lines: 169 This is a multi-part message in MIME format. --------------040607060806030409070906 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit The ether_crc were converted to use the crc32 library in 2.5. The conversion is incorrect: crc32_le and _be are about the bit order in which the bits are processed: _le means least significant bit first, _be msb first. ethernet is always lsb first. ether_crc means the output should be in the cpu bit order [msb in bit 31], ether_crc_le means the output should be with msb in bit 0: that what crc32_le usually generates. The attached patch is tested with winbond-840, natsemi and 8139too, i.e. ether_crc works. ether_crc_le generates the same output as the inline functions from 2.4.18, but it's untested due to lack of nics. Could someone test it on a nic that uses ether_crc_le? -- Manfred --------------040607060806030409070906 Content-Type: text/plain; name="patch-crc" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="patch-crc" // $Header$ // Kernel Version: // VERSION = 2 // PATCHLEVEL = 5 // SUBLEVEL = 50 // EXTRAVERSION = --- 2.5/include/linux/crc32.h 2002-11-04 23:30:16.000000000 +0100 +++ build-2.5/include/linux/crc32.h 2002-12-10 19:15:50.000000000 +0100 @@ -9,9 +9,19 @@ extern u32 crc32_le(u32 crc, unsigned char const *p, size_t len); extern u32 crc32_be(u32 crc, unsigned char const *p, size_t len); +extern u32 bitreverse(u32 in); #define crc32(seed, data, length) crc32_le(seed, (unsigned char const *)data, length) + +/* + * Helpers for hash table generation of ethernet nics: + * + * Ethernet sends the least significant bit of a byte first, thus crc32_le + * is used. The output of crc32_le is bit reversed [most significant bit + * is in bit nr 0], thus it must be reversed before use. Except for + * nics that bit swap the result internally... + */ +#define ether_crc(length, data) bitreverse(crc32_le(~0, data, length)) #define ether_crc_le(length, data) crc32_le(~0, data, length) -#define ether_crc(length, data) crc32_be(~0, data, length) #endif /* _LINUX_CRC32_H */ --- 2.5/lib/crc32.c 2002-11-04 23:30:03.000000000 +0100 +++ build-2.5/lib/crc32.c 2002-12-10 19:16:47.000000000 +0100 @@ -255,6 +255,16 @@ } #endif +u32 bitreverse(u32 x) +{ + x = (x >> 16) | (x << 16); + x = (x >> 8 & 0x00ff00ff) | (x << 8 & 0xff00ff00); + x = (x >> 4 & 0x0f0f0f0f) | (x << 4 & 0xf0f0f0f0); + x = (x >> 2 & 0x33333333) | (x << 2 & 0xcccccccc); + x = (x >> 1 & 0x55555555) | (x << 1 & 0xaaaaaaaa); + return x; +} + /* * A brief CRC tutorial. * @@ -399,16 +409,6 @@ } #endif -static u32 attribute((const)) bitreverse(u32 x) -{ - x = (x >> 16) | (x << 16); - x = (x >> 8 & 0x00ff00ff) | (x << 8 & 0xff00ff00); - x = (x >> 4 & 0x0f0f0f0f) | (x << 4 & 0xf0f0f0f0); - x = (x >> 2 & 0x33333333) | (x << 2 & 0xcccccccc); - x = (x >> 1 & 0x55555555) | (x << 1 & 0xaaaaaaaa); - return x; -} - static void bytereverse(unsigned char *buf, size_t len) { while (len--) { --- 2.5/drivers/net/natsemi.c 2002-11-04 23:30:05.000000000 +0100 +++ build-2.5/drivers/net/natsemi.c 2002-12-10 19:20:01.000000000 +0100 @@ -164,6 +164,7 @@ #include #include #include +#include #include /* Processor type for cache alignment. */ #include #include @@ -1898,44 +1899,6 @@ return &np->stats; } -/** - * dp83815_crc - computer CRC for hash table entries - * - * Note - this is, for some reason, *not* the same function - * as ether_crc_le() or ether_crc(), though it uses the - * same big-endian polynomial. - */ -#define DP_POLYNOMIAL 0x04C11DB7 -static unsigned dp83815_crc(int length, unsigned char *data) -{ - u32 crc; - u8 cur_byte; - u8 msb; - u8 byte, bit; - - crc = ~0; - for (byte=0; byte> 31; - crc <<= 1; - if (msb ^ (cur_byte & 1)) { - crc ^= DP_POLYNOMIAL; - crc |= 1; - } - cur_byte >>= 1; - } - } - crc >>= 23; - - return (crc); -} - - -void set_bit_le(int offset, unsigned char * data) -{ - data[offset >> 3] |= (1 << (offset & 0x07)); -} #define HASH_TABLE 0x200 static void __set_rx_mode(struct net_device *dev) { @@ -1960,9 +1923,8 @@ memset(mc_filter, 0, sizeof(mc_filter)); for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count; i++, mclist = mclist->next) { - set_bit_le( - dp83815_crc(ETH_ALEN, mclist->dmi_addr) & 0x1ff, - mc_filter); + int i = (ether_crc(ETH_ALEN, mclist->dmi_addr) >> 23) & 0x1ff; + mc_filter[i/8] |= (1 << (i & 0x07)); } rx_mode = RxFilterEnable | AcceptBroadcast | AcceptMulticast | AcceptMyPhys; --------------040607060806030409070906-- From rl@hellgate.ch Wed Dec 11 09:56:42 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 11 Dec 2002 09:56:47 -0800 (PST) Received: from mta9n.bluewin.ch (mta9n.bluewin.ch [195.186.1.215]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBBHufuR024506 for ; Wed, 11 Dec 2002 09:56:42 -0800 Received: from k3.hellgate.ch (195.186.128.45) by mta9n.bluewin.ch (Bluewin AG 6.5.032) id 3DAA821D00AD585C; Wed, 11 Dec 2002 14:24:40 +0100 Received: by k3.hellgate.ch (MTA, from userid 500) id C806932215; Wed, 11 Dec 2002 14:24:36 +0100 (CET) Date: Wed, 11 Dec 2002 14:24:36 +0100 From: Roger Luethi To: netdev@oss.sgi.com Subject: pci-skeleton duplex check Message-ID: <20021211132436.GA12529@k3.hellgate.ch> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.27i X-Operating-System: Linux 2.5.44 on i686 X-GPG-Fingerprint: 92 F4 DC 20 57 46 7B 95 24 4E 9E E7 5A 54 DC 1B X-GPG: 1024/80E744BD wwwkeys.ch.pgp.net X-archive-position: 1349 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: rl@hellgate.ch Precedence: bulk X-list: netdev Content-Length: 300 Lines: 10 pci-skeleton (and some other net drivers) figure out the duplex setting like this (leaving duplex locks out here): int duplex = (lpar & 0x0100) || (lpar & 0x01C0) == 0x0040; If we get past the first condition, we already know bit 8 must be 0. Why do we check again in the second condition? Roger From mauro@deepspace6.net Wed Dec 11 16:22:39 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 11 Dec 2002 16:22:46 -0800 (PST) Received: from smtp1.libero.it (smtp1.libero.it [193.70.192.51]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBC0McuR004953 for ; Wed, 11 Dec 2002 16:22:39 -0800 Received: from trantor.ferrara.linux.it (151.26.185.215) by smtp1.libero.it (6.7.015) id 3DE22B81007651A0; Wed, 11 Dec 2002 22:48:09 +0100 Received: by trantor.ferrara.linux.it (Postfix, from userid 501) id 2DC3F18F0D; Wed, 11 Dec 2002 22:38:07 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by trantor.ferrara.linux.it (Postfix) with ESMTP id 7E60D18F09; Wed, 11 Dec 2002 22:38:07 +0100 (CET) Date: Wed, 11 Dec 2002 22:38:06 +0100 (CET) From: Mauro Tortonesi To: ds6-www@deepspace6.net, , , , , , , Subject: deepspace6 official announcement Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1350 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: mauro@deepspace6.net Precedence: bulk X-list: netdev Content-Length: 1905 Lines: 49 We are proud to announce the birth of a new Linux-related IPv6 portal: http://www.deepspace6.net. The Deep Space 6 initiative is born from the experience of two of the most important Linux- and IPv6-related websites: Project 6 and Peter Bieringer's www.bieringer.de website. We aim at being a reference website where the users can find information about the use of the new IPv6 protocol with the Linux operating system. Our site is still in construction at this moment, but already features: - Peter Bieringer's Linux+IPv6 HOWTO and many other interesting articles - many mailing lists for the discussion about every aspect of the use of IPv6 under Linux - a rich collection of IPv6-enabled opensource software - anonymous and web CVS access to our projects You are invited to visit our website and send us your comments about our work or, better, join us in our effort to: - provide useful information about the use of the new IPv6 protocol with the Linux operating system - enhance the IPv6 compliance of existing opensource software - develop new IPv6-based opensource solutions and services Deep Space 6 is an initiative which, right from its birth, is open to every kind of collaboration with volunteers and other similar projects. We are willing to: - publish IPv6-related articles and HOWTOs - host new IPv6-related opensource software projects and provide our help in their development - collaborate with other projects and/or add a link to their homepages - create new mailing lists for especially interesting arguments or projects We are looking forward to receive your feedback and, maybe, to start a new collaboration with you ;-) -- Aequam memento rebus in arduis servare mentem... Mauro Tortonesi mauro@deepspace6.net mauro@ferrara.linux.it Deep Space 6 - IPv6 on Linux http://www.deepspace6.net Ferrara Linux Users Group http://www.ferrara.linux.it From zjp@iscas.ac.cn Wed Dec 11 18:05:04 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 11 Dec 2002 18:05:13 -0800 (PST) Received: from mail.iscas.ac.cn ([159.226.5.56]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBC252uR005919 for ; Wed, 11 Dec 2002 18:05:03 -0800 Received: (qmail 7402 invoked by uid 104); 12 Dec 2002 02:08:40 -0000 Received: from zjp@iscas.ac.cn by mail.iscas.ac.cn by uid 0 with qmail-scanner-1.14 (hbedv: 6.15.0.1. hbedv: operating system: Linux (glibc). hbedv: product version: 2.0.4. hbedv: engine version: 6.15.0.1. hbedv: packlib version: 2.0.0.8 (supports 19 formats). hbedv: vdf version: 6.15.0.7 (66928 recognized forms). hbedv: . hbedv: product: AntiVir Workstation. hbedv: key file: hbedv.key. hbedv: registered user: irene, 123. hbedv: serial number: 1001020203. hbedv: key expires: 31 May 2003. hbedv: run mode: PRIVATE. hbedv: . hbedv: product: AntiVir MailGate. hbedv: key file: hbedv.key. hbedv: registered user: irene, 123. hbedv: serial number: 1001020203. hbedv: key expires: 31 May 2003. hbedv: run mode: PRIVATE. hbedv: . hbedv: product: AntiVir (command line scanner). hbedv: key file: hbedv.key. hbedv: registered user: irene, 123. hbedv: serial number: 1001020203. hbedv: key expires: 31 May 2003. hbedv: run mode: PRIVATE. Clear:. Processed in 0.213252 secs); 12 Dec 2002 02:08:40 -0000 Received: from unknown (HELO zhengjp) (zjp@192.168.6.108) by mail.iscas.ac.cn with SMTP; 12 Dec 2002 02:08:39 -0000 Message-ID: <005f01c2a183$c590bce0$6c06a8c0@zhengjp> From: "Zheng Jianping" To: "yoshfuji" Cc: References: <000d01c2975d$a2ad3c10$6c06a8c0@zhengjp> <20021129.131656.766932499.yoshfuji@linux-ipv6.org> Subject: Re: How to get the IPv6 address of next hop towards destination? Date: Thu, 12 Dec 2002 10:11:24 +0800 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.00.2919.6700 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700 X-archive-position: 1351 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: zjp@iscas.ac.cn Precedence: bulk X-list: netdev Content-Length: 365 Lines: 23 Hi, Yoshfuji, What's type of the address stored in primary_key[0], link-local or global? Thanks, Zheng > In article <000d01c2975d$a2ad3c10$6c06a8c0@zhengjp> (at Fri, 29 Nov 2002 12:13:13 +0800), "Zheng Jianping" says: > > > It seems that > > u8 primary_key[0]; > > is responsible for it. > > > > Is it right? > > yes. > > --yoshfuji > > From becker@scyld.com Wed Dec 11 18:38:55 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 11 Dec 2002 18:38:57 -0800 (PST) Received: from beohost.scyld.com (pool-151-196-175-148.balt.east.verizon.net [151.196.175.148]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBC2cruR006543 for ; Wed, 11 Dec 2002 18:38:53 -0800 Received: from localhost (becker@localhost) by beohost.scyld.com (8.11.6/8.11.6) with ESMTP id gBC2gio12384; Wed, 11 Dec 2002 21:42:45 -0500 Date: Wed, 11 Dec 2002 21:42:44 -0500 (EST) From: Donald Becker To: Roger Luethi cc: netdev@oss.sgi.com Subject: Re: pci-skeleton duplex check In-Reply-To: <20021211132436.GA12529@k3.hellgate.ch> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1352 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: becker@scyld.com Precedence: bulk X-list: netdev Content-Length: 1778 Lines: 48 On Wed, 11 Dec 2002, Roger Luethi wrote: > pci-skeleton (and some other net drivers) figure out the duplex setting > like this (leaving duplex locks out here): > > int duplex = (lpar & 0x0100) || (lpar & 0x01C0) == 0x0040; I'm not certain what version of pci-skeleton.c you are looking at, but the current version is int mii_reg5 = mdio_read(dev, np->phys[0], 5); int negotiated = mii_reg5 & np->advertising; int duplex = (negotiated & 0x0100) || (negotiated & 0x01C0) == 0x0040; We are looking for the highest negotiated capability, according to the rules described in http://scyld.com/expert/NWay.html You did read the reference documentation, didn't you? I put the documentation references at the top of the driver because you may need to read them to understand what is going on. Or was it so unusual to have written priciples of operation that you skipped that section? I'll explain the cases: (negotiated & 0x0100) 100baseTx full duplex or (negotiated & 0x01C0) == 0x0040 No capability above 10baseT full duplex Note that the second check ignores 100baseT4, despite it have priority over 10baseT-*. That was intentional to work around, "a specific issue" with a transceiver. > If we get past the first condition, we already know bit 8 must be 0. Why do > we check again in the second condition? The is no extra cost to the extra bit, and it makes it clear we are testing for 10baseT-FDX. (The test was originally implemented as part of a complete set of cases. The test code needed while building a driver is more complex than what you see in the concise final result.) -- Donald Becker becker@scyld.com Scyld Computing Corporation http://www.scyld.com 410 Severn Ave. Suite 210 Scyld Beowulf cluster system Annapolis MD 21403 410-990-9993 From hadi@cyberus.ca Thu Dec 12 05:25:42 2002 Received: with ECARTIS (v1.0.0; list netdev); Thu, 12 Dec 2002 05:25:46 -0800 (PST) Received: from cyberus.ca (mail.cyberus.ca [216.191.240.111]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBCDPguR000644 for ; Thu, 12 Dec 2002 05:25:42 -0800 Received: from shell.cyberus.ca (shell [216.191.240.114]) by cyberus.ca (8.9.3/8.9.3/Cyberus Online Inc.) with ESMTP id IAA17336; Thu, 12 Dec 2002 08:29:23 -0500 (EST) Received: from localhost (hadi@localhost) by shell.cyberus.ca (8.11.6+Sun/8.11.6) with ESMTP id gBCDLFh28966; Thu, 12 Dec 2002 08:21:15 -0500 (EST) X-Authentication-Warning: shell.cyberus.ca: hadi owned process doing -bs Date: Thu, 12 Dec 2002 08:21:14 -0500 (EST) From: jamal To: Jeff Garzik cc: Stefan Rompf , "David S. Miller" , Subject: Re: Patch resubmission: RFC2863 operstatus for 2.5.50 In-Reply-To: <20021210035532.GA22559@gtf.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1353 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: hadi@cyberus.ca Precedence: bulk X-list: netdev Content-Length: 509 Lines: 20 On Mon, 9 Dec 2002, Jeff Garzik wrote: > I would summarize his patch as adding variable to represent literally > ifOperStatus, along with a lock and apparatus to set this variable. > > The value may be deduced, without having to literally track it. If it can be deduced then no point in tracking it. i think my shepherding of the patch is done at this point. I'll let you take it from here. BTW, I still think theres need to clean up the qdisc queues when a link goes operationaly down. cheers, jamal From becker@scyld.com Thu Dec 12 06:07:43 2002 Received: with ECARTIS (v1.0.0; list netdev); Thu, 12 Dec 2002 06:07:46 -0800 (PST) Received: from beohost.scyld.com (pool-151-196-173-209.balt.east.verizon.net [151.196.173.209]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBCE7fuR001464 for ; Thu, 12 Dec 2002 06:07:42 -0800 Received: from localhost (becker@localhost) by beohost.scyld.com (8.11.6/8.11.6) with ESMTP id gBCEBYh17269; Thu, 12 Dec 2002 09:11:34 -0500 Date: Thu, 12 Dec 2002 09:11:34 -0500 (EST) From: Donald Becker To: Roger Luethi cc: netdev@oss.sgi.com Subject: Re: pci-skeleton duplex check In-Reply-To: <20021212132033.GA3224@k3.hellgate.ch> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1354 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: becker@scyld.com Precedence: bulk X-list: netdev Content-Length: 1216 Lines: 28 On Thu, 12 Dec 2002, Roger Luethi wrote: > On Wed, 11 Dec 2002 21:42:44 -0500, Donald Becker wrote: > > Note that the second check ignores 100baseT4, despite it have priority > > over 10baseT-*. That was intentional to work around, "a specific issue" > > with a transceiver. > > That "specific issue" might be worth documenting. Information on such > quirks is hardest to come by. There are some quirks I'll refer to as bugs, and some as "issues". When I get a documented, reliable work-around for a problem that doesn't impact operation or performance, I consider that chip to be non-buggy. I try very hard to avoid NDAs, but I'm willing to sign one when it's clear on both sides what the limits of the NDA are. Now, if I have to track down the problems myself I can't be certain if I've found the full extent or correct fix for what is clearly a _bug_. [[ I don't know why I bother. The people that now control what goes into the kernel would rather put in random patches from other people than accept a correct fix from me. ]] -- Donald Becker becker@scyld.com Scyld Computing Corporation http://www.scyld.com 410 Severn Ave. Suite 210 Scyld Beowulf cluster system Annapolis MD 21403 410-990-9993 From krkumar@us.ibm.com Thu Dec 12 11:03:23 2002 Received: with ECARTIS (v1.0.0; list netdev); Thu, 12 Dec 2002 11:03:25 -0800 (PST) Received: from e2.ny.us.ibm.com (e2.ny.us.ibm.com [32.97.182.102]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBCJ3MuR013795 for ; Thu, 12 Dec 2002 11:03:23 -0800 Received: from northrelay03.pok.ibm.com (northrelay03.pok.ibm.com [9.56.224.151]) by e2.ny.us.ibm.com (8.12.2/8.12.2) with ESMTP id gBCJ718I313140; Thu, 12 Dec 2002 14:07:02 -0500 Received: from gateway1.beaverton.ibm.com (gateway1.beaverton.ibm.com [138.95.180.2]) by northrelay03.pok.ibm.com (8.12.3/NCO/VER6.4) with ESMTP id gBCJ6wBE020902; Thu, 12 Dec 2002 14:06:59 -0500 Received: from eng2.beaverton.ibm.com (eng2.beaverton.ibm.com [9.47.57.17]) by gateway1.beaverton.ibm.com (8.11.6/8.11.6) with ESMTP id gBCJ0jV27734; Thu, 12 Dec 2002 11:00:45 -0800 Received: (from kkumar@localhost) by eng2.beaverton.ibm.com (8.10.0.Beta10/8.8.5/token.aware-1.2) id gBCJ5hn18058; Thu, 12 Dec 2002 11:05:43 -0800 (PST) From: Krishna Kumar Message-Id: <200212121905.gBCJ5hn18058@eng2.beaverton.ibm.com> Subject: [PATCH RESEND] memory leak in ndisc_router_discovery To: kuznet@ms2.inr.ac.ru, davem@redhat.com Date: Thu, 12 Dec 2002 11:05:43 -0800 (PST) Cc: netdev@oss.sgi.com, linux-kernel@vger.kernel.org X-Mailer: ELM [version 2.5 PL3] MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1355 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: krkumar@us.ibm.com Precedence: bulk X-list: netdev Content-Length: 848 Lines: 25 Hi, I had sent this earlier, there is a bug in router advertisement handling code, where the reference (and memory) to an inet6_dev pointer can get leaked (this leak can happen atmost once for each interface on a system which receives invalid RA's). Below is the patch against 2.5.51 to fix it. thanks, - KK ------------------------------------------------------------------------------- diff -ruN linux.org/net/ipv6/ndisc.c linux/net/ipv6/ndisc.c --- linux.org/net/ipv6/ndisc.c Fri Nov 7 10:02:11 2002 +++ linux/net/ipv6/ndisc.c Fri Nov 8 14:37:27 2002 @@ -871,6 +871,7 @@ } if (!ndisc_parse_options(opt, optlen, &ndopts)) { + in6_dev_put(in6_dev); if (net_ratelimit()) ND_PRINTK2(KERN_WARNING "ICMP6 RA: invalid ND option, ignored.\n"); ------------------------------------------------------------------------------- From jgarzik@pobox.com Thu Dec 12 12:29:55 2002 Received: with ECARTIS (v1.0.0; list netdev); Thu, 12 Dec 2002 12:29:58 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBCKTsuR015698 for ; Thu, 12 Dec 2002 12:29:54 -0800 Received: from nat-pool-rdu.redhat.com ([66.187.233.200] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18Ma1Z-0007Nz-00; Thu, 12 Dec 2002 20:33:38 +0000 Message-ID: <3DF8F26E.50306@pobox.com> Date: Thu, 12 Dec 2002 15:32:46 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Donald Becker CC: Roger Luethi , netdev@oss.sgi.com, Linux Kernel Mailing List Subject: Re: pci-skeleton duplex check References: In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1356 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Content-Length: 384 Lines: 15 Donald Becker wrote: > [[ I don't know why I bother. The people that now control what goes into > the kernel would rather put in random patches from other people than > accept a correct fix from me. ]] I'm very interested in applying fixes from you! I am publicly begging you to do so, and even CC'ing lkml on my request. Please re-post any patches I or Andrew missed. Jeff From becker@scyld.com Thu Dec 12 13:07:17 2002 Received: with ECARTIS (v1.0.0; list netdev); Thu, 12 Dec 2002 13:07:23 -0800 (PST) Received: from beohost.scyld.com (dsl093-058-082.blt1.dsl.speakeasy.net [66.93.58.82]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBCL7GuR017239 for ; Thu, 12 Dec 2002 13:07:17 -0800 Received: from localhost (becker@localhost) by beohost.scyld.com (8.11.6/8.11.6) with ESMTP id gBCLBDx20424; Thu, 12 Dec 2002 16:11:13 -0500 Date: Thu, 12 Dec 2002 16:11:13 -0500 (EST) From: Donald Becker To: Jeff Garzik cc: Roger Luethi , , Linux Kernel Mailing List Subject: Re: pci-skeleton duplex check In-Reply-To: <3DF8F26E.50306@pobox.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1357 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: becker@scyld.com Precedence: bulk X-list: netdev Content-Length: 2188 Lines: 47 On Thu, 12 Dec 2002, Jeff Garzik wrote: > Donald Becker wrote: > > [[ I don't know why I bother. The people that now control what goes into > > the kernel would rather put in random patches from other people than > > accept a correct fix from me. ]] > > I'm very interested in applying fixes from you! I am publicly begging > you to do so, and even CC'ing lkml on my request. This is very disingenuous statement. The drivers in the kernel are now heavily modified and have significantly diverged from my version. Sure, you are fine with having someone else do the difficult and unrewarding debugging and maintainence work, while you work on just the latest cool hardware, change the interfaces and are concerned only with the current kernel version. I've been actively developing Linux drivers for over a decade, and run about two dozen mailing lists for specific drivers. I write diagnostic routines for every released driver. I thoroughly test and frequently update the driver set I maintain. And since about 2000, my patches were ignored while the first notice I've have gotten to changes in my drivers is the bug reports. And the response: "submit a patch to fix those newly introduced bugs". I've even had patches ignore in favor of people that wrote "I don't have the NIC, but here is a change". A good example is the tulip driver. You repeatedly restructured my driver in the kernel, splitting into different files. It was still 90+% my code, but the changes made it impossible to track the modification history. The kernel driver was long-broken with 21143-SYM cards, but no one took the responsibility for fixing it. It's easy to make the first few patches, when you don't have to deal with reversion testing, many different models, and have an unlimited sandbox where it doesn't matter if a specific release works or not. But it takes a huge of work to keep a stable, tracable driver development process that works with many different kernel versions and hardware environments. -- Donald Becker becker@scyld.com Scyld Computing Corporation http://www.scyld.com 410 Severn Ave. Suite 210 Scyld Beowulf cluster system Annapolis MD 21403 410-990-9993 From jgarzik@pobox.com Thu Dec 12 13:36:02 2002 Received: with ECARTIS (v1.0.0; list netdev); Thu, 12 Dec 2002 13:36:06 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBCLa1uR017737 for ; Thu, 12 Dec 2002 13:36:01 -0800 Received: from nat-pool-rdu.redhat.com ([66.187.233.200] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18Mb3Z-000812-00; Thu, 12 Dec 2002 21:39:45 +0000 Message-ID: <3DF90208.3010208@pobox.com> Date: Thu, 12 Dec 2002 16:39:20 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Donald Becker CC: Roger Luethi , netdev@oss.sgi.com, Linux Kernel Mailing List Subject: Re: pci-skeleton duplex check References: In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1358 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Content-Length: 3779 Lines: 92 Donald Becker wrote: > On Thu, 12 Dec 2002, Jeff Garzik wrote: > >>Donald Becker wrote: >> >>>[[ I don't know why I bother. The people that now control what goes into >>>the kernel would rather put in random patches from other people than >>>accept a correct fix from me. ]] >> >>I'm very interested in applying fixes from you! I am publicly begging >>you to do so, and even CC'ing lkml on my request. > > > This is very disingenuous statement. Oh come on, it's far less disingenuous than what you said: [[ I don't know why I bother. The people that now control what goes into the kernel would rather put in random patches from other people than accept a correct fix from me. ]] I'm sure you'll continue making snide comments on every mailing list you maintain, but the fact remains: I would much rather accept a fix from you. That hasn't changed in the past year. or two. or any amount of time. Your input is very valuable, and I typically save quite a few of your emails. > The drivers in the kernel are now heavily modified and have significantly > diverged from my version. Sure, you are fine with having someone else > do the difficult and unrewarding debugging and maintainence work, while > you work on just the latest cool hardware, change the interfaces and are > concerned only with the current kernel version. While I disagree with this assessment, I think we can safely draw the conclusion that the problem is _not_ people ignoring your patches, or preferring other patches over yours. > I've been actively developing Linux drivers for over a decade, and run > about two dozen mailing lists for specific drivers. I write diagnostic > routines for every released driver. I thoroughly test and frequently > update the driver set I maintain. And since about 2000, my patches were > ignored while the first notice I've have gotten to changes in my drivers > is the bug reports. And the response: "submit a patch to fix those > newly introduced bugs". I've even had patches ignore in favor of people > that wrote "I don't have the NIC, but here is a change". I don't recall _ever_ getting a patch from you or seeing one posted on lkml or netdev. How can you be ignored if you're not sending patches? > A good example is the tulip driver. You repeatedly restructured my > driver in the kernel, splitting into different files. It was still 90+% > my code, but the changes made it impossible to track the modification > history. The kernel driver was long-broken with 21143-SYM cards, but no > one took the responsibility for fixing it. s/was/is/ I take responsibility for fixing it, I just haven't fixed it yet :) > It's easy to make the first few patches, when you don't have to deal > with reversion testing, many different models, and have an unlimited > sandbox where it doesn't matter if a specific release works or not. But > it takes a huge of work to keep a stable, tracable driver development > process that works with many different kernel versions and hardware > environments. We're slowly getting there, in terms of regression and stress testing. Since you don't send patches anymore for a long time, I was really the only one [stupid enough?] to stand up and even bother to help collecting and reviewing net driver changes. I would love to integrate your drivers directly, but they don't come anywhere close to using current kernel APIs. The biggie of biggies is not using the pci_driver API. So, given that we cannot directly merge your drivers, and you don't send patches to kernel developers, what is the next best alternative? (a) let kernel net drivers bitrot, or (b) maintain them as best we can without Don Becker patches? I say that "b" is far better than "a" for Linux users. Jeff From greearb@candelatech.com Thu Dec 12 15:05:15 2002 Received: with ECARTIS (v1.0.0; list netdev); Thu, 12 Dec 2002 15:05:23 -0800 (PST) Received: from grok.yi.org (IDENT:oqqFhnIvE1PsNkXfm2ajc4dMoTC0xc1m@dhcp101-dsl-usw4.w-link.net [208.161.125.101]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBCN5CuR018620 for ; Thu, 12 Dec 2002 15:05:14 -0800 Received: from candelatech.com (IDENT:IGMKQWvvUSV9E0hFjOuggClOHalYf98U@localhost.localdomain [127.0.0.1]) by grok.yi.org (8.11.6/8.11.2) with ESMTP id gBCN8Q001667; Thu, 12 Dec 2002 15:08:26 -0800 Message-ID: <3DF916EA.10504@candelatech.com> Date: Thu, 12 Dec 2002 15:08:26 -0800 From: Ben Greear Organization: Candela Technologies User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021130 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Donald Becker CC: Jeff Garzik , Roger Luethi , netdev@oss.sgi.com, Linux Kernel Mailing List Subject: Re: pci-skeleton duplex check References: In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1359 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: greearb@candelatech.com Precedence: bulk X-list: netdev Content-Length: 1889 Lines: 40 Donald Becker wrote: > I've been actively developing Linux drivers for over a decade, and run > about two dozen mailing lists for specific drivers. I write diagnostic > routines for every released driver. I thoroughly test and frequently > update the driver set I maintain. And since about 2000, my patches were > ignored while the first notice I've have gotten to changes in my drivers > is the bug reports. And the response: "submit a patch to fix those > newly introduced bugs". I've even had patches ignore in favor of people > that wrote "I don't have the NIC, but here is a change". > > A good example is the tulip driver. You repeatedly restructured my > driver in the kernel, splitting into different files. It was still 90+% > my code, but the changes made it impossible to track the modification > history. The kernel driver was long-broken with 21143-SYM cards, but no > one took the responsibility for fixing it. For what it's worth, I have yet to find a tulip driver that works with all of my 4-port NICs. Becker's fails with the Phobos 4-port NIC, a very recent kernel driver fails to negotiate correctly (sometimes) with the DFE-570tx NIC. Both of them failed a while back when I tried to put 3 DFE-570tx's into a single machine. On average, I've had better luck with the kernel driver than with Becker's, and since it is quite a pain to compile and test it, I have been ignoring it more and more. Mr Becker: Perhaps you could rename your tulip driver becker_tulip and have it separately buildable and configurable in the kernel config options? If it was back into the kernel proper it would be much easier to experiment with. Thanks, Ben -- Ben Greear President of Candela Technologies Inc http://www.candelatech.com ScryMUD: http://scry.wanfear.com http://scry.wanfear.com/~greear From hch@infradead.org Thu Dec 12 16:23:10 2002 Received: with ECARTIS (v1.0.0; list netdev); Thu, 12 Dec 2002 16:23:15 -0800 (PST) Received: from phoenix.infradead.org (carisma.slowglass.com [195.224.96.167]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBD0N9uR021022 for ; Thu, 12 Dec 2002 16:23:09 -0800 Received: from hch by phoenix.infradead.org with local (Exim 4.10) id 18MdfI-0004Ew-00; Fri, 13 Dec 2002 00:26:52 +0000 Date: Fri, 13 Dec 2002 00:26:51 +0000 From: Christoph Hellwig To: Jeff Garzik Cc: Linux Kernel Mailing List , netdev@oss.sgi.com Subject: Re: [PATCH 2.4.20] vanilla 3c59x Message-ID: <20021213002651.A15922@infradead.org> Mail-Followup-To: Christoph Hellwig , Jeff Garzik , Linux Kernel Mailing List , netdev@oss.sgi.com References: <3DF925AC.4020703@pobox.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5.1i In-Reply-To: <3DF925AC.4020703@pobox.com>; from jgarzik@pobox.com on Thu, Dec 12, 2002 at 07:11:24PM -0500 X-archive-position: 1360 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: hch@infradead.org Precedence: bulk X-list: netdev Content-Length: 243 Lines: 9 On Thu, Dec 12, 2002 at 07:11:24PM -0500, Jeff Garzik wrote: > > bk pull bk://kernel.bkbits.net/jgarzik/3c59x-2.4 > > This will update the following files: Marcelo, please don't pull that. Having the pci-scan* junk in mainline is bogus. From becker@scyld.com Thu Dec 12 17:14:55 2002 Received: with ECARTIS (v1.0.0; list netdev); Thu, 12 Dec 2002 17:15:03 -0800 (PST) Received: from beohost.scyld.com (dsl093-058-082.blt1.dsl.speakeasy.net [66.93.58.82]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBD1EtuR022152 for ; Thu, 12 Dec 2002 17:14:55 -0800 Received: from localhost (becker@localhost) by beohost.scyld.com (8.11.6/8.11.6) with ESMTP id gBD1IqQ21999; Thu, 12 Dec 2002 20:18:52 -0500 Date: Thu, 12 Dec 2002 20:18:51 -0500 (EST) From: Donald Becker To: Jeff Garzik cc: Roger Luethi , , Linux Kernel Mailing List Subject: Re: pci-skeleton duplex check In-Reply-To: <3DF90208.3010208@pobox.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1361 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: becker@scyld.com Precedence: bulk X-list: netdev Content-Length: 4803 Lines: 104 On Thu, 12 Dec 2002, Jeff Garzik wrote: > Donald Becker wrote: > > On Thu, 12 Dec 2002, Jeff Garzik wrote: > >>Donald Becker wrote: > [[ I don't know why I bother. The people that now control what > goes into the kernel would rather put in random patches from > other people than accept a correct fix from me. ]] > I'm sure you'll continue making snide comments on every mailing list you > maintain, but the fact remains: > I would much rather accept a fix from you. Perhaps we have a different idea of "fix". You want are looking for a patch to modifications you have made to code I have written. In the meantime I have been providing working code, and have been updating that code to work with new hardware. So a fix is the working, continuously maintained version of the driver. To put an admittedly simplified spin on it, you are saying "I want you to tell me what I have broken when I changed this", and to continuously monitor and test your changes, made for unknown reasons on a very divergent source base. > > The drivers in the kernel are now heavily modified and have significantly > > diverged from my version. Sure, you are fine with having someone else > > do the difficult and unrewarding debugging and maintenance work, while > > you work on just the latest cool hardware, change the interfaces and are > > concerned only with the current kernel version. > > While I disagree with this assessment, I think we can safely draw the > conclusion that the problem is _not_ people ignoring your patches, or > preferring other patches over yours. I can point to specific instances. Just looking at the drivers in the kernel, it is clear that this has happened. > > A good example is the tulip driver. You repeatedly restructured my ... > I take responsibility for fixing it, I just haven't fixed it yet :) > > It's easy to make the first few patches, when you don't have to deal > > with reversion testing, many different models, and have an unlimited > > sandbox where it doesn't matter if a specific release works or not. I think that these two statements fit well together. > > But > > it takes a huge of work to keep a stable, traceable driver development > > process that works with many different kernel versions and hardware > > environments. > > We're slowly getting there, in terms of regression and stress testing. But it existed before, and was discarded! Yes, the kernel is now _returning_ to a stable state while making improvements. But there was a period of time when interface stability and detailed correctness was thrown away in favor of many inexperienced people quickly and repeatedly restructuring interfaces without understanding the underlying requirements. I could mention VM, but I'll go back to one that had a very large direct impacted on me: CardBus. CardBus is a difficult case of hot-swap PCI -- the device can go away without warning, and it's usually implemented on machines where suspend and resume must work correctly. We had perhaps the best operational implementation in the industry, and I had written about half of the CardBus drivers. Yet my proven interface implementation was completely discarded in favor one that needed to be repeatedly changed as the requirements were slowly understood. > I would love to integrate your drivers directly, but they don't come > anywhere close to using current kernel APIs. The biggie of biggies is > not using the pci_driver API. So, given that we cannot directly merge Yup, that is just what I was talking about. Let me continue: The result is that today other systems now have progressed to a great implementation of suspend/resume, while Linux distributions now default to unloading and reloading drivers to avoid various suspend bugs. And when the driver cannot be unloaded because some part of the networking stack is holding the interface, things go horribly wrong... You might be able to naysay the individual details, but the end technical result is clear. > your drivers, and you don't send patches to kernel developers, what is > the next best alternative? (a) let kernel net drivers bitrot, or (b) > maintain them as best we can without Don Becker patches? I say that "b" > is far better than "a" for Linux users. Or perhaps recognizing that when someone that has been a significant, continuous contributer since the early days of Linux says "this is screwed up", they might have a point. When Linux suddenly had thousands of people wanting to submit patches, that didn't means that there were more people that could understand, implement and maintain complex systems. -- Donald Becker becker@scyld.com Scyld Computing Corporation http://www.scyld.com 410 Severn Ave. Suite 210 Scyld Beowulf cluster system Annapolis MD 21403 410-990-9993 From jgarzik@pobox.com Fri Dec 13 00:09:08 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 13 Dec 2002 00:09:16 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBD897uR025051 for ; Fri, 13 Dec 2002 00:09:08 -0800 Received: from rdu57-8-131.nc.rr.com ([66.57.8.131] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18MdRA-00025E-00; Fri, 13 Dec 2002 00:12:16 +0000 Message-ID: <3DF925AC.4020703@pobox.com> Date: Thu, 12 Dec 2002 19:11:24 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Linux Kernel Mailing List , netdev@oss.sgi.com Subject: [PATCH 2.4.20] vanilla 3c59x Content-Type: multipart/mixed; boundary="------------020908010405090006090002" X-archive-position: 1362 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Content-Length: 1406 Lines: 42 This is a multi-part message in MIME format. --------------020908010405090006090002 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit This patch, against 2.4.20, updates 3c59x to vanilla Don Becker version that is available at ftp://www.scyld.com/pub/network/3c59x.c It's too big post on a list, so I put it up at ftp://ftp.kernel.org/pub/linux/kernel/people/jgarzik/patches/2.4.20/3c59x-vanilla-2.4.20.patch.gz It's also available from BitKeeper at the 'bk pull' URL attached to this email. But be warned you are pulling from 2.4.21-bk-current, plus 3c59x.c changes, not vanilla 2.4.20 as the patch is diff'd against. --------------020908010405090006090002 Content-Type: text/plain; name="3c59x-2.4.txt" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="3c59x-2.4.txt" bk pull bk://kernel.bkbits.net/jgarzik/3c59x-2.4 This will update the following files: drivers/net/3c59x.c | 3254 +++++++++++++++++++--------------------------- drivers/net/Makefile | 2 drivers/net/kern_compat.h | 284 ++++ drivers/net/pci-scan.c | 658 +++++++++ drivers/net/pci-scan.h | 90 + 5 files changed, 2440 insertions(+), 1848 deletions(-) through these ChangeSets: (02/12/12 1.812) [netdrvr 3c59x] update to vanilla Becker version 0.99Xf (11/17/2002) --------------020908010405090006090002-- From davem@redhat.com Fri Dec 13 00:47:03 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 13 Dec 2002 00:47:07 -0800 (PST) Received: from rth.ninka.net (rth.ninka.net [216.101.162.244]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBD8l2uR025741 for ; Fri, 13 Dec 2002 00:47:03 -0800 Received: from rth.ninka.net (localhost.localdomain [127.0.0.1]) by rth.ninka.net (8.12.5/8.12.5) with ESMTP id gBD9HH1O001913; Fri, 13 Dec 2002 01:17:17 -0800 Received: (from davem@localhost) by rth.ninka.net (8.12.5/8.12.5/Submit) id gBD9HGaF001909; Fri, 13 Dec 2002 01:17:16 -0800 X-Authentication-Warning: rth.ninka.net: davem set sender to davem@redhat.com using -f Subject: Re: pci-skeleton duplex check From: "David S. Miller" To: Donald Becker Cc: Jeff Garzik , Roger Luethi , netdev@oss.sgi.com, Linux Kernel Mailing List In-Reply-To: References: Content-Type: text/plain Content-Transfer-Encoding: 7bit X-Mailer: Ximian Evolution 1.0.8 (1.0.8-10) Date: 13 Dec 2002 01:17:16 -0800 Message-Id: <1039771036.1509.5.camel@rth.ninka.net> Mime-Version: 1.0 X-archive-position: 1363 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: davem@redhat.com Precedence: bulk X-list: netdev Content-Length: 880 Lines: 20 On Thu, 2002-12-12 at 17:18, Donald Becker wrote: > Or perhaps recognizing that when someone that has been a significant, > continuous contributer since the early days of Linux Until you learn to play nice with people and mesh within the fabric of Linux development, I adamently do not classify you as you appear to self-classify yourself. You don't contribute, you sit in your sandbox and then point fingers at the people who do know how to work with other human beings and say "see how much that stuff sucks? well my stuff works, nyah!" I fear you will hold a grudge about this forever. If Linux itself is worse off and went backwards in time for a while, it is because of your inability to work together with people. I know it may be hard for you to accept this fact, but I can tell you that continuing to point the fingers elsewhere is going to be a repeated dead end. From rl@hellgate.ch Fri Dec 13 02:30:41 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 13 Dec 2002 02:30:46 -0800 (PST) Received: from mta2n.bluewin.ch (mta2n.bluewin.ch [195.186.4.220]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBDAUduR026841 for ; Fri, 13 Dec 2002 02:30:40 -0800 Received: from k3.hellgate.ch (62.203.102.214) by mta2n.bluewin.ch (Bluewin AG 6.5.032) id 3DE760510014ED9F; Thu, 12 Dec 2002 14:20:42 +0100 Received: by k3.hellgate.ch (MTA, from userid 500) id 315A9323C0; Thu, 12 Dec 2002 14:20:33 +0100 (CET) Date: Thu, 12 Dec 2002 14:20:33 +0100 From: Roger Luethi To: Donald Becker Cc: netdev@oss.sgi.com Subject: Re: pci-skeleton duplex check Message-ID: <20021212132033.GA3224@k3.hellgate.ch> References: <20021211132436.GA12529@k3.hellgate.ch> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.3.27i X-Operating-System: Linux 2.4.21-pre1 on i686 X-GPG-Fingerprint: 92 F4 DC 20 57 46 7B 95 24 4E 9E E7 5A 54 DC 1B X-GPG: 1024/80E744BD wwwkeys.ch.pgp.net X-archive-position: 1364 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: rl@hellgate.ch Precedence: bulk X-list: netdev Content-Length: 734 Lines: 19 On Wed, 11 Dec 2002 21:42:44 -0500, Donald Becker wrote: > Note that the second check ignores 100baseT4, despite it have priority > over 10baseT-*. That was intentional to work around, "a specific issue" > with a transceiver. That "specific issue" might be worth documenting. Information on such quirks is hardest to come by. > The is no extra cost to the extra bit, and it makes it clear we are > testing for 10baseT-FDX. > (The test was originally implemented as part of a complete set of > cases. The test code needed while building a driver is more complex > than what you see in the concise final result.) That was exactly the kind of answer I've been looking for. Nothing beats some historic background. Thank you. Roger From becker@scyld.com Fri Dec 13 08:52:31 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 13 Dec 2002 08:52:35 -0800 (PST) Received: from beohost.scyld.com (pool-151-196-176-15.balt.east.verizon.net [151.196.176.15]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBDGqTuR003376 for ; Fri, 13 Dec 2002 08:52:30 -0800 Received: from localhost (becker@localhost) by beohost.scyld.com (8.11.6/8.11.6) with ESMTP id gBDGuHo02102; Fri, 13 Dec 2002 11:56:18 -0500 Date: Fri, 13 Dec 2002 11:56:17 -0500 (EST) From: Donald Becker To: "David S. Miller" cc: Jeff Garzik , Roger Luethi , , Linux Kernel Mailing List Subject: Re: pci-skeleton duplex check In-Reply-To: <1039771036.1509.5.camel@rth.ninka.net> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1366 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: becker@scyld.com Precedence: bulk X-list: netdev Content-Length: 1356 Lines: 32 On 13 Dec 2002, David S. Miller wrote: > On Thu, 2002-12-12 at 17:18, Donald Becker wrote: > > Or perhaps recognizing that when someone that has been a significant, > > continuous contributer since the early days of Linux > > Until you learn to play nice with people and mesh within the > fabric of Linux development, I adamently do not classify you > as you appear to self-classify yourself. You don't contribute, > you sit in your sandbox and then point fingers at the people who > do know how to work with other human beings and say "see how much > that stuff sucks? well my stuff works, nyah!" .. > If Linux itself is worse off and went backwards in time for a while... The development criteria used to be technically based, and that is still the public statement. Now, as your statement makes clear, working code is an irrelevant criteria. You comments immediately moved the subject from the technical merit and correctness of the code to an ad hominem attack. The facts, and the code, clearly show the long term interaction and contribution. In most cases the code and interfaces we are talking about were written and defined by me throughout the past decade. -- Donald Becker becker@scyld.com Scyld Computing Corporation http://www.scyld.com 410 Severn Ave. Suite 210 Scyld Beowulf cluster system Annapolis MD 21403 410-990-9993 From lm@bitmover.com Fri Dec 13 09:18:43 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 13 Dec 2002 09:18:45 -0800 (PST) Received: from mail.bitmover.com (bitmover.com [192.132.92.2]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBDHIhuR003966 for ; Fri, 13 Dec 2002 09:18:43 -0800 Received: from work.bitmover.com (work.bitmover.com [10.3.3.1]) by mail.bitmover.com (8.11.6/8.11.6) with ESMTP id gBDHeNp00373; Fri, 13 Dec 2002 09:40:23 -0800 Received: (from lm@localhost) by work.bitmover.com (8.11.6/8.11.6) id gBDHMTn17407; Fri, 13 Dec 2002 09:22:29 -0800 Date: Fri, 13 Dec 2002 09:22:29 -0800 From: Larry McVoy To: Donald Becker Cc: "David S. Miller" , Jeff Garzik , Roger Luethi , netdev@oss.sgi.com, Linux Kernel Mailing List Subject: Networking/Becker et al [was Re: pci-skeleton duplex check] Message-ID: <20021213092229.D9973@work.bitmover.com> Mail-Followup-To: Larry McVoy , Donald Becker , "David S. Miller" , Jeff Garzik , Roger Luethi , netdev@oss.sgi.com, Linux Kernel Mailing List Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5.1i X-MailScanner: Found to be clean X-archive-position: 1367 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: lm@bitmover.com Precedence: bulk X-list: netdev Content-Length: 5111 Lines: 108 In the for what it is worth department... My brain dump on this situation. I know Dave Miller, Don Becker, and Jeff Garzik personally, we've spent time face to face. These are all good guys, very important guys to the kernel effort. I've known Don for a long time and we've had a bunch of talks about why his style and the Linux style doesn't mesh well. Here's my view, which may or may not be shared. Don is a careful, thoughtful guy. He is quite conservative when it comes to programming. His style most closely matches the Sun kernel style of development; it does not match the Linux style at all. The Linux style is a lot more free wheeling, stuff changes a lot and the kernel team depends heavily on the fact that it is has this vast army of free testers. Without that army, I shudder to think what things would be like, I do not think the current development style would work anywhere near as well. But it does work, and it violates a lot of engineering disciplines that old farts, like me and Don, respect. I've learned to live with it, even respect the fact that the Linux team does so well. Don is having a much tougher time. He really wants the Linux team to work more like he works and the Linux team doesn't want to do that at all, they point at their success and believe that their development style is part of that success. It is worth putting on the record that Don has done a lot for the Linux effort, a huge amount, in fact. Without Don, Linux would be dramatically less far along than it is. I've been here since before it had networking and it really took off when Don started writing drivers. It's also pointing out that I think he's right about the networking regressions, suspend/resume on laptops used to work and now the network is almost always hosed after I do that. I doubt that either side is likely to change their view. But, the real point is how to we get Don's brain engaged on the kernel networking drivers? A few thoughts: a) Don is going to have to accept that the Linux kernel approach is the way it is. Sitting on the sidelines and whining is not going to change how the kernel is developed. Either get with the program or not, but don't sit there and complain but refuse to work the way the rest of the people work. b) The kernel folks need to listen to Don more. Draw him into the conversations about interface changes, try and extract the knowledge he has, it's worth it. Not doing so just means you are wasting time. c) Don needs to kill those mailing lists he maintains or merge them with the appropriate kernel lists. That is a big part of the problem, the interesting stuff seems to be happening over in Don's part of the world and the mainstream kernel team isn't aware of it. d) Beer. More beer. Much more beer and some face time. If there is a tech conference coming up, I think we should get Don to come and give him the first lifetime achievement award for Linux kernel development. Then shove him and the other network hackers into a room with a keg and not let them out until they are smiling. BitMover will kick in some money towards this if needed. --lm On Fri, Dec 13, 2002 at 11:56:17AM -0500, Donald Becker wrote: > On 13 Dec 2002, David S. Miller wrote: > > On Thu, 2002-12-12 at 17:18, Donald Becker wrote: > > > Or perhaps recognizing that when someone that has been a significant, > > > continuous contributer since the early days of Linux > > > > Until you learn to play nice with people and mesh within the > > fabric of Linux development, I adamently do not classify you > > as you appear to self-classify yourself. You don't contribute, > > you sit in your sandbox and then point fingers at the people who > > do know how to work with other human beings and say "see how much > > that stuff sucks? well my stuff works, nyah!" > .. > > If Linux itself is worse off and went backwards in time for a while... > > The development criteria used to be technically based, and that is still > the public statement. Now, as your statement makes clear, working code > is an irrelevant criteria. > > You comments immediately moved the subject from the technical merit and > correctness of the code to an ad hominem attack. The facts, and the > code, clearly show the long term interaction and contribution. In most > cases the code and interfaces we are talking about were written and > defined by me throughout the past decade. > > > > -- > Donald Becker becker@scyld.com > Scyld Computing Corporation http://www.scyld.com > 410 Severn Ave. Suite 210 Scyld Beowulf cluster system > Annapolis MD 21403 410-990-9993 > > - > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ -- --- Larry McVoy lm at bitmover.com http://www.bitmover.com/lm From davem@redhat.com Fri Dec 13 10:29:47 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 13 Dec 2002 10:29:48 -0800 (PST) Received: from pizda.ninka.net (IDENT:root@pizda.ninka.net [216.101.162.242]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBDITkuR005335 for ; Fri, 13 Dec 2002 10:29:47 -0800 Received: from localhost (IDENT:davem@localhost.localdomain [127.0.0.1]) by pizda.ninka.net (8.9.3/8.9.3) with ESMTP id KAA11375; Fri, 13 Dec 2002 10:29:19 -0800 Date: Fri, 13 Dec 2002 10:29:18 -0800 (PST) Message-Id: <20021213.102918.102902274.davem@redhat.com> To: becker@scyld.com Cc: jgarzik@pobox.com, rl@hellgate.ch, netdev@oss.sgi.com, linux-kernel@vger.kernel.org Subject: Re: pci-skeleton duplex check From: "David S. Miller" In-Reply-To: References: <1039771036.1509.5.camel@rth.ninka.net> X-FalunGong: Information control. X-Mailer: Mew version 2.1 on Emacs 21.1 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1368 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: davem@redhat.com Precedence: bulk X-list: netdev Content-Length: 752 Lines: 19 From: Donald Becker Date: Fri, 13 Dec 2002 11:56:17 -0500 (EST) The development criteria used to be technically based, and that is still the public statement. Now, as your statement makes clear, working code is an irrelevant criteria. No, working code is only part of the equation. If you're a total and complete asshole, your work is likely to get lost to the sands of time. In such a case nobody wants to deal with you. Welcome to the real world where you have to interact with other human beings (not just be technically capable) in order to accomplish things. It's always been like this Donald. If you piss off, or are a jerk to, the primary maintainers you're going to get the short end of the stick. From jgarzik@pobox.com Fri Dec 13 13:16:24 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 13 Dec 2002 13:16:29 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBDLGN3v009756 for ; Fri, 13 Dec 2002 13:16:24 -0800 Received: from nat-pool-rdu.redhat.com ([66.187.233.200] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18MxE9-0003aZ-00; Fri, 13 Dec 2002 21:20:09 +0000 Message-ID: <3DFA4ED1.7090209@pobox.com> Date: Fri, 13 Dec 2002 16:19:13 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Larry McVoy CC: Donald Becker , "David S. Miller" , Roger Luethi , netdev@oss.sgi.com, Linux Kernel Mailing List Subject: Re: Networking/Becker et al [was Re: pci-skeleton duplex check] References: <20021213092229.D9973@work.bitmover.com> In-Reply-To: <20021213092229.D9973@work.bitmover.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1369 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Content-Length: 4276 Lines: 92 Larry McVoy wrote: > Don is a careful, thoughtful guy. He is quite conservative when it comes > to programming. His style most closely matches the Sun kernel style of > development; it does not match the Linux style at all. The Linux style > is a lot more free wheeling, stuff changes a lot and the kernel team > depends heavily on the fact that it is has this vast army of free testers. > Without that army, I shudder to think what things would be like, I do not > think the current development style would work anywhere near as well. > > But it does work, and it violates a lot of engineering disciplines that > old farts, like me and Don, respect. I've learned to live with it, even > respect the fact that the Linux team does so well. Don is having a much > tougher time. He really wants the Linux team to work more like he works > and the Linux team doesn't want to do that at all, they point at their > success and believe that their development style is part of that success. This meshes with what I've observed, too... I'm not sure which is the bigger issue, Don's devel style versus Linux devel style, or use of kernel APIs, but both I think cut to the core of the differences in this situation. > It is worth putting on the record that Don has done a lot for the Linux > effort, a huge amount, in fact. Without Don, Linux would be dramatically > less far along than it is. I've been here since before it had networking > and it really took off when Don started writing drivers. I give him a lot of credit too, though it's often in the way of trying to apply lessons learned from him to current net drivers and such. > It's also pointing out that I think he's right about the networking > regressions, suspend/resume on laptops used to work and now the network > is almost always hosed after I do that. suspend/resume in Linux has always been a hack, and will continue to be until the 2.5.x sysfs/device model is fully fleshed out. Specifically for 2.4.x, let me know if your net driver doesn't suspend/resume correctly. The cases I've tested work fine. Make sure your distro is properly calling the /sbin/hotplug agent when suspend/resume occurs though. > I doubt that either side is likely to change their view. But, the real > point is how to we get Don's brain engaged on the kernel networking > drivers? A few thoughts: > > a) Don is going to have to accept that the Linux kernel approach is > the way it is. Sitting on the sidelines and whining is not going > to change how the kernel is developed. Either get with the > program or not, but don't sit there and complain but refuse > to work the way the rest of the people work. indeed... central problem > b) The kernel folks need to listen to Don more. Draw him into the > conversations about interface changes, try and extract the > knowledge he has, it's worth it. Not doing so just means you > are wasting time. I try to do this, and I can point to many specific instances in the past when he's been very helpful. I would love to get Don more involved in interface discussions though... typically where he pops up [where I see him] is more in the area of hardware experience and knowledge than interface discussions. > c) Don needs to kill those mailing lists he maintains or merge them > with the appropriate kernel lists. That is a big part of the > problem, the interesting stuff seems to be happening over in > Don's part of the world and the mainstream kernel team isn't > aware of it. This is really a matter of getting his driver changes into the kernel, too... Some mailing list users [not me] would probably complain about seeing support traffic for drivers that are not in the kernel. > d) Beer. More beer. Much more beer and some face time. If there > is a tech conference coming up, I think we should get Don to > come and give him the first lifetime achievement award for > Linux kernel development. Then shove him and the other network > hackers into a room with a keg and not let them out until they > are smiling. BitMover will kick in some money towards this if > needed. mmmmmmm, beer :) From mcr@sandelman.ottawa.on.ca Fri Dec 13 16:16:20 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 13 Dec 2002 16:16:25 -0800 (PST) Received: from noxmail.sandelman.ottawa.on.ca (cyphermail.sandelman.ottawa.on.ca [192.139.46.78]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBE0GF3v011688 for ; Fri, 13 Dec 2002 16:16:20 -0800 Received: from sandelman.ottawa.on.ca (marajade.sandelman.ottawa.on.ca [192.139.46.20]) by noxmail.sandelman.ottawa.on.ca (8.11.6/8.11.6) with ESMTP id gBE0Jth09668 (using TLSv1/SSLv3 with cipher EDH-RSA-DES-CBC3-SHA (168 bits) verified OK); Fri, 13 Dec 2002 19:20:02 -0500 (EST) Received: from sandelman.ottawa.on.ca (marajade [127.0.0.1]) by sandelman.ottawa.on.ca (8.12.3/8.12.3/Debian -4) with ESMTP id gBE0JncX006748 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=OK); Fri, 13 Dec 2002 19:19:50 -0500 Received: from marajade.sandelman.ottawa.on.ca (mcr@localhost) by sandelman.ottawa.on.ca (8.12.3/8.12.3/Debian -4) with ESMTP id gBE0JmDs006744; Fri, 13 Dec 2002 19:19:48 -0500 Message-Id: <200212140019.gBE0JmDs006744@sandelman.ottawa.on.ca> To: netdev@oss.sgi.com, Linux Kernel Mailing List Subject: Re: pci-skeleton duplex check In-reply-to: Your message of "Thu, 12 Dec 2002 16:11:13 EST." Mime-Version: 1.0 (generated by tm-edit 1.8) Content-Type: text/plain; charset=US-ASCII Date: Fri, 13 Dec 2002 19:19:47 -0500 From: Michael Richardson X-archive-position: 1370 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: mcr@sandelman.ottawa.on.ca Precedence: bulk X-list: netdev Content-Length: 1565 Lines: 42 -----BEGIN PGP SIGNED MESSAGE----- >>>>> "Donald" == Donald Becker writes: Donald> The drivers in the kernel are now heavily modified and have significantly Donald> diverged from my version. Sure, you are fine with having someone else Donald> do the difficult and unrewarding debugging and maintainence work, while Donald> you work on just the latest cool hardware, change the interfaces and are Donald> concerned only with the current kernel version. I agree strongly with Donald. Interfaces should NEVER change in patch level versions. Just *DO NOT DO IT*. Go wild in odd-numbered.. get the interfaces right there. But leave them alone afterward. This is a fundamental tenant of being professional. Otherwise, the kernel people are the biggest reason I've ever seen for using *BSD. Microsoft is not the real enemy. Gratuitous change is. ] ON HUMILITY: to err is human. To moo, bovine. | firewalls [ ] Michael Richardson, Sandelman Software Works, Ottawa, ON |net architect[ ] mcr@sandelman.ottawa.on.ca http://www.sandelman.ottawa.on.ca/ |device driver[ ] panic("Just another Debian GNU/Linux using, kernel hacking, security guy"); [ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) Comment: Finger me for keys iQCVAwUBPfp5IIqHRg3pndX9AQHW7gP9FC0BgskaVBb9HNjKUp8DhR5bJK+YTVa7 YeVGZFRxuFi2O9oDiMuUvYq++y+8PR4LXpJZuNoShA36wqV38QS8pBFhqFt/JrEb xHNozohQ/7IyncJsG0UkBTfhqIbxbfsd19DUx0ehcqNAh7N3c95qeEEHODTs2DKy jqtgSrXvOBY= =JsKT -----END PGP SIGNATURE----- From jgarzik@pobox.com Fri Dec 13 17:14:16 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 13 Dec 2002 17:14:20 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBE1EE3v012902 for ; Fri, 13 Dec 2002 17:14:15 -0800 Received: from nat-pool-rdu.redhat.com ([66.187.233.200] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18MwtV-0003My-00; Fri, 13 Dec 2002 20:58:49 +0000 Message-ID: <3DFA49CF.9060106@pobox.com> Date: Fri, 13 Dec 2002 15:57:51 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Donald Becker CC: Roger Luethi , netdev@oss.sgi.com, Linux Kernel Mailing List Subject: Re: pci-skeleton duplex check References: In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1371 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Donald Becker wrote: > On Thu, 12 Dec 2002, Jeff Garzik wrote: > >>Donald Becker wrote: >> >>>On Thu, 12 Dec 2002, Jeff Garzik wrote: >>> >>>>Donald Becker wrote: >> >> [[ I don't know why I bother. The people that now control what >> goes into the kernel would rather put in random patches from >> other people than accept a correct fix from me. ]] >>I'm sure you'll continue making snide comments on every mailing list you >>maintain, but the fact remains: >>I would much rather accept a fix from you. > > > Perhaps we have a different idea of "fix". > > You want are looking for a patch to modifications you have made to code > I have written. In the meantime I have been providing working code, and > have been updating that code to work with new hardware. So a fix is the > working, continuously maintained version of the driver. > > To put an admittedly simplified spin on it, you are saying "I want you > to tell me what I have broken when I changed this", and to continuously > monitor and test your changes, made for unknown reasons on a very > divergent source base. No, that's not it at all. I would ecstatic if you even posted the changes made to your own drivers to netdev@oss.sgi.com or similar... I'm asking for _any_ contributions at all. The more fine-grained the better... >>>The drivers in the kernel are now heavily modified and have significantly >>>diverged from my version. Sure, you are fine with having someone else >>>do the difficult and unrewarding debugging and maintenance work, while >>>you work on just the latest cool hardware, change the interfaces and are >>>concerned only with the current kernel version. >> >>While I disagree with this assessment, I think we can safely draw the >>conclusion that the problem is _not_ people ignoring your patches, or >>preferring other patches over yours. > > > I can point to specific instances. Just looking at the drivers in the > kernel, it is clear that this has happened. There is an admitted preference to people who actually send me patches. That sometimes translates to "other change" being preferred over logic in one of your drivers. I would still greatly prefer patches from you, however. And your comments on other people's patches are very welcome [and there have been plenty of those in past -- thanks]. > But it existed before, and was discarded! > Yes, the kernel is now _returning_ to a stable state while making > improvements. But there was a period of time when interface stability > and detailed correctness was thrown away in favor of many inexperienced > people quickly and repeatedly restructuring interfaces without > understanding the underlying requirements. > > I could mention VM, but I'll go back to one that had a very large direct > impacted on me: CardBus. CardBus is a difficult case of hot-swap PCI -- > the device can go away without warning, and it's usually implemented on > machines where suspend and resume must work correctly. We had perhaps > the best operational implementation in the industry, and I had written > about half of the CardBus drivers. Yet my proven interface > implementation was completely discarded in favor one that needed to be > repeatedly changed as the requirements were slowly understood. But... this is how Linux development works. Believe me, I understand you don't like that very much, but here is a central question to you: what can we do to move forward? The CardBus implementation still fails on some systems, and still wants work. However, the pci_driver API is not only codified in 2.4.x, but it is extended to the more generic driver model in 2.5.x. _And_ I have proven it works just fine under 2.2.x (see kcompat24 toolkit). What can we as kernel developers do to reintegrate you back into kernel development? Some of the APIs you obviously don't like, but pretending they don't exist is not a solution. This is the Linux game, for better or worse. At the end of the day, if we don't like Linus's decisions, we can either swallow our pride and continue with Linux, or fork a Linux tree and make it work "the right way." The driver model (nee pci_driver) is the direction of Linux. >>I would love to integrate your drivers directly, but they don't come >>anywhere close to using current kernel APIs. The biggie of biggies is >>not using the pci_driver API. So, given that we cannot directly merge > > > Yup, that is just what I was talking about. Let me continue: > > The result is that today other systems now have progressed to a great > implementation of suspend/resume, while Linux distributions now default > to unloading and reloading drivers to avoid various suspend bugs. And > when the driver cannot be unloaded because some part of the networking > stack is holding the interface, things go horribly wrong... > > You might be able to naysay the individual details, but the end > technical result is clear. That's what is currently in development in 2.5.x: sane suspend and resume. I would dispute that other systems have a decently designed suspend/resume -- that said, working is obviously better right now than non-working but nicer design ;-) >>your drivers, and you don't send patches to kernel developers, what is >>the next best alternative? (a) let kernel net drivers bitrot, or (b) >>maintain them as best we can without Don Becker patches? I say that "b" >>is far better than "a" for Linux users. > > > Or perhaps recognizing that when someone that has been a significant, > continuous contributer since the early days of Linux says "this is > screwed up", they might have a point. When Linux suddenly had thousands > of people wanting to submit patches, that didn't means that there were > more people that could understand, implement and maintain complex > systems. Shit, dude, _I_ recognize this. Probably better than most people, since I see on a daily basis the benefits of your overall design in the net drivers, and want to push good elements of that design into the kernel net drivers. At the end of the day you'd be surprised how much I wind up defending your code to other kernel hackers, and educating them on why -not- to do certain things. IMO the bigger sticking point is - at what point do you say "yeah, 2.4.x/2.5.x APIs may suck in my opinion, but they are the official APIs so I will use them"? There are tons of reasons why Red Hat (my current employer) is very leery of taking patches which will not eventually find their way to the mainline kernel.org kernel. A lot of those reasons apply in the case of your drivers, too. Using non-standard APIs has all sorts of software engineering implications which wind up with a negative developer and user experience. Jeff From oxymoron@waste.org Fri Dec 13 17:40:03 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 13 Dec 2002 17:40:05 -0800 (PST) Received: from waste.org (waste.org [209.173.204.2]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBE1e23v013325 for ; Fri, 13 Dec 2002 17:40:03 -0800 Received: from waste.org (localhost [127.0.0.1]) by waste.org (8.12.3/8.12.3/Debian -4) with ESMTP id gBE1hklZ018026 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO); Fri, 13 Dec 2002 19:43:46 -0600 Received: (from oxymoron@localhost) by waste.org (8.12.3/8.12.3/Debian -4) id gBE1hkQ1018023; Fri, 13 Dec 2002 19:43:46 -0600 Date: Fri, 13 Dec 2002 19:43:46 -0600 From: Oliver Xymoron To: Michael Richardson Cc: netdev@oss.sgi.com, Linux Kernel Mailing List Subject: Re: pci-skeleton duplex check Message-ID: <20021214014346.GA6029@waste.org> References: <200212140019.gBE0JmDs006744@sandelman.ottawa.on.ca> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200212140019.gBE0JmDs006744@sandelman.ottawa.on.ca> User-Agent: Mutt/1.3.28i X-Virus-Scanned: by AMaViS-ng (Milter interface) X-archive-position: 1372 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: oxymoron@waste.org Precedence: bulk X-list: netdev On Fri, Dec 13, 2002 at 07:19:47PM -0500, Michael Richardson wrote: > > > >>>>> "Donald" == Donald Becker writes: > Donald> The drivers in the kernel are now heavily modified and have significantly > Donald> diverged from my version. Sure, you are fine with having someone else > Donald> do the difficult and unrewarding debugging and maintainence work, while > Donald> you work on just the latest cool hardware, change the interfaces and are > Donald> concerned only with the current kernel version. > > I agree strongly with Donald. > > Interfaces should NEVER change in patch level versions. > Just *DO NOT DO IT*. > > Go wild in odd-numbered.. get the interfaces right there. > But leave them alone afterward. Umm, if I recall correctly, they're rehashing a flame war about stuff that occurred in 2.3. It doesn't need any additional kindling. -- "Love the dolphins," she advised him. "Write by W.A.S.T.E.." From arun4linux@indiatimes.com Sat Dec 14 06:33:48 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 14 Dec 2002 06:33:49 -0800 (PST) Received: from WS0005.indiatimes.com ([203.199.93.15]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBEEXk3v030958 for ; Sat, 14 Dec 2002 06:33:47 -0800 Received: from 192.168.57.15 (a1 [192.168.57.21]) by WS0005.indiatimes.com (8.9.3/8.9.3) with SMTP id TAA32351; Sat, 14 Dec 2002 19:58:31 +0530 From: "arun4linux" Message-Id: <200212141428.TAA32351@WS0005.indiatimes.com> To: "Michael Richardson", , "Linux Kernel Mailing List" Reply-To: "arun4linux" Subject: Re: Re: pci-skeleton duplex check Date: Sat, 14 Dec 2002 20:05:30 +0530 X-URL: http://indiatimes.com Content-Type: text/plain; charset=us-ascii X-archive-position: 1374 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: arun4linux@indiatimes.com Precedence: bulk X-list: netdev <<Interfaces should NEVER change in patch level versions. Just *DO NOT DO IT*. >>I do agree on this. This is a common complaint about linux kernel developers. And this always gives an insecure feeling :-) for the device driver or kernel module programmers. This was one of the issues in my earlier company/work and they have gone for another OS. Warm Regards Arun "Michael Richardson" wrote: -----BEGIN PGP SIGNED MESSAGE----- >>>>> "Donald" == Donald Becker writes: Donald> The drivers in the kernel are now heavily modified and have significantly Donald> diverged from my version. Sure, you are fine with having someone else Donald> do the difficult and unrewarding debugging and maintainence work, while Donald> you work on just the latest cool hardware, change the interfaces and are Donald> concerned only with the current kernel version. I agree strongly with Donald. Interfaces should NEVER change in patch level versions. Just *DO NOT DO IT*. Go wild in odd-numbered.. get the interfaces right there. But leave them alone afterward. This is a fundamental tenant of being professional. Otherwise, the kernel people are the biggest reason I've ever seen for using *BSD. Microsoft is not the real enemy. Gratuitous change is. ] ON HUMILITY: to err is human. To moo, bovine. | firewalls [ ] Michael Richardson, Sandelman Software Works, Ottawa, ON |net architect[ ] mcr@sandelman.ottawa.on.ca http://www.sandelman.ottawa.on.ca/ |device driver[ ] panic("Just another Debian GNU/Linux using, kernel hacking, security guy"); [ Get Your Private, Free E-mail from Indiatimes at http://email.indiatimes.com Buy the best in Movies at http://www.videos.indiatimes.com Change the way you talk. Indiatimes presents Valufon, Your PC to Phone service with clear voice at rates far less than the normal ISD rates. Go to http://www.valufon.indiatimes.com. Choose your plan. BUY NOW. From arun4linux@indiatimes.com Sat Dec 14 06:33:38 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 14 Dec 2002 06:33:45 -0800 (PST) Received: from WS0005.indiatimes.com ([203.199.93.15]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBEEXZ3v030949 for ; Sat, 14 Dec 2002 06:33:37 -0800 Received: from 192.168.57.15 (a1 [192.168.57.21]) by WS0005.indiatimes.com (8.9.3/8.9.3) with SMTP id TAA32276; Sat, 14 Dec 2002 19:58:18 +0530 From: "arun4linux" Message-Id: <200212141428.TAA32276@WS0005.indiatimes.com> To: "Michael Richardson", , "Linux Kernel Mailing List" Reply-To: "arun4linux" Subject: Re: Re: pci-skeleton duplex check Date: Sat, 14 Dec 2002 20:05:17 +0530 X-URL: http://indiatimes.com MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain Content-Transfer-Encoding: 7bit Content-length: 1975 X-archive-position: 1373 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: arun4linux@indiatimes.com Precedence: bulk X-list: netdev <<Interfaces should NEVER change in patch level versions. Just *DO NOT DO IT*. >>I do agree on this. This is a common complaint about linux kernel developers. And this always gives an insecure feeling :-) for the device driver or kernel module programmers. This was one of the issues in my earlier company/work and they have gone for another OS. Warm Regards Arun "Michael Richardson" wrote: -----BEGIN PGP SIGNED MESSAGE----- >>>>> "Donald" == Donald Becker writes: Donald> The drivers in the kernel are now heavily modified and have significantly Donald> diverged from my version. Sure, you are fine with having someone else Donald> do the difficult and unrewarding debugging and maintainence work, while Donald> you work on just the latest cool hardware, change the interfaces and are Donald> concerned only with the current kernel version. I agree strongly with Donald. Interfaces should NEVER change in patch level versions. Just *DO NOT DO IT*. Go wild in odd-numbered.. get the interfaces right there. But leave them alone afterward. This is a fundamental tenant of being professional. Otherwise, the kernel people are the biggest reason I've ever seen for using *BSD. Microsoft is not the real enemy. Gratuitous change is. ] ON HUMILITY: to err is human. To moo, bovine. | firewalls [ ] Michael Richardson, Sandelman Software Works, Ottawa, ON |net architect[ ] mcr@sandelman.ottawa.on.ca http://www.sandelman.ottawa.on.ca/ |device driver[ ] panic("Just another Debian GNU/Linux using, kernel hacking, security guy"); [ Get Your Private, Free E-mail from Indiatimes at http://email.indiatimes.com Buy the best in Movies at http://www.videos.indiatimes.com Change the way you talk. Indiatimes presents "Valufon", Your PC to Phone service with clear voice at rates far less than the normal ISD rates. Go to http://www.valufon.indiatimes.com. Choose your plan. BUY NOW. [[HTML alternate version deleted]] From rmk@arm.linux.org.uk Sat Dec 14 08:11:07 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 14 Dec 2002 08:11:11 -0800 (PST) Received: from caramon.arm.linux.org.uk (caramon.arm.linux.org.uk [212.18.232.186]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBEGB33v032748 for ; Sat, 14 Dec 2002 08:11:07 -0800 Received: from flint.arm.linux.org.uk ([3ffe:8260:2002:1:201:2ff:fe14:8fad]) by caramon.arm.linux.org.uk with asmtp (TLSv1:DES-CBC3-SHA:168) (Exim 4.04) id 18NEwB-0006Dz-00; Sat, 14 Dec 2002 16:14:47 +0000 Received: from rmk by flint.arm.linux.org.uk with local (Exim 4.04) id 18NEwA-0006ub-00; Sat, 14 Dec 2002 16:14:46 +0000 Date: Sat, 14 Dec 2002 16:14:46 +0000 From: Russell King To: arun4linux Cc: Michael Richardson , netdev@oss.sgi.com, Linux Kernel Mailing List Subject: Re: Re: pci-skeleton duplex check Message-ID: <20021214161446.B23020@flint.arm.linux.org.uk> Mail-Followup-To: arun4linux , Michael Richardson , netdev@oss.sgi.com, Linux Kernel Mailing List References: <200212141428.TAA32351@WS0005.indiatimes.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5.1i In-Reply-To: <200212141428.TAA32351@WS0005.indiatimes.com>; from arun4linux@indiatimes.com on Sat, Dec 14, 2002 at 08:05:30PM +0530 X-archive-position: 1375 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: rmk@arm.linux.org.uk Precedence: bulk X-list: netdev On Sat, Dec 14, 2002 at 08:05:30PM +0530, arun4linux wrote: > Interfaces should NEVER change in patch level versions. > Just *DO NOT DO IT*. > I do agree on this. Rubbish. Think about what you've just said. Patch level version changes are things like 2.5.43 to 2.5.44 or 2.4.19 to 2.4.20. You are saying that we shouldn't change any interfaces between (eg) 2.5.43 and 2.5.44, but we should change every interface we want to change between 2.4.15 and 2.5.0. This is obviously completely bogus. 2.5 is a _development_ tree. Everyone should expect anything, including interfaces to change between each development patch level. > This is a common complaint about linux kernel developers. And this always > gives an insecure feeling :-) for the device driver or kernel module > programmers. If interfaces are changed without extremely good reason between two _stable_ patch level versions, that would be a bug. > This was one of the issues in my earlier company/work and they have > gone for another OS. Was the problem against a stable kernel version? Did you report the problem when you found it? Was there a response? Unless you have done at least the above, I, for one, have very little sympathy. -- Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux http://www.arm.linux.org.uk/personal/aboutme.html From babydr@baby-dragons.com Sat Dec 14 13:22:58 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 14 Dec 2002 13:23:04 -0800 (PST) Received: from filesrv1.baby-dragons.com (ns1.baby-dragons.com [199.33.245.254]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBELMv3v011632 for ; Sat, 14 Dec 2002 13:22:58 -0800 Received: from localhost (babydr@localhost) by filesrv1.baby-dragons.com (8.11.4/8.11.4) with ESMTP id gBELQKd01272; Sat, 14 Dec 2002 16:26:20 -0500 Date: Sat, 14 Dec 2002 16:26:20 -0500 (EST) From: "Mr. James W. Laferriere" To: Russell King cc: arun4linux , Michael Richardson , "" , Linux Kernel Mailing List Subject: Re: Re: pci-skeleton duplex check In-Reply-To: <20021214161446.B23020@flint.arm.linux.org.uk> Message-ID: References: <200212141428.TAA32351@WS0005.indiatimes.com> <20021214161446.B23020@flint.arm.linux.org.uk> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1376 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: babydr@baby-dragons.com Precedence: bulk X-list: netdev On Sat, 14 Dec 2002, Russell King wrote: ... > Rubbish. > > Think about what you've just said. Patch level version changes are > things like 2.5.43 to 2.5.44 or 2.4.19 to 2.4.20. > > You are saying that we shouldn't change any interfaces between (eg) > 2.5.43 and 2.5.44, but we should change every interface we want to > change between 2.4.15 and 2.5.0. Put very simply yes . x.odd-number.y IS for DEVELOPEMENT , x.even-number.y IS for Stability . If people can not understand that I feel sorry for them . JimL -- +------------------------------------------------------------------+ | James W. Laferriere | System Techniques | Give me VMS | | Network Engineer | P.O. Box 854 | Give me Linux | | babydr@baby-dragons.com | Coudersport PA 16915 | only on AXP | +------------------------------------------------------------------+ From sp@scali.com Sat Dec 14 16:33:20 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 14 Dec 2002 16:33:24 -0800 (PST) Received: from elin.scali.no (IDENT:root@elin.scali.no [62.70.89.10]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBF0XI3v014157 for ; Sat, 14 Dec 2002 16:33:19 -0800 Received: from pc-23.office.scali.no (pc-23.office.scali.no [172.16.0.123]) by elin.scali.no (8.12.3/8.12.3) with ESMTP id gBF0asmo012856; Sun, 15 Dec 2002 01:36:55 +0100 Date: Sun, 15 Dec 2002 01:37:27 +0100 (CET) From: Steffen Persvold X-X-Sender: sp@sp-laptop.isdn.scali.no To: Russell King cc: arun4linux , Michael Richardson , , Linux Kernel Mailing List Subject: Re: Re: pci-skeleton duplex check In-Reply-To: <20021214161446.B23020@flint.arm.linux.org.uk> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Virus-Scanned: by amavisd-milter (http://amavis.org/) X-archive-position: 1377 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: sp@scali.com Precedence: bulk X-list: netdev On Sat, 14 Dec 2002, Russell King wrote: > On Sat, Dec 14, 2002 at 08:05:30PM +0530, arun4linux wrote: > > Interfaces should NEVER change in patch level versions. > > Just *DO NOT DO IT*. > > I do agree on this. > > Rubbish. > > Think about what you've just said. Patch level version changes are > things like 2.5.43 to 2.5.44 or 2.4.19 to 2.4.20. > > You are saying that we shouldn't change any interfaces between (eg) > 2.5.43 and 2.5.44, but we should change every interface we want to > change between 2.4.15 and 2.5.0. > > This is obviously completely bogus. 2.5 is a _development_ tree. > Everyone should expect anything, including interfaces to change > between each development patch level. > > > This is a common complaint about linux kernel developers. And this always > > gives an insecure feeling :-) for the device driver or kernel module > > programmers. > > If interfaces are changed without extremely good reason between two > _stable_ patch level versions, that would be a bug. > There have been a few during 2.4... The alloc_kiovec stuff for instance and zap_page_range. 2.2 was much more stable. Interface changes in development series is (or atleast should be to everyone using linux) a known "feature". Regards, -- Steffen Persvold | Scali AS mailto:sp@scali.com | http://www.scali.com Tel: (+47) 2262 8950 | Olaf Helsets vei 6 Fax: (+47) 2262 8951 | N0621 Oslo, NORWAY From jes@trained-monkey.org Sun Dec 15 10:27:20 2002 Received: with ECARTIS (v1.0.0; list netdev); Sun, 15 Dec 2002 10:27:26 -0800 (PST) Received: from trained-monkey.org (IDENT:root@trained-monkey.org [209.217.122.11]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBFIRJ3v032027 for ; Sun, 15 Dec 2002 10:27:20 -0800 Received: (from jes@localhost) by trained-monkey.org (8.11.6/8.9.3) id gBFIVFq23347; Sun, 15 Dec 2002 13:31:15 -0500 To: Andrew Morton Cc: "David S. Miller" , jgarzik@pobox.com, linux-kernel@vger.kernel.org, netdev@oss.sgi.com Subject: Re: [RFC][PATCH] net drivers and cache alignment References: <3DF2844C.F9216283@digeo.com> <20021207.153045.26640406.davem@redhat.com> <3DF28748.186AB31F@digeo.com> <3DF28988.93F268EA@digeo.com> From: Jes Sorensen Date: 15 Dec 2002 13:31:15 -0500 In-Reply-To: Andrew Morton's message of "Sat, 07 Dec 2002 15:51:36 -0800" Message-ID: Lines: 21 X-Mailer: Gnus v5.7/Emacs 20.7 X-archive-position: 1378 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jes@trained-monkey.org Precedence: bulk X-list: netdev >>>>> "Andrew" == Andrew Morton writes: Andrew> Andrew Morton wrote: >> Then I am most confused. None of these fields will be put under >> busmastering or anything like that, so what advantage is there in >> spreading them out? Andrew> Oh I see what you want - to be able to pick up all the Andrew> operating fields in a single fetch. Andrew> That will increase the overall cache footprint though. I Andrew> wonder if it's really a net win, over just keeping it small. There's another case where it matters, I guess one could look at it as similar to the SMP case, but between CPU and device. Some devices have producer indices in host memory which they update whenever it receiving a packet. By putting that seperate from TX data structures you avoid the CPU and the NIC fighting over cache lines. Cheers, Jes From riel@conectiva.com.br Sun Dec 15 12:31:22 2002 Received: with ECARTIS (v1.0.0; list netdev); Sun, 15 Dec 2002 12:31:28 -0800 (PST) Received: from 4-090.ctame701-1.telepar.net.br (root@4-090.ctame701-1.telepar.net.br [200.193.162.90]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBFKUx3v001157 for ; Sun, 15 Dec 2002 12:31:18 -0800 Received: from localhost ([IPv6:::ffff:127.0.0.1]:59073 "EHLO localhost") by imladris.surriel.com with ESMTP id ; Sun, 15 Dec 2002 18:34:11 -0200 Date: Sun, 15 Dec 2002 18:34:06 -0200 (BRST) From: Rik van Riel X-X-Sender: riel@imladris.surriel.com To: netdev@oss.sgi.com cc: linux-kernel@vger.kernel.org Subject: RFC: p&p ipsec without authentication Message-ID: X-spambait: aardvark@kernelnewbies.org X-spammeplease: aardvark@nl.linux.org MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1379 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: riel@conectiva.com.br Precedence: bulk X-list: netdev Hi, I've got a crazy idea. I know it's not secure, but I think it'll add some security against certain attacks, while being non-effective against some others. The idea I have is letting the ipsec layer do opportunistic encryption even when there are no ipsec keys known for the destination address, ie. negotiate a key when none is in the configuration or DNS. I know this gives absolutely no protection against man-in-the-middle attacks (except maybe being able to detect them), but it should prevent passive sniffing of network traffic, as done by some governments. If this "random" encryption could be turned on with one argument to ip or ifconfig and millions of hosts would use it, sniffing internet traffic might just become impractical (or too expensive) for large organisations. Furthermore, even if just 0.1% of the hosts were to use ipsec authentication, the 3-letter agencies would be faced with the additional challenge of identifying which connections could safely be intercepted with man-in-the-middle attacks and which couldn't. Not to mention the fact that the port number on many communications would be invisible, vastly increasing the difficulty of doing any kind of statistical analysis on the traffic that's traversing the network. Is this idea completely crazy or only slightly ? regards, Rik -- Bravely reimplemented by the knights who say "NIH". http://www.surriel.com/ http://guru.conectiva.com/ Current spamtrap: october@surriel.com From andrew@indranet.co.nz Sun Dec 15 14:07:35 2002 Received: with ECARTIS (v1.0.0; list netdev); Sun, 15 Dec 2002 14:07:39 -0800 (PST) Received: from mail.acheron.indranet.co.nz (ns.indranet.co.nz [210.54.239.210]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBFM7W3v004718 for ; Sun, 15 Dec 2002 14:07:34 -0800 Received: from localhost.localdomain (enso.acheron.indranet.co.nz [192.168.1.1]) by mail.acheron.indranet.co.nz (8.11.2/8.11.2) with ESMTP id gBFM7LQ24631; Mon, 16 Dec 2002 11:07:21 +1300 Date: Mon, 16 Dec 2002 10:59:10 +1300 From: Andrew McGregor To: Rik van Riel , netdev@oss.sgi.com cc: linux-kernel@vger.kernel.org Subject: Re: RFC: p&p ipsec without authentication Message-ID: <3050000.1039989550@localhost.localdomain> In-Reply-To: References: X-Mailer: Mulberry/3.0.0b9 (Linux/x86) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 1380 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: andrew@indranet.co.nz Precedence: bulk X-list: netdev It's not crazy at all. Perfectly practical, now that lots of people have fast enough machines and slow enough connections that it won't drive them mad with the performance issues :-) Actually, it can be done (fairly) securely against MITM attacks as well. Check out a keying protocol called HIP, most of the resources are linked to from www.hip4inter.net. The basic idea is that each end prove to the other that they know a private key. The MITM protection is quite hard to describe :-) And it can be done (at least on IPv6) with almost zero cost in time for connections that don't support HIP, as well as only one round trip + compute time for those that do. There are four implementations in progress, two for linux. It would be very nice to get the necessary hooks into the mainline kernel. Cool, eh? Andrew --On Sunday, December 15, 2002 18:34:06 -0200 Rik van Riel wrote: > Hi, > > I've got a crazy idea. I know it's not secure, but I think it'll > add some security against certain attacks, while being non-effective > against some others. > > The idea I have is letting the ipsec layer do opportunistic encryption > even when there are no ipsec keys known for the destination address, > ie. negotiate a key when none is in the configuration or DNS. > > I know this gives absolutely no protection against man-in-the-middle > attacks (except maybe being able to detect them), but it should prevent > passive sniffing of network traffic, as done by some governments. > > If this "random" encryption could be turned on with one argument to > ip or ifconfig and millions of hosts would use it, sniffing internet > traffic might just become impractical (or too expensive) for large > organisations. Furthermore, even if just 0.1% of the hosts were to > use ipsec authentication, the 3-letter agencies would be faced with > the additional challenge of identifying which connections could safely > be intercepted with man-in-the-middle attacks and which couldn't. > > Not to mention the fact that the port number on many communications > would be invisible, vastly increasing the difficulty of doing any > kind of statistical analysis on the traffic that's traversing the > network. > > Is this idea completely crazy or only slightly ? > > regards, > > Rik > -- > Bravely reimplemented by the knights who say "NIH". > http://www.surriel.com/ http://guru.conectiva.com/ > Current spamtrap: href=mailto:"october@surriel.com">october@surriel.com - > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > > From yoshfuji@linux-ipv6.org Sun Dec 15 23:57:34 2002 Received: with ECARTIS (v1.0.0; list netdev); Sun, 15 Dec 2002 23:57:39 -0800 (PST) Received: from yue.hongo.wide.ad.jp (yue.hongo.wide.ad.jp [203.178.139.94]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBG7vH3v000813 for ; Sun, 15 Dec 2002 23:57:18 -0800 Received: from localhost (localhost [127.0.0.1]) by yue.hongo.wide.ad.jp (8.12.3+3.5Wbeta/8.12.3/Debian -4) with ESMTP id gBG6ZWGR024187; Mon, 16 Dec 2002 15:35:33 +0900 Date: Mon, 16 Dec 2002 15:35:32 +0900 (JST) Message-Id: <20021216.153532.87456123.yoshfuji@wide.ad.jp> To: linux-kernel@vger.kernel.org CC: netdev@oss.sgi.com, davem@redhat.com, kuznet@ms2.inr.ac.ru, krkumar@us.ibm.com Subject: Re: [PATCH RESEND] memory leak in ndisc_router_discovery From: YOSHIFUJI Hideaki / =?iso-2022-jp?B?GyRCNUhGIzFRTEAbKEI=?= In-Reply-To: <200212121905.gBCJ5hn18058@eng2.beaverton.ibm.com> References: <200212121905.gBCJ5hn18058@eng2.beaverton.ibm.com> Organization: USAGI Project X-URL: http://www.yoshifuji.org/%7Ehideaki/ X-Fingerprint: 90 22 65 EB 1E CF 3A D1 0B DF 80 D8 48 07 F8 94 E0 62 0E EA X-PGP-Key-URL: http://www.yoshifuji.org/%7Ehideaki/hideaki@yoshifuji.org.asc X-Face: "5$Al-.M>NJ%a'@hhZdQm:."qn~PA^gq4o*>iCFToq*bAi#4FRtx}enhuQKz7fNqQz\BYU] $~O_5m-9'}MIs`XGwIEscw;e5b>n"B_?j/AkL~i/MEaZBLP Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mew version 2.2 on XEmacs 21.4.6 (Common Lisp) Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1381 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: yoshfuji@linux-ipv6.org Precedence: bulk X-list: netdev In article <200212121905.gBCJ5hn18058@eng2.beaverton.ibm.com> (at Thu, 12 Dec 2002 11:05:43 -0800 (PST)), Krishna Kumar says: > I had sent this earlier, there is a bug in router advertisement handling code, > where the reference (and memory) to an inet6_dev pointer can get leaked (this > leak can happen atmost once for each interface on a system which receives > invalid RA's). Below is the patch against 2.5.51 to fix it. (It would be called "refcnt leakage," or some thing like that, but anyway) This seems correct fix. please apply... > ------------------------------------------------------------------------------- > diff -ruN linux.org/net/ipv6/ndisc.c linux/net/ipv6/ndisc.c > --- linux.org/net/ipv6/ndisc.c Fri Nov 7 10:02:11 2002 > +++ linux/net/ipv6/ndisc.c Fri Nov 8 14:37:27 2002 > @@ -871,6 +871,7 @@ > } > > if (!ndisc_parse_options(opt, optlen, &ndopts)) { > + in6_dev_put(in6_dev); > if (net_ratelimit()) > ND_PRINTK2(KERN_WARNING > "ICMP6 RA: invalid ND option, ignored.\n"); > ------------------------------------------------------------------------------- -- Hideaki YOSHIFUJI @ USAGI Project GPG FP: 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA From kiran@in.ibm.com Mon Dec 16 05:50:24 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 16 Dec 2002 05:50:26 -0800 (PST) Received: from e31.co.us.ibm.com (e31.co.us.ibm.com [32.97.110.129]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBGDoN3v015686 for ; Mon, 16 Dec 2002 05:50:23 -0800 Received: from westrelay05.boulder.ibm.com (westrelay05.boulder.ibm.com [9.17.193.33]) by e31.co.us.ibm.com (8.12.2/8.12.2) with ESMTP id gBGDsKcQ019606; Mon, 16 Dec 2002 08:54:20 -0500 Received: from asterix.in.ibm.com (asterix.in.ibm.com [9.182.12.249]) by westrelay05.boulder.ibm.com (8.12.3/NCO/VER6.4) with ESMTP id gBGDtRMB145966; Mon, 16 Dec 2002 06:55:28 -0700 Received: (from kirant@localhost) by asterix.in.ibm.com (8.11.2/8.11.2) id gBGDqCq13251; Mon, 16 Dec 2002 19:22:12 +0530 Date: Mon, 16 Dec 2002 19:22:12 +0530 From: Ravikiran G Thirumalai To: "David S. Miller " Cc: linux-kernel@vger.kernel.org, netdev , dipankar@in.ibm.com, Andrew Morton Subject: [patch] Make rt_cache_stat use kmalloc_percpu Message-ID: <20021216192212.C26076@in.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i X-archive-position: 1382 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: kiran@in.ibm.com Precedence: bulk X-list: netdev Hi, Here's another patch to use kmalloc_percpu. As usual, this removes NR_CPUS bloat, can work when modulized and helps node local allocation. Thanks, Kiran D: Name: rtstats-2.5.52-1.patch D: Author: Ravikiran Thirumalai D: Description: Make rt_cache_stat use kmalloc_percpu include/net/route.h | 6 +++- net/ipv4/route.c | 71 +++++++++++++++++++++++++++++----------------------- 2 files changed, 45 insertions(+), 32 deletions(-) diff -ruN -X dontdiff linux-2.5.52/include/net/route.h rtstats-2.5.52/include/net/route.h --- linux-2.5.52/include/net/route.h Mon Dec 16 07:37:42 2002 +++ rtstats-2.5.52/include/net/route.h Mon Dec 16 14:56:01 2002 @@ -102,7 +102,11 @@ unsigned int gc_ignored; unsigned int gc_goal_miss; unsigned int gc_dst_overflow; -} ____cacheline_aligned_in_smp; +}; + +extern struct rt_cache_stat *rt_cache_stat; +#define RT_CACHE_STAT_INC(field) \ + (per_cpu_ptr(rt_cache_stat, smp_processor_id())->field++) extern struct ip_rt_acct *ip_rt_acct; diff -ruN -X dontdiff linux-2.5.52/net/ipv4/route.c rtstats-2.5.52/net/ipv4/route.c --- linux-2.5.52/net/ipv4/route.c Mon Dec 16 07:38:23 2002 +++ rtstats-2.5.52/net/ipv4/route.c Mon Dec 16 16:14:09 2002 @@ -195,7 +195,7 @@ static unsigned rt_hash_mask; static int rt_hash_log; -struct rt_cache_stat rt_cache_stat[NR_CPUS]; +struct rt_cache_stat *rt_cache_stat; static int rt_intern_hash(unsigned hash, struct rtable *rth, struct rtable **res); @@ -319,24 +319,26 @@ int len = 0; for (i = 0; i < NR_CPUS; i++) { + if (!cpu_possible(i)) + continue; len += sprintf(buffer+len, "%08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x \n", dst_entries, - rt_cache_stat[i].in_hit, - rt_cache_stat[i].in_slow_tot, - rt_cache_stat[i].in_slow_mc, - rt_cache_stat[i].in_no_route, - rt_cache_stat[i].in_brd, - rt_cache_stat[i].in_martian_dst, - rt_cache_stat[i].in_martian_src, - - rt_cache_stat[i].out_hit, - rt_cache_stat[i].out_slow_tot, - rt_cache_stat[i].out_slow_mc, - - rt_cache_stat[i].gc_total, - rt_cache_stat[i].gc_ignored, - rt_cache_stat[i].gc_goal_miss, - rt_cache_stat[i].gc_dst_overflow + per_cpu_ptr(rt_cache_stat, i)->in_hit, + per_cpu_ptr(rt_cache_stat, i)->in_slow_tot, + per_cpu_ptr(rt_cache_stat, i)->in_slow_mc, + per_cpu_ptr(rt_cache_stat, i)->in_no_route, + per_cpu_ptr(rt_cache_stat, i)->in_brd, + per_cpu_ptr(rt_cache_stat, i)->in_martian_dst, + per_cpu_ptr(rt_cache_stat, i)->in_martian_src, + + per_cpu_ptr(rt_cache_stat, i)->out_hit, + per_cpu_ptr(rt_cache_stat, i)->out_slow_tot, + per_cpu_ptr(rt_cache_stat, i)->out_slow_mc, + + per_cpu_ptr(rt_cache_stat, i)->gc_total, + per_cpu_ptr(rt_cache_stat, i)->gc_ignored, + per_cpu_ptr(rt_cache_stat, i)->gc_goal_miss, + per_cpu_ptr(rt_cache_stat, i)->gc_dst_overflow ); } @@ -592,11 +594,11 @@ * do not make it too frequently. */ - rt_cache_stat[smp_processor_id()].gc_total++; + RT_CACHE_STAT_INC(gc_total); if (now - last_gc < ip_rt_gc_min_interval && atomic_read(&ipv4_dst_ops.entries) < ip_rt_max_size) { - rt_cache_stat[smp_processor_id()].gc_ignored++; + RT_CACHE_STAT_INC(gc_ignored); goto out; } @@ -664,7 +666,7 @@ We will not spin here for long time in any case. */ - rt_cache_stat[smp_processor_id()].gc_goal_miss++; + RT_CACHE_STAT_INC(gc_goal_miss); if (expire == 0) break; @@ -683,7 +685,7 @@ goto out; if (net_ratelimit()) printk(KERN_WARNING "dst cache overflow\n"); - rt_cache_stat[smp_processor_id()].gc_dst_overflow++; + RT_CACHE_STAT_INC(gc_dst_overflow); return 1; work_done: @@ -1387,7 +1389,7 @@ if (!LOCAL_MCAST(daddr) && IN_DEV_MFORWARD(in_dev)) rth->u.dst.input = ip_mr_input; #endif - rt_cache_stat[smp_processor_id()].in_slow_mc++; + RT_CACHE_STAT_INC(in_slow_mc); in_dev_put(in_dev); hash = rt_hash_code(daddr, saddr ^ (dev->ifindex << 5), tos); @@ -1472,7 +1474,7 @@ } free_res = 1; - rt_cache_stat[smp_processor_id()].in_slow_tot++; + RT_CACHE_STAT_INC(in_slow_tot); #ifdef CONFIG_IP_ROUTE_NAT /* Policy is applied before mapping destination, @@ -1629,7 +1631,7 @@ } flags |= RTCF_BROADCAST; res.type = RTN_BROADCAST; - rt_cache_stat[smp_processor_id()].in_brd++; + RT_CACHE_STAT_INC(in_brd); local_input: rth = dst_alloc(&ipv4_dst_ops); @@ -1674,7 +1676,7 @@ goto intern; no_route: - rt_cache_stat[smp_processor_id()].in_no_route++; + RT_CACHE_STAT_INC(in_no_route); spec_dst = inet_select_addr(dev, 0, RT_SCOPE_UNIVERSE); res.type = RTN_UNREACHABLE; goto local_input; @@ -1683,7 +1685,7 @@ * Do not cache martian addresses: they should be logged (RFC1812) */ martian_destination: - rt_cache_stat[smp_processor_id()].in_martian_dst++; + RT_CACHE_STAT_INC(in_martian_dst); #ifdef CONFIG_IP_ROUTE_VERBOSE if (IN_DEV_LOG_MARTIANS(in_dev) && net_ratelimit()) printk(KERN_WARNING "martian destination %u.%u.%u.%u from " @@ -1700,7 +1702,7 @@ martian_source: - rt_cache_stat[smp_processor_id()].in_martian_src++; + RT_CACHE_STAT_INC(in_martian_src); #ifdef CONFIG_IP_ROUTE_VERBOSE if (IN_DEV_LOG_MARTIANS(in_dev) && net_ratelimit()) { /* @@ -1749,7 +1751,7 @@ rth->u.dst.lastuse = jiffies; dst_hold(&rth->u.dst); rth->u.dst.__use++; - rt_cache_stat[smp_processor_id()].in_hit++; + RT_CACHE_STAT_INC(in_hit); read_unlock(&rt_hash_table[hash].lock); skb->dst = (struct dst_entry*)rth; return 0; @@ -2046,7 +2048,7 @@ rth->u.dst.output=ip_output; - rt_cache_stat[smp_processor_id()].out_slow_tot++; + RT_CACHE_STAT_INC(out_slow_tot); if (flags & RTCF_LOCAL) { rth->u.dst.input = ip_local_deliver; @@ -2056,7 +2058,7 @@ rth->rt_spec_dst = fl.fl4_src; if (flags & RTCF_LOCAL && !(dev_out->flags & IFF_LOOPBACK)) { rth->u.dst.output = ip_mc_output; - rt_cache_stat[smp_processor_id()].out_slow_mc++; + RT_CACHE_STAT_INC(out_slow_mc); } #ifdef CONFIG_IP_MROUTE if (res.type == RTN_MULTICAST) { @@ -2114,7 +2116,7 @@ rth->u.dst.lastuse = jiffies; dst_hold(&rth->u.dst); rth->u.dst.__use++; - rt_cache_stat[smp_processor_id()].out_hit++; + RT_CACHE_STAT_INC(out_hit); read_unlock_bh(&rt_hash_table[hash].lock); *rp = rth; return 0; @@ -2634,6 +2636,11 @@ ipv4_dst_ops.gc_thresh = (rt_hash_mask + 1); ip_rt_max_size = (rt_hash_mask + 1) * 16; + rt_cache_stat = kmalloc_percpu(sizeof (struct rt_cache_stat), + GFP_KERNEL); + if (!rt_cache_stat) + goto out_enomem1; + devinet_init(); ip_fib_init(); @@ -2659,6 +2666,8 @@ out: return rc; out_enomem: + kfree_percpu(rt_cache_stat); +out_enomem1: rc = -ENOMEM; goto out; } From pb@bieringer.de Mon Dec 16 08:34:05 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 16 Dec 2002 08:34:07 -0800 (PST) Received: from smtp2.aerasec.de (gromit.aerasec.de [195.226.187.57]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBGGXs3v000595 for ; Mon, 16 Dec 2002 08:33:55 -0800 Received: from localhost (localhost [127.0.0.1]) by smtp2.aerasec.de (Postfix) with SMTP id 031A913866 for ; Mon, 16 Dec 2002 17:10:46 +0100 (CET) X-AV-Checked: Mon Dec 16 17:10:46 2002 smtp2.aerasec.de Received: from [192.168.1.2] (pD950F045.dip.t-dialin.net [217.80.240.69]) (using TLSv1 with cipher EDH-RSA-DES-CBC3-SHA (168/168 bits)) (Client did not present a certificate) by smtp2.aerasec.de (Postfix) with ESMTP id 6D34913865 for ; Mon, 16 Dec 2002 17:10:45 +0100 (CET) Date: Mon, 16 Dec 2002 17:10:45 +0100 From: Peter Bieringer To: Maillist netdev Subject: Mailling list archive URL broken? Message-ID: <70060000.1040055045@worker.muc.bieringer.de> X-Mailer: Mulberry/3.0.0b9 (Linux/x86) X-URL: http://www.bieringer.de/pb/ X-OS: Linux MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 1383 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: pb@bieringer.de Precedence: bulk X-list: netdev Hi, some time ago I found this archive URL: http://oss.sgi.com/projects/netdev/archive/ Unfortunately, it's broken (forbidden). Temp failure or is archive moved? If second, pls. send me the new URL. Thank you very much, Peter --- Dr. Peter Bieringer mailto: pb at bieringer dot de http://www.bieringer.de/pb/ Key 0x958F422D : B501 24F4 9418 23E2 C0F3 F833 7B57 AA7B 958F 422D From Larry.Sendlosky@storigen.com Mon Dec 16 09:55:59 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 16 Dec 2002 09:56:02 -0800 (PST) Received: from xchangeserver2.storigen.com ([65.193.106.66]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBGHtw3v002481 for ; Mon, 16 Dec 2002 09:55:59 -0800 content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Subject: 2.4.20, tg3 , and 5704 X-MimeOLE: Produced By Microsoft Exchange V6.0.5762.3 Date: Mon, 16 Dec 2002 12:59:54 -0500 Message-ID: <7BFCE5F1EF28D64198522688F5449D5A03C0CE@xchangeserver2.storigen.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: 2.4.20, tg3 , and 5704 Thread-Index: AcKh/I6Nmqmd/VAPR/WmSMP3gHX6mADL+zOQ From: "Larry Sendlosky" To: Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id gBGHtw3v002481 X-archive-position: 1384 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: Larry.Sendlosky@storigen.com Precedence: bulk X-list: netdev Hi, I got a preproduction Dell server with 2 5704 NICs onboard. 2.4.20 w/tg3 doesn't want to work. When loaded the link light on the switch just goes on-off-on-off ... seeming like it is reinitializing all the time. I just did get the current Broadcom drivers sources and it seems to work ok (ping and ftp works on 100Mb ...) built against 2.4.20. I prefer to use tg3 even though I have to backport to 2.4.18 (not a big fan of the Broadcom code and it's not part of linux). thanks for any help larry From aravind1001@speedpost.net Mon Dec 16 10:51:14 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 16 Dec 2002 10:51:19 -0800 (PST) Received: from server2.fastmail.fm (ny2.fastmail.fm [66.111.4.3]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBGIpD3v003336 for ; Mon, 16 Dec 2002 10:51:14 -0800 Received: from server2.fastmail.fm (localhost [127.0.0.1]) by fastmail.fm (Postfix) with ESMTP id 48B1717B43; Mon, 16 Dec 2002 13:55:13 -0500 (EST) Received: from 127.0.0.1 ([127.0.0.1] helo=server2.fastmail.fm) by fastmail.fm with SMTP; Mon, 16 Dec 2002 13:55:13 -0500 X-Mail-from: aravind1001@speedpost.net Received: by server2.fastmail.fm (Postfix, from userid 99) id 43F023D56F; Mon, 16 Dec 2002 13:55:13 -0500 (EST) Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="ISO-8859-1" MIME-Version: 1.0 X-Mailer: MIME::Lite 1.2 (F2.71; T1.001; A1.51; B2.12; Q2.03) From: "Aravind Ceyardass" To: "arun4linux" , "Michael Richardson" , netdev@oss.sgi.com, "Linux Kernel Mailing List" Date: Mon, 16 Dec 2002 14:55:13 -0400 X-Epoch: 1040064913 X-Sasl-enc: K1tEy+9myIhjIDMkv6MRmQ Cc: aravind1001@speedpost.net Subject: Re: Re: pci-skeleton duplex check References: <200212141428.TAA32351@WS0005.indiatimes.com> In-Reply-To: <200212141428.TAA32351@WS0005.indiatimes.com> Message-Id: <20021216185513.43F023D56F@server2.fastmail.fm> X-archive-position: 1385 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: aravind1001@speedpost.net Precedence: bulk X-list: netdev Hi, A good scheme for numbering kernels or software components in general is as follows For stable releases. (x.even.y=major.minor.patch) increment patch for any bug fixes. increment minor for any enhancements or new interfaces. increment major for interface changes or interface deletions.(dangerous or poor design) We should increment major even if interface remains same but behaviour has changed.(again may be poor design) For development releases we can't follow the above scheme, because the interfaces are in a flux and we may end up in version 589.201.700 from 2.4.20. So, we decide to increment patch number for all changes and deletions. Hope it helps! Regards Aravind -- http://fastmail.fm - IMAP accessible web-mail From ralf@linux-mips.org Mon Dec 16 16:38:43 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 16 Dec 2002 16:38:49 -0800 (PST) Received: from dea.linux-mips.net (p508B6B70.dip.t-dialin.net [80.139.107.112]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBH0ce3v006783 for ; Mon, 16 Dec 2002 16:38:42 -0800 Received: (from ralf@localhost) by dea.linux-mips.net (8.11.6/8.11.6) id gBH0get15155; Tue, 17 Dec 2002 01:42:40 +0100 Date: Tue, 17 Dec 2002 01:42:40 +0100 From: Ralf Baechle To: Peter Bieringer Cc: Maillist netdev Subject: Re: Mailling list archive URL broken? Message-ID: <20021217014240.A14491@linux-mips.org> References: <70060000.1040055045@worker.muc.bieringer.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5.1i In-Reply-To: <70060000.1040055045@worker.muc.bieringer.de>; from pb@bieringer.de on Mon, Dec 16, 2002 at 05:10:45PM +0100 X-archive-position: 1386 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: ralf@linux-mips.org Precedence: bulk X-list: netdev On Mon, Dec 16, 2002 at 05:10:45PM +0100, Peter Bieringer wrote: > some time ago I found this archive URL: > > http://oss.sgi.com/projects/netdev/archive/ > > Unfortunately, it's broken (forbidden). Temp failure or is archive > moved? If second, pls. send me the new URL. A glitch in the recent conversion from Majordomo to Ecartis, I just fixed this. This is just the URL of the mbox archives maintained by Ecartis. There's also a webarchive ... Ralf From kernel@itris.fr Tue Dec 17 02:16:14 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 17 Dec 2002 02:16:19 -0800 (PST) Received: from mail.itris.fr (AGrenoble-203-2-2-11.abo.wanadoo.fr [80.13.134.11]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBHAGD3v015954 for ; Tue, 17 Dec 2002 02:16:14 -0800 Received: from itris.fr (localhost [127.0.0.1]) by mail.itris.fr (Postfix) with SMTP id 040DA3FF4 for ; Tue, 17 Dec 2002 11:16:38 +0100 (CET) Received: from 192.168.0.31 (SquirrelMail authenticated user kernel) by www.itris.fr with HTTP; Tue, 17 Dec 2002 11:16:39 +0100 (CET) Message-ID: <1939.192.168.0.31.1040120199.squirrel@www.itris.fr> Date: Tue, 17 Dec 2002 11:16:39 +0100 (CET) Subject: 3c59x AUI and sockets AF_PACKET From: To: X-Priority: 3 Importance: Normal X-MSMail-Priority: Normal X-Mailer: SquirrelMail (version 1.2.6) MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-archive-position: 1387 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: kernel@itris.fr Precedence: bulk X-list: netdev Hi, I have got an important problem to solve : When I load the 3c59x module with no option, my 2 network cards are working well with 10baseT, and vortex-diag tells me then : Transceiver type in use: Autonegociate. I can open a socket with AF_PACKET level, and bind() works fine ! I can send data to the socket through RJ45. But, when I load 3c59x with options=1, vortex-diag tells me Transceiver type in use : AUI10baseFL. I can configure my 2 network cards with ifconfig. Everything is ok, but, when i want to open my socket AF_PACKET to send data to AUI port, bind () returns -1, as though all my interfaces are ok (ifconfig sees them all). I would like to send data to AUI, what is the problem ? Thanks !! Christophe Baillon From greearb@candelatech.com Tue Dec 17 12:06:43 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 17 Dec 2002 12:06:48 -0800 (PST) Received: from grok.yi.org (IDENT:HTLCq4W5nkXFjSCAvZkSqhCA+oOVfq/2@dhcp101-dsl-usw4.w-link.net [208.161.125.101]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBHK6e3v032602 for ; Tue, 17 Dec 2002 12:06:42 -0800 Received: from candelatech.com (IDENT:buTF2ZfWbwpiFLbR+OwjUwO9KcG3EhBV@localhost.localdomain [127.0.0.1]) by grok.yi.org (8.11.6/8.11.2) with ESMTP id gBHKAg002188; Tue, 17 Dec 2002 12:10:42 -0800 Message-ID: <3DFF84C2.9090305@candelatech.com> Date: Tue, 17 Dec 2002 12:10:42 -0800 From: Ben Greear Organization: Candela Technologies User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021130 X-Accept-Language: en-us, en MIME-Version: 1.0 To: kernel@itris.fr CC: netdev@oss.sgi.com Subject: Re: 3c59x AUI and sockets AF_PACKET References: <1939.192.168.0.31.1040120199.squirrel@www.itris.fr> In-Reply-To: <1939.192.168.0.31.1040120199.squirrel@www.itris.fr> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1388 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: greearb@candelatech.com Precedence: bulk X-list: netdev kernel@itris.fr wrote: > Hi, > > I have got an important problem to solve : > > When I load the 3c59x module with no option, my 2 network cards > are working well with 10baseT, and vortex-diag tells me then : > Transceiver type in use: Autonegociate. > > I can open a socket with AF_PACKET level, and bind() works fine ! > I can send data to the socket through RJ45. > > But, when I load 3c59x with options=1, vortex-diag tells me > Transceiver type in use : AUI10baseFL. > > I can configure my 2 network cards with ifconfig. > > Everything is ok, but, when i want to open my socket AF_PACKET to > send data to AUI port, bind () returns -1, as though all my interfaces > are ok (ifconfig sees them all). After the call fails, do this (it may offer a clue): printf("%i: %s\n", errno, strerror(errno)); /* Hopes syntax is correct */ > > I would like to send data to AUI, what is the problem ? > > Thanks !! > > Christophe Baillon > > -- Ben Greear President of Candela Technologies Inc http://www.candelatech.com ScryMUD: http://scry.wanfear.com http://scry.wanfear.com/~greear From scott.feldman@intel.com Tue Dec 17 13:59:52 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 17 Dec 2002 13:59:55 -0800 (PST) Received: from caduceus.jf.intel.com (fmr06.intel.com [134.134.136.7]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBHLxp3v009132 for ; Tue, 17 Dec 2002 13:59:52 -0800 Received: from petasus.jf.intel.com (petasus.jf.intel.com [10.7.209.6]) by caduceus.jf.intel.com (8.11.6/8.11.6/d: outer.mc,v 1.51 2002/09/23 20:43:23 dmccart Exp $) with ESMTP id gBHM0cN27535 for ; Tue, 17 Dec 2002 22:00:38 GMT Received: from orsmsxvs040.jf.intel.com (orsmsxvs040.jf.intel.com [192.168.65.206]) by petasus.jf.intel.com (8.11.6/8.11.6/d: inner.mc,v 1.27 2002/10/16 23:46:59 dmccart Exp $) with SMTP id gBHM0fL25370 for ; Tue, 17 Dec 2002 22:00:41 GMT Received: from orsmsx26.jf.intel.com ([192.168.65.26]) by orsmsxvs040.jf.intel.com (NAVGW 2.5.2.11) with SMTP id M2002121714091001513 ; Tue, 17 Dec 2002 14:09:10 -0800 Received: by orsmsx26.jf.intel.com with Internet Mail Service (5.5.2653.19) id ; Tue, 17 Dec 2002 14:03:52 -0800 Message-ID: <288F9BF66CD9D5118DF400508B68C44604758F6C@orsmsx113.jf.intel.com> From: "Feldman, Scott" To: linux-kernel@vger.kernel.org, netdev@oss.sgi.com Cc: LOSTeam Subject: [ANNOUNCE] Intel PRO/100 software developer manual released Date: Tue, 17 Dec 2002 14:03:50 -0800 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: text/plain X-archive-position: 1389 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: scott.feldman@intel.com Precedence: bulk X-list: netdev Available at https://sourceforge.net/projects/e1000. The full title is: Intel 8255x 10/100 Mbps Ethernet Controller Family Open Source Software Developer Manual Revision 1.0 The manual is intended to support the maintenance of the e100 driver (or the best driver for the PRO/100 networking hardware ;-). The manual covers the 82557, 82558, 82559, 82550, and 82551 Ethernet controllers. I would like to thank Jeff Garzik for encouraging this publication, and for having the patience to deal with the Intel machine. I would also like to thank the Intel editors and reviewers: Carolyn Abrigana, Larry Bates, Julie Donnelly, John Ronciak, Wen-Hwa Tao, Eli Kupermann, David Valdez, Colleen Culbertson, and especially Glenn Begis for not giving up. -scott From jgarzik@pobox.com Tue Dec 17 14:56:27 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 17 Dec 2002 14:56:31 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBHMuP3v009889 for ; Tue, 17 Dec 2002 14:56:26 -0800 Received: from nat-pool-rdu.redhat.com ([66.187.233.200] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18OQhT-0001dg-00; Tue, 17 Dec 2002 23:00:31 +0000 Message-ID: <3DFFAC6F.9010903@pobox.com> Date: Tue, 17 Dec 2002 17:59:59 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "Feldman, Scott" CC: linux-kernel@vger.kernel.org, netdev@oss.sgi.com, LOSTeam Subject: Re: [ANNOUNCE] Intel PRO/100 software developer manual released References: <288F9BF66CD9D5118DF400508B68C44604758F6C@orsmsx113.jf.intel.com> In-Reply-To: <288F9BF66CD9D5118DF400508B68C44604758F6C@orsmsx113.jf.intel.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1390 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Feldman, Scott wrote: > Available at https://sourceforge.net/projects/e1000. > > The full title is: > > Intel 8255x 10/100 Mbps Ethernet Controller Family > Open Source Software Developer Manual > Revision 1.0 > > The manual is intended to support the maintenance of the e100 driver (or the > best driver for the PRO/100 networking hardware ;-). The manual covers the > 82557, 82558, 82559, 82550, and 82551 Ethernet controllers. > > I would like to thank Jeff Garzik for encouraging this publication, and for > having the patience to deal with the Intel machine. I'm surprised that this David (me) actually got through to the Goliath :) Let me publicly thank Intel NIC team [and related persons] for some great work. You guys have really been responsive both to technical issues and also political/community-related issues like this one of opening docs. This is a situation where I really think that opening docs will lead to a better overall user experience with Intel hardware on Linux, and hopefully serves as a model for other vendors to follow. Thanks and kudos, Intel! Jeff From anton@samba.org Tue Dec 17 19:25:06 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 17 Dec 2002 19:25:08 -0800 (PST) Received: from lists.samba.org (dp.samba.org [66.70.73.150]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBI3P53v014400 for ; Tue, 17 Dec 2002 19:25:06 -0800 Received: by lists.samba.org (Postfix, from userid 504) id A270D2C122; Tue, 17 Dec 2002 22:29:13 -0500 (EST) Date: Wed, 18 Dec 2002 14:27:32 +1100 From: Anton Blanchard To: "Feldman, Scott" Cc: linux-kernel@vger.kernel.org, netdev@oss.sgi.com, LOSTeam Subject: Re: [ANNOUNCE] Intel PRO/100 software developer manual released Message-ID: <20021218032732.GC22434@krispykreme> References: <288F9BF66CD9D5118DF400508B68C44604758F6C@orsmsx113.jf.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <288F9BF66CD9D5118DF400508B68C44604758F6C@orsmsx113.jf.intel.com> User-Agent: Mutt/1.4i X-archive-position: 1391 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: anton@samba.org Precedence: bulk X-list: netdev > Available at https://sourceforge.net/projects/e1000. > > The full title is: > > Intel 8255x 10/100 Mbps Ethernet Controller Family > Open Source Software Developer Manual > Revision 1.0 > > The manual is intended to support the maintenance of the e100 driver (or the > best driver for the PRO/100 networking hardware ;-). The manual covers the > 82557, 82558, 82559, 82550, and 82551 Ethernet controllers. Nice work guys! This has already answered a few questions I had when tuning the e100 on ppc64. Any plans to release similar docs for the e1000? Anton From scott.feldman@intel.com Tue Dec 17 19:42:22 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 17 Dec 2002 19:42:26 -0800 (PST) Received: from hermes.fm.intel.com (fmr01.intel.com [192.55.52.18]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBI3gL3v014919 for ; Tue, 17 Dec 2002 19:42:21 -0800 Received: from petasus.fm.intel.com (petasus.fm.intel.com [10.1.192.37]) by hermes.fm.intel.com (8.11.6/8.11.6/d: outer.mc,v 1.51 2002/09/23 20:43:23 dmccart Exp $) with ESMTP id gBI3iGo05888 for ; Wed, 18 Dec 2002 03:44:16 GMT Received: from fmsmsxvs041.fm.intel.com (fmsmsxvs041.fm.intel.com [132.233.42.126]) by petasus.fm.intel.com (8.11.6/8.11.6/d: inner.mc,v 1.27 2002/10/16 23:46:59 dmccart Exp $) with SMTP id gBI3fuU22045 for ; Wed, 18 Dec 2002 03:41:56 GMT Received: from FMSMSX017.fm.intel.com ([132.233.42.196]) by fmsmsxvs041.fm.intel.com (NAVGW 2.5.2.11) with SMTP id M2002121719444010328 ; Tue, 17 Dec 2002 19:44:40 -0800 Received: by fmsmsx017.fm.intel.com with Internet Mail Service (5.5.2653.19) id ; Tue, 17 Dec 2002 19:46:28 -0800 Message-ID: <288F9BF66CD9D5118DF400508B68C44604758F76@orsmsx113.jf.intel.com> From: "Feldman, Scott" To: "'Anton Blanchard'" Cc: linux-kernel@vger.kernel.org, netdev@oss.sgi.com, LOSTeam Subject: RE: [ANNOUNCE] Intel PRO/100 software developer manual released Date: Tue, 17 Dec 2002 19:46:27 -0800 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: text/plain X-archive-position: 1392 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: scott.feldman@intel.com Precedence: bulk X-list: netdev > Nice work guys! This has already answered a few questions I > had when tuning the e100 on ppc64. Great! Let us know if you figure out that checksum weirdness you saw the other day. > Any plans to release similar docs for the e1000? It's a logical next step, but no definitive schedule. Let's just leave it as a goal. -scott From greg@kroah.com Tue Dec 17 22:32:36 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 17 Dec 2002 22:32:37 -0800 (PST) Received: from kroah.com (12-231-249-244.client.attbi.com [12.231.249.244]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBI6WX3v018168 for ; Tue, 17 Dec 2002 22:32:35 -0800 Received: (qmail 29030 invoked by uid 500); 18 Dec 2002 06:34:05 -0000 Date: Tue, 17 Dec 2002 22:34:05 -0800 From: Greg KH To: "Feldman, Scott" Cc: linux-kernel@vger.kernel.org, netdev@oss.sgi.com, LOSTeam Subject: Re: [ANNOUNCE] Intel PRO/100 software developer manual released Message-ID: <20021218063405.GP28629@kroah.com> References: <288F9BF66CD9D5118DF400508B68C44604758F6C@orsmsx113.jf.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <288F9BF66CD9D5118DF400508B68C44604758F6C@orsmsx113.jf.intel.com> User-Agent: Mutt/1.4i X-archive-position: 1394 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: greg@kroah.com Precedence: bulk X-list: netdev Content-Length: 286 Lines: 11 On Tue, Dec 17, 2002 at 02:03:50PM -0800, Feldman, Scott wrote: > > Available at https://sourceforge.net/projects/e1000. Yeah! Thank you for doing this, I know it must not have been an easy thing to accomplish. Hopefully, Linux will be better off because of it. thanks, greg k-h From jmorris@intercode.com.au Wed Dec 18 00:30:12 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 18 Dec 2002 00:30:36 -0800 (PST) Received: from blackbird.intercode.com.au (IDENT:root@blackbird.intercode.com.au [203.32.101.10]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBI8U83v020869 for ; Wed, 18 Dec 2002 00:30:10 -0800 Received: from localhost (jmorris@localhost) by blackbird.intercode.com.au (8.9.3/8.9.3) with ESMTP id TAA16543; Wed, 18 Dec 2002 19:34:06 +1100 Date: Wed, 18 Dec 2002 19:34:06 +1100 (EST) From: James Morris To: "Feldman, Scott" cc: linux-kernel@vger.kernel.org, , LOSTeam Subject: Re: [ANNOUNCE] Intel PRO/100 software developer manual released In-Reply-To: <288F9BF66CD9D5118DF400508B68C44604758F6C@orsmsx113.jf.intel.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1395 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jmorris@intercode.com.au Precedence: bulk X-list: netdev Content-Length: 649 Lines: 21 On Tue, 17 Dec 2002, Feldman, Scott wrote: > The manual is intended to support the maintenance of the e100 driver (or the > best driver for the PRO/100 networking hardware ;-). The manual covers the > 82557, 82558, 82559, 82550, and 82551 Ethernet controllers. Hi Scott, This looks great. Any chance of releasing documentation on the crypto hardware which resides on the PRO/100 S? We're currently looking at adding support for hardware crypto (including IPsec offload) to the kernel, and it would be good to include the requirements and capabilities of this card in the design process. - James -- James Morris From scott.feldman@intel.com Wed Dec 18 09:03:59 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 18 Dec 2002 09:04:01 -0800 (PST) Received: from caduceus.jf.intel.com (fmr06.intel.com [134.134.136.7]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBIH3w3v029508 for ; Wed, 18 Dec 2002 09:03:59 -0800 Received: from talaria.jf.intel.com (talaria.jf.intel.com [10.7.209.7]) by caduceus.jf.intel.com (8.11.6/8.11.6/d: outer.mc,v 1.51 2002/09/23 20:43:23 dmccart Exp $) with ESMTP id gBIH4m306435 for ; Wed, 18 Dec 2002 17:04:48 GMT Received: from orsmsxvs040.jf.intel.com (orsmsxvs040.jf.intel.com [192.168.65.206]) by talaria.jf.intel.com (8.11.6/8.11.6/d: inner.mc,v 1.27 2002/10/16 23:46:59 dmccart Exp $) with SMTP id gBIGq4R01569 for ; Wed, 18 Dec 2002 16:52:04 GMT Received: from orsmsx26.jf.intel.com ([192.168.65.26]) by orsmsxvs040.jf.intel.com (NAVGW 2.5.2.11) with SMTP id M2002121809132206376 ; Wed, 18 Dec 2002 09:13:22 -0800 Received: by orsmsx26.jf.intel.com with Internet Mail Service (5.5.2653.19) id ; Wed, 18 Dec 2002 09:08:02 -0800 Message-ID: <288F9BF66CD9D5118DF400508B68C44604758F7C@orsmsx113.jf.intel.com> From: "Feldman, Scott" To: "'linux-kernel@vger.kernel.org'" , "'netdev@oss.sgi.com'" Cc: LOSTeam Subject: RE: [ANNOUNCE] Intel PRO/100 software developer manual released Date: Wed, 18 Dec 2002 09:07:59 -0800 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: text/plain X-archive-position: 1396 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: scott.feldman@intel.com Precedence: bulk X-list: netdev Content-Length: 343 Lines: 10 > I would also like to thank the Intel editors and reviewers: > Carolyn Abrigana, Larry Bates, Julie Donnelly, John Ronciak, > Wen-Hwa Tao, Eli Kupermann, David Valdez, Colleen Culbertson, > and especially Glenn Begis for not giving up. Credit is important, and I unintentionally omitted Shaun Sloan. Thanks Shaun for your help. -scott From scott.feldman@intel.com Wed Dec 18 14:37:02 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 18 Dec 2002 14:37:05 -0800 (PST) Received: from hermes.fm.intel.com (fmr01.intel.com [192.55.52.18]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBIMb13v012535 for ; Wed, 18 Dec 2002 14:37:02 -0800 Received: from talaria.fm.intel.com (talaria.fm.intel.com [10.1.192.39]) by hermes.fm.intel.com (8.11.6/8.11.6/d: outer.mc,v 1.51 2002/09/23 20:43:23 dmccart Exp $) with ESMTP id gBIMcxU02478 for ; Wed, 18 Dec 2002 22:38:59 GMT Received: from fmsmsxv040-1.fm.intel.com (fmsmsxvs040.fm.intel.com [132.233.42.124]) by talaria.fm.intel.com (8.11.6/8.11.6/d: inner.mc,v 1.27 2002/10/16 23:46:59 dmccart Exp $) with SMTP id gBIMhUp13179 for ; Wed, 18 Dec 2002 22:43:30 GMT Received: from FMSMSX016.fm.intel.com ([132.233.42.195]) by fmsmsxv040-1.fm.intel.com (NAVGW 2.5.2.11) with SMTP id M2002121814413404925 ; Wed, 18 Dec 2002 14:41:34 -0800 Received: by fmsmsx016.fm.intel.com with Internet Mail Service (5.5.2653.19) id ; Wed, 18 Dec 2002 14:41:11 -0800 Message-ID: <288F9BF66CD9D5118DF400508B68C44604758F86@orsmsx113.jf.intel.com> From: "Feldman, Scott" To: "'James Morris'" Cc: linux-kernel@vger.kernel.org, netdev@oss.sgi.com, LOSTeam Subject: RE: [ANNOUNCE] Intel PRO/100 software developer manual released Date: Wed, 18 Dec 2002 14:41:07 -0800 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: text/plain X-archive-position: 1397 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: scott.feldman@intel.com Precedence: bulk X-list: netdev Content-Length: 125 Lines: 7 > Any chance of releasing documentation on > the crypto hardware which resides on the PRO/100 S? No plans, sorry. -scott From sri@us.ibm.com Wed Dec 18 15:06:49 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 18 Dec 2002 15:06:52 -0800 (PST) Received: from e6.ny.us.ibm.com (e6.ny.us.ibm.com [32.97.182.106]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBIN6l3v014046 for ; Wed, 18 Dec 2002 15:06:48 -0800 Received: from northrelay04.pok.ibm.com (northrelay04.pok.ibm.com [9.56.224.206]) by e6.ny.us.ibm.com (8.12.2/8.12.2) with ESMTP id gBINArYA119370 for ; Wed, 18 Dec 2002 18:10:53 -0500 Received: from dyn9-47-18-86.beaverton.ibm.com (dyn9-47-18-86.beaverton.ibm.com [9.47.18.86]) by northrelay04.pok.ibm.com (8.12.3/NCO/VER6.4) with ESMTP id gBINApgC122444 for ; Wed, 18 Dec 2002 18:10:51 -0500 Date: Wed, 18 Dec 2002 15:12:56 -0800 (PST) From: Sridhar Samudrala X-X-Sender: To: Subject: ip6_route_output() does not fill in the src. addr. Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1398 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: sri@us.ibm.com Precedence: bulk X-list: netdev Content-Length: 491 Lines: 14 The ipv6 version of the 'get route entry' function ip6_route_output() does not fill in the source address of the route even when a valid appropriate source address is passed. Is this the expected behavior or a bug which is going to be fixed in the future releases of 2.5? The ipv4 version 'ip_route_output_key()' works as expected. SCTP calls these routines to get and cache a route entry and uses the cached entry to fill in skb->dst before passing the skb to ip. Thanks Sridhar From aravind1001@speedpost.net Wed Dec 18 20:32:20 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 18 Dec 2002 20:32:22 -0800 (PST) Received: from server2.fastmail.fm (ny2.fastmail.fm [66.111.4.3]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBJ4WJ3v028239 for ; Wed, 18 Dec 2002 20:32:20 -0800 Received: from server2.fastmail.fm (localhost [127.0.0.1]) by fastmail.fm (Postfix) with ESMTP id 8B8D83123E for ; Wed, 18 Dec 2002 23:36:28 -0500 (EST) Received: from 127.0.0.1 ([127.0.0.1] helo=server2.fastmail.fm) by fastmail.fm with SMTP; Wed, 18 Dec 2002 23:36:28 -0500 Received: by server2.fastmail.fm (Postfix, from userid 99) id 876C33EDEC; Wed, 18 Dec 2002 23:36:28 -0500 (EST) Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="ISO-8859-1" MIME-Version: 1.0 X-Mailer: MIME::Lite 1.2 (F2.71; T1.001; A1.51; B2.12; Q2.03) From: "Aravind Ceyardass" To: netdev@oss.sgi.com Date: Thu, 19 Dec 2002 00:36:28 -0400 X-Epoch: 1040272588 X-Sasl-enc: UHvlpySUNzmJfhjdNUO+zA Subject: IPv6 Programming Message-Id: <20021219043628.876C33EDEC@server2.fastmail.fm> X-archive-position: 1399 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: aravind1001@speedpost.net Precedence: bulk X-list: netdev Hi, New to IPv6 on Linux. I would like to know which version of Linux has got the header files for IPv6 programming? Thanks in advance. Aravind -- http://fastmail.fm - Accessible with your email software or over the web From yoshfuji@linux-ipv6.org Wed Dec 18 20:37:37 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 18 Dec 2002 20:37:38 -0800 (PST) Received: from yue.hongo.wide.ad.jp (yue.hongo.wide.ad.jp [203.178.139.94]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBJ4bZ3v028751 for ; Wed, 18 Dec 2002 20:37:36 -0800 Received: from localhost (localhost [127.0.0.1]) by yue.hongo.wide.ad.jp (8.12.3+3.5Wbeta/8.12.3/Debian -4) with ESMTP id gBJ4fjGR012244; Thu, 19 Dec 2002 13:41:51 +0900 Date: Thu, 19 Dec 2002 13:41:45 +0900 (JST) Message-Id: <20021219.134145.53383055.yoshfuji@linux-ipv6.org> To: aravind1001@speedpost.net Cc: netdev@oss.sgi.com Subject: Re: IPv6 Programming From: YOSHIFUJI Hideaki / =?iso-2022-jp?B?GyRCNUhGIzFRTEAbKEI=?= In-Reply-To: <20021219043628.876C33EDEC@server2.fastmail.fm> References: <20021219043628.876C33EDEC@server2.fastmail.fm> Organization: USAGI Project X-URL: http://www.yoshifuji.org/%7Ehideaki/ X-Fingerprint: 90 22 65 EB 1E CF 3A D1 0B DF 80 D8 48 07 F8 94 E0 62 0E EA X-PGP-Key-URL: http://www.yoshifuji.org/%7Ehideaki/hideaki@yoshifuji.org.asc X-Face: "5$Al-.M>NJ%a'@hhZdQm:."qn~PA^gq4o*>iCFToq*bAi#4FRtx}enhuQKz7fNqQz\BYU] $~O_5m-9'}MIs`XGwIEscw;e5b>n"B_?j/AkL~i/MEaZBLP X-Mailer: Mew version 2.2 on Emacs 20.7 / Mule 4.1 (AOI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1400 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: yoshfuji@linux-ipv6.org Precedence: bulk X-list: netdev In article <20021219043628.876C33EDEC@server2.fastmail.fm> (at Thu, 19 Dec 2002 00:36:28 -0400), "Aravind Ceyardass" says: > New to IPv6 on Linux. I would like to know which version of Linux has got > the header files for > IPv6 programming? It depends on what you mean by "IPv6 programming," but anyway, glibc 2.1.3 or later, preferably, glibc 2.2.x or later. --yoshfuji From abcd@e-mail.nwx.com.br Thu Dec 19 04:00:40 2002 Received: with ECARTIS (v1.0.0; list netdev); Thu, 19 Dec 2002 04:00:46 -0800 (PST) Received: from e-mail.nwx.com.br (iplus-fac-244.xdsl-dinamico-nat.ctbcnetsuper.com.br [200.225.214.244]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBJC0V3v008830 for ; Thu, 19 Dec 2002 04:00:38 -0800 Message-Id: <200212191200.gBJC0V3v008830@oss.sgi.com> From: "Adauto" To: Subject: Mailing Canada Mime-Version: 1.0 Content-Type: text/html; charset="ISO-8859-1" Date: Thu, 19 Dec 2002 10:04:57 -0200 Reply-To: "Adauto" Content-Transfer-Encoding: 8bit X-archive-position: 1401 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: abcd@e-mail.nwx.com.br Precedence: bulk X-list: netdev Olá, Você conhece alguém que vende cadastro de e-mails da Argentina ou México ou Canadá ou outras partes do mundo para fazer mala direta?
Caso não conhece não é necessário responder essa mensagem.

Obrigado Adauto

e-mail e-mail@e-mail.nwx.com.br

Hi, Do you know who sells a mailing list to direct marketing from Argentina,Mexico and canada? Or from others parts os the world?
If you do not know,is not necessary to answer this message.

Thank you Adauto

e-mail e-mail@e-mail.nwx.com.br From rockshows@rockshows.com.br Thu Dec 19 19:54:29 2002 Received: with ECARTIS (v1.0.0; list netdev); Thu, 19 Dec 2002 19:54:35 -0800 (PST) Received: from rockshows.com.br (200227204161-dial-user-BOL.acessonet.com.br [200.227.204.161]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBK3sO3v009519 for ; Thu, 19 Dec 2002 19:54:27 -0800 Message-Id: <200212200354.gBK3sO3v009519@oss.sgi.com> From: "Rock Shows Produções Artísticas" To: Subject: =?ISO-8859-1?Q?Lan=E7amento?= do CD da Fator Cinco Mime-Version: 1.0 Content-Type: text/html; charset="ISO-8859-1" Date: Fri, 20 Dec 2002 01:59:44 -0200 Content-Transfer-Encoding: 8bit X-archive-position: 1402 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: rockshows@rockshows.com.br Precedence: bulk X-list: netdev

Grande show de lançamento do CD da banda Fator Cinco no DirecTV - Music Hall em Fevereiro de 2003,
clique aqui e saiba como adquirir o seu ingresso gratuitamente e conhecer esta nova revelação do rock nacional.

 

Caso não queira mais receber nossos informativos, Click aqui !


From todoarg@uol.com.ar Thu Dec 19 22:47:15 2002 Received: with ECARTIS (v1.0.0; list netdev); Thu, 19 Dec 2002 22:47:20 -0800 (PST) Received: from company.mail ([209.99.231.135]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBK6l73v010920 for ; Thu, 19 Dec 2002 22:47:10 -0800 Received: from uol.com.ar [127.0.0.1] by company.mail [169.254.245.246] with SMTP (MDaemon.PRO.v5.0.1.T) for ; Fri, 06 Sep 2002 02:19:10 -0300 Message-ID: <123114-220029565199641@uol.com.ar> X-EM-Version: 6, 0, 0, 4 X-EM-Registration: #00F06206106618006920 X-Priority: 3 Reply-To: datacenter@uol.com.ar From: "DataCenter" To: netdev@oss.sgi.com Subject: Mejor Imposible... Date: Fri, 6 Sep 2002 02:19:09 -0300 MIME-Version: 1.0 Content-type: text/plain; charset="US-ASCII" X-MDRemoteIP: 127.0.0.1 X-Return-Path: todoarg@uol.com.ar X-MDaemon-Deliver-To: netdev@oss.sgi.com Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id gBK6l73v010920 X-archive-position: 1403 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: todoarg@uol.com.ar Precedence: bulk X-list: netdev HOLA: Soy, Gaston Roviralta y les ofrezco los mejores 20 Programas del mundo. estos programas fueron los mas vedidos de Argentina y del resto del mundo *AUREATE: ¿ Publicidad por mail? ¿ Necesitas un programa para envió masivo de mensajes? Acá tenes la solución AUREATE GROUP MAIL PRO 3.3 Versión FULL Registrada, con Código de Registro y Plugins... Este programa te permite entre otras cosas: *ENVIAR MENSAJES EN FORMA MASIVA. * ELIMINAR AUTOMÁTICAMENTE LAS DIRECCIONES REBOTADAS. * CHEQUEADOS DE DIRECCIONES. * REMOVER USUARIOS AUTOMÁTICAMENTE * CREAR MENSAJES HTML: con la mejor tecnología ETC... ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *BASES DE E-MAIL / GUÍAS DE E-MAIL DE TODO EL MUNDO: BASE DE DATOS DE EMAILS ARGENTINOS MAS DE 1.000.000 DE DIRECCIONES PARTICULARES, DE EMPRESAS, PYMES, PROFESIONALES, Y MUCHOS OTROS RUBROS. COMO POR EJEMPLO: ESTA DIVIDIDA POR CONTINENTES, PAÍSES, (ARGENTINA EN CAPITAL, GRAN BUENOS AIRES, PROVINCIAS Y LOCALIDADES. PROGRAMAS DE ENVIÓ MASIVO DE MENSAJES, PARA PODER UTILIZAR ESTAS BASES DE DATOS. ESPECTACULAR PARA PODER EMPEZAR TU PROPIO NEGOCIO CHEQUEADAS AL 15-11 VERSIÓN FULL DE TODOS LOS PROGRAMAS CON CRACK INCLUIDOS. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *COMBO XP CONTIENE LOS MEJORES PROGRAMAS DE MICROSOFT WINDOWS XP Y OFFICE XP. La ultima version del Sistema Operativo de Microsoft: Windows XP Profesional en castellano, es un CD con el sistema completo, un diez de calificación para este producto, que tiene mas de 25 nuevas utilidades, y el resto totalmente actualizados. La ultima versión del Paquete de Programas Office: se trata del Office XP 2002 en Castellano, versión profesional, son tres CDS, con la ultima tecnología y modificaciones para este producto. y la versión 2002 en español de la Enciclopedia Encarta junto con el atlas, que en total son otros cuatro CDS... ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *GUÍA TELEFÓNICA 2002 / DATEL 2002: Nueva Guía Telefónica 2002 en CD ( BUSCA POR NOMBRE, TELÉFONO Y DOMICILIO !!! ) + Nueva Guía de Cod Postales Alfanuméricos 2001. CONTENIDO DEL CD1: Guía Telefónica Invertida con todos los abonados del país de telefónica y Telecom, busca por nombre, teléfono o dirección. Guía Comercial (para realizar búsquedas por empresas, rubro, provincia o localidad, con variables filtros definidos por el usuario: Ej., que tenga e-mail, que tenga URL, que tenga aviso; cuyo resultado podrá ser visualizado en formato de fichas o tablas. Guía Profesional, la más completa de las guías de profesionales del país, podrá realizar búsquedas por profesión: Ej., si UD. desea buscar un abogado, le dará datos de todos los que se encuentren en la zona que UD delimite, o también buscar por apellido y nombre. Guía de Organismos Oficiales. CONTENIDO 2: Nueva guía con los códigos alfanuméricos de toda la Republica Argentina, por ejemplo: el Cód. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- GRAN COLECCIÓN 10 LIBROS SOBRE HACKING a un precio increible:EN 2 CDS. Son 10 CDS que traen de todo!!! LIBRO 1: Hackers 2000 la ultima tecnología en programas de Hacking, los mejores virus, troyanos, programas para crackear software, programas para sacar passwords con sus correspondientes listas de posibles contraseñas, utilidades para icq, para obtener direcciones ip, y muchas pero muchas otras utilidades relacionadas con el hacking. LIBRO 2: Exelsior: Hacking en linux: las ultimas herramientas y los mejores manuales que te enseñaran todos los secretos para poder hackear bajo el sistema operativo Linux. LIBRO 3: Master Hacker: Siguiendo la misma temática que el CD 1, este CD aporta otra gran colección de programas para muchísimas cosas. Excelente. LIBRO 4 y 5: Dr. HACKER and MR. CRACK: Los grandes secretos del hacking y cracking con manuales escritos y programas realizados por dos hackers muy importantes del mundo. LIBRO 6 Este CD contiene muchisimas herramientas para el hacking: TROYANOS: BackOriffice120, bo2k (BackOriffice2000), Netbus160, Netbus170, NetbusPro2, WinSatan, SubSeven y otros, Sacadores de password para los servidores. ANTITROYANOS, Virus (una gran colección), Creadores de VIRUS (versiones en castellanos de estos generadores de Virus), BOMBAS e-mail, la mas grande colección de NUCKES, SCANNEADORES (una gran cantidad de scanneadores de IP, de puertos y MODEMS), CRACKS, Sacadores de password de todo tipo: Para paginas WEB, Para programas como: Word, Excel, Access y otros para obtener las claves de conexión a Internet o redes locales. Muchos programas para telefonía; como llamar de teléfonos gratuitamente, mensajes a celulares y carga de pulsos de estos. Muchos programas para la Administración Remota. LO MEJOR DE ESTE CD ES QUE TIENE UNA GRAN CANTIDAD DE MANUALES Y TUTORES EN CASTELLANO, INCLUSO MUCHOS DE LOS PROGRAMAS ESTÁN EN CASTELLANO (GENERADORES DE VIRUS, TROYANOS COMO EL BACK ORÍFICE Y EL NETBUS TAMBIÉN ESTA EN CASTELLANO). ESTE CD FUE CREADO POR UN GRUPO DE SEGUIDORES DEL CONOCIDO HACKER VeIrUS (DE HABLA HISPANA). LIBRO 7 (continuación del CD 1) Este CD contiene muchísimas herramientas para el hacking: TROYANOS: BackOriffice120, bo2k (BackOriffice2000), Netbus160, Netbus170, NetbusPro2, WinSatan, SubSeven y otros, Sacadores de password para los servidores. ANTITROYANOS, Virus (una gran coleccion), Creadores de VIRUS (versiones en castellanos de estos generadores de Virus), BOMBAS e-mail, la mas grande colección de NUCKES, SCANNEADORES (una gran cantidad de scanneadores de IP, de puertos y MODEMS), CRACKS, Sacadores de password de todo tipo: Para paginas WEB, Para programas como: Word, Excel, Access y otros para obtener las claves de conexión a Internet o redes locales. Muchos programas para telefonía; como llamar de teléfonos gratuitamente, mensajes a celulares y carga de pulsos de estos. LIBRO 8 Hackers Handbook este CD contiene las herramientas y técnicas del arte de hacking(hackear). Herramientas para hackear (Hacking Tools) Mas de 800 Herramientas creadas y usadas por los mejores hackers del mundo para explotar todo tipo de seguridad de computación incluyendo: Password Crackers, Trojan horse wrappers, unix y linux scripts, windows 95/98 remote hacking, nucking, hacks para icq, Windows nt crackers admin, laboratorio de virus y mucho mas. Herramientas de Phreaking. Herramientas de Phreaking que realmente funcionan incluyendo emuladores de red box y plans, generadores de tonos para controlar líneas telefónicas, líen Tes. devices y mucho mas.. Librería de Hacking y Phreaking. La mas completa librería jamás compilada, no son las mismas filas de 10 anos de antigüedad que se venden en otros CDS, estas filas son todas nuevas y explican las verdaderas técnicas usadas por los hackers reales que aparecen en las noticias, incluyendo:ip spoofing(cambia el numero de ip para que nadie sepa quien SOS realmente), hacking icq(tecnicas para hackear el programa icq)y hacks para remote win que no vas a creer, plus exploiting browsers, cracks de web pages y Web Server, escaneo de ports, y miles de cosas mas. El contenido de este CD-rom es de propósitos de información y material difícil de conseguir para estudio o educación propia el contenido de este CD-rom no viola ninguna ley pero el uso de alguno de estos programas si , por eso se ruega que el uso de este CD-rom sea conciente, el vendedor no se responsabiliza de ninguna forma por el mal uso de la información dada en este cumuchos programas para la Administración Remota LIBRO 9 CD que contiene 420 Mb. de pura información, programas, herramientas ... De nuestros amigos Españoles, Mexicanos y de hache ARGENTINA ... La mayoria de su material se encuentra en español ... EL ultimo CD ... recién compilado ... complementa todo lo que le falta al Veirus - y lo actualiza - ... un Cd no solo para aprender sino para ... LIBRO 10 ATENCION PROGRAMADORES, WEBMASTER, MANAGER O CEO "200 DE LOS MEJORES CURSOS, MANUALES Y MONOGRAFÍAS " "EL SABER NO OCUPA LUGAR" YO ME PREGUNTO SI SE INSPIRO EN NUETRO PACK YA QUE EN UN CD HEMOS COMPILADO 200 DE LOS MEJORES CURSOS, MANUALES Y MONOGRAFÍAS; QUE DE OTRA FORMA SERIA IMPOSIBLE COMERCIALIZAR POR SU TAMAÑO Y COSTO. ENTRE LOS TEMAS MAS IMPORTANTES PODES ENCONTRAR: NT, LINUX, JAVA, JSCRIPT, ASP, CGI, HTML, MARKETING, FIREWALL, VISUAL BASIC, VISUAL FOX, INTERNET, UNIX, MACROMEDIA, PERL, C++, SQL, TCP/IP, FRONT PAGE, ORACLE, ENTRE OTROS. NIVELES BÁSICOS, INTERMEDIOS Y AVANZADOS. MAS DE 40.000 HOJAS LOS ARCHIVOS ESTÁN EN FORMATO HTML, PDF Y DOC E INCLUIMOS UTILIDADES Textos en Castellano ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- • NORTON ANTIVIRUS 2002 La mas actualizada versión del mas potente y conocido Antivirus, totalmente funcional bajo Windows Xp. Trae mas de 125 herramientas que mantendran a su equipo junto con la tecnología XP. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- • GLOBAL LINK TRASLATOR PRO 7.0 La ultima versión del mejor traductor para archivos y frases que existan en el mercado. Traduce 6 idiomas: Ingles, Español, Francés, Italiano, Alemán y Portugués. Compatible con Windows y Office XP. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *JUEGOS / ESTRATEGIA: TITULOS: * FIFA 2001 (FÚTBOL MUNDIAL Y LOCAL DE ALTO NIVEL) * MIDTOWN MADNEES 2 (LAS MEJORES CARRERAS DE AUTOS EN LAS CALLES DE CALIFORNIA, NEW YORK, LONDRES ETC...) * SIM CITY 3000 CASTELLANO ( ES UN JUEGO DE ESTRATEGIA QUE TRATA DE GOBERNAR UN PAIS EN LOS TIEMPOS QUE CORREN) * THE SIMS (JUEGO DE ESTRATEGIA: ES PODER ORGANIZAR UNA FAMILIA Y COMO LLEVARLA A DELANTE) * TOMB RAIDER 4 (JUEGO DE GUERRA Y ARMAS NUCLEARES) * TOMB RAIDER 5 (VERCION MAS AVANZADA DEL TOMB RAIDER CUATRO) * PC FÚTBOL 7 (LOS MEJORES CLUBS DEL PAÍS COMO BOCA, RIVER, VELEZ. PODER LLEGAR A GANAR LA COPA APERTURA Y CLAUSURA) * NEED FOR SPEED 5 (COCHES IMPORTADOS JUEGAN LA CARRERA MAS IMPORTANTE DE TODO LOS TIEMPOS CON FERRARRI, LANBORGINI, ALFA RONEO, JAGUAR Y PORCHE.. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *PARA ADULTOS LO MEJOR DE KAMASUTRA: Si te interesa el Libro de Kamasutra, entonces tenes que tener este CD. que muestra las mejores poses sexuales en una forma interactiva. Tenes lo mismo que el libro pero en CD. así que si te interesa, solo tense que encargarlo. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *PADRÓN ELECTORAL: año 1999 incluye hasta la categoría 1980. Todos los ciudadanos de la Republica Argentina reunidos en estos tres CDS. Separados por provincias e importado a archivos de MICROSOFT ACCESS para su mejor utilización. Podes buscar por nombre, apellido o DNI, podes filtra por nombre, apellido, clase, DNI, lugar de votación, dirección, mesa, etc. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *"PADRÓN DE OBRAS SOCIALES" Estos 2 CDS contienen el registro nacional de todas las obras sociales, y sus correspondientes afiliados. Los datos que incluyen, entre otros, son: nombre y apellido, dirección, DNI, obra social, y otros datos personales de interés. En este caso los datos también pueden exportarse o imprimirse. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *"REGISTRO DEL AUTOMOTOR" Base de datos del Registro Del Automotor Nacional, que incluye información sobre cada persona que posea vehículos, así como datos sobre el vehículo en si. Además de otros datos de interés. nombre y apellido, dirección, DNI, obra social, y otros datos personales de interés. En este caso los datos también pueden exportarse o imprimirse. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *"GUÍA COMERCIAL MERCOSUR" Este CD contiene todos los datos de las empresas y negocios que forman parte del MERCOSUR, con posibilidad de filtrar los resultados por país, región, provincia, localidad, rubro, etc. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *"GUÍA DE LA INDUSTRIA 2002" Este CD contiene los datos de todas las industrias nacionales con posibilidad de buscar por: Razón Social, nombre, dirección, rubro, localidad, etc. *"PAGINAS AMARILLAS 2002" Este CD contiene los datos de todas las empresas nacionales, además de la guía completa de Profesionales y guía telefónica de todo el país. Permite buscar por: razón social, nombre, dirección, teléfono, etc. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- "GUÍA DE TELÉFONO INVERTIDA 2000" Con llave de registro. Este CD contiene la guía telefónica Nacional. Permite buscar por nombre, apellido, dirección parcial, completa, todo un edificio, cuadra par, impar, por nº de teléfono entre otros. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *PLANO DE CALLES INTELIGENTE: * El CD contiene un plano de calles de Gran Bs.As., La Plata, Ensenada, Beriso y Capital Federal. * Este plano permite buscar direcciones completas, aproximadas, calles, avenidas, lugares, entrecalles, etc. * Además contiene una guía de Códigos Postales, con un buscador que permite encontrar un cod. postal por dirección, localidad, etc. * El plano muestra el resultado y se lo puede agrandar hasta un 600% mas de lo normal, Muestra también todos los nombres de las calles con sus correspondientes alturas. * Permite guardar las búsquedas ya realizadas para luego poder consultarlas. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *TÉCNICAS Web: ¿NECESITAS HERRAMIENTAS PARA TU Web? ¿ IDEAS ? ¿SCRIPTS? ENTONCES ESTE CD TE VA A INTERESA DEMASIADO. UN CD COMPLETO CON MAS DE 2.000 HERRAMIENTAS PARA LOS WEBMASTERS, HERRAMIENTAS DE AUDIO, video, IMAGEN, INTERNET, Y MUCHO MAS. TENSE SCRIPTS .ASP / .PHP LIBROS DE VISITAS ADMINISTRACIÓN DE BD CONTADORES ONLINE ENCUESTAS FOROS FORMULARIOS PASSWORD Y MUCHOS PERO MUCHOS OTROS SCRIPTS. TENES TAMBIÉN IMÁGENES DE PRUEBA, SONIDOS Y MUCHAS COSAS MAS PARA UTILIZAR EN TU PAGINA Web. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- CADA PRODUCTO CAPITAL : CUESTA $15 PARA LA PROVINCIAS: CUESTA $25 *EL HACKING Y EL COMBO XP CUESTA CAPITAL $25 PARA LA PROVINCIAS:CUESTA $37 !!!!ATENCIÓN... CAPITAL FEDERAL Y GRAN BUENOS AIRES, CADA COMPRA QUE REALICE LES DESCONTAMOS UN %50 DE SERVICIE DE REPARACIÓN DE PC. IMPORTANTE: SOBRE OTRO NOMBRE DE PROGRAMA QUE LE INTERESE, DEBE DECIRNOS EL NOMBRE Y SE LO ENVIAMOS EN 24 HORAS. PARA COMPRARLO SOLO TENES QUE RESPONDERME ESTE MENSAJE ESPECIFICANDO: NOMBRE COMPLETO DEL DESTINATARIO DIRECCIÓN COMPLETA (CALLE - N° - PISO/Dpto. - CP - LOCALIDAD - PCIA.) TELÉFONO (MAYORMENTE PARA CONFIRMAR LOS DATOS, NO IMPORTA QUE SEAN CELULARES O TELÉFONOS DEL INTERIOR.) ATENCIÓN CAPITAL FEDERAL!!! ACEPTAMOS PESOS - DÓLARES - PATACONES- LECOPS (SOLO VALIDO PARA CAPITAL FEDERAL PORQUE SE ENTREGA POR MENSAJERO, EL RESTO DE LAS LOCALIDADES SE ENVÍA POR CORREO ARGENTINO Y NO ACEPTAN ESAS FORMAS DE PAGO POR EL MOMENTO.) ESTA OFERTA NO SE VOLVERÁ A REPETIR. EN CASO DE QUE ESTE EMAIL TE MOLESTE, TE PIDO DISCULPAS, Y NO HACE FALTA QUE TE BORRES DE NINGUNA LISTA PORQUE NO RECIBIRÁS OTRA OFERTA SOBRE ESTE MISMO PRODUCTO. LOS EMAILS LOS ENVIÓ EN FORMATO TEXTO PARA HACERTE MAS RÁPIDA LA DESCARGA. Por sección 301, párrafo (a)(2)(C) de S.1618. Bajo el decreto S.1618 titulo 3ro. Aprobado por el 105 congreso base de las normativas Internacionales sobre SPAM, un E-mail no podrá ser considerado SPAM mientras incluya una forma de ser removido.Si usted desea ser removido de nuestra base de datos en forma definitiva por favor responda a este e-mail indicando "Remover" en el subject. From todoarg@uol.com.ar Fri Dec 20 21:23:46 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 20 Dec 2002 21:23:51 -0800 (PST) Received: from company.mail ([209.99.231.135]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBL5Ne3v024943 for ; Fri, 20 Dec 2002 21:23:42 -0800 Received: from uol.com.ar [127.0.0.1] by company.mail [169.254.245.246] with SMTP (MDaemon.PRO.v5.0.1.T) for ; Sat, 07 Sep 2002 01:30:42 -0300 Message-ID: <397514-2200296743041276@uol.com.ar> X-EM-Version: 6, 0, 0, 4 X-EM-Registration: #00F06206106618006920 X-Priority: 3 Reply-To: datacenter@uol.com.ar From: "DataCenter" To: netdev@oss.sgi.com Subject: Mejor Imposible... Date: Sat, 7 Sep 2002 01:30:41 -0300 MIME-Version: 1.0 Content-type: text/plain; charset="US-ASCII" X-MDRemoteIP: 127.0.0.1 X-Return-Path: todoarg@uol.com.ar X-MDaemon-Deliver-To: netdev@oss.sgi.com Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id gBL5Ne3v024943 X-archive-position: 1404 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: todoarg@uol.com.ar Precedence: bulk X-list: netdev HOLA: Soy, Gaston Roviralta y les ofrezco los mejores 20 Programas del mundo. estos programas fueron los mas vedidos de Argentina y del resto del mundo *AUREATE: ¿ Publicidad por mail? ¿ Necesitas un programa para envió masivo de mensajes? Acá tenes la solución AUREATE GROUP MAIL PRO 3.3 Versión FULL Registrada, con Código de Registro y Plugins... Este programa te permite entre otras cosas: *ENVIAR MENSAJES EN FORMA MASIVA. * ELIMINAR AUTOMÁTICAMENTE LAS DIRECCIONES REBOTADAS. * CHEQUEADOS DE DIRECCIONES. * REMOVER USUARIOS AUTOMÁTICAMENTE * CREAR MENSAJES HTML: con la mejor tecnología ETC... ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *BASES DE E-MAIL / GUÍAS DE E-MAIL DE TODO EL MUNDO: BASE DE DATOS DE EMAILS ARGENTINOS MAS DE 1.000.000 DE DIRECCIONES PARTICULARES, DE EMPRESAS, PYMES, PROFESIONALES, Y MUCHOS OTROS RUBROS. COMO POR EJEMPLO: ESTA DIVIDIDA POR CONTINENTES, PAÍSES, (ARGENTINA EN CAPITAL, GRAN BUENOS AIRES, PROVINCIAS Y LOCALIDADES. PROGRAMAS DE ENVIÓ MASIVO DE MENSAJES, PARA PODER UTILIZAR ESTAS BASES DE DATOS. ESPECTACULAR PARA PODER EMPEZAR TU PROPIO NEGOCIO CHEQUEADAS AL 15-11 VERSIÓN FULL DE TODOS LOS PROGRAMAS CON CRACK INCLUIDOS. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *COMBO XP CONTIENE LOS MEJORES PROGRAMAS DE MICROSOFT WINDOWS XP Y OFFICE XP. La ultima version del Sistema Operativo de Microsoft: Windows XP Profesional en castellano, es un CD con el sistema completo, un diez de calificación para este producto, que tiene mas de 25 nuevas utilidades, y el resto totalmente actualizados. La ultima versión del Paquete de Programas Office: se trata del Office XP 2002 en Castellano, versión profesional, son tres CDS, con la ultima tecnología y modificaciones para este producto. y la versión 2002 en español de la Enciclopedia Encarta junto con el atlas, que en total son otros cuatro CDS... ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *GUÍA TELEFÓNICA 2002 / DATEL 2002: Nueva Guía Telefónica 2002 en CD ( BUSCA POR NOMBRE, TELÉFONO Y DOMICILIO !!! ) + Nueva Guía de Cod Postales Alfanuméricos 2001. CONTENIDO DEL CD1: Guía Telefónica Invertida con todos los abonados del país de telefónica y Telecom, busca por nombre, teléfono o dirección. Guía Comercial (para realizar búsquedas por empresas, rubro, provincia o localidad, con variables filtros definidos por el usuario: Ej., que tenga e-mail, que tenga URL, que tenga aviso; cuyo resultado podrá ser visualizado en formato de fichas o tablas. Guía Profesional, la más completa de las guías de profesionales del país, podrá realizar búsquedas por profesión: Ej., si UD. desea buscar un abogado, le dará datos de todos los que se encuentren en la zona que UD delimite, o también buscar por apellido y nombre. Guía de Organismos Oficiales. CONTENIDO 2: Nueva guía con los códigos alfanuméricos de toda la Republica Argentina, por ejemplo: el Cód. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- GRAN COLECCIÓN 10 LIBROS SOBRE HACKING a un precio increible:EN 2 CDS. Son 10 CDS que traen de todo!!! LIBRO 1: Hackers 2000 la ultima tecnología en programas de Hacking, los mejores virus, troyanos, programas para crackear software, programas para sacar passwords con sus correspondientes listas de posibles contraseñas, utilidades para icq, para obtener direcciones ip, y muchas pero muchas otras utilidades relacionadas con el hacking. LIBRO 2: Exelsior: Hacking en linux: las ultimas herramientas y los mejores manuales que te enseñaran todos los secretos para poder hackear bajo el sistema operativo Linux. LIBRO 3: Master Hacker: Siguiendo la misma temática que el CD 1, este CD aporta otra gran colección de programas para muchísimas cosas. Excelente. LIBRO 4 y 5: Dr. HACKER and MR. CRACK: Los grandes secretos del hacking y cracking con manuales escritos y programas realizados por dos hackers muy importantes del mundo. LIBRO 6 Este CD contiene muchisimas herramientas para el hacking: TROYANOS: BackOriffice120, bo2k (BackOriffice2000), Netbus160, Netbus170, NetbusPro2, WinSatan, SubSeven y otros, Sacadores de password para los servidores. ANTITROYANOS, Virus (una gran colección), Creadores de VIRUS (versiones en castellanos de estos generadores de Virus), BOMBAS e-mail, la mas grande colección de NUCKES, SCANNEADORES (una gran cantidad de scanneadores de IP, de puertos y MODEMS), CRACKS, Sacadores de password de todo tipo: Para paginas WEB, Para programas como: Word, Excel, Access y otros para obtener las claves de conexión a Internet o redes locales. Muchos programas para telefonía; como llamar de teléfonos gratuitamente, mensajes a celulares y carga de pulsos de estos. Muchos programas para la Administración Remota. LO MEJOR DE ESTE CD ES QUE TIENE UNA GRAN CANTIDAD DE MANUALES Y TUTORES EN CASTELLANO, INCLUSO MUCHOS DE LOS PROGRAMAS ESTÁN EN CASTELLANO (GENERADORES DE VIRUS, TROYANOS COMO EL BACK ORÍFICE Y EL NETBUS TAMBIÉN ESTA EN CASTELLANO). ESTE CD FUE CREADO POR UN GRUPO DE SEGUIDORES DEL CONOCIDO HACKER VeIrUS (DE HABLA HISPANA). LIBRO 7 (continuación del CD 1) Este CD contiene muchísimas herramientas para el hacking: TROYANOS: BackOriffice120, bo2k (BackOriffice2000), Netbus160, Netbus170, NetbusPro2, WinSatan, SubSeven y otros, Sacadores de password para los servidores. ANTITROYANOS, Virus (una gran coleccion), Creadores de VIRUS (versiones en castellanos de estos generadores de Virus), BOMBAS e-mail, la mas grande colección de NUCKES, SCANNEADORES (una gran cantidad de scanneadores de IP, de puertos y MODEMS), CRACKS, Sacadores de password de todo tipo: Para paginas WEB, Para programas como: Word, Excel, Access y otros para obtener las claves de conexión a Internet o redes locales. Muchos programas para telefonía; como llamar de teléfonos gratuitamente, mensajes a celulares y carga de pulsos de estos. LIBRO 8 Hackers Handbook este CD contiene las herramientas y técnicas del arte de hacking(hackear). Herramientas para hackear (Hacking Tools) Mas de 800 Herramientas creadas y usadas por los mejores hackers del mundo para explotar todo tipo de seguridad de computación incluyendo: Password Crackers, Trojan horse wrappers, unix y linux scripts, windows 95/98 remote hacking, nucking, hacks para icq, Windows nt crackers admin, laboratorio de virus y mucho mas. Herramientas de Phreaking. Herramientas de Phreaking que realmente funcionan incluyendo emuladores de red box y plans, generadores de tonos para controlar líneas telefónicas, líen Tes. devices y mucho mas.. Librería de Hacking y Phreaking. La mas completa librería jamás compilada, no son las mismas filas de 10 anos de antigüedad que se venden en otros CDS, estas filas son todas nuevas y explican las verdaderas técnicas usadas por los hackers reales que aparecen en las noticias, incluyendo:ip spoofing(cambia el numero de ip para que nadie sepa quien SOS realmente), hacking icq(tecnicas para hackear el programa icq)y hacks para remote win que no vas a creer, plus exploiting browsers, cracks de web pages y Web Server, escaneo de ports, y miles de cosas mas. El contenido de este CD-rom es de propósitos de información y material difícil de conseguir para estudio o educación propia el contenido de este CD-rom no viola ninguna ley pero el uso de alguno de estos programas si , por eso se ruega que el uso de este CD-rom sea conciente, el vendedor no se responsabiliza de ninguna forma por el mal uso de la información dada en este cumuchos programas para la Administración Remota LIBRO 9 CD que contiene 420 Mb. de pura información, programas, herramientas ... De nuestros amigos Españoles, Mexicanos y de hache ARGENTINA ... La mayoria de su material se encuentra en español ... EL ultimo CD ... recién compilado ... complementa todo lo que le falta al Veirus - y lo actualiza - ... un Cd no solo para aprender sino para ... LIBRO 10 ATENCION PROGRAMADORES, WEBMASTER, MANAGER O CEO "200 DE LOS MEJORES CURSOS, MANUALES Y MONOGRAFÍAS " "EL SABER NO OCUPA LUGAR" YO ME PREGUNTO SI SE INSPIRO EN NUETRO PACK YA QUE EN UN CD HEMOS COMPILADO 200 DE LOS MEJORES CURSOS, MANUALES Y MONOGRAFÍAS; QUE DE OTRA FORMA SERIA IMPOSIBLE COMERCIALIZAR POR SU TAMAÑO Y COSTO. ENTRE LOS TEMAS MAS IMPORTANTES PODES ENCONTRAR: NT, LINUX, JAVA, JSCRIPT, ASP, CGI, HTML, MARKETING, FIREWALL, VISUAL BASIC, VISUAL FOX, INTERNET, UNIX, MACROMEDIA, PERL, C++, SQL, TCP/IP, FRONT PAGE, ORACLE, ENTRE OTROS. NIVELES BÁSICOS, INTERMEDIOS Y AVANZADOS. MAS DE 40.000 HOJAS LOS ARCHIVOS ESTÁN EN FORMATO HTML, PDF Y DOC E INCLUIMOS UTILIDADES Textos en Castellano ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- • NORTON ANTIVIRUS 2002 La mas actualizada versión del mas potente y conocido Antivirus, totalmente funcional bajo Windows Xp. Trae mas de 125 herramientas que mantendran a su equipo junto con la tecnología XP. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- • GLOBAL LINK TRASLATOR PRO 7.0 La ultima versión del mejor traductor para archivos y frases que existan en el mercado. Traduce 6 idiomas: Ingles, Español, Francés, Italiano, Alemán y Portugués. Compatible con Windows y Office XP. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *JUEGOS / ESTRATEGIA: TITULOS: * FIFA 2001 (FÚTBOL MUNDIAL Y LOCAL DE ALTO NIVEL) * MIDTOWN MADNEES 2 (LAS MEJORES CARRERAS DE AUTOS EN LAS CALLES DE CALIFORNIA, NEW YORK, LONDRES ETC...) * SIM CITY 3000 CASTELLANO ( ES UN JUEGO DE ESTRATEGIA QUE TRATA DE GOBERNAR UN PAIS EN LOS TIEMPOS QUE CORREN) * THE SIMS (JUEGO DE ESTRATEGIA: ES PODER ORGANIZAR UNA FAMILIA Y COMO LLEVARLA A DELANTE) * TOMB RAIDER 4 (JUEGO DE GUERRA Y ARMAS NUCLEARES) * TOMB RAIDER 5 (VERCION MAS AVANZADA DEL TOMB RAIDER CUATRO) * PC FÚTBOL 7 (LOS MEJORES CLUBS DEL PAÍS COMO BOCA, RIVER, VELEZ. PODER LLEGAR A GANAR LA COPA APERTURA Y CLAUSURA) * NEED FOR SPEED 5 (COCHES IMPORTADOS JUEGAN LA CARRERA MAS IMPORTANTE DE TODO LOS TIEMPOS CON FERRARRI, LANBORGINI, ALFA RONEO, JAGUAR Y PORCHE.. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *PARA ADULTOS LO MEJOR DE KAMASUTRA: Si te interesa el Libro de Kamasutra, entonces tenes que tener este CD. que muestra las mejores poses sexuales en una forma interactiva. Tenes lo mismo que el libro pero en CD. así que si te interesa, solo tense que encargarlo. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *PADRÓN ELECTORAL: año 1999 incluye hasta la categoría 1980. Todos los ciudadanos de la Republica Argentina reunidos en estos tres CDS. Separados por provincias e importado a archivos de MICROSOFT ACCESS para su mejor utilización. Podes buscar por nombre, apellido o DNI, podes filtra por nombre, apellido, clase, DNI, lugar de votación, dirección, mesa, etc. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *"PADRÓN DE OBRAS SOCIALES" Estos 2 CDS contienen el registro nacional de todas las obras sociales, y sus correspondientes afiliados. Los datos que incluyen, entre otros, son: nombre y apellido, dirección, DNI, obra social, y otros datos personales de interés. En este caso los datos también pueden exportarse o imprimirse. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *"REGISTRO DEL AUTOMOTOR" Base de datos del Registro Del Automotor Nacional, que incluye información sobre cada persona que posea vehículos, así como datos sobre el vehículo en si. Además de otros datos de interés. nombre y apellido, dirección, DNI, obra social, y otros datos personales de interés. En este caso los datos también pueden exportarse o imprimirse. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *"GUÍA COMERCIAL MERCOSUR" Este CD contiene todos los datos de las empresas y negocios que forman parte del MERCOSUR, con posibilidad de filtrar los resultados por país, región, provincia, localidad, rubro, etc. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *"GUÍA DE LA INDUSTRIA 2002" Este CD contiene los datos de todas las industrias nacionales con posibilidad de buscar por: Razón Social, nombre, dirección, rubro, localidad, etc. *"PAGINAS AMARILLAS 2002" Este CD contiene los datos de todas las empresas nacionales, además de la guía completa de Profesionales y guía telefónica de todo el país. Permite buscar por: razón social, nombre, dirección, teléfono, etc. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- "GUÍA DE TELÉFONO INVERTIDA 2000" Con llave de registro. Este CD contiene la guía telefónica Nacional. Permite buscar por nombre, apellido, dirección parcial, completa, todo un edificio, cuadra par, impar, por nº de teléfono entre otros. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *PLANO DE CALLES INTELIGENTE: * El CD contiene un plano de calles de Gran Bs.As., La Plata, Ensenada, Beriso y Capital Federal. * Este plano permite buscar direcciones completas, aproximadas, calles, avenidas, lugares, entrecalles, etc. * Además contiene una guía de Códigos Postales, con un buscador que permite encontrar un cod. postal por dirección, localidad, etc. * El plano muestra el resultado y se lo puede agrandar hasta un 600% mas de lo normal, Muestra también todos los nombres de las calles con sus correspondientes alturas. * Permite guardar las búsquedas ya realizadas para luego poder consultarlas. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *TÉCNICAS Web: ¿NECESITAS HERRAMIENTAS PARA TU Web? ¿ IDEAS ? ¿SCRIPTS? ENTONCES ESTE CD TE VA A INTERESA DEMASIADO. UN CD COMPLETO CON MAS DE 2.000 HERRAMIENTAS PARA LOS WEBMASTERS, HERRAMIENTAS DE AUDIO, video, IMAGEN, INTERNET, Y MUCHO MAS. TENSE SCRIPTS .ASP / .PHP LIBROS DE VISITAS ADMINISTRACIÓN DE BD CONTADORES ONLINE ENCUESTAS FOROS FORMULARIOS PASSWORD Y MUCHOS PERO MUCHOS OTROS SCRIPTS. TENES TAMBIÉN IMÁGENES DE PRUEBA, SONIDOS Y MUCHAS COSAS MAS PARA UTILIZAR EN TU PAGINA Web. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- CADA PRODUCTO CAPITAL : CUESTA $15 PARA LA PROVINCIAS: CUESTA $25 *EL HACKING Y EL COMBO XP CUESTA CAPITAL $25 PARA LA PROVINCIAS:CUESTA $37 !!!!ATENCIÓN... CAPITAL FEDERAL Y GRAN BUENOS AIRES, CADA COMPRA QUE REALICE LES DESCONTAMOS UN %50 DE SERVICIE DE REPARACIÓN DE PC. IMPORTANTE: SOBRE OTRO NOMBRE DE PROGRAMA QUE LE INTERESE, DEBE DECIRNOS EL NOMBRE Y SE LO ENVIAMOS EN 24 HORAS. PARA COMPRARLO SOLO TENES QUE RESPONDERME ESTE MENSAJE ESPECIFICANDO: NOMBRE COMPLETO DEL DESTINATARIO DIRECCIÓN COMPLETA (CALLE - N° - PISO/Dpto. - CP - LOCALIDAD - PCIA.) TELÉFONO (MAYORMENTE PARA CONFIRMAR LOS DATOS, NO IMPORTA QUE SEAN CELULARES O TELÉFONOS DEL INTERIOR.) ATENCIÓN CAPITAL FEDERAL!!! ACEPTAMOS PESOS - DÓLARES - PATACONES- LECOPS (SOLO VALIDO PARA CAPITAL FEDERAL PORQUE SE ENTREGA POR MENSAJERO, EL RESTO DE LAS LOCALIDADES SE ENVÍA POR CORREO ARGENTINO Y NO ACEPTAN ESAS FORMAS DE PAGO POR EL MOMENTO.) ESTA OFERTA NO SE VOLVERÁ A REPETIR. EN CASO DE QUE ESTE EMAIL TE MOLESTE, TE PIDO DISCULPAS, Y NO HACE FALTA QUE TE BORRES DE NINGUNA LISTA PORQUE NO RECIBIRÁS OTRA OFERTA SOBRE ESTE MISMO PRODUCTO. LOS EMAILS LOS ENVIÓ EN FORMATO TEXTO PARA HACERTE MAS RÁPIDA LA DESCARGA. Por sección 301, párrafo (a)(2)(C) de S.1618. Bajo el decreto S.1618 titulo 3ro. Aprobado por el 105 congreso base de las normativas Internacionales sobre SPAM, un E-mail no podrá ser considerado SPAM mientras incluya una forma de ser removido.Si usted desea ser removido de nuestra base de datos en forma definitiva por favor responda a este e-mail indicando "Remover" en el subject. From davem@redhat.com Fri Dec 20 23:06:39 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 20 Dec 2002 23:06:44 -0800 (PST) Received: from pizda.ninka.net (IDENT:root@pizda.ninka.net [216.101.162.242]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBL76c3v026140 for ; Fri, 20 Dec 2002 23:06:38 -0800 Received: from localhost (IDENT:davem@localhost.localdomain [127.0.0.1]) by pizda.ninka.net (8.9.3/8.9.3) with ESMTP id XAA28457; Fri, 20 Dec 2002 23:05:29 -0800 Date: Fri, 20 Dec 2002 23:05:28 -0800 (PST) Message-Id: <20021220.230528.106417474.davem@redhat.com> To: kiran@in.ibm.com Cc: linux-kernel@vger.kernel.org, netdev@oss.sgi.com, dipankar@in.ibm.com, akpm@digeo.com Subject: Re: [patch] Make rt_cache_stat use kmalloc_percpu From: "David S. Miller" In-Reply-To: <20021216192212.C26076@in.ibm.com> References: <20021216192212.C26076@in.ibm.com> X-FalunGong: Information control. X-Mailer: Mew version 2.1 on Emacs 21.1 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1405 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: davem@redhat.com Precedence: bulk X-list: netdev From: Ravikiran G Thirumalai Date: Mon, 16 Dec 2002 19:22:12 +0530 Here's another patch to use kmalloc_percpu. As usual, this removes NR_CPUS bloat, can work when modulized and helps node local allocation. I can't consider this seriously until the kmalloc_percpu stuff actually makes it into Linus's tree. Last I checked, Andrew had a lot of legitimate gripes with the ideas. From davem@redhat.com Fri Dec 20 23:10:16 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 20 Dec 2002 23:10:18 -0800 (PST) Received: from pizda.ninka.net (IDENT:root@pizda.ninka.net [216.101.162.242]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBL7AG3v026569 for ; Fri, 20 Dec 2002 23:10:16 -0800 Received: from localhost (IDENT:davem@localhost.localdomain [127.0.0.1]) by pizda.ninka.net (8.9.3/8.9.3) with ESMTP id XAA28508; Fri, 20 Dec 2002 23:08:37 -0800 Date: Fri, 20 Dec 2002 23:08:36 -0800 (PST) Message-Id: <20021220.230836.40590865.davem@redhat.com> To: krkumar@us.ibm.com Cc: kuznet@ms2.inr.ac.ru, netdev@oss.sgi.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH RESEND] memory leak in ndisc_router_discovery From: "David S. Miller" In-Reply-To: <200212121905.gBCJ5hn18058@eng2.beaverton.ibm.com> References: <200212121905.gBCJ5hn18058@eng2.beaverton.ibm.com> X-FalunGong: Information control. X-Mailer: Mew version 2.1 on Emacs 21.1 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1406 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: davem@redhat.com Precedence: bulk X-list: netdev From: Krishna Kumar Date: Thu, 12 Dec 2002 11:05:43 -0800 (PST) I had sent this earlier, there is a bug in router advertisement handling code, where the reference (and memory) to an inet6_dev pointer can get leaked (this leak can happen atmost once for each interface on a system which receives invalid RA's). Below is the patch against 2.5.51 to fix it. Applied, thanks. From Andrew.Morton@digeo.com Fri Dec 20 23:27:42 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 20 Dec 2002 23:27:44 -0800 (PST) Received: from packet.digeo.com (packet.digeo.com [12.110.80.53]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBL7Rf3v027026 for ; Fri, 20 Dec 2002 23:27:42 -0800 Received: from digeo-nav01.digeo.com (digeo-nav01.digeo.com [192.168.1.233]) by packet.digeo.com (8.9.3+Sun/8.9.3) with SMTP id XAA19836 for ; Fri, 20 Dec 2002 23:31:56 -0800 (PST) Received: from digeo-e2k04.digeo.com ([192.168.2.24]) by digeo-nav01.digeo.com (NAVGW 2.5.2.12) with SMTP id M2002122023340519723 ; Fri, 20 Dec 2002 23:34:05 -0800 Received: from pao-ex01.pao.digeo.com ([172.17.144.34]) by digeo-e2k04.digeo.com with Microsoft SMTPSVC(5.0.2195.5329); Fri, 20 Dec 2002 23:31:58 -0800 Received: from digeo.com ([172.17.144.18]) by pao-ex01.pao.digeo.com with Microsoft SMTPSVC(5.0.2195.4905); Fri, 20 Dec 2002 23:31:57 -0800 Message-ID: <3E0418EC.B55941EE@digeo.com> Date: Fri, 20 Dec 2002 23:31:56 -0800 From: Andrew Morton X-Mailer: Mozilla 4.79 [en] (X11; U; Linux 2.5.52 i686) X-Accept-Language: en MIME-Version: 1.0 To: "David S. Miller" CC: kiran@in.ibm.com, linux-kernel@vger.kernel.org, netdev@oss.sgi.com, dipankar@in.ibm.com Subject: Re: [patch] Make rt_cache_stat use kmalloc_percpu References: <20021216192212.C26076@in.ibm.com> <20021220.230528.106417474.davem@redhat.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 21 Dec 2002 07:31:57.0350 (UTC) FILETIME=[0AD33C60:01C2A8C3] X-archive-position: 1407 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: akpm@digeo.com Precedence: bulk X-list: netdev "David S. Miller" wrote: > > From: Ravikiran G Thirumalai > Date: Mon, 16 Dec 2002 19:22:12 +0530 > > Here's another patch to use kmalloc_percpu. As usual, this removes > NR_CPUS bloat, can work when modulized and helps node local allocation. > > I can't consider this seriously until the kmalloc_percpu stuff > actually makes it into Linus's tree. Last I checked, Andrew had > a lot of legitimate gripes with the ideas. Kiran's latest (vastly simpler) version looks fine to my eye. From davem@redhat.com Fri Dec 20 23:30:20 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 20 Dec 2002 23:30:23 -0800 (PST) Received: from pizda.ninka.net (IDENT:root@pizda.ninka.net [216.101.162.242]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBL7UJ3v027421 for ; Fri, 20 Dec 2002 23:30:19 -0800 Received: from localhost (IDENT:davem@localhost.localdomain [127.0.0.1]) by pizda.ninka.net (8.9.3/8.9.3) with ESMTP id XAA28616; Fri, 20 Dec 2002 23:29:10 -0800 Date: Fri, 20 Dec 2002 23:29:09 -0800 (PST) Message-Id: <20021220.232909.88324816.davem@redhat.com> To: akpm@digeo.com Cc: kiran@in.ibm.com, linux-kernel@vger.kernel.org, netdev@oss.sgi.com, dipankar@in.ibm.com Subject: Re: [patch] Make rt_cache_stat use kmalloc_percpu From: "David S. Miller" In-Reply-To: <3E0418EC.B55941EE@digeo.com> References: <20021216192212.C26076@in.ibm.com> <20021220.230528.106417474.davem@redhat.com> <3E0418EC.B55941EE@digeo.com> X-FalunGong: Information control. X-Mailer: Mew version 2.1 on Emacs 21.1 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1408 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: davem@redhat.com Precedence: bulk X-list: netdev From: Andrew Morton Date: Fri, 20 Dec 2002 23:31:56 -0800 "David S. Miller" wrote: > I can't consider this seriously until the kmalloc_percpu stuff > actually makes it into Linus's tree. Last I checked, Andrew had > a lot of legitimate gripes with the ideas. Kiran's latest (vastly simpler) version looks fine to my eye. Ok, so once that is in, he can feel free to resubmit the rt_cache_state patch. From werner@almesberger.net Sat Dec 21 01:41:18 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 21 Dec 2002 01:41:22 -0800 (PST) Received: from host.almesberger.net (IDENT:4CWNKCAzITRSRT85bSlJCtDl5c2/1qE3@almesberger.net [63.105.73.239] (may be forged)) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBL9fI3v028444 for ; Sat, 21 Dec 2002 01:41:18 -0800 Received: from almesberger.net (vpnwa-home [10.200.0.2]) by host.almesberger.net (8.9.3/8.9.3) with ESMTP id BAA10503 for ; Sat, 21 Dec 2002 01:45:41 -0800 Received: (from werner@localhost) by almesberger.net (8.11.6/8.11.6) id gBL6m9P17945 for netdev@oss.sgi.com; Sat, 21 Dec 2002 03:48:09 -0300 Date: Sat, 21 Dec 2002 03:48:09 -0300 From: Werner Almesberger To: netdev@oss.sgi.com Subject: TCP connection passing, version 5 Message-ID: <20021221034809.A17934@almesberger.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-archive-position: 1409 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: wa@almesberger.net Precedence: bulk X-list: netdev A very minor update: http://www.almesberger.net/tcpcp/tcpcp-5.tar.gz md5sum d30310aec5e5c22e5fbc178274cd7c46 This one mainly flushes lots of extensions for a testing framework I've made over the last few weeks. The testing framework isn't there yet, and the extensions aren't particularly pretty either. The patch is now relative to 2.5.49, and there's also a patch for UML as of 2.5.47. tcpcp on UML is fun for demos :-) - Werner ----------------------------------- CHANGES ----------------------------------- Version 5 (21-DEC-2002) ----------------------- - upgraded to the 2.5.49 kernel - make "upload" now runs md5sum after uploading - tentatively added -b ("background") option to cpshd - added UML build process in uml/ - added framework for running programs under UML in umlrun/ - mkpatch now exits with non-zero exit status on error -- _________________________________________________________________________ / Werner Almesberger, Buenos Aires, Argentina wa@almesberger.net / /_http://www.almesberger.net/____________________________________________/ From jgarzik@pobox.com Sat Dec 21 12:28:40 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 21 Dec 2002 12:28:47 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBLKSc3v003597 for ; Sat, 21 Dec 2002 12:28:39 -0800 Received: from c-24-98-88-232.atl.client2.attbi.com ([24.98.88.232] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18PqIu-0000jp-00; Sat, 21 Dec 2002 20:33:00 +0000 Message-ID: <3E04CFBE.2060909@pobox.com> Date: Sat, 21 Dec 2002 15:31:58 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "David S. Miller" CC: Manish Lachwani , netdev@oss.sgi.com Subject: [PATCH] tg3 intr masking update Content-Type: multipart/mixed; boundary="------------000409090806070708070106" X-archive-position: 1410 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev This is a multi-part message in MIME format. --------------000409090806070708070106 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Here is a better patch, after I mulled it over on the trip to Atlanta. It is based on the premise, derived from the chip documentation, that 1) intr-mbox-0 register usage is used to indicate to the NIC that the driver is "in interrupt handler". 2) (intr-mbox-0 = 1) == pci-inta-mask + pci-inta-clear + stuff 3) the docs seem to be saying "just use intr-mbox-0 and ignore pci-inta-mask" Based on these three observations, the attached patch updates tg3 for the following changes: 1) Mask ints in tg3_interrupt and unmask in tg3_poll. We not only eliminate several MMIO writes/reads, but we also eliminate all usage of functions tg3_[un]mask_ints(), which bit-bangs the MISC_HOST_CTRL_MASK_PCI_INT bit in the TG3PCI_MISC_HOST_CTRL register. 2) If tg3_main_interrupt_work() returns no-work-exists, we [obviously must] unmask ints in tg3_interrupt. But this is an unlikely case. 3) Simply call netif_rx_schedule(dev) in tg3_interrupt_main_work(). This was a change previously discussed. Eliminates the "poll already scheduled" message which was often actually a bogus message. 4) Because of #2, tg3_interrupt_main_work returns boolean 'work_exists' now. 5) There are some Bugzilla bug reports for tg3 1.2, where NMI watchdog triggers in tg3_timer. I did s/spin_lock_irq/spin_lock_irqsave/ in tg3_poll for safety, because we might be locking against a timer not only an interrupt handler. And just for general paranoia and safety as an "obviously more safe" change. Comments/feedback/corrections/flames requested :) --------------000409090806070708070106 Content-Type: text/plain; name="patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="patch" ===== drivers/net/tg3.c 1.40 vs edited ===== --- 1.40/drivers/net/tg3.c Mon Dec 9 21:32:02 2002 +++ edited/drivers/net/tg3.c Sat Dec 21 15:06:34 2002 @@ -217,22 +217,6 @@ tr32(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW); } -static inline void tg3_mask_ints(struct tg3 *tp) -{ - tw32(TG3PCI_MISC_HOST_CTRL, - (tp->misc_host_ctrl | MISC_HOST_CTRL_MASK_PCI_INT)); -} - -static inline void tg3_unmask_ints(struct tg3 *tp) -{ - tw32(TG3PCI_MISC_HOST_CTRL, - (tp->misc_host_ctrl & ~MISC_HOST_CTRL_MASK_PCI_INT)); - if (tp->hw_status->status & SD_STATUS_UPDATED) { - tw32(GRC_LOCAL_CTRL, - tp->grc_local_ctrl | GRC_LCLCTRL_SETINT); - } -} - static void tg3_switch_clocks(struct tg3 *tp) { if (tr32(TG3PCI_CLOCK_CTRL) & CLOCK_CTRL_44MHZ_CORE) { @@ -2014,8 +1998,9 @@ struct tg3 *tp = netdev->priv; struct tg3_hw_status *sblk = tp->hw_status; int done; + unsigned long flags; - spin_lock_irq(&tp->lock); + spin_lock_irqsave(&tp->lock, flags); if (!(tp->tg3_flags & (TG3_FLAG_USE_LINKCHG_REG | @@ -2052,15 +2037,18 @@ if (done) { netif_rx_complete(netdev); - tg3_unmask_ints(tp); + tw32_mailbox(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW, + 0x00000000); + /* don't care about flushing this write immediately */ } - spin_unlock_irq(&tp->lock); + spin_unlock_irqrestore(&tp->lock, flags); return (done ? 0 : 1); } -static __inline__ void tg3_interrupt_main_work(struct net_device *dev, struct tg3 *tp) +static inline unsigned int tg3_interrupt_main_work(struct net_device *dev, + struct tg3 *tp) { struct tg3_hw_status *sblk = tp->hw_status; int work_exists = 0; @@ -2075,19 +2063,10 @@ sblk->idx[0].rx_producer != tp->rx_rcb_ptr) work_exists = 1; - if (!work_exists) - return; + if (work_exists) + netif_rx_schedule(dev); - if (netif_rx_schedule_prep(dev)) { - /* NOTE: These writes are posted by the readback of - * the mailbox register done by our caller. - */ - tg3_mask_ints(tp); - __netif_rx_schedule(dev); - } else { - printk(KERN_ERR PFX "%s: Error, poll already scheduled\n", - dev->name); - } + return work_exists; } static void tg3_interrupt(int irq, void *dev_id, struct pt_regs *regs) @@ -2102,13 +2081,16 @@ if (sblk->status & SD_STATUS_UPDATED) { tw32_mailbox(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW, 0x00000001); + /* flush the intr clear-and-mask before updating status block */ + tr32(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW); sblk->status &= ~SD_STATUS_UPDATED; - tg3_interrupt_main_work(dev, tp); - - tw32_mailbox(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW, - 0x00000000); - tr32(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW); + if (!tg3_interrupt_main_work(dev, tp)) { + /* if work doesn't exist... */ + tw32_mailbox(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW, + 0x00000000); + tr32(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW); + } } spin_unlock_irqrestore(&tp->lock, flags); --------------000409090806070708070106-- From jgarzik@pobox.com Sat Dec 21 12:34:48 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 21 Dec 2002 12:34:50 -0800 (PST) Received: from www.linux.org.uk (parcelfarce.linux.theplanet.co.uk [195.92.249.252]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBLKYl3v004000 for ; Sat, 21 Dec 2002 12:34:48 -0800 Received: from c-24-98-88-232.atl.client2.attbi.com ([24.98.88.232] helo=pobox.com) by www.linux.org.uk with esmtp (Exim 3.33 #5) id 18PqOs-0000m6-00; Sat, 21 Dec 2002 20:39:10 +0000 Message-ID: <3E04D130.8040504@pobox.com> Date: Sat, 21 Dec 2002 15:38:08 -0500 From: Jeff Garzik User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2) Gecko/20021202 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "David S. Miller" CC: Manish Lachwani , netdev@oss.sgi.com Subject: Re: [PATCH] tg3 intr masking update References: <3E04CFBE.2060909@pobox.com> In-Reply-To: <3E04CFBE.2060909@pobox.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 1411 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Additional note about this change, The NAPI docs mention specific areas where races may occur, and coincedentally so do the tg3 docs. The tg3 docs suggest to me that in tg3_poll, after we unmask ints, we should * flush the MMIO write * check the status block for updates again * tell tg3 to deliver to us an artificial interrupt just in case we raced [IMO preferred versus simply returning 'not-done' in tg3_poll retval] But this is just a theory and not tested yet... From rl@hellgate.ch Sat Dec 21 13:40:35 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 21 Dec 2002 13:40:39 -0800 (PST) Received: from mta3n.bluewin.ch (mta3n.bluewin.ch [195.186.1.212]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBLLeX3v005271 for ; Sat, 21 Dec 2002 13:40:34 -0800 Received: from k3.hellgate.ch (195.186.229.68) by mta3n.bluewin.ch (Bluewin AG 6.5.032) id 3DEBA8F700257DBA; Sat, 21 Dec 2002 22:44:51 +0100 Received: by k3.hellgate.ch (MTA, from userid 500) id E1C3E37F4C; Sat, 21 Dec 2002 22:44:48 +0100 (CET) Date: Sat, 21 Dec 2002 22:44:48 +0100 From: Roger Luethi To: linux-kernel@vger.kernel.org Cc: netdev@oss.sgi.com Subject: VIA Rhine 1.15exp1, patch for testing/discussion Message-ID: <20021221214448.GA19739@k3.hellgate.ch> Mail-Followup-To: linux-kernel@vger.kernel.org, netdev@oss.sgi.com Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="ZPt4rx8FFjLCG7dd" Content-Disposition: inline User-Agent: Mutt/1.3.27i X-Operating-System: Linux 2.5.52 on i686 X-GPG-Fingerprint: 92 F4 DC 20 57 46 7B 95 24 4E 9E E7 5A 54 DC 1B X-GPG: 1024/80E744BD wwwkeys.ch.pgp.net X-archive-position: 1412 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: rl@hellgate.ch Precedence: bulk X-list: netdev --ZPt4rx8FFjLCG7dd Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Main points (more details below): - Tx underrun handling redone - Give chip 10 us (instead of 10 ms) to reset - Force a reset on VT6102 if necessary Minor changes: - use defined constants (especially MII), nuke mii_status_bits - move clear_tally_counters() up so it can get inlined (pointed out by Luca Barbieri) - fix namespace pollution According to the spec and my own tests, the flag previously labeled IntrMIIChange in fact indicates a Tx (FIFO, desc, or buffer, the specs are not quite sure about that) underrun. The flag we've been testing supposedly indicates a Tx underrun, too, but I've never seen it trigger. -- The new code tests for both. IntrMIIChange handling got dropped in the process. Tx underrun is more difficult to trigger than the abort, but I have seen the Tx threshold increase to 0x40 and then to 0x60. With 0x60, I have not been able to produce any Tx underruns. The fact that increasing the threshold fixes the error is another strong hint that the specs are correct in this case. The current driver will not only fail to recognize a Tx underrun, it will actually treat it as an abort _and_ restart autonegotiation (the interrupt status is 0208). Instead of testing for TxError (used to be called TxAbort), the new driver now tests for TxAborted. The autonegotiation issue was due to IntrMIIChange as discussed above. For the first time ever, and only once, I have seen a Rhine-II that refused to reset with the current driver. That was just enough to confirm that the force reset flag actually works, so that's in now. In the same function, I nuked the code that waited up to 10 ms for the chip to reset. I have yet to see a chip reset in 10 ms after it had failed to reset in 10 us. This change may cause a regression, but I doubt it. If you know it does, holler. I've got more changes in the works, this is a snapshot with some of the better tested pieces. Roger --ZPt4rx8FFjLCG7dd Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="via-rhine.c-1.15exp1.diff" --- linux-2.5.52/drivers/net/via-rhine.c.orig Fri Dec 20 20:13:55 2002 +++ linux-2.5.52/drivers/net/via-rhine.c Sat Dec 21 21:09:25 2002 @@ -101,11 +101,14 @@ LK1.1.15 (jgarzik): - Use new MII lib helper generic_mii_ioctl + LK1.1.15exp1 (Roger Luethi): + - [...] + */ #define DRV_NAME "via-rhine" -#define DRV_VERSION "1.1.15" -#define DRV_RELDATE "November-22-2002" +#define DRV_VERSION "1.1.15exp1" +#define DRV_RELDATE "December-21-2002" /* A few user-configurable values. @@ -416,29 +419,15 @@ int mmio_verify_registers[] = { /* Bits in the interrupt status/mask registers. */ enum intr_status_bits { IntrRxDone=0x0001, IntrRxErr=0x0004, IntrRxEmpty=0x0020, - IntrTxDone=0x0002, IntrTxError=0x0008, IntrTxUnderrun=0x0010, + IntrTxDone=0x0002, IntrTxError=0x0008, IntrTxUnderrun=0x0210, IntrPCIErr=0x0040, - IntrStatsMax=0x0080, IntrRxEarly=0x0100, IntrMIIChange=0x0200, + IntrStatsMax=0x0080, IntrRxEarly=0x0100, IntrRxOverflow=0x0400, IntrRxDropped=0x0800, IntrRxNoBuf=0x1000, IntrTxAborted=0x2000, IntrLinkChange=0x4000, IntrRxWakeUp=0x8000, IntrNormalSummary=0x0003, IntrAbnormalSummary=0xC260, }; -/* MII interface, status flags. - Not to be confused with the MIIStatus register ... */ -enum mii_status_bits { - MIICap100T4 = 0x8000, - MIICap10100HdFd = 0x7800, - MIIPreambleSupr = 0x0040, - MIIAutoNegCompleted = 0x0020, - MIIRemoteFault = 0x0010, - MIICapAutoNeg = 0x0008, - MIILink = 0x0004, - MIIJabber = 0x0002, - MIIExtended = 0x0001 -}; - /* The Rx and Tx buffer descriptors. */ struct rx_desc { s32 rx_status; @@ -533,30 +522,31 @@ static void via_rhine_set_rx_mode(struct static struct net_device_stats *via_rhine_get_stats(struct net_device *dev); static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); static int via_rhine_close(struct net_device *dev); -static inline void clear_tally_counters(long ioaddr); -static inline void via_restart_tx(struct net_device *dev); static void wait_for_reset(struct net_device *dev, int chip_id, char *name) { long ioaddr = dev->base_addr; - int i; + + udelay(5); + + if (readw(ioaddr + ChipCmd) & CmdReset) { + printk(KERN_INFO "%s: Reset did not complete in 5 us.\n", name); + } /* VT86C100A may need long delay after reset (dlink) */ if (chip_id == VT86C100A) udelay(100); - i = 0; - do { - udelay(5); - i++; - if(i > 2000) { - printk(KERN_ERR "%s: reset did not complete in 10 ms.\n", name); - break; - } - } while(readw(ioaddr + ChipCmd) & CmdReset); + /* The VT6102 needs to be forced sometimes */ + if (chip_id == VT6102) { + writeb(0x40, ioaddr + 0x81); + } + + udelay(5); + if (debug > 1) - printk(KERN_INFO "%s: reset finished after %d microseconds.\n", - name, 5*i); + printk(KERN_INFO "%s: Reset %s.\n", name, + (readw(ioaddr + ChipCmd) & CmdReset) ? "failed" : "succeeded"); } #ifdef USE_MEM @@ -787,17 +777,17 @@ static int __devinit via_rhine_init_one int phy, phy_idx = 0; np->phys[0] = 1; /* Standard for this chip. */ for (phy = 1; phy < 32 && phy_idx < MAX_MII_CNT; phy++) { - int mii_status = mdio_read(dev, phy, 1); + int mii_status = mdio_read(dev, phy, MII_BMSR); if (mii_status != 0xffff && mii_status != 0x0000) { np->phys[phy_idx++] = phy; - np->mii_if.advertising = mdio_read(dev, phy, 4); + np->mii_if.advertising = mdio_read(dev, phy, MII_ADVERTISE); printk(KERN_INFO "%s: MII PHY found at address %d, status " "0x%4.4x advertising %4.4x Link %4.4x.\n", dev->name, phy, mii_status, np->mii_if.advertising, - mdio_read(dev, phy, 5)); + mdio_read(dev, phy, MII_LPA)); /* set IFF_RUNNING */ - if (mii_status & MIILink) + if (mii_status & BMSR_LSTATUS) netif_carrier_on(dev); else netif_carrier_off(dev); @@ -820,8 +810,8 @@ static int __devinit via_rhine_init_one (option & 0x220 ? "full" : "half")); if (np->mii_cnt) mdio_write(dev, np->phys[0], MII_BMCR, - ((option & 0x300) ? 0x2000 : 0) | /* 100mbps? */ - ((option & 0x220) ? 0x0100 : 0)); /* Full duplex? */ + ((option & 0x300) ? BMCR_SPEED100 : 0) | /* 100mbps? */ + ((option & 0x220) ? BMCR_FULLDPLX : 0)); /* Full duplex? */ } } @@ -1021,7 +1011,7 @@ static void init_registers(struct net_de writew(IntrRxDone | IntrRxErr | IntrRxEmpty| IntrRxOverflow | IntrRxDropped | IntrRxNoBuf | IntrTxAborted | IntrTxDone | IntrTxError | IntrTxUnderrun | - IntrPCIErr | IntrStatsMax | IntrLinkChange | IntrMIIChange, + IntrPCIErr | IntrStatsMax | IntrLinkChange, ioaddr + IntrEnable); np->chip_cmd = CmdStart|CmdTxOn|CmdRxOn|CmdNoTxPoll; @@ -1066,10 +1056,10 @@ static void mdio_write(struct net_device if (phy_id == np->phys[0]) { switch (regnum) { case MII_BMCR: /* Is user forcing speed/duplex? */ - if (value & 0x9000) /* Autonegotiation. */ + if (value & (BMCR_ANENABLE | BMCR_RESET)) /* Autonegotiation. */ np->mii_if.force_media = 0; else - np->mii_if.full_duplex = (value & 0x0100) ? 1 : 0; + np->mii_if.full_duplex = (value & BMCR_FULLDPLX) ? 1 : 0; break; case MII_ADVERTISE: np->mii_if.advertising = value; @@ -1175,8 +1165,8 @@ static void via_rhine_timer(unsigned lon /* make IFF_RUNNING follow the MII status bit "Link established" */ mii_status = mdio_read(dev, np->phys[0], MII_BMSR); - if ( (mii_status & MIILink) != (np->mii_status & MIILink) ) { - if (mii_status & MIILink) + if ( (mii_status & BMSR_LSTATUS) != (np->mii_status & BMSR_LSTATUS) ) { + if (mii_status & BMSR_LSTATUS) netif_carrier_on(dev); else netif_carrier_off(dev); @@ -1320,7 +1310,7 @@ static void via_rhine_interrupt(int irq, via_rhine_tx(dev); /* Abnormal error summary/uncommon events handlers. */ - if (intr_status & (IntrPCIErr | IntrLinkChange | IntrMIIChange | + if (intr_status & (IntrPCIErr | IntrLinkChange | IntrStatsMax | IntrTxError | IntrTxAborted | IntrTxUnderrun)) via_rhine_error(dev, intr_status); @@ -1515,7 +1505,7 @@ static void via_rhine_rx(struct net_devi writew(CmdRxDemand | np->chip_cmd, dev->base_addr + ChipCmd); } -static inline void via_restart_tx(struct net_device *dev) { +static inline void via_rhine_restart_tx(struct net_device *dev) { struct netdev_private *np = dev->priv; int entry = np->dirty_tx % TX_RING_SIZE; @@ -1526,6 +1516,17 @@ static inline void via_restart_tx(struct writew(CmdTxDemand | np->chip_cmd, dev->base_addr + ChipCmd); } +/* Clears the "tally counters" for CRC errors and missed frames(?). + It has been reported that some chips need a write of 0 to clear + these, for others the counters are set to 1 when written to and + instead cleared when read. So we clear them both ways ... */ +static inline void clear_tally_counters(const long ioaddr) +{ + writel(0, ioaddr + RxMissed); + readw(ioaddr + RxCRCErrs); + readw(ioaddr + RxMissed); +} + static void via_rhine_error(struct net_device *dev, int intr_status) { struct netdev_private *np = dev->priv; @@ -1533,7 +1534,7 @@ static void via_rhine_error(struct net_d spin_lock (&np->lock); - if (intr_status & (IntrMIIChange | IntrLinkChange)) { + if (intr_status & (IntrLinkChange)) { if (readb(ioaddr + MIIStatus) & 0x02) { /* Link failed, restart autonegotiation. */ if (np->drv_flags & HasDavicomPhy) @@ -1551,11 +1552,11 @@ static void via_rhine_error(struct net_d np->stats.rx_missed_errors += readw(ioaddr + RxMissed); clear_tally_counters(ioaddr); } - if (intr_status & IntrTxError) { + if (intr_status & IntrTxAborted) { if (debug > 1) printk(KERN_INFO "%s: Abort %4.4x, frame dropped.\n", dev->name, intr_status); - via_restart_tx(dev); + via_rhine_restart_tx(dev); } if (intr_status & IntrTxUnderrun) { if (np->tx_thresh < 0xE0) @@ -1564,9 +1565,9 @@ static void via_rhine_error(struct net_d printk(KERN_INFO "%s: Transmitter underrun, Tx " "threshold now %2.2x.\n", dev->name, np->tx_thresh); - via_restart_tx(dev); + via_rhine_restart_tx(dev); } - if (intr_status & ~( IntrLinkChange | IntrStatsMax | + if (intr_status & ~( IntrLinkChange | IntrStatsMax | IntrTxUnderrun | IntrTxError | IntrTxAborted | IntrNormalSummary)) { if (debug > 1) printk(KERN_ERR "%s: Something Wicked happened! %4.4x.\n", @@ -1593,17 +1594,6 @@ static struct net_device_stats *via_rhin return &np->stats; } -/* Clears the "tally counters" for CRC errors and missed frames(?). - It has been reported that some chips need a write of 0 to clear - these, for others the counters are set to 1 when written to and - instead cleared when read. So we clear them both ways ... */ -static inline void clear_tally_counters(const long ioaddr) -{ - writel(0, ioaddr + RxMissed); - readw(ioaddr + RxCRCErrs); - readw(ioaddr + RxMissed); -} - static void via_rhine_set_rx_mode(struct net_device *dev) { struct netdev_private *np = dev->priv; --ZPt4rx8FFjLCG7dd-- From kiran@in.ibm.com Sun Dec 22 20:32:39 2002 Received: with ECARTIS (v1.0.0; list netdev); Sun, 22 Dec 2002 20:32:43 -0800 (PST) Received: from e6.ny.us.ibm.com (e6.ny.us.ibm.com [32.97.182.106]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBN4Wc3v002191 for ; Sun, 22 Dec 2002 20:32:39 -0800 Received: from northrelay04.pok.ibm.com (northrelay04.pok.ibm.com [9.56.224.206]) by e6.ny.us.ibm.com (8.12.2/8.12.2) with ESMTP id gBN4b3Bv101044; Sun, 22 Dec 2002 23:37:03 -0500 Received: from asterix.in.ibm.com (asterix.in.ibm.com [9.182.12.249]) by northrelay04.pok.ibm.com (8.12.3/NCO/VER6.4) with ESMTP id gBN4arEo049978; Sun, 22 Dec 2002 23:36:56 -0500 Received: (from kirant@localhost) by asterix.in.ibm.com (8.11.2/8.11.2) id gBN4Y6V05388; Mon, 23 Dec 2002 10:04:06 +0530 Date: Mon, 23 Dec 2002 10:04:05 +0530 From: Ravikiran G Thirumalai To: "David S. Miller" Cc: akpm@digeo.com, linux-kernel@vger.kernel.org, netdev@oss.sgi.com, dipankar@in.ibm.com Subject: Re: [patch] Make rt_cache_stat use kmalloc_percpu Message-ID: <20021223100405.B23413@in.ibm.com> References: <20021216192212.C26076@in.ibm.com> <20021220.230528.106417474.davem@redhat.com> <3E0418EC.B55941EE@digeo.com> <20021220.232909.88324816.davem@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20021220.232909.88324816.davem@redhat.com>; from davem@redhat.com on Fri, Dec 20, 2002 at 11:29:09PM -0800 X-archive-position: 1413 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: kiran@in.ibm.com Precedence: bulk X-list: netdev On Fri, Dec 20, 2002 at 11:29:09PM -0800, David S. Miller wrote: >... > Kiran's latest (vastly simpler) version looks fine to my eye. > > Ok, so once that is in, he can feel free to resubmit the > rt_cache_state patch. Ok, I'll do that Thanks, Kiran From anurag_co@rediffmail.com Sun Dec 22 23:36:18 2002 Received: with ECARTIS (v1.0.0; list netdev); Sun, 22 Dec 2002 23:36:21 -0800 (PST) Received: from rediffmail.com (webmail18.rediffmail.com [203.199.83.28] (may be forged)) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBN7aF3v003559 for ; Sun, 22 Dec 2002 23:36:17 -0800 Received: (qmail 18716 invoked by uid 510); 23 Dec 2002 07:38:48 -0000 Date: 23 Dec 2002 07:38:48 -0000 Message-ID: <20021223073848.18715.qmail@webmail18.rediffmail.com> Received: from unknown (203.163.163.9) by rediffmail.com via HTTP; 23 dec 2002 07:38:48 -0000 MIME-Version: 1.0 From: "anurag madhavjibhai barvadiya" Reply-To: "anurag madhavjibhai barvadiya" To: netdev@oss.sgi.com Subject: How to get CBQ algorithm & code Content-type: text/plain; format=flowed Content-Disposition: inline X-archive-position: 1414 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: anurag_co@rediffmail.com Precedence: bulk X-list: netdev Hi, My project is bandwidth limitation,that is i do with the help of CBQ. So please how i can get material & source code about cbq. Can anyone tell me where can I download the document talk about CBQ algorithm. Thanks Xiang Ji From kiran@in.ibm.com Mon Dec 23 05:37:16 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 23 Dec 2002 05:37:22 -0800 (PST) Received: from e6.ny.us.ibm.com (e6.ny.us.ibm.com [32.97.182.106]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBNDbF3v011532 for ; Mon, 23 Dec 2002 05:37:15 -0800 Received: from northrelay03.pok.ibm.com (northrelay03.pok.ibm.com [9.56.224.151]) by e6.ny.us.ibm.com (8.12.2/8.12.2) with ESMTP id gBNDfeBv012258; Mon, 23 Dec 2002 08:41:41 -0500 Received: from asterix.in.ibm.com (asterix.in.ibm.com [9.182.12.249]) by northrelay03.pok.ibm.com (8.12.3/NCO/VER6.4) with ESMTP id gBNDfarO087144; Mon, 23 Dec 2002 08:41:37 -0500 Received: (from kirant@localhost) by asterix.in.ibm.com (8.11.2/8.11.2) id gBNDcmY07202; Mon, 23 Dec 2002 19:08:48 +0530 Date: Mon, 23 Dec 2002 19:08:48 +0530 From: Ravikiran G Thirumalai To: "David S. Miller " Cc: netdev , linux-kernel@vger.kernel.org Subject: [patch] Convert sockets_in_use to use per_cpu areas Message-ID: <20021223190847.G23413@in.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i X-archive-position: 1415 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: kiran@in.ibm.com Precedence: bulk X-list: netdev Hi, Here's a simple patch to change sockets_in_use to make use of per-cpu areas. I have couple of questions though... 1. Was this var made per-cpu just to avoid atomic_t or locking or are there real life workloads which cause too many sock_alloc and sock_releases to cause cacheline bouncing? 2. Is this var required? since we can just sum up all proto->stats.inuse and remove this var altogether? (This var is read only for /proc reporting) Thanks, Kiran diff -ruN -X dontdiff linux-2.5.52/net/socket.c sockets_in_use-2.5.52/net/socket.c --- linux-2.5.52/net/socket.c Mon Dec 16 07:37:53 2002 +++ sockets_in_use-2.5.52/net/socket.c Mon Dec 23 11:48:44 2002 @@ -189,10 +189,7 @@ * Statistics counters of the socket lists */ -static union { - int counter; - char __pad[SMP_CACHE_BYTES]; -} sockets_in_use[NR_CPUS] __cacheline_aligned = {{0}}; +static DEFINE_PER_CPU(int, sockets_in_use); /* * Support routines. Move socket addresses back and forth across the kernel/user @@ -475,7 +472,8 @@ inode->i_uid = current->fsuid; inode->i_gid = current->fsgid; - sockets_in_use[smp_processor_id()].counter++; + get_cpu_var(sockets_in_use)++; + put_cpu_var(sockets_in_use); return sock; } @@ -511,7 +509,8 @@ if (sock->fasync_list) printk(KERN_ERR "sock_release: fasync list not empty!\n"); - sockets_in_use[smp_processor_id()].counter--; + get_cpu_var(sockets_in_use)--; + put_cpu_var(sockets_in_use); if (!sock->file) { iput(SOCK_INODE(sock)); return; @@ -1851,7 +1850,7 @@ int counter = 0; for (cpu = 0; cpu < NR_CPUS; cpu++) - counter += sockets_in_use[cpu].counter; + counter += per_cpu(sockets_in_use, cpu); /* It can be negative, by the way. 8) */ if (counter < 0) From brandy40augusta@crazyfiles.com Mon Dec 23 07:24:14 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 23 Dec 2002 07:24:15 -0800 (PST) Received: from eitp.gov.eg (subnet64.idsc.gov.eg [163.121.64.4] (may be forged)) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBNFOA3v015809 for ; Mon, 23 Dec 2002 07:24:12 -0800 Received: from webmailpro-com.mr.outblaze.com [65.179.9.10] by eitp.gov.eg with ESMTP (SMTPD32-5.04) id A74C720116; Mon, 23 Dec 2002 17:10:04 +0200 Message-ID: <0000187f1c8e$0000633d$00001ade@charlenechoi-com.mr.outblaze.com> To: From: "dawn hellam" Subject: Unlock Every Channel on Your New DSS Satellite System Date: Mon, 23 Dec 2002 10:22:12 -0800 MIME-Version: 1.0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Reply-To: brandy40augusta@crazyfiles.com X-MAILER: Mailman v2.0.4 X-archive-position: 1416 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: brandy40augusta@crazyfiles.com Precedence: bulk X-list: netdev

 

Watch Every Channel on YOUR Satellite System
Regardless of the type or brand

Don't waste $400 - $600 buying AN
After market card when they aren't
guaranteed to stay up.

When you can program your card
yourself in as little as 5-10 min.

Unlock Every Channel on your satellite system

All Sporting Events
All Pay-Per-Views
All Premiums
All NBA
ALL NFL Football
Extra Hidden Channels
100'S of channels
Every Channel is Unlocked


<= b>Find out how= by Clicking here now





Click Linkto be taken 0ff our l= ist



















HJFHS93SLLPO LKKJ903 JF90S93F XXCDFFS







F 4 FG 54G HTHG 65YT G 5YG5GTR THHC83H HDSGF93 GHGGKS98 HSHFS92F SKJS= DHF93








From davem@redhat.com Mon Dec 23 12:17:55 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 23 Dec 2002 12:17:57 -0800 (PST) Received: from pizda.ninka.net (IDENT:root@pizda.ninka.net [216.101.162.242]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBNKHs3v022831 for ; Mon, 23 Dec 2002 12:17:54 -0800 Received: from localhost (IDENT:davem@localhost.localdomain [127.0.0.1]) by pizda.ninka.net (8.9.3/8.9.3) with ESMTP id MAA28292; Mon, 23 Dec 2002 12:16:32 -0800 Date: Mon, 23 Dec 2002 12:16:32 -0800 (PST) Message-Id: <20021223.121632.105420794.davem@redhat.com> To: kiran@in.ibm.com Cc: netdev@oss.sgi.com, linux-kernel@vger.kernel.org Subject: Re: [patch] Convert sockets_in_use to use per_cpu areas From: "David S. Miller" In-Reply-To: <20021223190847.G23413@in.ibm.com> References: <20021223190847.G23413@in.ibm.com> X-FalunGong: Information control. X-Mailer: Mew version 2.1 on Emacs 21.1 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1417 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: davem@redhat.com Precedence: bulk X-list: netdev From: Ravikiran G Thirumalai Date: Mon, 23 Dec 2002 19:08:48 +0530 -static union { - int counter; - char __pad[SMP_CACHE_BYTES]; -} sockets_in_use[NR_CPUS] __cacheline_aligned = {{0}}; +static DEFINE_PER_CPU(int, sockets_in_use); You have to provide an explicit initializer for DEFINE_PER_CPU declarations or you break some platforms with older GCC's which otherwise won't put it into the proper section. From cw@f00f.org Mon Dec 23 15:56:15 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 23 Dec 2002 15:56:19 -0800 (PST) Received: from tapu.f00f.org (tapu.f00f.org [202.49.232.129]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBNNuF3v032668 for ; Mon, 23 Dec 2002 15:56:15 -0800 Received: by tapu.f00f.org (Postfix, from userid 1000) id 37B031ED6D9; Mon, 23 Dec 2002 16:00:48 -0800 (PST) Date: Mon, 23 Dec 2002 16:00:48 -0800 From: Chris Wedgwood To: "David S. Miller" Cc: kiran@in.ibm.com, netdev@oss.sgi.com, linux-kernel@vger.kernel.org Subject: Re: [patch] Convert sockets_in_use to use per_cpu areas Message-ID: <20021224000048.GA14346@tapu.f00f.org> References: <20021223190847.G23413@in.ibm.com> <20021223.121632.105420794.davem@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20021223.121632.105420794.davem@redhat.com> User-Agent: Mutt/1.4i X-No-Archive: Yes X-archive-position: 1418 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: cw@f00f.org Precedence: bulk X-list: netdev On Mon, Dec 23, 2002 at 12:16:32PM -0800, David S. Miller wrote: > You have to provide an explicit initializer for DEFINE_PER_CPU > declarations or you break some platforms with older GCC's which > otherwise won't put it into the proper section. I wonder if "some platforms with older GCC's" will ever have these issues resolved... --cw From davem@redhat.com Mon Dec 23 16:25:16 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 23 Dec 2002 16:25:23 -0800 (PST) Received: from pizda.ninka.net (IDENT:root@pizda.ninka.net [216.101.162.242]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBO0PF3v000784 for ; Mon, 23 Dec 2002 16:25:16 -0800 Received: from localhost (IDENT:davem@localhost.localdomain [127.0.0.1]) by pizda.ninka.net (8.9.3/8.9.3) with ESMTP id QAA28844; Mon, 23 Dec 2002 16:23:52 -0800 Date: Mon, 23 Dec 2002 16:23:51 -0800 (PST) Message-Id: <20021223.162351.40761424.davem@redhat.com> To: cw@f00f.org Cc: kiran@in.ibm.com, netdev@oss.sgi.com, linux-kernel@vger.kernel.org Subject: Re: [patch] Convert sockets_in_use to use per_cpu areas From: "David S. Miller" In-Reply-To: <20021224000048.GA14346@tapu.f00f.org> References: <20021223190847.G23413@in.ibm.com> <20021223.121632.105420794.davem@redhat.com> <20021224000048.GA14346@tapu.f00f.org> X-FalunGong: Information control. X-Mailer: Mew version 2.1 on Emacs 21.1 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1419 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: davem@redhat.com Precedence: bulk X-list: netdev From: Chris Wedgwood Date: Mon, 23 Dec 2002 16:00:48 -0800 On Mon, Dec 23, 2002 at 12:16:32PM -0800, David S. Miller wrote: > You have to provide an explicit initializer for DEFINE_PER_CPU > declarations or you break some platforms with older GCC's which > otherwise won't put it into the proper section. I wonder if "some platforms with older GCC's" will ever have these issues resolved... I still don't have gcc-3.2.1 working properly on sparc64. I hope to have it working soon, but this does mean that 2.6.x cannot deprecate it, whereas 2.7.x certainly can. From meg_trplx@yahoo.com.ar Mon Dec 23 19:16:18 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 23 Dec 2002 19:16:24 -0800 (PST) Received: from localhost.localdomain (host54.200-43-224.telecom.net.ar [200.43.224.54] (may be forged)) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBO3GF3v002255 for ; Mon, 23 Dec 2002 19:16:17 -0800 Received: from localhost.localdomain (vaio [127.0.0.1]) by localhost.localdomain (8.12.5/8.12.5) with ESMTP id gBO3L8Ad002650 for ; Tue, 24 Dec 2002 00:21:09 -0300 Received: (from mailman@localhost) by localhost.localdomain (8.12.5/8.12.5/Submit) id gBO3L7Gr002646; Tue, 24 Dec 2002 00:21:07 -0300 Date: Tue, 24 Dec 2002 00:21:07 -0300 Message-Id: <200212240321.gBO3L7Gr002646@localhost.localdomain> X-Authentication-Warning: localhost.localdomain: mailman set sender to meg_trplx@yahoo.com.ar using -f From: Meg Reply-To: Meg Subject: Fw: Meg Triplex To: netdev@oss.sgi.com X-archive-position: 1420 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: meg_trplx@yahoo.com.ar Precedence: bulk X-list: netdev > >Hola, mis fotos ya estan online, espero que las disfrutes... >Te muestro todo! Te hago todo! > >http://ar.geocities.com/meg_triplex_xxx/ >http://ar.geocities.com/fotos_privadas_triplex/ > >Solo para adultos! > > > > From kiran@in.ibm.com Mon Dec 23 22:47:18 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 23 Dec 2002 22:47:23 -0800 (PST) Received: from e34.co.us.ibm.com (e34.co.us.ibm.com [32.97.110.132]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBO6lH3v003933 for ; Mon, 23 Dec 2002 22:47:17 -0800 Received: from westrelay05.boulder.ibm.com (westrelay05.boulder.ibm.com [9.17.193.33]) by e34.co.us.ibm.com (8.12.2/8.12.2) with ESMTP id gBO6ppf2047720; Tue, 24 Dec 2002 01:51:51 -0500 Received: from asterix.in.ibm.com (asterix.in.ibm.com [9.182.12.249]) by westrelay05.boulder.ibm.com (8.12.3/NCO/VER6.4) with ESMTP id gBO6r3nu028114; Mon, 23 Dec 2002 23:53:05 -0700 Received: (from kirant@localhost) by asterix.in.ibm.com (8.11.2/8.11.2) id gBO6mqf09198; Tue, 24 Dec 2002 12:18:52 +0530 Date: Tue, 24 Dec 2002 12:18:52 +0530 From: Ravikiran G Thirumalai To: "David S. Miller" Cc: netdev@oss.sgi.com, linux-kernel@vger.kernel.org Subject: Re: [patch] Convert sockets_in_use to use per_cpu areas Message-ID: <20021224121852.H23413@in.ibm.com> References: <20021223190847.G23413@in.ibm.com> <20021223.121632.105420794.davem@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20021223.121632.105420794.davem@redhat.com>; from davem@redhat.com on Mon, Dec 23, 2002 at 12:16:32PM -0800 X-archive-position: 1421 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: kiran@in.ibm.com Precedence: bulk X-list: netdev On Mon, Dec 23, 2002 at 12:16:32PM -0800, David S. Miller wrote: >... > -static union { > - int counter; > - char __pad[SMP_CACHE_BYTES]; > -} sockets_in_use[NR_CPUS] __cacheline_aligned = {{0}}; > +static DEFINE_PER_CPU(int, sockets_in_use); > > You have to provide an explicit initializer for DEFINE_PER_CPU > declarations or you break some platforms with older GCC's which > otherwise won't put it into the proper section. > Ok, here's the modified patch... Thanks, Kiran diff -ruN -X dontdiff linux-2.5.52/net/socket.c sockets_in_use-2.5.52/net/socket.c --- linux-2.5.52/net/socket.c Mon Dec 16 07:37:53 2002 +++ sockets_in_use-2.5.52/net/socket.c Tue Dec 24 05:11:36 2002 @@ -189,10 +189,7 @@ * Statistics counters of the socket lists */ -static union { - int counter; - char __pad[SMP_CACHE_BYTES]; -} sockets_in_use[NR_CPUS] __cacheline_aligned = {{0}}; +static DEFINE_PER_CPU(int, sockets_in_use) = 0; /* * Support routines. Move socket addresses back and forth across the kernel/user @@ -475,7 +472,8 @@ inode->i_uid = current->fsuid; inode->i_gid = current->fsgid; - sockets_in_use[smp_processor_id()].counter++; + get_cpu_var(sockets_in_use)++; + put_cpu_var(sockets_in_use); return sock; } @@ -511,7 +509,8 @@ if (sock->fasync_list) printk(KERN_ERR "sock_release: fasync list not empty!\n"); - sockets_in_use[smp_processor_id()].counter--; + get_cpu_var(sockets_in_use)--; + put_cpu_var(sockets_in_use); if (!sock->file) { iput(SOCK_INODE(sock)); return; @@ -1851,7 +1850,7 @@ int counter = 0; for (cpu = 0; cpu < NR_CPUS; cpu++) - counter += sockets_in_use[cpu].counter; + counter += per_cpu(sockets_in_use, cpu); /* It can be negative, by the way. 8) */ if (counter < 0) From davem@redhat.com Mon Dec 23 22:52:13 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 23 Dec 2002 22:52:17 -0800 (PST) Received: from pizda.ninka.net (IDENT:root@pizda.ninka.net [216.101.162.242]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBO6qD3v004322 for ; Mon, 23 Dec 2002 22:52:13 -0800 Received: from localhost (IDENT:davem@localhost.localdomain [127.0.0.1]) by pizda.ninka.net (8.9.3/8.9.3) with ESMTP id WAA29389; Mon, 23 Dec 2002 22:50:48 -0800 Date: Mon, 23 Dec 2002 22:50:47 -0800 (PST) Message-Id: <20021223.225047.131927865.davem@redhat.com> To: kiran@in.ibm.com Cc: netdev@oss.sgi.com, linux-kernel@vger.kernel.org Subject: Re: [patch] Convert sockets_in_use to use per_cpu areas From: "David S. Miller" In-Reply-To: <20021224121852.H23413@in.ibm.com> References: <20021223190847.G23413@in.ibm.com> <20021223.121632.105420794.davem@redhat.com> <20021224121852.H23413@in.ibm.com> X-FalunGong: Information control. X-Mailer: Mew version 2.1 on Emacs 21.1 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-archive-position: 1422 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: davem@redhat.com Precedence: bulk X-list: netdev From: Ravikiran G Thirumalai Date: Tue, 24 Dec 2002 12:18:52 +0530 Ok, here's the modified patch... Ok I'll apply this when I get back from vacation in the new year. From juantolomeo@hotmail.com Tue Dec 24 10:55:35 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 24 Dec 2002 10:55:40 -0800 (PST) Received: from 169.254.24.24 (adsl-63-196-57-64.dsl.lsan03.pacbell.net [63.196.57.64]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBOItY3v019687 for ; Tue, 24 Dec 2002 10:55:35 -0800 Message-Id: <200212241855.gBOItY3v019687@oss.sgi.com> From: "Juan Tolomeo" To: Subject: Argentino! Mime-Version: 1.0 Date: Tue, 24 Dec 2002 11:00:02 Reply-To: "Juan Tolomeo" X-Mailer: Microsoft Outlook Express 6.00.2600.0000ams Content-Disposition: inline Content-Type: text/plain Content-Transfer-Encoding: 7bit Content-length: 365 X-archive-position: 1423 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: juantolomeo@hotmail.com Precedence: bulk X-list: netdev Hola sos Agentino? Te encontre en una comunidad. Me llamo Juan Tolomeo, soy nuevo. Encontre un sitio para llamar a Buenos Aires desde USA muy barato. Solo cuesta 2 centavos el minuto desde USA. Creo que tambien se puede llamar desde arg y espana... Espero que te sirva, el sitio es http://www.TarjetasTelefonicas.com Saludos! [[HTML alternate version deleted]] From werner@almesberger.net Tue Dec 24 17:46:14 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 24 Dec 2002 17:46:16 -0800 (PST) Received: from host.almesberger.net (IDENT:hC7avFxizN7mT6bmOQoYtIPEosHZk6Q8@almesberger.net [63.105.73.239] (may be forged)) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBP1kD3v022182 for ; Tue, 24 Dec 2002 17:46:14 -0800 Received: from almesberger.net (vpnwa-home [10.200.0.2]) by host.almesberger.net (8.9.3/8.9.3) with ESMTP id RAA01538; Tue, 24 Dec 2002 17:50:47 -0800 Received: (from werner@localhost) by almesberger.net (8.11.6/8.11.6) id gBP1oe022378; Tue, 24 Dec 2002 22:50:40 -0300 Date: Tue, 24 Dec 2002 22:50:40 -0300 From: Werner Almesberger To: netdev@oss.sgi.com Cc: chengjin@cs.caltech.edu Subject: snd_cwnd drawn and quartered Message-ID: <20021224225040.A22201@almesberger.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-archive-position: 1424 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: wa@almesberger.net Precedence: bulk X-list: netdev Hi all, how about a little bug for Christmas ? :-) There seems to be a bug in how fast recovery halves cwnd: Linux TCP decrements snd_cwnd for every second incoming ACK until we leave fast recovery. Using the NewReno procedure, recovery ends between the time of the inital loss plus RTT (no further losses), or about one RTT later (if we lose the packet just sent before we detected the initial loss). So, in the worst case (i.e. the drawn-out recovery), cwnd gets decremented for every second incoming ACK during two RTTs. In the first RTT, we get the equivalent of the old cwnd of ACKs, while in the second RTT, we've slowed down, and get only half as many ACKs. So we end up with cwnd being a quarter of its initial value. Now, one could argue that this actually kind of makes sense (i.e. no discontinuity for loss near the end of recovery), but the code quite clearly tries to avoid this case: net/ipv4/tcp_input.c:tcp_cwnd_down: if (decr && tp->snd_cwnd > tp->snd_ssthresh/2) tp->snd_cwnd -= decr; Unfortunately, snd_ssthresh has already been halved at this point, so the test actually does nothing. So I'd suggest to change this to if (decr && tp->snd_cwnd > tp->snd_ssthresh) This was found by Cheng Jin and me in his simulator based on 2.4.18, but the code still seems to be the same in 2.5.53. BTW, ironically, at least gcc 3.1 generates slightly worse code if I change the second line to tp->snd_cwnd--; It may still be desirable to change this for clarity, though. - Werner -- _________________________________________________________________________ / Werner Almesberger, Buenos Aires, Argentina wa@almesberger.net / /_http://www.almesberger.net/____________________________________________/ From chinaalarm@hotmail.com Wed Dec 25 14:32:45 2002 Received: with ECARTIS (v1.0.0; list netdev); Wed, 25 Dec 2002 14:32:47 -0800 (PST) Received: from 110alarm ([61.144.241.34]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBPMUl3v003054 for ; Wed, 25 Dec 2002 14:30:48 -0800 Message-Id: <200212252230.gBPMUl3v003054@oss.sgi.com> From: "ÓÀ»ªÖÇÄÜ" To: Subject: =?ISO-8859-1?Q?=C9=F1=C1=CB=A3=AC=D5=E2=D5=C5=CE=DE=D0=CE=CA=A4=D3=D0=D0=CE=B5=C4=CD=F8?= Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="= Multipart Boundary 1226020642" Date: Thu, 26 Dec 2002 06:42:48 GMT X-Priority: 3 X-Mailer: JiXing V1.70 DesignBy JohnnieHuang X-archive-position: 1425 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: chinaalarm@hotmail.com Precedence: bulk X-list: netdev This is a multipart MIME message. --= Multipart Boundary 1226020642 Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: 7bit ÉñÁË£¬ÕâÕÅÎÞÐÎʤÓÐÐεÄÍø ---ÉñÓ¥SY-995·ÀµÁ±¨¾¯ÏµÍ³ 2002/6/25 ©úÌÒÔ´´å£¬Õâ¸ö×ÔÑǫ̂·ÀµÁÍø·¢Ã÷ÒÔÀ´¹úÄÚµÚÒ»¸ö¹«¿ªÈ«²¿²»×°·ÀµÁÍøµÄ´óÐÍ×¡Õ¬Çø£¬ÓÖÒ»´Î»ñµÃÎÒÊС°2002Ä갲ȫÖÇÄÜÐ¡Çø±ê±ø¡±µÄÃÀÓþ¡£ ÌÒÔ´´åÊÇÎÒÊÐסլ¾ÖÐ˽¨µÄ³¬´ó¹æÄ£µÄÐ¡Çø£¬×ÜÉè¼ÆÈÝÁ¿Îª9800¶à»§¡£ÔÚÕâÀÄã»á¸Ð¾õµ½ÕâÊÇÒ»¸öÍêÈ«×ÔÓÉ¿ª·ÅµÄ¿Õ¼ä£ºÕû¸öÐ¡Çø¾¹È»Ã»ÓÐÒ»ÕÅ´«Í³µÄ·ÀµÁÍø£¡ÌÒÔ´´åÊÇÈçºÎ×ß³ö¡°ÌúÁý×Ó¡±µÄÄØ£¿©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú©ú »¹ÊÇÀ´ÕâÀï¿´¿´°É¡£ÕâÊÇÒ»¼ÒÈý·¿Á½ÌüµÄµ¥Ôª¡£ÔÚ´óÌüµÄÌ컨ÉÏÎü¶¥°²×°Ò»¸öÉñÓ¥SY-995IIÖ÷»ú£»´óÃŰ²×°Ò»¸öÎÞÏßÃÅ´Å£»ÔÚÑǫ̂ÉÏ·ÅÒ»¸öºìÍâ̽²âÆ÷£»Èý¸öÎÔÊҵĴ°»§±ß·Ö±ð·ÅÒ»¸öÄ»Á±Ì½²âÆ÷£»³ø·¿Àï°²ÖÃÁËÒ»¸öÃºÆøÐ¹Â©Ì½²âÆ÷ºÍÑ̸Ð̽²âÆ÷£¬¸Ãµ¥ÔªµÄÖ÷È˸æËß¼ÇÕß˵ÅäÉÏÒ»¸öÒ£¿ØÆ÷£¬Ò»Ì×ÎÞÏßÁªÍø·ÀµÁ±¨¾¯Æ÷¾ÍÐγÉÁË£¬Ò»µ©Óо¯Çé·¢Éú£¬Ö÷»ú¼ÈÄÜÔÚÏÖ³¡×Ô¶¯·¢³öÉù¹â±¨¾¯£¬Í¬Ê±ÓÖÄÜ×Ô¶¯½«¾¯ÇéÎÞÏß·¢Éäµ½ÌÒÔ´´åÎïÒµ¹ÜÀí¹«Ë¾Öµ°à±£°²ËæÉíBPºÍÌÒÔ´´å110CASÁªÍø±¨¾¯ÖÐÐÄ£¬´Ó¶øÍê³É×î¿ìËÙ¡¢×îÁ®¼Û¡¢×îʵÓõÄÎÞÏß±¨¾¯¡£ÓÉÓڸòúÆ·ÎÞÏßµÄÌØµã£¬°²×°¼°Æä¼òÒ×£¬²»ÓÃÀ­Ïß¡¢²»Óÿª²Û£¬ÃÀ¹ÛÓÖʵÓã»¶øÇÒ¾ßÓзÀµÁ±¨¾¯¡¢·´½Ù±¨¾¯¡¢ÃºÆøÐ¹Â©¡¢½ô¼±¾È»¤µÈ¹¦ÄÜ¡£ ÔÚÕâÀïÿ¼Òÿ»§¶¼°²×°ÁËÕâÌ×ÉñÓ¥SY-995ÎÞÏß·ÀµÁ±¨¾¯ÏµÍ³£¬ÕýÊÇÕâÌ×ϵͳ£¬¶à´Î×èÖ¹Á˵ÁÇÔµÈÖΰ²ºÍÐÌʰ¸¼þ·¢Éú¡£´ÓÌÒÔ´´åÎïÒµ¹ÜÀí¹«Ë¾Á˽⵽£¬¸ÃÐ¡ÇøÒý½øµÄÕâÌ×ÏȽøµÄÎÞÏßÁªÍø·ÀµÁ±¨¾¯ÏµÍ³ÊÇÓÉÉîÛÚÊÐÓîÊ¢ÓÀ»ªÖÇÄܿƼ¼ÓÐÏÞ¹«Ë¾²ÉÓùú¼ÊÏȽøµÄÎÞÏßÊý×Ö´«¸Ð¼¼Êõ¿ª·¢µÄÒ»Ì׸߿Ƽ¼¡¢¸ßÖÇÄÜ¡¢¶à¹¦ÄܵÄÁªÍø±¨¾¯ÏµÍ³£¬¼¯Ò£¿Ø²Ù×÷¡¢ºìÍâ̽²â¡¢ÏÖ³¡±¨¾¯ÓëÎÞÏß±¨¾¯µÈ¹¦ÄÜÓÚÒ»Ìå¡£¸Ãϵͳ×î´óµÄÌØµãÊǽ«ÅÓ´óµÄBP»ú·¢Éą̈ѹËõµ½Ò»¸ö2ÀåÃ×X 2ÀåÃ×µÄÑÚĤµç·ÉÏ£¬¾ßÓÐʡǮ¡¢Ê¡Á¦¡¢Ê¡ÐÄ¡¢ÊµÓ÷¶Î§¹ã¡¢ÊµÓ÷½±ãµÈÌØµã£¬¸Ã²úÆ·»¹»ñµÃ¹ú¼Ò¼¶ÖصãвúÆ·µÄ³ÆºÅ¡£¡°±íÃæ¿´À´ÕâÀïûÓзÀµÁÍø£¬¿Éʵ¼ÊÉÏ£¬Ã¿¼Ò¶¼ÓÐÒ»ÕÅÎÞÐÎʤÓÐÐεġ¢Óø߿Ƽ¼±à³ÉµÄ·ÀµÁÍø¡±£¬ÎïÒµ¹ÜÀí¹«Ë¾¸ºÔðÈË˵£¬¡°ÕýÊÇÕâÕÅÍø£¬ÈÃÎÒÃÇΪÌÒÔ´´åµÄÒµÖ÷´´ÔìÁËÒ»¸ö°²È«¡¢¿ª·ÅµÄÉú»î»·¾³¡£¡± ÌÒÔ´´åÖÕÓڳɹ¦µØ×ß³öÁËÌúÁý×Ó£¬¾ÓÈ»°²È«µÃ²»ÄÜÔÙ°²È«£¡ÉñÁË£¬ÉñÓ¥SY-995£¬ÕâÕÅÎÞÐεÄÍø£¡ ¾ÝÁ˽⣬ĿǰÎÒÊÐâù¾°»¨Ô°¡¢Ô°ÁëÐ¡Çø¡¢ÄþË®»¨Ô°¡¢ÄÏ·½Ã÷Ö黨԰¡¢ºÏ·Ê½ðÔó»¨Ô°µÈоɶþÊ®¶à¸öÐ¡ÇøÒѾ­Òý½øÕâÌ×·ÀµÁ±¨¾¯ÏµÍ³£¬Ò»¹²·ÀÖ¹µÁÇÔ°¸¼þÈýÊ®ÓàÆð£¬ÓÐÁ¦µØ´ò»÷Á˵ÁÇÔ·Ý×Ó¡£ ©ú©ú´´ÔìÎÞ¾ÐÎÞÊøµÄ¿Õ¼ä¡¢ÏíÊÜËæÐÄËùÓûµÄÉú»î£¬ÉñÓ¥SY-995ÐÂÒ»´úÎÞÏß¾Ó¼Ò·ÀµÁ±¨¾¯ÏµÍ³£¬ÕæÕý¿ª·Å¡¢°²È«¡¢ÊµÓõÄÖÇÄܾӼҷÀµÁÍø¡£ ¸ÐлÄúä¯ÀÀ±¾ÍøÒ³ http://www.110alarm.com ,Ô¸ÔÚδÀ´µÄÈÕ×ÓÀïÄܸúÄúºÏ×÷! ³ÏѰ¸÷µØ´úÀíÉÌ,±¾ÍøÕ¾ËùÓвúÆ·¾ù¿É°´Åú·¢¼ÛÓʼÄ,ÑùÆ·Èý¸öÔ°üÍ˰ü»»¡£ ========================================================================== ÖÐ×ÊÔ´¹«Ë¾http://www.net001.net ÌṩÓòÃûÏÈ×¢²áºó¸¶¿î;Ö÷»úÏÈ¿ªÍ¨ºóÊÕ·Ñ·þÎñ, ÖÐ;¿ÉÍË¿î¡£ÌØ»ÝÍÆ¼ö£ºÓòÃû+100MÖ÷»ú²¢¸½ËÍ5¸ö10MÆóÒµÓÊÏ䣬ÿÄêÖ»Ðè350Ôª£¡£¡ ʹÓü«ÐÇÓʼþȺ·¢£¬ÎÞÐëͨ¹ýÓʼþ·þÎñÆ÷£¬Ö±´ï¶Ô·½ÓÊÏ䣬ËٶȾø¶ÔÒ»Á÷£¡ ÏÂÔØÍøÖ·£ºhttp://www.lovexin.com£¬¸ü¶àÃâ·ÑµÄ³¬¿áÈí¼þµÈÄãÀ´Ï¡­¡­ --= Multipart Boundary 1226020642 Content-Type: application/octet-stream; name="girl smile.gif" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="girl smile.gif" R0lGODlheABaAPeIAAkMB3c9RRk7VYWWdEAkI0lUVIyiqxkxMVpuXXpxckZK NZmRgxUnKJZtdCMVDba0rmFWUV02OVRwexQyQHmLjXdrX3uSk1pOQEM6NYB+ daCZkhAeEyg5ODVSWqG1sWdvYEdhbJWTi2JeVXeBYKGtlLnMy4mAeGdxaSQj FUZNRkI3JUpcVy5FQGFoaA4ZFmmChS5FU4tpbBMNBl1kTJWij3tVWpaEfi8x IkVCOZ+pqiotJm6AalddVGxgWGBDQ6W7wUhZTXpsZ2tNTKmgmZOkezNUaDQo GIxtcihASXyDgLzEvRofE56EiS80KtPU0FJPRRQ0SI2Ffk9EO2V6fY6cnihG Vk5AMIWWf6Oel3FxaJysf1AvMFxQSRMuP662r6yqo4deY3yTnDY5Nn11azA9 MQsTCCQeFo6NimiDj1VkYUMvLCxGS56yul1APT5VWSgoHR4sJ0E6LxMVCZes rlVpbGRmWxolHFFuccfJxGV5Ym5nXaypqV5XTIZ9bm09QkpfYXhRVdjb1lBK PTBNYj1ZZ3lHTiVBU5yUjd/i35Cjo1VVUq7ExMzOy6eHjSQxJZdzeKq7lbq7 t6Cti46ddZOlq2w3PREgGiE+SZOSha7CvW5TUx02PnpyYnt/aqOro25pZjtO U3lfX6qknoZ5c2Z9h1I3NxgaFUNGRlRaTCVJZDUcGl15f5aNhXKNkxsuO2ph TjVJSkFealBFRj4wIniOll5VQqO4uTQtJlpwcYB5ciMcEG+EhYadoXhDSTdG PYl3bmpbTTJCRqSknpiutnVdVk9XPZqjiiMzLZt4f3BuYUtnbqKAhUFdX6e3 jZmmfh1BXkdJPRIrNIOUkzgxIW2AdJSkg7jJxIlhaUdWXqq+wh04R6u8uiFC Xqu6ogkMDVxwY7a5slt1fIFpYnuMdKGanSs/Pqa2lo6JemR0dDxFJjJMVaCw sDMrIHuLg5iOiTg1K5CKgm98fYOYnTZAOTk9MQwXDnCIjxsuMkVBMRUYD1Jq dnB6YK2wq21ER97f2QAAACH/C05FVFNDQVBFMi4wAwEAAAAh/h1CdWlsdCB3 aXRoIEdJRiBNb3ZpZSBHZWFyIDMuMAAh+QQEDQD/ACwAAAAAeABaAAAI/gBJ aBnojMikAePG5UHwB9SmCQ8nQJygTdsmi6DSoHuBa0oaXwzgbCiTz5QOHUvK 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 BPPlUDcMYUtAAAA7 --= Multipart Boundary 1226020642-- From Notams@beam.screaming.net Fri Dec 27 20:51:59 2002 Received: with ECARTIS (v1.0.0; list netdev); Fri, 27 Dec 2002 20:52:01 -0800 (PST) Received: from mk-smarthost-6.mail.uk.tiscali.com (mk-smarthost-6.mail.uk.tiscali.com [212.74.114.44]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBS4pw3v008719 for ; Fri, 27 Dec 2002 20:51:59 -0800 Received: from [212.74.114.38] (helo=mk-smarthost-2.mail.uk.tiscali.com) by mk-smarthost-6.mail.uk.tiscali.com with esmtp (Exim 4.10) id 18S2H6-000PeF-00 for netdev@oss.sgi.com; Fri, 27 Dec 2002 21:44:12 +0000 Received: from [80.46.163.216] (helo=OpusOne) by mk-smarthost-2.mail.uk.tiscali.com with esmtp (Exim 4.10) id 18RuU1-0002sf-00; Fri, 27 Dec 2002 13:25:01 +0000 Message-ID: <4117-2200212527132622466@OpusOne> To: "takeoff" From: "flight@beam.screaming.net" Subject: The FlightTimes Date: Fri, 27 Dec 2002 13:26:22 -00 MIME-Version: 1.0 Content-type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id gBS4pw3v008719 X-archive-position: 1426 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: Notams@beam.screaming.net Precedence: bulk X-list: netdev Hello, Please pardon my intrusion. Could it be possible that you have an interest in aviation? I am writing to you to offer you a subscription to The FlightTimes An email based newspaper. It is read around the world by the aviation industry obtained by invitation only. It is for Free.. My simple question..... My I send you a free sample? You will not be bothered again; I will only contact you if you answer to this email. Thank you for your time. James van Etten, editor The FlightTimes London, UK +44 207 603 5340 flight@beam.screaming.net Finally you can check out all the above and have an instant look at an older issue of my papers on our website; your sample however will be the latest issue. Http://myweb.tiscali.co.uk/londonmorningpaper Scratch with the chickens or fly with the eagles A Publication by The London Morning Paper Group 166 Blythe Road West Kensington - London - W14 0HD United Kingdom From garzik@gtf.org Sat Dec 28 12:49:27 2002 Received: with ECARTIS (v1.0.0; list netdev); Sat, 28 Dec 2002 12:49:30 -0800 (PST) Received: from havoc.gtf.org (havoc.daloft.com [64.213.145.173]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBSKnP3v019957 for ; Sat, 28 Dec 2002 12:49:27 -0800 Received: by havoc.gtf.org (Postfix, from userid 500) id DAC4C666F; Sat, 28 Dec 2002 15:54:14 -0500 (EST) Date: Sat, 28 Dec 2002 15:54:14 -0500 From: Jeff Garzik To: linux-kernel@vger.kernel.org Cc: netdev@oss.sgi.com Subject: sexy sendfile? Message-ID: <20021228205414.GA30388@gtf.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.28i X-archive-position: 1427 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev IIRC from a post a month or so ago, Linus mentioned that current 2.5.x no longer had deadlock issues for file->file sendfile, which leads me to wonder aloud, Does this mean file->file sendfile can now be official supported in 2.5.x? And more interesting, [thus the CC to netdev] can we support socket->socket sendfile? Jeff From deian@blue-edge.bg Mon Dec 30 03:48:29 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 30 Dec 2002 03:48:39 -0800 (PST) Received: from blue-edge.bg (blue-edge.bg [195.24.36.114]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBUBmP3v022277 for ; Mon, 30 Dec 2002 03:48:27 -0800 Received: (qmail 5202 invoked by uid 505); 30 Dec 2002 11:53:25 -0000 Received: from deian.internal.blue-edge.bg (HELO deian) (10.5.0.11) by 0 with SMTP; 30 Dec 2002 11:53:23 -0000 Message-ID: <002d01c2affa$0e76d9b0$0b00050a@deian> From: "Deian Chepishev" To: Cc: , Subject: 3Com PCI 3c905C Tornado problems (no network sometimes) Date: Mon, 30 Dec 2002 13:53:23 +0200 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_002A_01C2B00A.D183EA00" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.50.4920.2300 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4920.2300 X-Virus-Scanned: by AMaViS perl-11 X-archive-position: 1428 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: deian@blue-edge.bg Precedence: bulk X-list: netdev This is a multi-part message in MIME format. ------=_NextPart_000_002A_01C2B00A.D183EA00 Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: 7bit Hi all, for about a year and a half i have problems with network cards 3Com PCI 3c905C Tornado here is the description of the problem: I have the following hardware: MB EliteGroup P6ISAII with chipset Intel815 LAN CARD 3Com PCI 3c905C Tornado CPU Intel PIII 733 and 933 Sound Embeded Video Intel815 Embeded Log entries while loading driver 3c90x are: Dec 19 16:03:35 oboroten kernel: 3c59x: Donald Becker and others. www.scyld.com/network/vortex.html Dec 19 16:03:35 oboroten kernel: 01:03.0: at 0xc000. Vers LK1.1.18-ac The tower is ATX. when i shut down the computer from the button and after start it the led which shows that nic is connected to 100Mb mode (I have leds for 10Mb, 100Mb,ACT) start blinking each second the same do and the led on the switch (the switch is 3COM office connect DualSpeedSwitch 16). and when linux boots i have no network at all. I have attached logs for notworking and working situation. In order to fix the problem i must unplug the power cord(there is no other way to copletely stop powering the computer) wait a few seconds plug it again and start the computer from the button and check to see if the led is blinking if yes reapeat this action as much times as is necessary for the led to stop blinking. The interesting part is that if the NIC is blinking and i load windows the things are working just fine i think that windows driver has some initialisation (the led stops blinking) which the linux driver does not have but these are just suppositions. Notice that i have some lines in the messages log "working situation" which looks like this: Dec 30 12:52:01 oboroten kernel: eth0: vortex_error(), status=0xe081 this appears when i execute the following command: ping -f some.host i have running 4 machines with the same HW configuration and the problem is reproducable on all of them. I have noticed this problem since kernel 2.4.2 and it is here by now. on the machine that i use for testing these things i have kernel: Linux xxxx.xxxxx.xxxxx 2.4.18-19.8.0 #1 Thu Dec 12 05:39:29 EST 2002 i686 i686 i386 GNU/Linux but I have and machines with 2.4.19 which has the same problem. I have this problem often when we have power failure and my boss is not very happy the servers to be down when i am not in the office after power failure. I have executed and the diagnostic programs mii-diag and vortex-diag their logs are attached to the mail too. Best Regards, Deian Chepishev ------=_NextPart_000_002A_01C2B00A.D183EA00 Content-Type: application/octet-stream; name="messages-not-working.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="messages-not-working.zip" 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 YKq6YWo1TdMUva7kB4OLLgPzB8WKA0hLCQirtvOcLVbgh1Ae3slst0pOxvnz XlbGb+Fm4TrzAVOajPDoefmz858Gqz8Odoq2ACFhXVKfsppwS+WiQhaPbS+E ljNDP2mzYEc3aiadzM5pQZYMpaYiZfUnOKk/w8ldH/JClaqxxKlNwiTy03GN EvPsMQuyVSKNKFNPxLvJb04DcR7kkmv431dQxTNYp4xzOrIXY1fZlKuiiX0b L9aixVwXC/tyu9YgbxEeeQgG2dPrvgbZeAZSDC2RgfUVFF2+Q5nL42Ijhn4a +PQ7lRb2zwMhZV2r46uSha2Ox1CesTq+IvKc1bEsmofB75RVfqGYvfEo0jF1 tjjTFgkreIhWfqEVf/nHAx5FW4DMg0ZPItXX3LvU19+7mNIqdSi4d6lveO9S 38zepf7SvUt9M1vUxpo0N9anub5SHQrS3Niwx72xGZobL6W5sRmam2vS3Fyf 5sZKdShIc3PDNDc3Q3PzpTQ3N0KzIa9H82NyRWlurlSHYjQ/XZ/1aH4abyWa CzbtaZqfrsdqNCtr0qy8IEy6WiUK8qxsmGdlMzwrL+VZ2QzP6po8qy/gWVmp EgV5VjfMs7oZntWX8qxuhmdtTZ61F/CsrlSJgjxrG+ZZ2wzP2kt51jbOc5BE 5F7+U6/L/6KnBoP4Gc8Y92Ne9lwrcmPwWeBM4jDwPs9PfHxxbvUhJm7pRrb3 Rfrh8m1j+mEAfMnOPqXRUz/dsyzT7vyeVXDpcf5L1x4I6o8KPlnO47f/+88/ TflNoVufvuneLxWtWBcHex77U/x5tq+W5KahK570bC29a9vBT4nw6GQuQnLL 0S8wVaf2X2FcbdafhlvBP2Ushadv6eQVvjxb84cyPmVvi19ywREnDmfWFfmh 7+QLKW8chMJFJLz/kZ1MgPmMDgtALeVx7Q9FOTdrvjekdzW6idecWUwpqw6U 0oA8qDTuyw8LWorR8enQopfn2XgoFKwotNIq/IJorfIw+cLYQLjW2HC41thM uNZ4abjW2Ey4di886wfFc+OV5y3xbBwUz9orz1vi2Xzl+bvguf7K83fBc+OV 553zvGboyXhB6ElprlSJgjw3NpsFa2wm9mS8NPZkNL5ZnlX5oHjWXnneEs/K K8/Fed5QkHHNWLLxgliyqq5UiYI8bziYbGwmmGw0v2OetVeevwue9Veevwue jVeevwuezVeevwue6688fxc8N155/v/2zmY1qiCIwq8yy7hISHfVuT+CaxEk A+LOhSgGGdBETALm7dWJi4lOhqo6Z0LAeYDbnPB139R8t6v7cTn789ONzYFf Lj+vLo6+ffj6/uZi9ePZO8y/d4lcnV+tr7i+XJ+QsN4hcnN1/v2uIenj7eL1 8uWrs6Ob1acX9+84vT/24vh4/cSfQd8sl2/vnlwszxbX17ft4Ufj02/7c+Hp N59kQkSm365Alc/iu8ZLTL/wn/bQ9NuVozz9HouznT4pznbgvCfO7cD5v+Dc nxTnfuC8J852WM+Pzbn3XeVho8rDzbE3ysO2rTzsfz061KZfJ77Wm59kQsSm Xy9/rW9t6/zrg2T+9YGcf33QzL+xCJpoCDakQgRBj9rfAX3UcB5ZzqOG81Tk THzGtSEVIsh5EnOeNJwnlvOk4TwXORNaycZUiCDnWbn9Ztd4Oc4zy1mjlaxY HxpTH06pEDHOJq4PTVMfGlsfmqY+tFbkTDQF25wKEeTcxJybhnNjOTcN517k TDQFey5EkHPX/n+2ruHcWc5dw9mKnImmYG+pEEHOJl7PpuFsLGfTcPYiZyc4 91SIIGcXc3YNZ2c5u4YzipyJo73dUiGCnCF+b0PDGSxnaDgXhZgxZ3t7KkSQ 8yDmrPFhxvow0/gwK/owI3yYIxUiyHkUv7c1PsxYH2YaH2ZFH2aED/MhFSLI WezDTOPDjPVhpvFhVvRhRvgwH1MhgpxnMWeNDzPWh5nGh3nRhznhw3xKhYhx drEPc40Pc9aHucaHedGHOeHDfE6FCHJu2vXsGh/mrA9zjQ/zog9zwochFyLI WezDXOPDnPVhrvFhXvRhTvgwtFSIIGcTc9b4MGd9mGt82N5ujfPyrXFevTXu n33M+7g1zovnRzp1fiR6KkRsadTPj9z+KReapQF2aUCzNFBUxSBUMSwVIsjZ ta9AaFQxWFUMjSpGURWDUMXwVIggZ2h/okCjisGqYmhUMYqqmDnpCEiFCHIW q2JoVDFYVQyNKkZRFYNQxRhSIYKcxVsnoVHFYFUxNKoYRVXMnICDMRUiyFms iqFRxWBVMTSqGEVVzHTkYkqFCHIWq2JoVDFYVSzpyEWxtQZUaw3mVIgIZ4hb X6FprQHbWgNNa82vYVqRM6GKh1yIIOcm5tw0nBvLuWk49yJnQhUPLRUiyLkr Pcmu8XKcO8u5azhbkTPhw4aeChHkbOL1bBrOxnI2DWcvciZ82GCpEEHOLubs Gs7OcnYJ51aswxpRhw2eChHj3MR1WNPUYY2tw1q5DvsJUEsBAhQAFAACAAgA iWieLUGLKL+4GAAASOsAABQAAAAAAAAAAQAgAICBAAAAAG1lc3NhZ2VzLW5v dC13b3JraW5nUEsFBgAAAAABAAEAQgAAAOoYAAAAAA== ------=_NextPart_000_002A_01C2B00A.D183EA00 Content-Type: application/octet-stream; name="messages--working.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="messages--working.zip" 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 1CnW3PDCwpezaRBd0k2JB8DgGbxiPcArD42EcqJadvW2FuGw0o2hA9BhCxx3 xyLcM5gUjpZK3aTDnrYa9xqRzb3SFthZIoU8C10n57zz2Z8NzNjLznqpS6/S ZAhG1XwhcC7ykYz5WHt2Z1iUTid59eH2Vww4OsoS0IXK6bKY01ancKBEyT6P TEb5gVHmoZkdBT4Kvvr1UB5v88LvxvRYOYn0IeCqeiYTXOznesHDbeqzjRZs ETjqqprO2l897n9P4m9Tnh8fJx7dgs2j6oL/EUTVdvP+mSW+Sxs9KU3JCf/u LRRnPrc8ma/x8nKZpoEfI0dznKd9Hc3FpCoTX2+Un2QVn2zoC5gwFaT4tB+x /Ja2LDnSJl4iqsKZCW0ye74Jvj+uLGjGty53pKLFtSuvSstS2vL+3J6VI0Zj e7If9hznZyO1qMRztSn4JCo95BOZD/pEGweImnUS8Ed7i8/0jDYOSVWiPn8B 8/pLU0lX/NXQanqC+1RWyNq6WdMbjWabWSlPVaBhmO2mWTNNU7eaenY5RyGu 1PLKdnWCeK2C8Pk+VHvlQ9G/m9pidZ5zyU7EKta4OyoXvym4U6WNp+Xdb/vS DV2Mxy/SnVSqvFUbO272z/E8kbvucYtoEI2bdmozbB7EoZfMalRAz2fCT80H +mP4QNWl0ZYu8fuyGITV8D/YnrNV/w+J8+8QX10pvxBS0g0EkQgFp9JbU6Vl 7laHsq8zzhskIBE3M5sOgiBFfVv9qz+7M+lM/0Ir0T+puNJMVr3WoJuBMpWE Gqqu1wxUV838+ugpaT39Ac10I/5yd1Z320ZyS4ZtC/boWZZjiwp/9xyzctZU 0LvON9tWyBsGsSo4ujsISC/HfpK9elgbN+7SyHhgeMpkqcMim0akb2HnzbrB WI4B2ynrnvieuFBFtTk6ftaubP3J6UR9Oxt99a1kEfXn2oD64/OH+naEtv70 HKK+hS3Ete6zwuabeDt7kDOJqG/XTHx1ZIckH+rWlVCx1gTlPV+kp29n57H1 wKBWY1kWBD5ThWw0X/pzzJe+PfO1HUnYPJ0NmVH96eahqW1fsW9bR29J0z5b RxayzDld0i3rmi1ph1eZfgky3XqV6VeZfpXpv5VMt1+UTFuvMr1rma6/yvTf XaZ19mqoXw31q1D/vYRafxXqV6F+Feq/l1AbL0qo669C/ep+FyLUG4/v7GCh r+jaMo+uEVH/pHngq5s8oamzTbtPqhW+PFh6fLeNO/MDteH47/burkevrLzT +FfxIUjQ7PW2X6JOpByNkCZBiibSSKMRctqGtkTarbYh5NtPuRkaGuzyU7Xu qtp1P78TxAEuqva9rnX91/v3O0i/ffn+6xevf/f6w003L37x+3ff/eJ/l/Jv 6y9+9+Y/Pvy3X3z4H737xVf//d2HKw6+evGT33/zYcvRh0sCfvq3v1wNaLv1 vm13+3jbrTFtt8633TrTdmtM260xbfevfsy7//yPf/jwH5/fAf+3/+ibO/6j O2mvTmivfTHdrutUu75EezVGe3VWe/Et6tHq3E9V56bOD1Tnoc5XUedVna+i zps6X0Wdd3V+9Dr3gCFcDx7C9ZghXJ8fwvWZIVyPGcL1Ryj0LUD3CaCP+dZW p1rbJcv5PQboPgv0861zXU5V56rOD1Tncqo6N3V+oDpXdb6KOjd1voo6d3W+ ijoPdb6KOq/qfBV13tT5Kuq8q/Oj13ncs85jos7HnX6JC+s8gjcajJg6j9k6 j0eo84UT3CN40+yImeAe8xPcY2aCe8Rtmg0q9hpQ7DX2HvVP/7y7FXudL/Y6 U+w1ZjVjfYRC39J7rxMXewe0tjrV2i5ZzVhjeu91tvd+xnUup6pzU+cHqnNV 56uoc1Pnq6hzV+dHr/MeELj34MC9xwTufT5w7zOBe48J3HtMoQOesSpH8DG1 mFemyvwrU2XmlakS88pUORRaoZ9LobtCI1qhEa3QiFZoRCs0ohUa0QqN6GdV 6Brw9E5dYomuMU/v1Pmnd+rM0zt1CSl0XRRaoRVaoU9V6KHQ11HoptC6boXW dSs0ohX6XoX+9JaxOvFqaBvzra1Otbb6QEGh3re1fXrLmJ4b0Aqt0BSt0IhW aEQrtEIrtEIr9J8LvSv0oxU64PGdWoOJjnl8p84/vlNnHt+pMY/v1JgrumvA Fd21Bxc65oruOn9Fd525orvGXNFdY64kqgG3l9Q1uNAxt5fU+dtL6sztJTXm 9pIac2q2BpyarXvwODrm1GydPzVbZ07N1phTszXm1GwLCGMteMKkxYSxNh/G 2kwYazFhrMWEsRYQxlpwGGsxYazNh7E2E8ZaTBhrMWGsBYSx1oOJjgljbT6M tZkw1mLCWIsJYy0gjLU1uNAxYazNh7E2E8ZaTBhrMWGsBYSxFnyFSYsJY20+ jLWZMNZiwliLCWM9IIz1JbbQPSaM9fkw1mfCWI8JY30JL/Tv3v72zTc/+fbl f/7699+8+eNP/884xv+9+UNev3v35u03L95++/qb169e/Obtdy9+/+71dy++ e/v2/Yv/+O8X//NX/+OX//qT37959Y/LTz/9s1/8/Off/4v//0P/7Ve/+l9/ +pcvfvWvL96//++//UgBGbEHv5bdYzJin8+IfSYj9piM2GMyYg/IiL0HdzQx GbHPZ8Q+kxF7TEbsMRmxB2TEHpwRe0xG7PMZsc9kxB6TEXtMRuwBGbEHT9j1 mIzY5zNin8mIPSYj9piMOAIy4gjOiCMmI475jDhmMuKIyYgjJiOOgDA2aizR IyaMjfkwNmbC2IgJYyMmjI2AMDaCV09HTBgb82FszISxERPGRkwYGwEPfYwR XOiYhz7G/EMfY+ahjzFiCj0UWqHvUOiA4dUIHl6NmOHVmB9ejZnh1YgZXo2Y 4dUIGF6N4OHViBlejfnh1ZgZXo2Y4dWIGF6Vf1imh1cf/xn377pv+3l3KPTF f9qnC/25H3FroT/+j+9c6Nu+xt0KXQMKXYMLXWMKXecLXWcKXWMKXWMK3QMK HTrXfdvPu1uh+3yh+0yhe0yhe0yh14BCh4ax237e3Qq9zhd6nSn0GlPoNabQ e0Ch9+BC7zGF3ucLvc8Ueo8p9P5ghf7Tj/mX16/evHzx7vXvXn/1/sMy+fs3 N3/f94V58fXLb79fM//Zi3/+/fu337z+7dv3b25Kd8GPfvX6Dz//p/96+f6r r1+9/e2vP/zIt/9Yx7pc/Ev98pcv3t985XcfvtfNr/P1y3d//uO2vb6a/ON+ 8+abN+++/tzfVQLya1li2Sgx+bXM59cyk19LTH4tMfm1BOTXEpxfS0x+LfP5 tczk1xKTX0tMfi0B+bX04ELH5Ncyn1/LTH4tMfm1xOTXEpBfS3B+LTH5tczn 1zKTX0tMfi0x+bUE5NcSnF9LTH4t8/m1zOTXEpNfS0x+vf0O+U9dGFduuff9 ggvj1jv9EpdcGFfuds3/Zy+MK/e75r/+fWs7pi6MKzEX7JeAlxTKxEsKgZ+4 3/cT3wr0MQP0xS8pHD8A/fKmQvsyXn7xIMWuASOsGjzCqjEjrDo/wqozI6wa M8KqMSOsGjDCqjW40DEjrDo/wqozI6waM8KqMSOsGjDCqsEjrBozwqrzI6w6 M8KqMSOs2hMUuin0OQr96eD96f/7C4L3Nt/a6lRrqw/U2up9W9ung3dUnQOm TGLvoykx99GU+ftoysx9NCXmPpoScx/N5/6UW4BeJ4De51tbnWpt9YFaW71v a7sF6KA6B0yN3f/eoU984pipsTo/NVZnpsZqzNRYjZkaawGj6Ba8z67FjKLb /Ci6zYyiW8woui0KnaXQtbcfT479pj1QtQPmTFrwnEmLmTNp83MmbWbOpMXM mbSaoNBNoR+t0AFzJi14zqTFzJm0+TmTNjNn0mLmTFrMWLoFjKVb8PaDFjOW bvNj6TYzlm4xY+kWM8ZqAWOs+18n9gmiY8ZYbX6M1WbGWC1mjNVixlg9IHrH XidWYq4TK/PXiZWZ68RKzHViJeY6sZsfU267TmyduE7sxz/7r64TWz92nVj9 m38akBFjrxMrMdeJlfnrxMrMdWIl5jqxEnOdWPnMhVmfnp3tM8stx51+ictm Z/u9l1s+nl96zHJLn11u6f0R6nwh0MFjgR4zFujzY4E+MxboMWOBRyn0wwDd l1MB3QD90EB3QH8AurT648nZvSeiuqAa1VdI9bH/+afU76FeayKoK6hBfY2q HuXHqj62LxJWe6j2o420xj277zHRfbc7/RIXdt8juPseMd33mO2+xyPU+UKg R/DUyYgBeswDPWaAHnGZbDxfqDuorwvqDuoLM1lQte+5B71P7EHv406/xIVU r8FUx+xB77N70Pv6CHW+kOo1WNUxG2H6/EaYPrMR5vI3Uz6v6vX5Qr2C+rqg 7qC+UNWqnabat0+fBBV6u2f3vU1039udfokLu+8tuPveYrrvbbb73h6hzhcC vQUDvcUAvc0Dvc0AvcVlsu35Qr2DGtRXCPUFmSyo2vs9qd4nqD7u9EtcSPUe TPUeQ/U+S/X+CHW+kOrgI/w95nhJnz9e0meOl1z+EunnVb0/W6jHciqoO6hB /ShQX6Bq1U5T7dunT4IKHXBxbT+CCx1zcW2fv7i2z1xc24+YQh+PUOhbPD1x E/Uo862tTrW2H3m6xrW2et/Wdounn3Gd66nq3NT5oTvupuO+bJD1jKFuoL4u qKWxSwdZMdUey/2oHssE1f1Ov8RlVI8lluqxhFB94Z/2aarH8gh1vozqscSq esTcwjLmb2EZM7ewjCVM1Y9S7AeCeoD6uqDuoL5M1aqdp9q3TpNFFbrcs/su E933eqdf4sLuu8QuZ336592t+y6z3Xd5hDpfCHQJzmQlBugyD3SZAbrEZbLy fKHeTgV1A/VDQ91BfWEmC6p2vSfVdYLq/U6/xIVU12BV1xiq6yzV9RHqfCHV wRfNj5hLRMf8JaJj5hLRUeNUXZ8v1MepoG6gfmioO6gvVLVqp6n27dMnQYUO uLVqBN9aNWJurRrzt1aNmVurRsytVaM/QqFv8fTEpYNrQGurU62tPlBrq/dt bbd4uicAugP6svuBnzPV5VRUN1Sj+lGo/vyQ+hlDXUF9XVA3UF84pH7GVDdU UzVV51J1BzWoqTqZqgeqBXCqflRVT/4W15E3SjU3IHAIHMkCR6kmByQOiSOb rM0OkDVZp5O16QFYk3U2Wa+oRjVZZ5P1BmtYk3UyWe+oNl9G1tlkfdzlt7iS r1LHcarOrursRBgRZpbqkx3I66gWYUSYeawLrGFN1slkXVGNarLOJusGayNr sk4m645qVJN1NlnbdieDk3U2Wd9p2911dHVtPyQYCUZXl6qra8ciwAgwxiXJ ZH1Y8SNrss4maxdtoJqs08naih+syTqbrF20cWVUe63mGmR9rhW/HdYmzMh6 muq7XbRxHV9lDMeB9HUiTLIIM4bFAViLMNlk7TiQWUSyTidrt3CTNVlnk7Xj QGRN1ulk7TgQrMk6m6xXskY1WWeT9Z1u4cYAs6V7Kfpkc8Y2s6Ca2QKwtqEc 1mSdTdbmjK0EkXU6WQ9Yw5qsk8nanLEITtbpZL3BmqzJOpmsz/Vy44HqR6L6 SrS1bec68bNp4A/dwDfayq6tbXMd2JVRvaP6CmT9d6u3IwDrEbwpY8RgPWax HjGFHgFYj+CpoxGD9ZjHesxgPeJk/RjFvoXqMUN1PxXVDdWofhSqL5D1c8Z6 nArrDdawJutpqtdTUd1RjWqynsd6g/V1Yd1gnV/W+11+i6tDYINAdgSOanJJ XpVXk+XVow5Yy6tknUzWK6rJmqyzyfpck0sD1rAm62mqd7JGNVlnk/UBayNr ss4l67ag+iplrcPSYT3DDqssdoUbXhheZBte3HA97DTDNV1n07WlO1jTdT5d b7jGNV1n07XFO1jTdT5dW72zekfX2XS9W76D9aWfOE+7r0s1WSymiqnJYmpd Gp/hWkzNFVPr0uka1nSdTtf2bBh+0nU6XbvLD9Z0nU/XLvMTw+k6na53WMOa rtPpen7PRqLP0UbRzRmVSC+50ksb1ZKf9CK9JEsvbTS6pmu6zqZr1y/QNV3n 07WL0+martPp2vULdE3X+XRtKZ+u6TqdrueX8oN/pb6ax5Mg9DTJepq+mseD tYFBtoFBXx3JwTVdp9O1Izmwput8unaNqnk8uk6na0dy6Jqu8+n6wDVd03Uy XW/nukZ1u2ObS1SK4V0JyUkPm62HHSd7V2KDNawNiAK49q4Eruk6m65P9q6E eY4Hx7rC+gp0vbtDx/wlXafTtedwYE3X+XTt7A2u6TqdrruLPf/yObZqyU8v p5dL1stt1VPylgYMSrINSrZqyQ/XdJ1N182SH6zpOp2uW6FrXNN1Nl17NsOk GV3n07UlP1zTdTpdB1y3p+1r+8+w7e9eeDMCFVXTRdXdC2+4put8uj7XzdAr rKVwug7g2s3QdE3X6XTthTdY03U+XTsVIYbTdTpdOxVB15d+4jTt/oZkMVW7 F1OTxdQbrsVUXIupuWLqzV8kpsKarvPp2uFds0p0nU3XxeFdWNN1Ol0Xh3dx TdfpdO1EhNE1XefTdXOx518+RznZjtOqm5NepJd5rC3lw1p6yZZeih2nuKbr fLq2lO8tP7rOp2tL+bim62y6XhdYS+F0nU3Xq6V8XNN1Ol1XS35/+RxtseRn Z4NeLlkv15zehbVBSbpBSXN616CErvPp2pIfXdN1Pl1b8sM1XWfTdbHkB2u6 Tqfrk53edSrf6JquA7CeX/LL8zX62oUX4UV4SRZe+uq5GOFFeEkWXvpqJZ+u 6Tqfrv/ur1kDuF6DuV5juF5nuV5jKr0GcL0Gc73GcL3Oc73OcL3G6foxin0L 1usU1jusYX2FWF+g62fN9YFrXNN1Ml1vC6yvC+sG6yvQ9VamG12er7Eu5wov m15OeBFeprEuwgushZds4WUt5VRcd1wblND1PNaVrumartPpuuH6urguBdhX 4OuOazGcr9P5euBaDqfrbLpe59uctq/tP8O2vxW7TilNVM0WVbdi16khKF1n 03W1cYOu6TqdrmvBNa7pOpuubdyQwuk6n66bfZZ0TdfZdN1hDesLP7H0opd7 jr3cfhiUXFkvt8I6/6BkP+wmN9lA1+l0bTM5rOk6n65tJr8yriuur0DXK6zp mq7T6dqt63RN1+l07fwLXV/6ie0KuL4uot38QboIXYREnyvR33DtiByu6Tqb rk92t/GANazpOoBrR+RwTdfpdF3tuYc1XafTtd2oEVzf8nsse7n4z/nD2+/e v/7jr29+ztvvfvLTn/3VN775KY/6Q/7921cvv2+7H/71uy+cKRJbnmX35qig o4KOCurlMvdyZXdUUC9ncJZtcFZ2gzOTLnSdTteOCsKarvPp2lFBMZyu0+l6 tVOJruk6na43awO4putsunYOCNaXfuI87b4tbrQw+hRTs8XUtrjRAtdiarKY 2hxXhzVdJ9S14+q4putsui5edIU1XafT9cmOq2+4xjVdz2PtuLpFILrOp+v5 ExF5vkav5hCFF71ctl6uV3OI0otBSbJBSW/mEGFN1+l03Vx5KYbTdTpdm0OE NV3n07VbVXBN1+l03a3kw5qu0+k64FYVjZ/TnmHbH6ubwswYc1o2p411mFrC NV1n07UrGGBN1/l07aYwXNN1Ol3bPn1lWA9YX4OubZ++Mq5XXOfX9Wb7tAXe a37Lz5Jf/l5uG+YQzTUYlGQblGzDNa7SC12n07U5RFjTdT5dm0PENV1n0/W6 WMk3uqbrbLpeXcGAa7pOp+sKayn8ipf89HL5e7nDNa56OYOSdIOS42TXuJps oGu6nse6mUOENV2n0/XJrnHFNa7pOgBrc4hG13SdT9eNrumarrPpusMa1hd+ 4jwNv5fiWnI5lc9y+ewGaz6DteFnsuHnDdeucJVT6Tqdrl2/QNd0nU/Xrl/A NV2n07Wt07Cm63y6dv0Cruk6m67r4i0/M0tX2fart/woTVRNF1Xryd7yOznX W0yltwCut2BdbzFcb/NcbzNcb3G6foxi34L1NoX1Ot/m6lSbqw/U5up921xy rDusL9T1s+Z6wzVd03U2Xe+wpmu6TqfrA9e4putkut4WWEvhF37iPO2+//3p Vu2ezsTUZ8/1wDWfiam5YmpvFoFgTdf5dG0RSAyn63S6tggEa7rOp+tzLQJ1 XIvhdD2NdbcIRNd0nU7XvUw3ukSfYwxbWKQX6SVZehmr9AJr6SVbehlrwbVR CV1n03WFNV3TdTpdN1zTNV1n03W35Adruk6naxvlcU3X6XQ9v1E+z9dYTzbX ILyYaxBeIrhuuMa18JIrvKzmGmBN1wl1ba4B13SdTtcO5ZtCpOt8unYoH9d0 nU7XDuXDmq7z6fqw5PfD19ir7cV6Ob1ctl5ur7YX49qgJNmgZK+W/GBN1/l0 bcnPkh9dp9O1JT9Y03U+XVvyE8PpOp2ud6NruqbrdLo+XOz5l89x9E03J71I L7nSy9FtWIK19JItvRzdPdy4putsuh6LFA5rus6m6+EebpOIdJ1O1zbK0zVd 59O1jfK4put0ug7YKC+qavvPr+2P5bCNhdJE1WRR9Ybrcy0EVVzTNV3PYl0W C0Gwputsui6LhSBc03U6XXskxeiarvPp2kIQruk6na7dmCSFX/qJ87T72pwG ojMxNVtMrc1pIFyLqcliau0LrMVUus6m614MP3FN19l0bREI1nSdT9cWgXBN 1+l0bREI1nSdT9fDW34/fI3WXVGgl9PLZevlmkEJrg1Ksg1KmkGJlXy6Tqhr b/nRNV2n0/VK13RN1+l07S0/uqbrdLp2/oWu6Tqfrg9Lfj98jbFY8tPL6eWy 9XLDZRS4NijJNigZJ7uMwg2usKbrCK6HtQFziHSdTderFE7XdJ1O1xtd45qu s+nakh+s6Tqfri35/eVrrPYhmmvQy6Xr5Vb7EHFtUJJtULLahwhruk6o63Pd w73jGtd0PY31cA83rOk6na6Hx1itDdB1Ol1XG2rpmq7T6Xr+/Euiz7EvrhTS zUkvydLLbn+xQYn0ki697IulfLqm63S6tpRP13SdT9ee1MY1XWfTdbGUD2u6 TqfrYin/yrjecH0Fuq5O+f3wNY7qlJ8pROElW3g5qqUBXAsvycLLUXe6hjVd p9P1gWtc03UyXTdLA7Cm63S6bpYGcE3X6XTtlSsr+XSdT9fNkt9fvsa+mGvQ y+nlPtbL7THV3u/J9T7FdbnTr3Eh13sw13sM1/ss149R6Qu53oMHJXsM1/s8 1/sM13vcoORZY11hfV1Yd1hfg67bqbhuuKZrup7HutM1XdN1Ol0PXNM1XWfT 9SqF0zVdp9P1Nt3o0nyNtdRFeNHL6eVy9XI3XBfpxaDEoCTVoOQG6wprWNN1 Ol1b8sM1XafTtSU/WNN1Pl0PusY1XWfT9UrXsKbrdLp+lkt+2r62P932a9s4 zQKvqJorqta2G4GKqnSdTtcHrumarpPpui+wpmu6zqbrbpslXdN1Ol3bZknX dJ1P17ZZ4vrSTyy9SC/PsZdrm/Sil5NesqWXtkkvuKbrdLrusIY1XafTtUMi V8b1husr0LV74eiarvPp2kZ5S/l0nU7XNsrT9aWfOE+777uzzHQmpmaLqX3f +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 W99NNOje5JZ0uaXvJhrMIMot2XJL3+1BJGzCTihsF3sSNmGnE/Zxros9V1zj mrAjwHaxJ7AJO5+wqz21uCbsfMJuTvndfIfVY6U6OMElXXBZW8e1pQHBJVtw Wdu5TvkNYAObsAO4XglbECfsfML2qjZhE3Y+Ydt8R9iEnVDYNt8Bm7DTCbsv lvxuvsM29G/6N/1btv5tWxdc49qAJNuAZFttLgY2YecTdjWDaGWAsPMJ26ba KwP7APY1CNumWsIm7ITC9qq2ETZh5xP26mLPsu1uJ5BbdG/purf9MIGIa+OR dOOR/TCBaDxC2PmE7e1dwibshMIewAY2YacTtidxcE3YCYXtSRxgE3Y+YXt7 F9eEnVDYTq2aEifsBxT2uCfXY4br446/x4Vcj+AgPmK4HrNcj0co9YVcj2Bh jxiuxzzXY4brESjs8azBLqcCu1RkI/tRyP68sZ832JWxr4vrhuurMHY7Fdgd 2IRN2AFcd1wTNmHnE/YANrAJO52w11NxPXCNa8KOAHsjbGATdjph77jGNWHn E/YBbGATdjZhF7vOcE3Y+YRdCrCtYRN2OmHbdIZrwk4obJvOgE3Y+YR9rk1n O65xTdgRYA9J3NQZYacT9iqIEzZh5xP2uTadbcAmbMIO4NqmM8Im7ITCPkyd AZuwswm7LoI4rgk7nbBrIWwjbMJOJ+xqhI1rws4nbJvOgE3Y+YTd7U3BNWE/ oLDXgGqv9632+vFqrzHVXuervc5Ue7202uvy55+yL+2ri7/G3Qq9BxR6D544 22MKvc8Xep8p9B5T6P3BCv2nH/Mvr1+9eXmj29+9/ur9m7ff3JTk5u/7vjAv vn757bevv3n96mcv/vn3799+8/q3b9+/uSndBT/61es//Pyf/uvl+6++fvX2 t7/+8CPf/mMd63LxL/XLX754f/OV3334Xje/ztcv3/35j9v2+mryj/vNm2/e vPv6c39XWebZ+NjPuIyNj1/H9umfdyc2LvzTbmPj9h/xGTY+9o/vwcanv8ad 2Cg1oNA1uNA1ptB1vtB1ptA1ptA1ptABL12VHlzomJeuyvxLV2XmpavSYwod 88pVCcivZY2NNSUmv5b5/Fpm8muJya8lJr+WgPxagvNricmvZT6/lpn8WmLy a4nJrzUgjNXgMFZjwlidD2N1JozVmDBWY8JYDQhjNTiM1ZgwVufDWJ0JYzUm jNWYMFbb/SaPP/bv7jJ5PO70e1w2efzp3+l+k8ef/nl3mjy+8E/79OTxp3+P wFJfyHSLnTy+1yfu9/3EtzLdZphuFy8KLT+eOx4vv3iYYgcMsmrwO+E1ZpBV 5wdZdWaQVWMGWfXeg6z/B1BLAQIUABQAAgAIAK1oni3FawLhD0oAANgyEQAR AAAAAAAAAAEAIACAgQAAAABtZXNzYWdlcy0td29ya2luZ1BLBQYAAAAAAQAB AD8AAAA+SgAAAAA= ------=_NextPart_000_002A_01C2B00A.D183EA00 Content-Type: application/octet-stream; name="vortex-diag-working" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="vortex-diag-working" vortex-diag.c:v2.13a 12/15/2002 Donald Becker (becker@scyld.com) http://www.scyld.com/diag/index.html Index #1: Found a 3c905C Tornado 100baseTx adapter at 0xc000. Station address 00:01:02:f6:e4:7d. Receive mode is 0x07: Normal unicast and all multicast. The Vortex chip may be active, so FIFO registers will not be read. To see all register values use the '-f' flag. Initial window 4, registers values by window: Window 0: 0000 0000 d93f 0000 e3e3 00bf ffff 0000. Window 1: FIFO FIFO 0700 0000 0000 007f 0000 2000. Window 2: 0100 f602 7de4 0000 0000 0000 0052 4000. Window 3: 0000 0180 05ea 0020 000a 0800 0800 6000. Window 4: 0000 0000 0000 0cfa 0001 8880 0000 8000. Window 5: 1ffc 0000 0000 0600 0807 06ce 06c6 a000. Window 6: 0000 0000 0000 0300 0000 00b4 0000 c000. Window 7: 0000 0000 0000 0000 0000 0000 0000 e000. Vortex chip registers at 0xc000 0xC010: **FIFO** 00000000 0000000a *STATUS* 0xC020: 00000020 00000000 00080000 00000004 0xC030: 00000000 919f6e61 0f005060 00080004 0xC040: 00a81984 00000000 000000b7 00000000 0xC050: 00000000 00000000 00000000 00000000 0xC060: 00000000 00000000 00000000 00000000 0xC070: 00009000 00000000 00400020 00000000 DMA control register is 00000020. Tx list starts at 00000000. Tx FIFO thresholds: min. burst 256 bytes, priority with 128 bytes to emp= ty. Rx FIFO thresholds: min. burst 256 bytes, priority with 128 bytes to ful= l. Poll period Tx 00 ns., Rx 0 ns. Maximum burst recorded Tx 32, Rx 64. Indication enable is 06c6, interrupt enable is 06ce. No interrupt sources are pending. Transceiver/media interfaces available: 100baseTx 10baseT. Transceiver type in use: Autonegotiate. MAC settings: full-duplex. Station address set to 00:01:02:f6:e4:7d. Configuration options 0052. Setting the EEPROM BIOS ROM field to 0800, new checksum 6f. Would write new 19 entry 0xff80 (old value 0x0180). Would write new 32 entry 0x006f (old value 0x0097). EEPROM format 64x16, configuration table at offset 0: 00: 0001 02f6 e47d 9200 017a 0048 5245 6d50 0x08: 2940 0800 0001 02f6 e47d 0010 0000 00aa 0x10: 72a2 0000 0000 0180 0000 0000 0429 10b7 0x18: 1000 000a 0002 6300 ffb7 b7b7 0000 0000 0x20: 0097 1234 5600 0000 0000 0000 0000 0000 0x28: 0000 0000 0000 0000 0000 0000 0000 0000 0x30: ffff ffff ffff ffff ffff ffff ffff ffff ... The word-wide EEPROM checksum is 0x7078. Saved EEPROM settings of a 3Com Vortex/Boomerang: 3Com Node Address 00:01:02:F6:E4:7D (used as a unique ID only). OEM Station address 00:01:02:F6:E4:7D (used as the ethernet address). Device ID 9200, Manufacturer ID 6d50. Manufacture date (MM/DD/YYYY) 11/26/2000, division H, product ER. A BIOS ROM of size 0Kx8 is expected. Transceiver selection: Autonegotiate. Options: negotiated duplex, link beat required. PCI Subsystem IDs: Vendor 10b7 Device 1000. 100baseTx 10baseT. Vortex format checksum is incorrect (01 vs. 10b7). Cyclone format checksum is incorrect (0x91 vs. 0x97). Hurricane format checksum is incorrect (0xb8 vs. 0x97). ------=_NextPart_000_002A_01C2B00A.D183EA00 Content-Type: application/octet-stream; name="mii-diag-working" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="mii-diag-working" mii-diag.c:v2.07 11/15/2002 Donald Becker (becker@scyld.com) http://www.scyld.com/diag/index.html Using the new SIOCGMIIPHY value on PHY 24 (BMCR 0x3000). The autonegotiated capability is 01e0. The autonegotiated media type is 100baseTx-FD. Basic mode control register 0x3000: Auto-negotiation enabled. You have link beat, and everything is working OK. This transceiver is capable of 100baseTx-FD 100baseTx 10baseT-FD 10base= T. Able to perform Auto-negotiation, negotiation complete. Your link partner advertised 45e1: Flow-control 100baseTx-FD 100baseTx 10b= aseT-FD 10baseT, w/ 802.3X flow control. End of basic transceiver information. MII PHY #24 transceiver registers: 3000 782d 0040 6176 05e1 45e1 0003 0000 0000 0000 0000 0000 0000 0000 0000 0000 1000 0300 0000 0000 0000 0158 0200 0000 003f 8d3e 0f00 ff40 002f 0000 80a0 000b ------=_NextPart_000_002A_01C2B00A.D183EA00 Content-Type: application/octet-stream; name="vortex-diag-notworking" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="vortex-diag-notworking" vortex-diag.c:v2.13a 12/15/2002 Donald Becker (becker@scyld.com) http://www.scyld.com/diag/index.html Index #1: Found a 3c905C Tornado 100baseTx adapter at 0xc000. Station address 00:01:02:f6:e4:7d. Receive mode is 0x07: Normal unicast and all multicast. The Vortex chip may be active, so FIFO registers will not be read. To see all register values use the '-f' flag. Initial window 4, registers values by window: Window 0: 0000 0000 d93f 0000 e3e3 00bf ffff 0000. Window 1: FIFO FIFO 0700 0000 0000 007f 0000 2000. Window 2: 0100 f602 7de4 0000 0000 0000 0052 4000. Window 3: 0000 0180 05ea 0020 000a 0800 0800 6000. Window 4: 0000 0000 0000 0cfa 0001 8080 0000 8000. Window 5: 1ffc 0000 0000 0600 0807 06ce 06c6 a000. Window 6: 0000 0000 0000 0000 0000 0000 0000 c000. Window 7: 0000 0000 0000 0000 0000 0000 0000 e000. Vortex chip registers at 0xc000 0xC010: **FIFO** 00000000 0000003e *STATUS* 0xC020: 00000020 00000000 00080000 00000004 0xC030: 00000000 6ede9122 0d47a000 00080004 0xC040: 00ddd1c6 00000000 000000b7 00000000 0xC050: 00000000 00000000 00000000 00000000 0xC060: 00000000 00000000 00000000 00000000 0xC070: 00009000 00000000 00000020 00000000 DMA control register is 00000020. Tx list starts at 00000000. Tx FIFO thresholds: min. burst 256 bytes, priority with 128 bytes to emp= ty. Rx FIFO thresholds: min. burst 256 bytes, priority with 128 bytes to ful= l. Poll period Tx 00 ns., Rx 0 ns. Maximum burst recorded Tx 32, Rx 0. Indication enable is 06c6, interrupt enable is 06ce. No interrupt sources are pending. Transceiver/media interfaces available: 100baseTx 10baseT. Transceiver type in use: Autonegotiate. MAC settings: full-duplex. Station address set to 00:01:02:f6:e4:7d. Configuration options 0052. Setting the EEPROM BIOS ROM field to 0800, new checksum 6f. Would write new 19 entry 0xff80 (old value 0x0180). Would write new 32 entry 0x006f (old value 0x0097). EEPROM format 64x16, configuration table at offset 0: 00: 0001 02f6 e47d 9200 017a 0048 5245 6d50 0x08: 2940 0800 0001 02f6 e47d 0010 0000 00aa 0x10: 72a2 0000 0000 0180 0000 0000 0429 10b7 0x18: 1000 000a 0002 6300 ffb7 b7b7 0000 0000 0x20: 0097 1234 5600 0000 0000 0000 0000 0000 0x28: 0000 0000 0000 0000 0000 0000 0000 0000 0x30: ffff ffff ffff ffff ffff ffff ffff ffff ... The word-wide EEPROM checksum is 0x7078. Saved EEPROM settings of a 3Com Vortex/Boomerang: 3Com Node Address 00:01:02:F6:E4:7D (used as a unique ID only). OEM Station address 00:01:02:F6:E4:7D (used as the ethernet address). Device ID 9200, Manufacturer ID 6d50. Manufacture date (MM/DD/YYYY) 11/26/2000, division H, product ER. A BIOS ROM of size 0Kx8 is expected. Transceiver selection: Autonegotiate. Options: negotiated duplex, link beat required. PCI Subsystem IDs: Vendor 10b7 Device 1000. 100baseTx 10baseT. Vortex format checksum is incorrect (01 vs. 10b7). Cyclone format checksum is incorrect (0x91 vs. 0x97). Hurricane format checksum is incorrect (0xb8 vs. 0x97). ------=_NextPart_000_002A_01C2B00A.D183EA00 Content-Type: application/octet-stream; name="mii-diag-notworking" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="mii-diag-notworking" mii-diag.c:v2.07 11/15/2002 Donald Becker (becker@scyld.com) http://www.scyld.com/diag/index.html Using the new SIOCGMIIPHY value on PHY 24 (BMCR 0x3000). Basic mode control register 0x3000: Auto-negotiation enabled. Basic mode status register 0x7809 ... 7809. Link status: not established. This transceiver is capable of 100baseTx-FD 100baseTx 10baseT-FD 10base= T. Able to perform Auto-negotiation, negotiation not complete. End of basic transceiver information. MII PHY #24 transceiver registers: 3000 7809 0040 6176 05e1 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1000 0021 0000 0009 0000 0000 0600 0000 003c 7d02 0f00 ff40 002c 0000 8020 000b ------=_NextPart_000_002A_01C2B00A.D183EA00-- From becker@scyld.com Mon Dec 30 04:53:39 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 30 Dec 2002 04:53:45 -0800 (PST) Received: from beohost.scyld.com (pool-151-196-172-2.balt.east.verizon.net [151.196.172.2]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBUCrb3v023524 for ; Mon, 30 Dec 2002 04:53:38 -0800 Received: from localhost (becker@localhost) by beohost.scyld.com (8.11.6/8.11.6) with ESMTP id gBUCx1V16096; Mon, 30 Dec 2002 07:59:01 -0500 Date: Mon, 30 Dec 2002 07:59:00 -0500 (EST) From: Donald Becker To: Deian Chepishev cc: andrewm@uow.edu.au, , Linux Kernel Mailing List , Subject: Re: 3Com PCI 3c905C Tornado problems (no network sometimes) In-Reply-To: <002d01c2affa$0e76d9b0$0b00050a@deian> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-archive-position: 1429 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: becker@scyld.com Precedence: bulk X-list: netdev On Mon, 30 Dec 2002, Deian Chepishev wrote: > for about a year and a half i have problems with network cards 3Com PCI > 3c905C Tornado ... > Log entries while loading driver 3c90x are: > > Dec 19 16:03:35 oboroten kernel: 3c59x: Donald Becker and others. > www.scyld.com/network/vortex.html > Dec 19 16:03:35 oboroten kernel: 01:03.0: at 0xc000. Vers LK1.1.18-ac Are there other messages? Something has apparently removed the important log message of that identified the board and the current transceiver setting. > ... (the switch is 3COM office connect DualSpeedSwitch 16). Which model? What era? A few of the early 3Com switches did have autonegotiation timing flaws. Most are managed switches, and the proper work-around is to set them to forced 100baseTx half duplex operation. > In order to fix the problem i must unplug the power cord(there is no other > way to copletely stop powering the computer) wait a few seconds plug it This is because of the Wake-On-LAN capability of the board. It continues link beat in soft-power-off mode. Depending on the motherboard (if standby-power is supplied through the PCI connector), you might be able to change the behavior by disconnecting the WOL cable. But that's not a solution. > again and start the computer from the button and check to see if the led is > blinking if yes reapeat this action as much times as is necessary for the > led to stop blinking. The interesting part is that if the NIC is blinking > and i load windows the things are working just fine i think that windows > driver has some initialisation (the led stops blinking) which the linux > driver does not have but these are just suppositions. The Windows driver likely resets the transceiver. The 3c59x driver avoids doing this. Rapidly resetting the link results in bad behavior from some switches, and some Linux configurations results in rapid restarts of the driver. > Notice that i have some lines in the messages log "working situation" which > looks like this: > > ping -f some.host > Dec 30 12:52:01 oboroten kernel: eth0: vortex_error(), status=0xe081 You have the debug/message level turned up past the default, and the driver is reporting that statistics overflowed. Check the error counts in /proc/net/dev. This is likely unrelated. > i have running 4 machines with the same HW configuration and the problem is > reproducable on all of them. I have noticed this problem since kernel 2.4.2 > and it is here by now. Try the driver release from http://www.scyld.com/network/vortex.html ftp://ftp.scyld.com/pub/network/test/3c59x.c > I have this problem often when we have power failure and my boss is not very > happy the servers to be down when i am not in the office after power > failure. > I have executed and the diagnostic programs mii-diag and vortex-diag their > logs are attached to the mail too. Does 'mii-diag --reset' result in a working link? -- Donald Becker becker@scyld.com Scyld Computing Corporation http://www.scyld.com 410 Severn Ave. Suite 210 Scyld Beowulf cluster system Annapolis MD 21403 410-990-9993 From garzik@gtf.org Mon Dec 30 09:47:41 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 30 Dec 2002 09:47:45 -0800 (PST) Received: from havoc.gtf.org (havoc.daloft.com [64.213.145.173]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBUHle3v025722 for ; Mon, 30 Dec 2002 09:47:41 -0800 Received: by havoc.gtf.org (Postfix, from userid 500) id 048CD665A; Mon, 30 Dec 2002 12:52:38 -0500 (EST) Date: Mon, 30 Dec 2002 12:52:37 -0500 From: Jeff Garzik To: linux-kernel@vger.kernel.org Cc: netdev@oss.sgi.com Subject: Another holiday tg3 release Message-ID: <20021230175237.GA2547@gtf.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.28i X-archive-position: 1430 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: jgarzik@pobox.com Precedence: bulk X-list: netdev Another holiday, another set of tg3 releases. first, there is an official, production update of tg3, version 1.2a: http://people.redhat.com/jgarzik/tg3/tg3-1.2a/ (source code) http://people.redhat.com/jgarzik/tg3/tg3-1.2a/rpms/ (red hat rpms) second, for people still having problems, there are three experimental sets of rpms, to be tried in this order: http://people.redhat.com/jgarzik/tg3/tg3-1.2a/exp1-rpms/ http://people.redhat.com/jgarzik/tg3/tg3-1.2a/exp2-rpms/ http://people.redhat.com/jgarzik/tg3/tg3-1.2a/exp3-rpms/ experiment #1 - better irq mask/unmask for better speed and stability (test this!) experiment #2 - ultra-safe version of #1, with less experimental stuff experiment #3 - the riskiest of the bunch, but potentially faster I would prefer that everyone who can try experiment #1, and back down to experiment #2 if that doesn't work. There is more information on the files in this directory in http://people.redhat.com/jgarzik/tg3/tg3-1.2a/version-notes.txt Disclaimer: These are unofficial rpms created by myself. They are not officially released by Red Hat, so do not use them in production, etc. From joshua.stewart@comcast.net Mon Dec 30 19:20:23 2002 Received: with ECARTIS (v1.0.0; list netdev); Mon, 30 Dec 2002 19:20:31 -0800 (PST) Received: from smtp.comcast.net (smtp.comcast.net [24.153.64.2]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id gBV3KL3v031833 for ; Mon, 30 Dec 2002 19:20:22 -0800 Received: from [192.168.0.101] (pcp281997pcs.elkrdg01.md.comcast.net [68.55.236.246]) by mtaout03.icomcast.net (iPlanet Messaging Server 5.2 HotFix 1.07 (built Nov 25 2002)) with ESMTP id <0H7Y00H65S68KK@mtaout03.icomcast.net> for netdev@oss.sgi.com; Mon, 30 Dec 2002 22:25:21 -0500 (EST) Date: Mon, 30 Dec 2002 22:37:32 -0500 From: Joshua Stewart Subject: Following a packet from NIC to user space (and the reverse) To: netdev@oss.sgi.com Message-id: <1041305853.12103.7.camel@localhost.localdomain> MIME-version: 1.0 X-Mailer: Ximian Evolution 1.0.8 (1.0.8-10) Content-type: text/plain Content-transfer-encoding: 7BIT X-archive-position: 1431 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: joshua.stewart@comcast.net Precedence: bulk X-list: netdev I was given this email address by Alan Cox. So, if this is a mistake please let me know. ------------------------------------------------ I'm trying to get a really good grasp on what happens to packets from when they arrive until they are pushed to user-space applications. For now I'm just assuming I am receiving a TCP packet. I've read almost all the online docs I can find, but most don't get down and dirty enough for what I'm trying to figure out. For example, http://www.gnumonks.org/ftp/pub/doc/packet-journey-2.4.html. I also have troubles with running into docs referring to the 2.0 or 2.2 kernels and interrupt bottom halves, which it seems are not in the 2.4 network code (softirqs instead). I'd like to create a list of the functions (in order) that are called from the time of sk_buff creation/allocation until the buffer is free'd (kfree_skb). I'd really like to track an sk_buff throughout it's 'lifespan' in the linux kernel. So far I think I understand the following, which isn't much... Linux network drivers all register themselves with the kernel through a register_netdev() call. Lots of structures are allocated and initialized. It seems that most sk_buffs come into existence during an interrupt routine in a NIC card driver (i.e. /usr/src/linux/drivers/net/pci-skeleton.c, netdrv_rx_interrupt()), which does the following... netif_rx(skb) is called, which performs the following... __skb_queue_tail(&queue->input_pkt_queue,skb); dev.c, line 1255 which puts the sk_buff into the incoming packet queue of one of the processors, which is really a member of the softnet_data[] array. From this point on, I have no idea what happens to the packet. I know it has something to do with 2.4's new softirqs, but I don't really have a good grasp on that yet. Please help me fill in where my knowledge is lacking. Also, PLEASE correct any mistakes you see in my understanding so far. Thanks, Joshua Stewart joshua.stewart@comcast.net From rockshows@rockshows.com.br Tue Dec 31 22:30:03 2002 Received: with ECARTIS (v1.0.0; list netdev); Tue, 31 Dec 2002 22:30:37 -0800 (PST) Received: from rockshows.com.br (200227208153-dial-user-BOL.acessonet.com.br [200.227.208.153]) by oss.sgi.com (8.12.5/8.12.5) with SMTP id h016Tv3v001768 for ; Tue, 31 Dec 2002 22:30:00 -0800 Message-Id: <200301010630.h016Tv3v001768@oss.sgi.com> From: "Programa Espaço Alternativo" To: Subject: Show =?ISO-8859-1?Q?Lan=E7amento?= Fator Cinco Mime-Version: 1.0 Content-Type: text/html; charset="ISO-8859-1" Date: Wed, 1 Jan 2003 04:35:16 -0200 Content-Transfer-Encoding: 8bit X-archive-position: 1432 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: rockshows@rockshows.com.br Precedence: bulk X-list: netdev

Grande show de lançamento do CD da banda Fator Cinco no DirecTV - Music Hall em Fevereiro de 2003,
clique aqui e saiba como adquirir o seu ingresso gratuitamente e conhecer esta nova revelação do rock nacional.

 

Caso não queira mais receber nossos informativos, Click aqui