Björn Steinbrink | 1 Apr 2008 02:05
Picon
Picon

Re: [PATCH] forcedeth: mac address fix

On 2008.03.31 16:10:34 -0500, Ayaz Abdulla wrote:
> This critical patch fixes a mac address issue recently introduced. If  

Does "recently" mean my commit 2e3884b5b16795c03a7bf295797c1b2402885b88?
If so, I like to be told directly when I break stuff ;-)

> the device's mac address was in correct order and the flag  
> NVREG_TRANSMITPOLL_MAC_ADDR_REV was set, during nv_remove the flag would  
> get cleared. During next load, the mac address would get reversed  
> because the flag is missing.

Hm, but nv_remove also writes back the reversed mac address. I don't see
how a plain remove/probe cycle would mess things up.

> As it has been indicated previously, the flag is cleared across a low  
> power transition. Therefore, the driver should set the mac address back  
> into the reversed order when clearing the flag.

That's what nv_remove is supposed to do. Is there a case where nv_remove
is not called?

> Also, the driver should set back the flag after a low power transition  
> to protect against kexec command calling nv_probe a second time.

Sounds like suspend stopped calling nv_remove? That would make sense
then. I never checked whether suspend ever actually did call nv_remove
(I think), but as my patch worked, it basically must have done so, at
least in the past, right?

Thanks,
(Continue reading)

Andy Fleming | 1 Apr 2008 04:04
Favicon

Re: gianfar: multiqueue, vlan pbits -> qos?


On Mar 29, 2008, at 14:47, Randy Macleod wrote:

> Hey Netdevers...
>
>  I'm looking into extending the gianfar driver to
> make use of multiple rx (and maybe tx) queues.
> I've started to read the gianfar source, the Freescale docs and  
> netdev.
>
> Has anyone done this already?
>
> My interest is in LAN network QOS,
> primarily selective discard under overload.
> I'm thinking that I'll create several vlans in my
> network and do a strict vlan priority bit based servicing.
>
> I'm also poking at the multi-queue work that has been
> done and wondering how that might fit into a solution.
> I haven't read the e1000 multiqueue driver yet...
>
> Any tips, flames or code?

Excellent!  I've been wanting to do this for some time, but haven't  
managed to get it to the front of my queue (pun retroactively  
intended).  Feel free to contact me if you have any questions.

Andy
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
(Continue reading)

David Miller | 1 Apr 2008 04:27
Favicon

Re: [PATCH 1/3] [LLC]: skb allocation size for responses

From: Arnaldo Carvalho de Melo <acme <at> redhat.com>
Date: Sat, 29 Mar 2008 09:02:23 -0300

> Perfect, thanks a lot:
> 
> Acked-by: Arnaldo Carvalho de Melo <acme <at> redhat.com>

Breaks the build:

net/llc/llc_sap.c: In function 'llc_mac_header_len':
net/llc/llc_sap.c:34: error: 'ARPHDR_IEEE802_TR' undeclared (first use in this function)
net/llc/llc_sap.c:34: error: (Each undeclared identifier is reported only once
net/llc/llc_sap.c:34: error: for each function it appears in.)
net/llc/llc_sap.c:35: error: invalid application of 'sizeof' to incomplete type 'struct thr_hdr' 
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo <at> vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

David Miller | 1 Apr 2008 04:28
Favicon

Re: bluetooth lockdep trace. (.25rc5-git4)

From: "Dave Young" <hidave.darkstar <at> gmail.com>
Date: Sat, 29 Mar 2008 20:45:56 +0800

> Hi, I known this problem and did some work on this, but not finished
> due to lacking time.
> 
> I will continue working on it when I'm free.

Thank you.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo <at> vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

David Miller | 1 Apr 2008 04:30
Favicon

Re: [PATCH 2.6] [IPV6] MCAST: Ensure to check multicast listener(s).

From: David Stevens <dlstevens <at> us.ibm.com>
Date: Sun, 30 Mar 2008 23:52:01 -0700

> Sounds reasonable enough to me.
> 
> Acked-by: David L Stevens <dlstevens <at> us.ibm.com>

Patch applied, thanks everyone.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo <at> vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Stephen Hemminger | 1 Apr 2008 02:47
Favicon

[PATCH 6/6] IPV4: route rekey timer can be deferrable

No urgency on the rehash interval timer, so mark it as deferrable.

Signed-off-by: Stephen Hemminger <shemminger <at> vyatta.com>

--- a/net/ipv4/route.c	2008-03-31 11:22:17.000000000 -0700
+++ b/net/ipv4/route.c	2008-03-31 11:22:19.000000000 -0700
 <at>  <at>  -3058,7 +3058,9  <at>  <at>  int __init ip_rt_init(void)
 	devinet_init();
 	ip_fib_init();

-	setup_timer(&rt_secret_timer, rt_secret_rebuild, 0);
+	rt_secret_timer.function = rt_secret_rebuild;
+	rt_secret_timer.data = 0;
+	init_timer_deferrable(&rt_secret_timer);

 	/* All the timers, started at system startup tend
 	   to synchronize. Perturb it a bit.

--

-- 

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo <at> vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Stephen Hemminger | 1 Apr 2008 02:47
Favicon

[PATCH 5/6] IPV4: route use jhash3

Since route hash is a triple, use jhash_3words rather doing the mixing
directly. This should be as fast and give better distribution.

Signed-off-by: Stephen Hemminger <shemminger <at> vyatta.com>

--- a/net/ipv4/route.c	2008-03-31 11:14:50.000000000 -0700
+++ b/net/ipv4/route.c	2008-03-31 11:15:20.000000000 -0700
 <at>  <at>  -259,16 +259,14  <at>  <at>  static DEFINE_PER_CPU(struct rt_cache_st
 #define RT_CACHE_STAT_INC(field) \
 	(__raw_get_cpu_var(rt_cache_stat).field++)

-static unsigned int rt_hash_code(u32 daddr, u32 saddr)
+static inline unsigned int rt_hash(__be32 daddr, __be32 saddr, int idx)
 {
-	return jhash_2words(daddr, saddr, atomic_read(&rt_genid))
-		& rt_hash_mask;
+	return jhash_3words((__force u32)(__be32)(daddr),
+			    (__force u32)(__be32)(saddr),
+			    idx, atomic_read(&rt_genid))
+  		& rt_hash_mask;
 }

-#define rt_hash(daddr, saddr, idx) \
-	rt_hash_code((__force u32)(__be32)(daddr),\
-		     (__force u32)(__be32)(saddr) ^ ((idx) << 5))
-
 #ifdef CONFIG_PROC_FS
 struct rt_cache_iter_state {
 	struct seq_net_private p;

(Continue reading)

Stephen Hemminger | 1 Apr 2008 02:47
Favicon

[PATCH 2/6] socket: sk_filter deinline

The sk_filter function is too big to be inlined. This saves 2296 bytes
of text on allyesconfig.

Signed-off-by: Stephen Hemminger <shemminger <at> vyatta.com>

--- a/include/linux/filter.h	2008-03-31 10:24:40.000000000 -0700
+++ b/include/linux/filter.h	2008-03-31 10:26:49.000000000 -0700
 <at>  <at>  -142,6 +142,7  <at>  <at>  static inline unsigned int sk_filter_len
 struct sk_buff;
 struct sock;

+extern int sk_filter(struct sock *sk, struct sk_buff *skb);
 extern unsigned int sk_run_filter(struct sk_buff *skb,
 				  struct sock_filter *filter, int flen);
 extern int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk);
--- a/include/net/sock.h	2008-03-31 10:23:12.000000000 -0700
+++ b/include/net/sock.h	2008-03-31 10:25:57.000000000 -0700
 <at>  <at>  -927,41 +927,6  <at>  <at>  extern void sk_common_release(struct soc
 extern void sock_init_data(struct socket *sock, struct sock *sk);

 /**
- *	sk_filter - run a packet through a socket filter
- *	 <at> sk: sock associated with &sk_buff
- *	 <at> skb: buffer to filter
- *	 <at> needlock: set to 1 if the sock is not locked by caller.
- *
- * Run the filter code and then cut skb->data to correct size returned by
- * sk_run_filter. If pkt_len is 0 we toss packet. If skb->len is smaller
- * than pkt_len we keep whole skb->data. This is the socket level
- * wrapper to sk_run_filter. It returns 0 if the packet should
(Continue reading)

Stephen Hemminger | 1 Apr 2008 02:47
Favicon

[PATCH 3/6] IPV4 : use xor rather than multiple ands for route compare

The comparison in ip_route_input is a hot path, by recoding the C
"and" as bit operations, fewer conditional branches get generated
so the code should be faster. Maybe someday Gcc will be smart
enough to do this?

Signed-off-by: Stephen Hemminger <shemminger <at> vyatta.com>

--- a/net/ipv4/route.c	2008-03-31 10:57:30.000000000 -0700
+++ b/net/ipv4/route.c	2008-03-31 11:10:44.000000000 -0700
 <at>  <at>  -2079,14 +2079,14  <at>  <at>  int ip_route_input(struct sk_buff *skb, 
 	rcu_read_lock();
 	for (rth = rcu_dereference(rt_hash_table[hash].chain); rth;
 	     rth = rcu_dereference(rth->u.dst.rt_next)) {
-		if (rth->fl.fl4_dst == daddr &&
-		    rth->fl.fl4_src == saddr &&
-		    rth->fl.iif == iif &&
-		    rth->fl.oif == 0 &&
-		    rth->fl.mark == skb->mark &&
-		    rth->fl.fl4_tos == tos &&
-		    net_eq(dev_net(rth->u.dst.dev), net) &&
-		    rth->rt_genid == atomic_read(&rt_genid)) {
+		if (((rth->fl.fl4_dst ^ daddr) |
+		     (rth->fl.fl4_src ^ saddr) |
+		     (rth->fl.iif ^ iif) |
+		     rth->fl.oif |
+		     (rth->fl.mark ^ skb->mark) |
+		     (rth->fl.fl4_tos ^ tos) |
+		     (rth->rt_genid ^ atomic_read(&rt_genid))) == 0 &&
+		    net_eq(dev_net(rth->u.dst.dev), net)) {
 			dst_use(&rth->u.dst, jiffies);
(Continue reading)

Stephen Hemminger | 1 Apr 2008 02:47
Favicon

[PATCH 4/6] IPV4: route inline changes

Don't mark functions that are large as inline, let compiler decide.
Also, use inline rather than __inline__.

Signed-off-by: Stephen Hemminger <shemminger <at> vyatta.com>

--- a/net/ipv4/route.c	2008-03-31 11:10:44.000000000 -0700
+++ b/net/ipv4/route.c	2008-03-31 11:14:50.000000000 -0700
 <at>  <at>  -600,18 +600,18  <at>  <at>  static inline int ip_rt_proc_init(void)
 }
 #endif /* CONFIG_PROC_FS */

-static __inline__ void rt_free(struct rtable *rt)
+static inline void rt_free(struct rtable *rt)
 {
 	call_rcu_bh(&rt->u.dst.rcu_head, dst_rcu_free);
 }

-static __inline__ void rt_drop(struct rtable *rt)
+static inline void rt_drop(struct rtable *rt)
 {
 	ip_rt_put(rt);
 	call_rcu_bh(&rt->u.dst.rcu_head, dst_rcu_free);
 }

-static __inline__ int rt_fast_clean(struct rtable *rth)
+static inline int rt_fast_clean(struct rtable *rth)
 {
 	/* Kill broadcast/multicast entries very aggresively, if they
 	   collide in hash table with more useful entries */
 <at>  <at>  -619,7 +619,7  <at>  <at>  static __inline__ int rt_fast_clean(stru
(Continue reading)


Gmane