[PATCH] Fix comment for skb_pull_rcsum
Fix comment for skb_pull_rcsum Signed-off-by: Urs Thuermann [EMAIL PROTECTED] --- Index: net-2.6/net/core/skbuff.c === --- net-2.6.orig/net/core/skbuff.c 2008-02-06 22:17:58.0 +0100 +++ net-2.6/net/core/skbuff.c 2008-02-08 11:05:00.0 +0100 @@ -2106,11 +2106,10 @@ /** * skb_pull_rcsum - pull skb and update receive checksum * @skb: buffer to update - * @start: start of data before pull * @len: length of data pulled * * This function performs an skb_pull on the packet and updates - * update the CHECKSUM_COMPLETE checksum. It should be used on + * the CHECKSUM_COMPLETE checksum. It should be used on * receive path processing instead of skb_pull unless you know * that the checksum difference is zero (e.g., a valid IP header) * or you are setting ip_summed to CHECKSUM_NONE. -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[RFC, PATCH]: Pass link level header from/to PPP interface
The PPP interface strips off the PPP header from the packet before passing it up with netif_rx(). On the xmit path, it has to add the PPP header itself because dev-header_ops is NULL. This means that a PF_PACKET, SOCK_RAW socket can't get the link level header and has to use the sll_protocol field of the sockaddr_ll to know what type of packet is received with recvfrom(2). I consider this a design flaw since with most (all?) other interfaces you only need to know the sll_hatype to know what type of packet you get. I have patched the PPP code to include the PPP header. I tried with IP and IPv6 over PPP and it works as expected. This patch, however, changes the interface to the user space in an incompatible way. But IMHO we could include it, since * PF_PACKET is Linux specific and not portable anyway. Most apps use libpcap instead of opening PF_PACKET sockets themselves. * Using strace on tcpdump, it seems that libpcap on Linux uses PF_PACKET/SOCK_DGRAM for PPP interfaces and thus is not affected by my patch. * Other apps using PF_PACKET/SOCK_RAW can easily be changed to PF_PACKET/SOCK_DGRAM if they don't want to see the link level header. After all, this is what SOCK_DGRAM is for. Currently SOCK_RAW and SOCK_DGRAM are the same although the packet(7) man page states that with SOCK_RAW packets are passed without any changes. This makes having SOCK_RAW besides SOCK_DGRAM useless for PPP. So what is your opinion about this change? Signed-off-by: Urs Thuermann [EMAIL PROTECTED] --- drivers/net/ppp_generic.c | 41 - 1 file changed, 28 insertions(+), 13 deletions(-) Index: net-2.6/drivers/net/ppp_generic.c === --- net-2.6.orig/drivers/net/ppp_generic.c 2008-02-08 11:09:03.0 +0100 +++ net-2.6/drivers/net/ppp_generic.c 2008-02-08 13:27:29.0 +0100 @@ -873,12 +873,32 @@ /* * Network interface unit routines. */ + +/* Put the 2-byte PPP protocol number on the front of skb */ +static int ppp_header(struct sk_buff *skb, struct net_device *dev, + unsigned short type, + const void *daddr, const void *saddr, unsigned len) +{ + unsigned char *pp; + int npi, proto; + + npi = ethertype_to_npindex(ntohs(skb-protocol)); + if (npi 0) + return -dev-hard_header_len; + + pp = skb_push(skb, 2); + proto = npindex_to_proto[npi]; + pp[0] = proto 8; + pp[1] = proto; + + return dev-hard_header_len; +} + static int ppp_start_xmit(struct sk_buff *skb, struct net_device *dev) { struct ppp *ppp = (struct ppp *) dev-priv; - int npi, proto; - unsigned char *pp; + int npi; npi = ethertype_to_npindex(ntohs(skb-protocol)); if (npi 0) @@ -897,16 +917,6 @@ goto outf; } - /* Put the 2-byte PPP protocol number on the front, - making sure there is room for the address and control fields. */ - if (skb_cow_head(skb, PPP_HDRLEN)) - goto outf; - - pp = skb_push(skb, 2); - proto = npindex_to_proto[npi]; - pp[0] = proto 8; - pp[1] = proto; - netif_stop_queue(dev); skb_queue_tail(ppp-file.xq, skb); ppp_xmit_process(ppp); @@ -969,9 +979,14 @@ return err; } +static const struct header_ops ppp_header_ops cacheline_aligned = { + .create = ppp_header, +}; + static void ppp_setup(struct net_device *dev) { dev-hard_header_len = PPP_HDRLEN; + dev-header_ops = ppp_header_ops; dev-mtu = PPP_MTU; dev-addr_len = 0; dev-tx_queue_len = 3; @@ -1677,10 +1692,10 @@ kfree_skb(skb); } else { /* chop off protocol */ + skb_reset_mac_header(skb); skb_pull_rcsum(skb, 2); skb-dev = ppp-dev; skb-protocol = htons(npindex_to_ethertype[npi]); - skb_reset_mac_header(skb); netif_rx(skb); ppp-dev-last_rx = jiffies; } -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH resend] qla3xxx: convert byte order of constant instead of variable
convert byte order of constant instead of variable which can be done at compile time (vs run time) Signed-off-by: Marcin Slusarz [EMAIL PROTECTED] --- drivers/net/qla3xxx.c |6 ++ 1 files changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/net/qla3xxx.c b/drivers/net/qla3xxx.c index a6aeb9d..b7f7b22 100644 --- a/drivers/net/qla3xxx.c +++ b/drivers/net/qla3xxx.c @@ -2472,8 +2472,7 @@ static int ql_send_map(struct ql3_adapter *qdev, if (seg_cnt == 1) { /* Terminate the last segment. */ - oal_entry-len = - cpu_to_le32(le32_to_cpu(oal_entry-len) | OAL_LAST_ENTRY); + oal_entry-len |= cpu_to_le32(OAL_LAST_ENTRY); } else { oal = tx_cb-oal; for (completed_segs=0; completed_segsfrag_cnt; completed_segs++,seg++) { @@ -2530,8 +2529,7 @@ static int ql_send_map(struct ql3_adapter *qdev, frag-size); } /* Terminate the last segment. */ - oal_entry-len = - cpu_to_le32(le32_to_cpu(oal_entry-len) | OAL_LAST_ENTRY); + oal_entry-len |= cpu_to_le32(OAL_LAST_ENTRY); } return NETDEV_TX_OK; -- 1.5.3.7 -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [RFC] ipvs: Cleanup sync daemon code
On Sat, 9 Feb 2008, Christoph Hellwig wrote: On Sun, Feb 10, 2008 at 12:38:11AM +0100, Sven Wegener wrote: struct ip_vs_sync_thread_data { - struct completion *startup; + struct completion *startup; /* set to NULL once completed */ This is not needed anmore. kthread_run guarantees that the newly creates thread is run before returning to the caller. The completion is currently used to return an error code for errors that happen during initialization in the threads (open socket, allocate memory). We could move the setup code out of the threads and have them only run an error-safe loop. +/* wait queue for master sync daemon */ +static DECLARE_WAIT_QUEUE_HEAD(sync_master_wait); I don't think you need this one either. You can use wake_up_process on the task_struct pointer instead. Thanks, now using schedule_timeout with wake_up_process. spin_lock(ip_vs_sync_lock); list_add_tail(sb-list, ip_vs_sync_queue); + if (++ip_vs_sync_count == 10) + wake_up_interruptible(sync_master_wait); spin_unlock(ip_vs_sync_lock); } -static int sync_thread(void *startup) +static int sync_thread(void *data) Btw, it might make sense to remove sync_thread and just call the master and backup threads directly. When the setup code has been moved out of the threads, the code gets much simpler. +void __init ip_vs_sync_init(void) +{ + /* set up multicast address */ + mcast_addr.sin_family = AF_INET; + mcast_addr.sin_port = htons(IP_VS_SYNC_PORT); + mcast_addr.sin_addr.s_addr = htonl(IP_VS_SYNC_GROUP); } Why can't this be initialized at compile time by: static struct sockaddr_in mcast_addr = { .sin_family = AF_INET, .sin_port = htons(IP_VS_SYNC_PORT), .sin_addr.s_addr= htonl(IP_VS_SYNC_GROUP), } (the hton* might need __constant_hton* also I'm not sure without trying) Thanks. -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v2][AX25] af_ax25: remove sock lock in ax25_info_show()
Hi, Here is a little bit better version, I hope. Regards, Jarek P. -- (take 2) Subject: [AX25] af_ax25: remove sock lock in ax25_info_show() This lockdep warning: === [ INFO: possible circular locking dependency detected ] 2.6.24 #3 --- swapper/0 is trying to acquire lock: (ax25_list_lock){-+..}, at: [f91dd3b1] ax25_destroy_socket+0x171/0x1f0 [ax25] but task is already holding lock: (slock-AF_AX25){-+..}, at: [f91dbabc] ax25_std_heartbeat_expiry+0x1c/0xe0 [ax25] which lock already depends on the new lock. ... shows that ax25_list_lock and slock-AF_AX25 are taken in different order: ax25_info_show() takes slock (bh_lock_sock(ax25-sk)) while ax25_list_lock is held, so reversely to other functions. To fix this the sock lock should be moved to ax25_info_start(), and there would be still problem with breaking ax25_list_lock (it seems this proper order isn't optimal yet). But, since it's only for reading proc info it seems this is not necessary (e.g. ax25_send_to_raw() does similar reading without this lock too). So, this patch removes sock lock to avoid deadlock possibility; there is also used sock_i_ino() function, which reads sk_socket under proper read lock. Additionally printf format of this i_ino is changed to %lu. Reported-by: Bernard Pidoux F6BVP [EMAIL PROTECTED] Signed-off-by: Jarek Poplawski [EMAIL PROTECTED] --- net/ax25/af_ax25.c |6 ++ 1 files changed, 2 insertions(+), 4 deletions(-) diff --git a/net/ax25/af_ax25.c b/net/ax25/af_ax25.c index 94b2b1b..48bfcc7 100644 --- a/net/ax25/af_ax25.c +++ b/net/ax25/af_ax25.c @@ -1924,12 +1924,10 @@ static int ax25_info_show(struct seq_file *seq, void *v) ax25-paclen); if (ax25-sk != NULL) { - bh_lock_sock(ax25-sk); - seq_printf(seq, %d %d %ld\n, + seq_printf(seq, %d %d %lu\n, atomic_read(ax25-sk-sk_wmem_alloc), atomic_read(ax25-sk-sk_rmem_alloc), - ax25-sk-sk_socket != NULL ? SOCK_INODE(ax25-sk-sk_socket)-i_ino : 0L); - bh_unlock_sock(ax25-sk); + sock_i_ino(ax25-sk)); } else { seq_puts(seq, * * *\n); } -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] [IPV6] Minor cleanup: remove unused method declaration (net/ndisc.h).
Hi, This patch removes unused declaration of dflt_rt_lookup() method in include/net/ndisc.h Regards, Rami Rosen Signed-off-by: Rami Rosen [EMAIL PROTECTED] diff --git a/include/net/ndisc.h b/include/net/ndisc.h index 6684f7e..59b7062 100644 --- a/include/net/ndisc.h +++ b/include/net/ndisc.h @@ -103,7 +103,6 @@ extern void ndisc_send_redirect(struct sk_buff *skb, extern int ndisc_mc_map(struct in6_addr *addr, char *buf, struct net_device *dev, int dir); -struct rt6_info * dflt_rt_lookup(void); /* * IGMP
Re: [patch 2.6.24-git] net/enc28j60: low power mode
Keep enc28j60 chips in low-power mode when they're not in use. At typically 120 mA, these chips run hot even when idle; this low power mode cuts that power usage by a factor of around 100. This version provides a generic routine to poll a register until its masked value equals some value ... e.g. bit set or cleared. It's basically what the previous wait_phy_ready() did, but this version is generalized to support the handshaking needed to enter and exit low power mode. Signed-off-by: David Brownell [EMAIL PROTECTED] --- drivers/net/enc28j60.c | 81 ++--- 1 files changed, 57 insertions(+), 24 deletions(-) --- a/drivers/net/enc28j60.c +++ b/drivers/net/enc28j60.c @@ -400,26 +400,31 @@ enc28j60_packet_write(struct enc28j60_ne mutex_unlock(priv-lock); } -/* - * Wait until the PHY operation is complete. - */ -static int wait_phy_ready(struct enc28j60_net *priv) +static unsigned long msec20_to_jiffies; + +static int poll_ready(struct enc28j60_net *priv, u8 reg, u8 mask, u8 val) { - unsigned long timeout = jiffies + 20 * HZ / 1000; - int ret = 1; + unsigned long timeout = jiffies + msec20_to_jiffies; /* 20 msec timeout read */ - while (nolock_regb_read(priv, MISTAT) MISTAT_BUSY) { + while ((nolock_regb_read(priv, reg) mask) != val) { if (time_after(jiffies, timeout)) { if (netif_msg_drv(priv)) - printk(KERN_DEBUG DRV_NAME - : PHY ready timeout!\n); - ret = 0; - break; + dev_dbg(priv-spi-dev, + reg %02x ready timeout!\n, reg); + return -ETIMEDOUT; } cpu_relax(); } - return ret; + return 0; +} + +/* + * Wait until the PHY operation is complete. + */ +static int wait_phy_ready(struct enc28j60_net *priv) +{ + return poll_ready(priv, MISTAT, MISTAT_BUSY, 0) ? 0 : 1; } /* @@ -594,6 +599,32 @@ static void nolock_txfifo_init(struct en nolock_regw_write(priv, ETXNDL, end); } +/* + * Low power mode shrinks power consumption about 100x, so we'd like + * the chip to be in that mode whenever it's inactive. (However, we + * can't stay in lowpower mode during suspend with WOL active.) + */ +static void enc28j60_lowpower(struct enc28j60_net *priv, bool is_low) +{ + if (netif_msg_drv(priv)) + dev_dbg(priv-spi-dev, %s power...\n, + is_low ? low : high); + + mutex_lock(priv-lock); + if (is_low) { + nolock_reg_bfclr(priv, ECON1, ECON1_RXEN); + poll_ready(priv, ESTAT, ESTAT_RXBUSY, 0); + poll_ready(priv, ECON1, ECON1_TXRTS, 0); + /* ECON2_VRPS was set during initialization */ + nolock_reg_bfset(priv, ECON2, ECON2_PWRSV); + } else { + nolock_reg_bfclr(priv, ECON2, ECON2_PWRSV); + poll_ready(priv, ESTAT, ESTAT_CLKRDY, ESTAT_CLKRDY); + /* caller sets ECON1_RXEN */ + } + mutex_unlock(priv-lock); +} + static int enc28j60_hw_init(struct enc28j60_net *priv) { u8 reg; @@ -612,8 +643,8 @@ static int enc28j60_hw_init(struct enc28 priv-tx_retry_count = 0; priv-max_pk_counter = 0; priv-rxfilter = RXFILTER_NORMAL; - /* enable address auto increment */ - nolock_regb_write(priv, ECON2, ECON2_AUTOINC); + /* enable address auto increment and voltage regulator powersave */ + nolock_regb_write(priv, ECON2, ECON2_AUTOINC | ECON2_VRPS); nolock_rxfifo_init(priv, RXSTART_INIT, RXEND_INIT); nolock_txfifo_init(priv, TXSTART_INIT, TXEND_INIT); @@ -690,7 +721,7 @@ static int enc28j60_hw_init(struct enc28 static void enc28j60_hw_enable(struct enc28j60_net *priv) { - /* enable interrutps */ + /* enable interrupts */ if (netif_msg_hw(priv)) printk(KERN_DEBUG DRV_NAME : %s() enabling interrupts.\n, __FUNCTION__); @@ -726,15 +757,12 @@ enc28j60_setlink(struct net_device *ndev int ret = 0; if (!priv-hw_enable) { - if (autoneg == AUTONEG_DISABLE speed == SPEED_10) { + /* link is in low power mode now; duplex setting +* will take effect on next enc28j60_hw_init(). +*/ + if (autoneg == AUTONEG_DISABLE speed == SPEED_10) priv-full_duplex = (duplex == DUPLEX_FULL); - if (!enc28j60_hw_init(priv)) { - if (netif_msg_drv(priv)) - dev_err(ndev-dev, - hw_reset() failed\n); - ret = -EINVAL; - } - } else { + else
Re: [patch 2.6.24-git] net/enc28j60: low power mode
On Thursday 07 February 2008, Claudio Lanconelli wrote: Sorry, let me repeat what I said in previous mail. I propose you to add set_lowpower(true) in the enc28j60_probe() As the current patch does... and in the enc28j60_net_close() after enc28j60_hw_disable(). Probably we don't need to set_lowpower(false) in enc28j60_net_open() since it performs a soft reset with enc28j60_hw_init() (not sure). The current patch sets the device in low power mode in hw_disable(), and takes it out of that mode in hw_enable(). I can move them; and the only soft thing about this chip's reset is when it starts from a protocol command not the reset command. Furthermore, as you suggested, we also need to remove hw_init() from the setlink() because hw_init() is called when we bring link up. --- enc28j60.c 20 Dec 2007 10:47:01 - 1.22 +++ enc28j60.c 7 Feb 2008 11:07:20 - @@ -740,12 +740,6 @@ if (!priv-hw_enable) { if (autoneg == AUTONEG_DISABLE speed == SPEED_10) { priv-full_duplex = (duplex == DUPLEX_FULL); - if (!enc28j60_hw_init(priv)) { - if (netif_msg_drv(priv)) - dev_err(ndev-dev, - hw_reset() failed\n); - ret = -EINVAL; - } Right. Without the patch mangling presumably done by your mailer. ;) } else { if (netif_msg_link(priv)) dev_warn(ndev-dev, Can you update your low power patch with these modifications? Done -- see my next patch. -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [patch 2.6.24-git] net/enc28j60: oops fix, low power mode
On Thursday 07 February 2008, Claudio Lanconelli wrote: David Brownell wrote: How long did that take? I did about four dozen ifconfig eth1 up sleep 3 ifconfig eth1 down cycles ... it worked fine. The sleep was to let the link negotiation complete. After a couple of : ifconfig eth0 down (wait just 1 second) ifconfig eth0 up the network is frozen. If I do another ifconfig eth0 down (wait just 1 second) ifconfig eth0 up restarts. It's random, no rule. I write a shell loop to do that, and added a ping -c2 too. If that was done before the sleep 1 no packets flowed. Afterwards, no problem -- ever. (And outside the loop, ethool -s eth1 duplex full.) -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH][AX25] ax25_ds_timer: use mod_timer instead of add_timer
Hi Jarek, Sorry, I should have been more explicit about the patches I applied. My CPU is an Intel Core 2 duo and I compiled 2.6.24 with SMP option. I applied 3 patches you have submitted for ax25 before I observed the possible locking. That is : mkiss patch diff --git a/drivers/net/hamradio/mkiss.c b/drivers/net/hamradio/mkiss.c index cfcd15a..30c9b3b 100644 [AX25] ax25_timer: use mod_timer instead of add_timer [AX25] ax25_ds_timer: use mod_timer instead of add_timer I also applied 4 patches for rose.ko I sent to the list a while ago. But for this report I did not installed any ROSE driver nor application. I will try your new patch version 2 and report any possible change. Regards, Bernard Pidoux, F6BVP Jarek Poplawski wrote: On Sat, Feb 09, 2008 at 07:44:50PM +0100, Bernard Pidoux F6BVP wrote: Hi, With AX25 patches applied I still get this possible circular locking message. Hi Bernard, Could you confirm which exactly patches did you try? Is this vanilla 2.6.24 plus these two: ax25_timer and ax25_ds_timer or something more? And I'm not sure what do you mean by still: the warning came back just after these last patches? At least these timer patches don't seem to change anything around locking? Thanks for testing this, Jarek P. -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH][AX25] ax25_ds_timer: use mod_timer instead of add_timer
Patches from Jarek applied (incl. both testing patches). Machine is stable since 2 days now. Regards, Jann -Ursprüngliche Nachricht- Von: Jarek Poplawski [mailto:[EMAIL PROTECTED] Gesendet: Mittwoch, 6. Februar 2008 10:14 An: netdev@vger.kernel.org Cc: Ralf Baechle; Jann Traschewski; David Miller Betreff: [PATCH][AX25] ax25_ds_timer: use mod_timer instead of add_timer On Wed, Feb 06, 2008 at 08:15:09AM +, Jarek Poplawski wrote: On Wed, Feb 06, 2008 at 07:45:29AM +, Jarek Poplawski wrote: ... From: Jann Traschewski [EMAIL PROTECTED] Subject: SMP with AX.25 ... [AX25] ax25_ds_timer: use mod_timer instead of add_timer This patch changes current use of: init_timer(), add_timer() and del_timer() to setup_timer() with mod_timer(), which should be safer anyway. Reported-by: Jann Traschewski [EMAIL PROTECTED] Signed-off-by: Jarek Poplawski [EMAIL PROTECTED] --- include/net/ax25.h |1 + net/ax25/ax25_dev.c |2 +- net/ax25/ax25_ds_timer.c | 12 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/include/net/ax25.h b/include/net/ax25.h index 3f0236f..717e219 100644 --- a/include/net/ax25.h +++ b/include/net/ax25.h @@ -324,6 +324,7 @@ extern void ax25_dama_on(ax25_cb *); extern void ax25_dama_off(ax25_cb *); /* ax25_ds_timer.c */ +extern void ax25_ds_setup_timer(ax25_dev *); extern void ax25_ds_set_timer(ax25_dev *); extern void ax25_ds_del_timer(ax25_dev *); extern void ax25_ds_timer(ax25_cb *); diff --git a/net/ax25/ax25_dev.c b/net/ax25/ax25_dev.c index 528c874..a7a0e0c 100644 --- a/net/ax25/ax25_dev.c +++ b/net/ax25/ax25_dev.c @@ -82,7 +82,7 @@ void ax25_dev_device_up(struct net_device *dev) ax25_dev-values[AX25_VALUES_DS_TIMEOUT]= AX25_DEF_DS_TIMEOUT; #if defined(CONFIG_AX25_DAMA_SLAVE) || defined(CONFIG_AX25_DAMA_MASTER) - init_timer(ax25_dev-dama.slave_timer); + ax25_ds_setup_timer(ax25_dev); #endif spin_lock_bh(ax25_dev_lock); diff --git a/net/ax25/ax25_ds_timer.c b/net/ax25/ax25_ds_timer.c index c4e3b02..2ce79df 100644 --- a/net/ax25/ax25_ds_timer.c +++ b/net/ax25/ax25_ds_timer.c @@ -40,13 +40,10 @@ static void ax25_ds_timeout(unsigned long); * 1/10th of a second. */ -static void ax25_ds_add_timer(ax25_dev *ax25_dev) +void ax25_ds_setup_timer(ax25_dev *ax25_dev) { - struct timer_list *t = ax25_dev-dama.slave_timer; - t-data = (unsigned long) ax25_dev; - t-function = ax25_ds_timeout; - t-expires = jiffies + HZ; - add_timer(t); + setup_timer(ax25_dev-dama.slave_timer, ax25_ds_timeout, + (unsigned long)ax25_dev); } void ax25_ds_del_timer(ax25_dev *ax25_dev) @@ -60,10 +57,9 @@ void ax25_ds_set_timer(ax25_dev *ax25_dev) if (ax25_dev == NULL) /* paranoia */ return; - del_timer(ax25_dev-dama.slave_timer); ax25_dev-dama.slave_timeout = msecs_to_jiffies(ax25_dev-values[AX25_VALUES_DS_TIMEOUT]) / 10; - ax25_ds_add_timer(ax25_dev); + mod_timer(ax25_dev-dama.slave_timer, jiffies + HZ); } /* -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] New device for DM9601 usb net driver
Robert == Robert Brockway [EMAIL PROTECTED] writes: Robert Hi Peter. I've verified that the Hirose USB-100 (0x0a47, Robert 0x9601) is a clone of the DAVICOM DM9601. I patched dm9601.c Robert to identify this device and now have these in production. Robert Unified diff against 2.6.24 attached. Thanks! Acked-by: Peter Korsgaard [EMAIL PROTECTED] Robert Cheers, Robert Rob Robert -- Robert With sufficient thrust, pigs fly just fine... Robert-- RFC 1925 The Twelve Networking Truths Robert --- drivers/net/usb/dm9601.c.old 2008-01-27 00:51:50.0 -0500 Robert +++ drivers/net/usb/dm9601.c 2008-02-07 10:27:40.0 -0500 Robert @@ -590,6 +590,10 @@ static const struct usb_device_id produc Robert USB_DEVICE(0x0a46, 0x8515),/* ADMtek ADM8515 USB NIC */ Robert .driver_info = (unsigned long)dm9601_info, Robert }, Robert + { Robert + USB_DEVICE(0x0a47, 0x9601),/* Hirose USB-100 */ Robert + .driver_info = (unsigned long)dm9601_info, Robert + }, Robert{}, // END Robert }; -- Bye, Peter Korsgaard -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] 3c509: convert to isa_driver and pnp_driver v5
Hello, this patch converts 3c509 driver to isa_driver and pnp_driver. The result is that autoloading using udev and hibernation works with ISA PnP cards. It also adds hibernation support for non-PnP ISA cards. xcvr module parameter was removed as its value was not used. Tested using 3 ISA cards in various combinations of PnP and non-PnP modes. EISA and MCA only compile-tested. Signed-off-by: Ondrej Zary [EMAIL PROTECTED] --- linux-2.6.24-orig/drivers/net/3c509.c 2008-01-27 19:48:19.0 +0100 +++ linux-2.6.24-pentium/drivers/net/3c509.c2008-02-10 21:52:04.0 +0100 @@ -54,25 +54,24 @@ v1.19a 28Oct2002 Davud Ruggiero [EMAIL PROTECTED] - Increase *read_eeprom udelay to workaround oops with 2 cards. v1.19b 08Nov2002 Marc Zyngier [EMAIL PROTECTED] - - Introduce driver model for EISA cards. + - Introduce driver model for EISA cards. + v1.20 04Feb2008 Ondrej Zary [EMAIL PROTECTED] + - convert to isa_driver and pnp_driver and some cleanups */ #define DRV_NAME 3c509 -#define DRV_VERSION1.19b -#define DRV_RELDATE08Nov2002 +#define DRV_VERSION1.20 +#define DRV_RELDATE04Feb2008 /* A few values that may be tweaked. */ /* Time in jiffies before concluding the transmitter is hung. */ #define TX_TIMEOUT (400*HZ/1000) -/* Maximum events (Rx packets, etc.) to handle at each interrupt. */ -static int max_interrupt_work = 10; #include linux/module.h -#ifdef CONFIG_MCA #include linux/mca.h -#endif -#include linux/isapnp.h +#include linux/isa.h +#include linux/pnp.h #include linux/string.h #include linux/interrupt.h #include linux/errno.h @@ -97,10 +96,6 @@ static char version[] __initdata = DRV_NAME .c: DRV_VERSION DRV_RELDATE [EMAIL PROTECTED]; -#if defined(CONFIG_PM) (defined(CONFIG_MCA) || defined(CONFIG_EISA)) -#define EL3_SUSPEND -#endif - #ifdef EL3_DEBUG static int el3_debug = EL3_DEBUG; #else @@ -111,6 +106,7 @@ * a global variable so that the mca/eisa probe routines can increment * it */ static int el3_cards = 0; +#define EL3_MAX_CARDS 8 /* To minimize the size of the driver source I only define operating constants if they are used several times. You'll need the manual @@ -119,7 +115,7 @@ #define EL3_DATA 0x00 #define EL3_CMD 0x0e #define EL3_STATUS 0x0e -#define EEPROM_READ 0x80 +#defineEEPROM_READ 0x80 #define EL3_IO_EXTENT 16 @@ -168,23 +164,31 @@ */ #define SKB_QUEUE_SIZE 64 +enum el3_cardtype { EL3_ISA, EL3_PNP, EL3_MCA, EL3_EISA }; + struct el3_private { struct net_device_stats stats; - struct net_device *next_dev; spinlock_t lock; /* skb send-queue */ int head, size; struct sk_buff *queue[SKB_QUEUE_SIZE]; - enum { - EL3_MCA, - EL3_PNP, - EL3_EISA, - } type; /* type of device */ - struct device *dev; + enum el3_cardtype type; }; -static int id_port __initdata = 0x110; /* Start with 0x110 to avoid new sound cards.*/ -static struct net_device *el3_root_dev; +static int id_port; +static int current_tag; +static struct net_device *el3_devs[EL3_MAX_CARDS]; + +/* Parameters that may be passed into the module. */ +static int debug = -1; +static int irq[] = {-1, -1, -1, -1, -1, -1, -1, -1}; +/* Maximum events (Rx packets, etc.) to handle at each interrupt. */ +static int max_interrupt_work = 10; +#ifdef CONFIG_PNP +static int nopnp; +#endif +static int __init el3_common_init(struct net_device *dev); +static void el3_common_remove(struct net_device *dev); static ushort id_read_eeprom(int index); static ushort read_eeprom(int ioaddr, int index); static int el3_open(struct net_device *dev); @@ -199,23 +203,279 @@ static void el3_down(struct net_device *dev); static void el3_up(struct net_device *dev); static const struct ethtool_ops ethtool_ops; -#ifdef EL3_SUSPEND +#ifdef CONFIG_PM static int el3_suspend(struct device *, pm_message_t); static int el3_resume(struct device *); -#else -#define el3_suspend NULL -#define el3_resume NULL #endif /* generic device remove for all device types */ -#if defined(CONFIG_EISA) || defined(CONFIG_MCA) static int el3_device_remove (struct device *device); -#endif #ifdef CONFIG_NET_POLL_CONTROLLER static void el3_poll_controller(struct net_device *dev); #endif +/* Return 0 on success, 1 on error, 2 when found already detected PnP card */ +static int el3_isa_id_sequence(__be16 *phys_addr) +{ + short lrs_state = 0xff; + int i; + + /* ISA boards are detected by sending the ID sequence to the + ID_PORT. We find cards past the first by setting the 'current_tag' + on cards as they are found. Cards with their tag set will not + respond to subsequent ID sequences. */ + + outb(0x00, id_port); + outb(0x00,
Netfilter fixes to 2.6.24-git
Hi to everyone, I have been unable to reach the netfilter and net maintainers the past week regarding inclusion of patches, but most importantly a group of fixes at [0]-[3]. I am kind of at a loss here but to turn up the volume and write to more people on how to proceed. thanks, Jan [0] http://marc.info/?l=netfilter-develm=120230633916142w=2 (Overview) [1] http://marc.info/?l=netfilter-develm=120230634016145w=2 [2] http://marc.info/?l=netfilter-develm=120230634216156w=2 [3] http://marc.info/?l=netfilter-develm=120230634616162w=2 -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] drivers/net/sis190: fix section mismatch warning in sis190_get_mac_addr
Fix following warnings: WARNING: drivers/net/sis190.o(.text+0x103): Section mismatch in reference from the function sis190_get_mac_addr() to the function .devinit.text:sis190_get_mac_addr_from_apc() WARNING: drivers/net/sis190.o(.text+0x10e): Section mismatch in reference from the function sis190_get_mac_addr() to the function .devinit.text:sis190_get_mac_addr_from_eeprom() Annotate sis190_get_mac_addr() with __devinit. Signed-off-by: Sergio Luis [EMAIL PROTECTED] sis190.c |3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff -urN linux-2.6.24-git22.orig/drivers/net/sis190.c linux-2.6.24-git22/drivers/net/sis190.c --- linux-2.6.24-git22.orig/drivers/net/sis190.c2008-02-10 16:56:37.0 -0300 +++ linux-2.6.24-git22/drivers/net/sis190.c 2008-02-10 17:38:36.0 -0300 @@ -1630,7 +1630,8 @@ SIS_PCI_COMMIT(); } -static int sis190_get_mac_addr(struct pci_dev *pdev, struct net_device *dev) +static int __devinit sis190_get_mac_addr(struct pci_dev *pdev, +struct net_device *dev) { u8 from; -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
HTB(?) softlockup, vanilla 2.6.24
It is very difficult to reproduce, happened after running about 1month. No changes done in classes at that time Feb 10 15:53:22 SHAPER [ 8271.778915] BUG: NMI Watchdog detected LOCKUP Feb 10 15:53:22 SHAPER on CPU1, eip c01f0e5d, registers: Feb 10 15:53:22 SHAPER [ 8271.778952] Modules linked in: Feb 10 15:53:22 SHAPER netconsole Feb 10 15:53:22 SHAPER configfs Feb 10 15:53:22 SHAPER softdog Feb 10 15:53:22 SHAPER nf_nat_pptp Feb 10 15:53:22 SHAPER nf_conntrack_pptp Feb 10 15:53:22 SHAPER nf_conntrack_proto_gre Feb 10 15:53:22 SHAPER nf_nat_proto_gre Feb 10 15:53:22 SHAPER xt_tcpudp Feb 10 15:53:22 SHAPER ipt_TTL Feb 10 15:53:22 SHAPER ipt_ttl Feb 10 15:53:22 SHAPER xt_NOTRACK Feb 10 15:53:22 SHAPER iptable_raw Feb 10 15:53:22 SHAPER iptable_mangle Feb 10 15:53:22 SHAPER ifb Feb 10 15:53:22 SHAPER e1000e Feb 10 15:53:22 SHAPER em_nbyte Feb 10 15:53:22 SHAPER cls_tcindex Feb 10 15:53:22 SHAPER act_gact Feb 10 15:53:22 SHAPER cls_rsvp Feb 10 15:53:22 SHAPER sch_htb Feb 10 15:53:22 SHAPER cls_fw Feb 10 15:53:22 SHAPER act_mirred Feb 10 15:53:22 SHAPER em_u32 Feb 10 15:53:22 SHAPER sch_red Feb 10 15:53:22 SHAPER sch_sfq Feb 10 15:53:22 SHAPER sch_tbf Feb 10 15:53:22 SHAPER sch_teql Feb 10 15:53:22 SHAPER cls_basic Feb 10 15:53:22 SHAPER act_police Feb 10 15:53:22 SHAPER sch_gred Feb 10 15:53:22 SHAPER act_pedit Feb 10 15:53:22 SHAPER sch_hfsc Feb 10 15:53:22 SHAPER cls_rsvp6 Feb 10 15:53:22 SHAPER sch_ingress Feb 10 15:53:22 SHAPER em_meta Feb 10 15:53:22 SHAPER em_text Feb 10 15:53:22 SHAPER act_ipt Feb 10 15:53:22 SHAPER sch_dsmark Feb 10 15:53:22 SHAPER sch_prio Feb 10 15:53:22 SHAPER sch_netem Feb 10 15:53:22 SHAPER act_simple Feb 10 15:53:22 SHAPER cls_u32 Feb 10 15:53:22 SHAPER em_cmp Feb 10 15:53:22 SHAPER sch_cbq Feb 10 15:53:22 SHAPER cls_route Feb 10 15:53:22 SHAPER xt_TCPMSS Feb 10 15:53:22 SHAPER iptable_nat Feb 10 15:53:22 SHAPER nf_conntrack_ipv4 Feb 10 15:53:22 SHAPER ipt_LOG Feb 10 15:53:22 SHAPER ipt_MASQUERADE Feb 10 15:53:22 SHAPER ipt_REDIRECT Feb 10 15:53:22 SHAPER nf_nat Feb 10 15:53:22 SHAPER nf_conntrack Feb 10 15:53:22 SHAPER nfnetlink Feb 10 15:53:22 SHAPER iptable_filter Feb 10 15:53:22 SHAPER ip_tables Feb 10 15:53:22 SHAPER x_tables Feb 10 15:53:22 SHAPER 8021q Feb 10 15:53:22 SHAPER tun Feb 10 15:53:22 SHAPER tulip Feb 10 15:53:22 SHAPER r8169 Feb 10 15:53:22 SHAPER sky2 Feb 10 15:53:22 SHAPER via_velocity Feb 10 15:53:22 SHAPER via_rhine Feb 10 15:53:22 SHAPER sis900 Feb 10 15:53:22 SHAPER ne2k_pci Feb 10 15:53:22 SHAPER 8390 Feb 10 15:53:22 SHAPER skge Feb 10 15:53:22 SHAPER tg3 Feb 10 15:53:22 SHAPER 8139too Feb 10 15:53:22 SHAPER e1000 Feb 10 15:53:22 SHAPER e100 Feb 10 15:53:22 SHAPER usb_storage Feb 10 15:53:22 SHAPER mtdblock Feb 10 15:53:22 SHAPER mtd_blkdevs Feb 10 15:53:22 SHAPER usbhid Feb 10 15:53:22 SHAPER uhci_hcd Feb 10 15:53:22 SHAPER ehci_hcd Feb 10 15:53:22 SHAPER ohci_hcd Feb 10 15:53:22 SHAPER usbcore Feb 10 15:53:22 SHAPER Feb 10 15:53:22 SHAPER [ 8271.779291] Feb 10 15:53:22 SHAPER [ 8271.779307] Pid: 0, comm: swapper Not tainted (2.6.24-build-0021 #26) Feb 10 15:53:22 SHAPER [ 8271.779327] EIP: 0060:[c01f0e5d] EFLAGS: 0082 CPU: 1 Feb 10 15:53:22 SHAPER [ 8271.779349] EIP is at __rb_rotate_right+0x5/0x50 Feb 10 15:53:22 SHAPER [ 8271.779366] EAX: f76494a4 EBX: f76494a4 ECX: f76494a4 EDX: c1ff5f80 Feb 10 15:53:22 SHAPER [ 8271.779386] ESI: f76494a4 EDI: c1ff5f80 EBP: ESP: f7c29c70 Feb 10 15:53:22 SHAPER [ 8271.779406] DS: 007b ES: 007b FS: 00d8 GS: SS: 0068 Feb 10 15:53:22 SHAPER [ 8271.779425] Process swapper (pid: 0, ti=f7c28000 task=f7c20a60 task.ti=f7c28000) Feb 10 15:53:22 SHAPER Feb 10 15:53:22 SHAPER [ 8271.779446] Stack: Feb 10 15:53:22 SHAPER f76494a4 Feb 10 15:53:22 SHAPER f76494a4 Feb 10 15:53:22 SHAPER f76494a4 Feb 10 15:53:22 SHAPER c01f0ef4 Feb 10 15:53:22 SHAPER c1ff5f80 Feb 10 15:53:22 SHAPER f76494a4 Feb 10 15:53:22 SHAPER f76494a8 Feb 10 15:53:22 SHAPER c1ff5f78 Feb 10 15:53:22 SHAPER Feb 10 15:53:22 SHAPER [ 8271.779493] Feb 10 15:53:22 SHAPER [ 8271.779307] Pid: 0, comm: swapper Not tainted (2.6.24-build-0021 #26) Feb 10 15:53:22 SHAPER [ 8271.779327] EIP: 0060:[c01f0e5d] EFLAGS: 0082 CPU: 1 Feb 10 15:53:22 SHAPER [ 8271.779349] EIP is at __rb_rotate_right+0x5/0x50 Feb 10 15:53:22 SHAPER [ 8271.779366] EAX: f76494a4 EBX: f76494a4 ECX: f76494a4 EDX: c1ff5f80 Feb 10 15:53:22 SHAPER [ 8271.779386] ESI: f76494a4 EDI: c1ff5f80 EBP: ESP: f7c29c70 Feb 10 15:53:22 SHAPER [ 8271.779406] DS: 007b ES: 007b FS: 00d8 GS: SS: 0068 Feb 10 15:53:22 SHAPER [ 8271.779425] Process swapper (pid: 0, ti=f7c28000 task=f7c20a60 task.ti=f7c28000) Feb 10 15:53:22 SHAPER Feb 10 15:53:22 SHAPER [ 8271.779446] Stack: Feb 10 15:53:22 SHAPER f76494a4 Feb 10 15:53:22 SHAPER f76494a4 Feb 10 15:53:22 SHAPER f76494a4 Feb 10 15:53:22 SHAPER c01f0ef4 Feb 10 15:53:22 SHAPER c1ff5f80 Feb 10 15:53:22 SHAPER f76494a4 Feb 10 15:53:22 SHAPER f76494a8 Feb 10 15:53:22 SHAPER c1ff5f78 Feb 10 15:53:22 SHAPER Feb 10 15:53:22 SHAPER [
[PATCH 5/8] drivers/net/mv643xx_eth.c: Use FIELD_SIZEOF
From: Julia Lawall [EMAIL PROTECTED] Robert P.J. Day proposed to use the macro FIELD_SIZEOF in replace of code that matches its definition. The modification was made using the following semantic patch (http://www.emn.fr/x-info/coccinelle/) // smpl @haskernel@ @@ #include linux/kernel.h @depends on haskernel@ type t; identifier f; @@ - (sizeof(((t*)0)-f)) + FIELD_SIZEOF(t, f) @depends on haskernel@ type t; identifier f; @@ - sizeof(((t*)0)-f) + FIELD_SIZEOF(t, f) // /smpl Signed-off-by: Julia Lawall [EMAIL PROTECTED] --- diff -u -p a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c --- a/drivers/net/mv643xx_eth.c 2008-02-08 08:58:12.0 +0100 +++ b/drivers/net/mv643xx_eth.c 2008-02-10 18:00:09.0 +0100 @@ -3155,7 +3155,7 @@ struct mv643xx_stats { int stat_offset; }; -#define MV643XX_STAT(m) sizeof(((struct mv643xx_private *)0)-m), \ +#define MV643XX_STAT(m) FIELD_SIZEOF(struct mv643xx_private, m), \ offsetof(struct mv643xx_private, m) static const struct mv643xx_stats mv643xx_gstrings_stats[] = { -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Pull request for 'r6040' branch
Hi Francois, Jeff, Le mardi 5 février 2008, Francois Romieu a écrit : Please pull from branch 'r6040' in repository git://git.kernel.org/pub/scm/linux/kernel/git/romieu/netdev-2.6.git r6040 to get the changes below. I have simply rebased the r6040 branch from december on top of Linus's latest head and given each patch a compile test. The content is identical to Florian's initial work (minus the removal of the unused TIMER_WUT and a duplicate update of an error counter). Thank you very much Francois. Jeff, any news on this ? -- Cordialement, Florian Fainelli -- -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[2.6.25-rc1] Locks in udp_recvmsg()?
Hello. I found that udp_recvmsg() in net/ipv4/udp.c for 2.6.25-rc1 calls lock_sock() only when it releases the datagram (i.e. out_free: and csum_copy_err:). Is it correct to call __skb_recv_datagram() without calling lock_sock() when it acquires the datagram (i.e. try_again:)? Regards. -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Netfilter fixes to 2.6.24-git
From: Jan Engelhardt [EMAIL PROTECTED] Date: Sun, 10 Feb 2008 22:02:35 +0100 (CET) I have been unable to reach the netfilter and net maintainers the past week regarding inclusion of patches, but most importantly a group of fixes at [0]-[3]. I am kind of at a loss here but to turn up the volume and write to more people on how to proceed. You just need to be patient and wait for Patrick to get to your patches, it's as simple as that :-) Patrick is normally very responsive, so whatever it is it has to be a temporary issue. Because of LCA08 etc. I myself wasn't even able to get any networking bug fix submissions into 2.6.24.1 Big deal, we'll just get it into the next 2.6.24.x release. Thanks for your patience. -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Netfilter fixes to 2.6.24-git
David Miller wrote: From: Jan Engelhardt [EMAIL PROTECTED] Date: Sun, 10 Feb 2008 22:02:35 +0100 (CET) I have been unable to reach the netfilter and net maintainers the past week regarding inclusion of patches, but most importantly a group of fixes at [0]-[3]. I am kind of at a loss here but to turn up the volume and write to more people on how to proceed. You just need to be patient and wait for Patrick to get to your patches, it's as simple as that :-) Patrick is normally very responsive, so whatever it is it has to be a temporary issue. Indeed, I'm currently ill and not really up for much working, but this will hopefully get better soon. -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [patch 1/2] qeth: new qeth device driver
Paul E. McKenney schrieb: On Fri, Feb 08, 2008 at 03:10:00PM +0100, [EMAIL PROTECTED] wrote: From: Frank Blaschka [EMAIL PROTECTED] List of major changes and improvements: no manipulation of the global ARP constructor clean code split into core, layer 2 and layer 3 functionality better exploitation of the ethtool interface better representation of the various hardware capabilities fix packet socket support (tcpdump), no fake_ll required osasnmpd notification via udev events coding style and beautification One question below... Signed-off-by: Frank Blaschka [EMAIL PROTECTED] --- [ . . . ] +static void qeth_l3_vlan_rx_add_vid(struct net_device *dev, unsigned short vid) +{ +struct net_device *vlandev; +struct qeth_card *card = (struct qeth_card *) dev-priv; +struct in_device *in_dev; + +if (card-info.type == QETH_CARD_TYPE_IQD) +return; + +vlandev = vlan_group_get_device(card-vlangrp, vid); +vlandev-neigh_setup = qeth_l3_neigh_setup; + +in_dev = __in_dev_get_rcu(vlandev); Is this really in an RCU read-side critical section? Or is this just using common code? Thanx, Paul -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Hi Paul, thanks for pointing at this. Using __in_dev_get_rcu without the rcu lock is probably a bug at this place (right?). Using in_dev_get/in_dev_put would be more appropriate. Same for qeth_l3_free_vlan_addresses4(), here we take the rcu read lock, but in_dev_get/in_dev_put would be the better choice. What do you think? Best regards, Frank -- To unsubscribe from this list: send the line unsubscribe netdev in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html