Re: [2/2] 2.6.22-rc4: known regressions with patches v3

2007-06-14 Thread Paulo Pereira
A Wednesday 13 June 2007 21:35:02, Greg KH escreveu:
> On Wed, Jun 13, 2007 at 09:58:05PM +0200, Michal Piotrowski wrote:
> >  USB
> >
> >  Subject: list_add corruption. prev->next should be next (f7d28794),
> > but was f0df8ed4 (prev=f0df8ed4) Kernel Bug at lib/list_debug.c:33
> >  References : http://bugzilla.kernel.org/show_bug.cgi?id=8561
> >  Submitter  : Paulo Pereira <[EMAIL PROTECTED]>
> >  Handled-By : Alan Stern <[EMAIL PROTECTED]>
> >  Patch  : http://bugzilla.kernel.org/show_bug.cgi?id=8561#c8
> >  Status : patch was suggested
>
> I'm pretty sure this wasn't a "regression" and was always there, and
> that the proposed patch did fix the solution, right Paulo and Alan?
>
> thanks,
>
> greg k-h

No I haven't fix the problem... I'am waiting for a friend that is in 
holiday's and work's with linux well. I'am beginer in linux and I can't put 
the patch to work, because of that I'am waiting for him to see if the patch 
work. 
Sorry, the fact I don't say anything about the problem but my friend 
comes 
this week and them we put the patch and I will tell something!!
Regards, Paulo.
-
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] ehea: Whitespace cleanup

2007-06-14 Thread Jan-Bernd Themann
This patch fixes several whitespace issues.

Signed-off-by: Jan-Bernd Themann <[EMAIL PROTECTED]>
---


diff --git a/drivers/net/ehea/ehea.h b/drivers/net/ehea/ehea.h
index c0f81b5..abaf3ac 100644
--- a/drivers/net/ehea/ehea.h
+++ b/drivers/net/ehea/ehea.h
@@ -39,7 +39,7 @@
 #include 
 
 #define DRV_NAME   "ehea"
-#define DRV_VERSION"EHEA_0064"
+#define DRV_VERSION"EHEA_0065"
 
 #define EHEA_MSG_DEFAULT (NETIF_MSG_LINK | NETIF_MSG_TIMER \
| NETIF_MSG_RX_ERR | NETIF_MSG_TX_ERR)
@@ -136,10 +136,10 @@ void ehea_dump(void *adr, int len, char *msg);
(0xULL >> ((64 - (mask)) & 0x))
 
 #define EHEA_BMASK_SET(mask, value) \
-((EHEA_BMASK_MASK(mask) & ((u64)(value))) << EHEA_BMASK_SHIFTPOS(mask))
+   ((EHEA_BMASK_MASK(mask) & ((u64)(value))) << EHEA_BMASK_SHIFTPOS(mask))
 
 #define EHEA_BMASK_GET(mask, value) \
-(EHEA_BMASK_MASK(mask) & (((u64)(value)) >> EHEA_BMASK_SHIFTPOS(mask)))
+   (EHEA_BMASK_MASK(mask) & (((u64)(value)) >> EHEA_BMASK_SHIFTPOS(mask)))
 
 /*
  * Generic ehea page
@@ -190,7 +190,7 @@ struct ehea_av;
  * Queue attributes passed to ehea_create_qp()
  */
 struct ehea_qp_init_attr {
-/* input parameter */
+   /* input parameter */
u32 qp_token;   /* queue token */
u8 low_lat_rq1;
u8 signalingtype;   /* cqe generation flag */
@@ -212,7 +212,7 @@ struct ehea_qp_init_attr {
u64 recv_cq_handle;
u64 aff_eq_handle;
 
-/* output parameter */
+   /* output parameter */
u32 qp_nr;
u16 act_nr_send_wqes;
u16 act_nr_rwqes_rq1;
@@ -279,12 +279,12 @@ struct ehea_qp {
  * Completion Queue attributes
  */
 struct ehea_cq_attr {
-/* input parameter */
+   /* input parameter */
u32 max_nr_of_cqes;
u32 cq_token;
u64 eq_handle;
 
-/* output parameter */
+   /* output parameter */
u32 act_nr_of_cqes;
u32 nr_pages;
 };
diff --git a/drivers/net/ehea/ehea_hw.h b/drivers/net/ehea/ehea_hw.h
index 1246757..1af7ca4 100644
--- a/drivers/net/ehea/ehea_hw.h
+++ b/drivers/net/ehea/ehea_hw.h
@@ -211,34 +211,34 @@ static inline void epa_store_acc(struct h_epa epa, u32 
offset, u64 value)
 }
 
 #define epa_store_eq(epa, offset, value)\
-epa_store(epa, EQTEMM_OFFSET(offset), value)
+   epa_store(epa, EQTEMM_OFFSET(offset), value)
 #define epa_load_eq(epa, offset)\
-epa_load(epa, EQTEMM_OFFSET(offset))
+   epa_load(epa, EQTEMM_OFFSET(offset))
 
 #define epa_store_cq(epa, offset, value)\
-epa_store(epa, CQTEMM_OFFSET(offset), value)
+   epa_store(epa, CQTEMM_OFFSET(offset), value)
 #define epa_load_cq(epa, offset)\
-epa_load(epa, CQTEMM_OFFSET(offset))
+   epa_load(epa, CQTEMM_OFFSET(offset))
 
 #define epa_store_qp(epa, offset, value)\
-epa_store(epa, QPTEMM_OFFSET(offset), value)
+   epa_store(epa, QPTEMM_OFFSET(offset), value)
 #define epa_load_qp(epa, offset)\
-epa_load(epa, QPTEMM_OFFSET(offset))
+   epa_load(epa, QPTEMM_OFFSET(offset))
 
 #define epa_store_qped(epa, offset, value)\
-epa_store(epa, QPEDMM_OFFSET(offset), value)
+   epa_store(epa, QPEDMM_OFFSET(offset), value)
 #define epa_load_qped(epa, offset)\
-epa_load(epa, QPEDMM_OFFSET(offset))
+   epa_load(epa, QPEDMM_OFFSET(offset))
 
 #define epa_store_mrmw(epa, offset, value)\
-epa_store(epa, MRMWMM_OFFSET(offset), value)
+   epa_store(epa, MRMWMM_OFFSET(offset), value)
 #define epa_load_mrmw(epa, offset)\
-epa_load(epa, MRMWMM_OFFSET(offset))
+   epa_load(epa, MRMWMM_OFFSET(offset))
 
 #define epa_store_base(epa, offset, value)\
-epa_store(epa, HCAGR_OFFSET(offset), value)
+   epa_store(epa, HCAGR_OFFSET(offset), value)
 #define epa_load_base(epa, offset)\
-epa_load(epa, HCAGR_OFFSET(offset))
+   epa_load(epa, HCAGR_OFFSET(offset))
 
 static inline void ehea_update_sqa(struct ehea_qp *qp, u16 nr_wqes)
 {
diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c
index 9e13433..bdb5241 100644
--- a/drivers/net/ehea/ehea_main.c
+++ b/drivers/net/ehea/ehea_main.c
@@ -81,7 +81,7 @@ MODULE_PARM_DESC(use_mcs, " 0:NAPI, 1:Multiple receive 
queues, Default = 1 ");
 static int port_name_cnt = 0;
 
 static int __devinit ehea_probe_adapter(struct ibmebus_dev *dev,
-const struct of_device_id *id);
+   const struct of_device_id *id);
 
 static int __devexit ehea_remove(struct ibmebus_dev *dev);
 
@@ -236,7 +236,7 @@ static int ehea_refill_rq_def(struct ehea_port_res *pr,
 
rwqe = ehea_get_next_rwqe(qp, rq_nr);
rwqe->wr_id = EHEA_BMASK_SET(EHEA_WR_ID_TYPE, wqe_type)
-   | EHEA_BMASK_SET(EHEA_WR_ID_INDEX, index);
+   | EHEA_BMASK_SET(EHEA_WR_ID_INDEX, index);
rwqe->sg_list[0].l_key = pr->recv_mr.lkey;
rwqe->sg_list

[IPV6] addrconf: Fix IPv6 on tuntap tunnels

2007-06-14 Thread Herbert Xu
Hi Dave:

[IPV6] addrconf: Fix IPv6 on tuntap tunnels

The recent patch that added ipv6_hwtype is broken on tuntap tunnels.
Indeed, it's broken on any device that does not pass the ipv6_hwtype
test.

The reason is that the original test only applies to autoconfiguration,
not IPv6 support.  IPv6 support is allowed on any device.  In fact,
even with the ipv6_hwtype patch applied you can still add IPv6 addresses
to any interface that doesn't pass thw ipv6_hwtype test provided that
they have a sufficiently large MTU.  This is a serious problem because
come deregistration time these devices won't be cleaned up properly.

I've gone back and looked at the rationale for the patch.  It appears
that the real problem is that we were creating IPv6 devices even if the
MTU was too small.  So here's a patch which fixes that and reverts the
ipv6_hwtype stuff.

Thanks to Kanru Chen for reporting this issue.

Signed-off-by: Herbert Xu <[EMAIL PROTECTED]>

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 5a5f8bd..f96ed76 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -2154,6 +2154,15 @@ static void addrconf_dev_config(struct net_device *dev)
 
ASSERT_RTNL();
 
+   if ((dev->type != ARPHRD_ETHER) &&
+   (dev->type != ARPHRD_FDDI) &&
+   (dev->type != ARPHRD_IEEE802_TR) &&
+   (dev->type != ARPHRD_ARCNET) &&
+   (dev->type != ARPHRD_INFINIBAND)) {
+   /* Alas, we support only Ethernet autoconfiguration. */
+   return;
+   }
+
idev = addrconf_add_dev(dev);
if (idev == NULL)
return;
@@ -2241,36 +2250,16 @@ static void addrconf_ip6_tnl_config(struct net_device 
*dev)
ip6_tnl_add_linklocal(idev);
 }
 
-static int ipv6_hwtype(struct net_device *dev)
-{
-   if ((dev->type == ARPHRD_ETHER) ||
-   (dev->type == ARPHRD_LOOPBACK) ||
-   (dev->type == ARPHRD_SIT) ||
-   (dev->type == ARPHRD_TUNNEL6) ||
-   (dev->type == ARPHRD_FDDI) ||
-   (dev->type == ARPHRD_IEEE802_TR) ||
-   (dev->type == ARPHRD_ARCNET) ||
-   (dev->type == ARPHRD_INFINIBAND))
-   return 1;
-
-   return 0;
-}
-
 static int addrconf_notify(struct notifier_block *this, unsigned long event,
   void * data)
 {
struct net_device *dev = (struct net_device *) data;
-   struct inet6_dev *idev;
+   struct inet6_dev *idev = __in6_dev_get(dev);
int run_pending = 0;
 
-   if (!ipv6_hwtype(dev))
-   return NOTIFY_OK;
-
-   idev = __in6_dev_get(dev);
-
switch(event) {
case NETDEV_REGISTER:
-   if (!idev) {
+   if (!idev && dev->mtu >= IPV6_MIN_MTU) {
idev = ipv6_add_dev(dev);
if (!idev)
printk(KERN_WARNING "IPv6: add_dev failed for 
%s\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


Re: Fwd: [PATCH] [-mm] ACPI: export ACPI events via netlink

2007-06-14 Thread Zhang Rui
Hi, Jamal,

Now the genl utility can find the acpi event genetlink family.
And a simple user space demo is finished for handling acpi event.
I really appreciate your help. :)

I think the patch which exposes ACPI events via netlink is ok.
But I still have some problems on
how to listen to specified genetlink family in user space?

I can get the dynamic id for "acpi_event" genl family.
But I don't know how to use this to receive messages from
specified genl family.
It seems that "#genl ctrl monitor" has something to do with this,
IMO, rtnl_open_byproto(&rth, nl_mgrp(GENL_ID_CTRL), NETLINK_GENERIC) is
used to receive messages from the nlctrl(controller) only, but
unfortunately it never works for me. :(

Any suggestions? What interfaces should I use? Or where can I find some
example code?

Attachment is the simple user space demo I made.
It receives all the broadcasted genetlink messages and only parses the
ones sent by "acpi_event" genl family.


Thanks,
Rui

On Sun, 2007-05-27 at 09:34 -0400, jamal wrote: 
> On 5/27/07, Zhang Rui <[EMAIL PROTECTED]> wrote:
> >
> > I need to write a user application to test my patch.
> > Netlink messages can be sent/received using the standard socket API.
> 
> sure.
> 
> > But how to receive Genetlink messages from specified genetlink family?
> > There is no socket ACPI with such a parameter, right?
> 
> Each module has a unique identifier that it receives dynamically on
>  insertion at the kernel.
> 
> > Do I have to receive all the genetlink messages first?
> 
>  No, just the ones for your dynamic id. Try what i described first for
>  kernel side on the earlier email. I will repeat it here for clarity.
> Then look at genl code and if you have questions i can
>  help.
> Note: You need to discover your dynamic id (the iproute2/genl code has a stub
> example code)
>  As i told you in the earlier email, in your development:
>  - start first by just writting your kernel side.
>  - Then use the genl utility - which is part of iproute2 to see if the
>  kernel side is "discoverable".
> 
>  E.g if i wanted to "discover" currently loaded modules on my laptop, i
>  would do this:
> 
>  ---
>  [EMAIL PROTECTED]:~$ genl ctrl ls
> 
>  Name: nlctrl
>  ID: 0x10  Version: 0x2  header size: 0  max attribs: 6
>  commands supported:
>  #1:  ID-0x3  flags-0xe
> 
> 
>  Name: nl80211
>  ID: 0x11  Version: 0x1  header size: 0  max attribs: 22
>  commands supported:
>  #1:  ID-0x1  flags-0xa
>  #2:  ID-0x6  flags-0xa
>  #3:  ID-0x8  flags-0xa
>  #4:  ID-0x3  flags-0xb
>  #5:  ID-0x4  flags-0xb
>  #6:  ID-0x5  flags-0xb
>  #7:  ID-0xa  flags-0xb
>  #8:  ID-0xb  flags-0xa
>  #9:  ID-0xf  flags-0xb
>  #10:  ID-0x10  flags-0xa
>  #11:  ID-0x12  flags-0xb
>  #12:  ID-0x13  flags-0xa
>  #13:  ID-0x15  flags-0xa
>  #14:  ID-0x19  flags-0xb
>  #15:  ID-0x17  flags-0xb
>  #16:  ID-0x18  flags-0xb
>  #17:  ID-0x1a  flags-0xb
>  #18:  ID-0x1b  flags-0xa
>  #19:  ID-0xd  flags-0xb
> 
> 
>  Name: TASKSTATS
>  ID: 0x12  Version: 0x1  header size: 0  max attribs: 4
>  commands supported:
>  #1:  ID-0x1  flags-0xa
>  ---
> 
>  As you can see, i can see from user space the name of the kernel end
>  point, its numeric id, what version it is running (so i can make sure
>  user space is compatible), what extra header it may have, what the
>  maximum number of attributes it can take. The last thing that gets
>  listed is the commands, and flags for those commands.
> 
>  Lets load tipc kernel module and repeat...
> 
>  ---
> 
>  [EMAIL PROTECTED]:~$ sudo modprobe tipc
>  Name: nlctrl
>  ID: 0x10  Version: 0x2  header size: 0  max attribs: 6
>  commands supported:
>  #1:  ID-0x3  flags-0xe
> 
>  
>  [same as before]
>  
> 
>  Name: TIPC
>  ID: 0x13  Version: 0x1  header size: 8  max attribs: 0
>  commands supported:
>  #1:  ID-0x1  flags-0x2
> 
>  ===
> 
> > It would be great if there are any examples on user space communication.
> 
> 
> 
> Bug Thomas - he has written some simple example. I also have some but i
>  changed laptops and i have to go and dig it up for you.
>  I do have plans for making this easier for people - but havent had time.
>  If there is persistence - or someone out there wants to be a hero email
>  me privately and i will explain it.
> 
> > Or should I use libnl library instead?
> 
> Why am i answering all these questions if you are fine with using libnl?
> Last time you said you couldnt use a library, no?
> 
> cheers,
> jamal
> 
> 
> > Thanks,
> > Rui.
> >


acpi_genl.tgz
Description: applicatio

[PATCH] [TCP]: Add missing break to TCP option parsing code

2007-06-14 Thread Ilpo Järvinen
This flaw does not affect any behavior (currently).

Signed-off-by: Ilpo Järvinen <[EMAIL PROTECTED]>
---
 net/ipv4/tcp_input.c |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index d506bdc..aaf6f66 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -2936,6 +2936,7 @@ void tcp_parse_options(struct sk_buff *skb, struct 
tcp_options_received *opt_rx,
   opt_rx->sack_ok) {
TCP_SKB_CB(skb)->sacked = (ptr 
- 2) - (unsigned char *)th;
}
+   break;
 #ifdef CONFIG_TCP_MD5SIG
case TCPOPT_MD5SIG:
/*
-- 
1.5.0.6


Re: [2/2] 2.6.22-rc4: known regressions v3

2007-06-14 Thread Mark Fortescue

Hi All,

They apear as soon as simpleinit starts up. Somtimes I get to a login 
prompt before seeing any. Other times, commands in the simpleinit rc 
script fail.


They do apear to be random. If a command failes, you re-run the command 
and it is OK. Commands seen to fail are basic (depmod, rm cat ..).


The test I did use the same binaries with both the OK and problem kernels 
so it is not a change to the application code, it is definatly a kernel 
issue.


Regards
Mark Fortescue.

On Wed, 13 Jun 2007, William Lee Irwin III wrote:


On Wed, Jun 13, 2007 at 11:25:20PM +0100, Mark Fortescue wrote:

The random seg faults on x86_64 is interesting as I have been getting
random illegal instruction faults on sparc (sun4c) with 2.6.22-rc3. I have
not yet tried to track it down. All I know at present is that it is not a
problem on 2.6.20.9.


Very interesting. Any hints as to how to test or how long to wait
before the illegal instructions happen?


-- wli


-
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]is_power_of_2-net/core/neighbour.c

2007-06-14 Thread vignesh babu

Replacing (n & (n-1)) in the context of power of 2 checks
with is_power_of_2

Signed-off-by: vignesh babu <[EMAIL PROTECTED]>
--- 
diff --git a/net/core/neighbour.c b/net/core/neighbour.c
index 6f3bb73..e663999 100644
--- a/net/core/neighbour.c
+++ b/net/core/neighbour.c
@@ -33,6 +33,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #define NEIGH_DEBUG 1
 
@@ -311,7 +312,7 @@ static void neigh_hash_grow(struct neigh_table *tbl, 
unsigned long new_entries)
 
NEIGH_CACHE_STAT_INC(tbl, hash_grows);
 
-   BUG_ON(new_entries & (new_entries - 1));
+   BUG_ON(!is_power_of_2(new_entries));
new_hash = neigh_hash_alloc(new_entries);
if (!new_hash)
return;

-- 
Vignesh Babu BM 
_ 
"Why is it that every time I'm with you, makes me believe in magic?"

-
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/2] qdisc_restart - couple of optimizations.

2007-06-14 Thread Herbert Xu
On Wed, Jun 13, 2007 at 02:10:49PM +0530, Krishna Kumar wrote:
> 
> - BUG_ON((int) q->q.qlen < 0) was a relic from old times when -1
>   meant more packets are available, and __qdisc_run used to loop
>   when qdisc_restart() returned -1. During those days, it was
>   necessary to make sure that qlen is never less than zero, since
>   __qdisc_run would get into an infinite loop if no packets are on
>   the queue and this bug in qdisc was there (and worse - no more
>   skbs could ever get queue'd as we hold the queue lock too). With
>   Herbert's recent change to return values, this check is not
>   required.  Hopefully Herbert can validate this change. If at all
>   this is required, it should be added to skb_dequeue (in failure
>   case), and not to qdisc_qlen.

Yes I agree that this check is no longer critical.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/2] qdisc_restart - couple of optimizations.

2007-06-14 Thread Herbert Xu
On Wed, Jun 13, 2007 at 10:51:00AM -0700, Waskiewicz Jr, Peter P wrote:
> 
> I somewhat disagree here.  The underlying driver can conceivably stop
> the device queue even if the stack holds the queue lock during an
> interrupt to clean Tx descriptors, and it finds it's out of them or
> needs to grab the device for whatever reason.  Granted this is a corner
> case, and the net effect would be a simple requeue of the skb, but
> checking the status of the queue at the last possible moment before
> entering the driver could alleviate the requeue in the time between
> ->dequeue() from the qdisc, and hard_start_xmit() if an event like I
> mentioned happened.

IMHO this scenario occurs so infrequently that the check isn't worth it
especially since the driver has to be able to deal with us calling it
after netif_stop_queue() anyway.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Fwd: [PATCH] [-mm] ACPI: export ACPI events via netlink

2007-06-14 Thread jamal
On Thu, 2007-14-06 at 16:59 +0800, Zhang Rui wrote:
> Hi, Jamal,
> 
> Now the genl utility can find the acpi event genetlink family.
> And a simple user space demo is finished for handling acpi event.
> I really appreciate your help. :)

np.

> I think the patch which exposes ACPI events via netlink is ok.
> But I still have some problems on
> how to listen to specified genetlink family in user space?
> 
> I can get the dynamic id for "acpi_event" genl family.
> But I don't know how to use this to receive messages from
> specified genl family.
> It seems that "#genl ctrl monitor" has something to do with this,
> IMO, rtnl_open_byproto(&rth, nl_mgrp(GENL_ID_CTRL), NETLINK_GENERIC) is
> used to receive messages from the nlctrl(controller) only, but
> unfortunately it never works for me. :(
> 

I dont have much time to look at your code given travel, but did you
try to use your group id instead of the controller's?
i.e:
rtnl_open_byproto(&rth, nl_mgrp(mydiscoveredacpiid), NETLINK_GENERIC)

If this doesnt work, ping me and i will take a look  - just expect some
latency in response.

cheers,
jamal

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


Re: [PATCH] NET: Multiqueue network device support.

2007-06-14 Thread jamal
Hi Yi,

On Thu, 2007-14-06 at 10:44 +0800, Zhu Yi wrote:
> On Wed, 2007-06-13 at 08:32 -0400, jamal wrote:
> > The key arguement i make (from day one actually) is to leave the
> > majority of the work to the driver.
> 
> But it seems not feasible the Qdisc needs to know nothing about the
> hardware rings.

This discussion is addressing whether it is feasible to do it without
the qdisc knowing anything about the hardware ring.

> > My view of wireless WMM etc is it is a different media behavior
> > (compared to wired ethernet) which means a different view of strategy
> > for when it opens the valve to allow in more packets. 802.11 media has
> > embedded signalling which is usable. Guy Cohen gave a good use case
> > which i responded to. Do you wanna look at that and respond? 
> 
> The key to support multi-ring hardware for software is to put packets
> into hardware as much/early as possible. Guy gave a good VO vs. BK
> example. To achieve this in your model, you have to keep the TX ring
> running (in the case of PHL full) and requeue. But when there are only
> BK packets coming, you do want to stop the ring, right? AFAICS, the
> driver is not the best place to make the decision (it only knows the
> current and previous packets, but not the _next_), the Qdisc is the best
> place.
> 

I dont have much time to followup for sometime to come. I have left my
answer above. To clarify, incase i wasnt clear, I am saying:
a) It is better to have the driver change via some strategy of when to
open the tx path than trying to be generic. This shifts the burden to
the driver.
b) given the behavior of wireless media (which is very different from
wired ethernet media), you need a different strategy. In response to
Guy's question, I gave the example of being able to use management
frames to open up the tx path for VO (even when you dont know VO packets
are sitting on the qdisc); alternatively you could use a timer etc.
Theres many ways to skin the cat (with apologies to cat lovers/owners).
i.e you need to look at the media and be creative.
Peters DCE for example could also be handled by having a specific
strategy.

I will try to continue participating in the discussion (if CCed) but
much less for about a week. In any case I think i have had the
discussion i was hoping for and trust Patrick understands both sides.
This thread has run for too long folks, eh?

cheers,
jamal

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


Re: [PATCH][RFC] network splice receive v2

2007-06-14 Thread Evgeniy Polyakov
On Wed, Jun 13, 2007 at 12:01:04PM +0400, Evgeniy Polyakov ([EMAIL PROTECTED]) 
wrote:
> I will rebase my tree, likely something was not merged correctly.

Ok, I've just rebased a tree from recent git and pulled from brick -
things seems to be settled. I've ran several tests with different
filesizes and all files were received correctly without kernel crashes.
There is skb leak indeed, and it looks like it is in the
__splice_from_pipe() for the last page.

Thanks Jens, good work.

-- 
Evgeniy Polyakov
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH][RFC] network splice receive v2

2007-06-14 Thread Jens Axboe
On Thu, Jun 14 2007, Evgeniy Polyakov wrote:
> On Wed, Jun 13, 2007 at 12:01:04PM +0400, Evgeniy Polyakov ([EMAIL 
> PROTECTED]) wrote:
> > I will rebase my tree, likely something was not merged correctly.
> 
> Ok, I've just rebased a tree from recent git and pulled from brick -
> things seems to be settled. I've ran several tests with different
> filesizes and all files were received correctly without kernel crashes.
> There is skb leak indeed, and it looks like it is in the
> __splice_from_pipe() for the last page.

Uh, the leak, right - I had forgotten about that, was working on getting
vmsplice into shape the last two days. Interesting that you mention the
last page, I'll dig in now! Any more info on this (how did you notice
the leak originates from there)?

> Thanks Jens, good work.

Thanks, you're welcome!

-- 
Jens Axboe

-
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]: ps3: gigabit ethernet driver for PS3

2007-06-14 Thread MOKUNO Masakazu
Hi Jeff,

Thanks for your comment.

I'll fix coding style issues.

On Wed, 13 Jun 2007 16:27:32 -0400
Jeff Garzik <[EMAIL PROTECTED]> wrote:

> > --- a/drivers/net/Makefile
> > +++ b/drivers/net/Makefile
> > @@ -60,6 +60,8 @@ obj-$(CONFIG_TIGON3) += tg3.o
> >  obj-$(CONFIG_BNX2) += bnx2.o
> >  spidernet-y += spider_net.o spider_net_ethtool.o
> >  obj-$(CONFIG_SPIDER_NET) += spidernet.o sungem_phy.o
> > +obj-$(CONFIG_GELIC_NET) += ps3_gelic.o
> > +ps3_gelic-objs += gelic_net.o
> >  obj-$(CONFIG_TC35815) += tc35815.o
> >  obj-$(CONFIG_SKGE) += skge.o
> >  obj-$(CONFIG_SKY2) += sky2.o
> 
> How about ps3_gige for the driver name.  Ditto DaveM's comments about 
> cleanups here.

This change was made to work around a module load/unload issue we met.
I'll check again what the issue was and try to avoid the changes here.

ps3_gige.{c,ko} is preferred one than gelic_net.{c,ko}?

> > +static void gelic_net_set_descr_status(struct gelic_net_descr *descr,
> > +  enum gelic_net_descr_status status)
> > +{
> > +   u32 cmd_status;
> > +
> > +   /* read the status */
> > +   cmd_status = descr->dmac_cmd_status;
> > +   /* clean the upper 4 bits */
> > +   cmd_status &= GELIC_NET_DESCR_IND_PROC_MASKO;
> > +   /* add the status to it */
> > +   cmd_status |= ((u32)status) << GELIC_NET_DESCR_IND_PROC_SHIFT;
> > +   /* and write it back */
> > +   descr->dmac_cmd_status = cmd_status;
> > +   wmb();
> 
> does the wmb() actually do anything useful here?

descr points a descriptor that the ethernet hardware checks.
Since dmac_cmd_status is the field that describes the descriptor is free
or invalid etc., the caller of this function usually wants to talk
something to the hardware.  So I do the synchronization here.


> > +static int gelic_net_prepare_rx_descr(struct gelic_net_card *card,
> > + struct gelic_net_descr *descr)
> > +{
> > +   int offset;
> > +   unsigned int bufsize;
> > +
> > +   if (gelic_net_get_descr_status(descr) !=  GELIC_NET_DESCR_NOT_IN_USE) {
> > +   dev_info(ctodev(card), "%s: ERROR status \n", __func__);
> > +   }
> > +   /* we need to round up the buffer size to a multiple of 128 */
> > +   bufsize = (GELIC_NET_MAX_MTU + GELIC_NET_RXBUF_ALIGN - 1) &
> > +   (~(GELIC_NET_RXBUF_ALIGN - 1));
> 
> use ALIGN()?
> 

Nice macro! thanks.

> > +   /* and we need to have it 128 byte aligned, therefore we allocate a
> > +* bit more */
> > +   descr->skb = netdev_alloc_skb(card->netdev,
> > +   bufsize + GELIC_NET_RXBUF_ALIGN - 1);
> 
> net_device allocation is already rounded.  and combined with the above 
> code snippet, it appears you're aligning twice
> 

Gelic requies buffer whic is both 128 bytes aligned and multiple of 128
bytes in size.
Does netdev_alloc_skb() guarantee to allocate a skb which has 128byte
aligned buffer?

> > +out:
> > +   if (!stop && release && netif_queue_stopped(card->netdev))
> > +   netif_wake_queue(card->netdev);
> 
> shouldn't need to test netif_queued_stopped() before calling 
> netif_wake_queue(), as netif_wake_queue() essentially already does this

OK, I'll fix

> > +
> > +   /* set multicast address */
> > +   for (mc = netdev->mc_list; mc; mc = mc->next) {
> > +   addr = 0;
> > +   p = mc->dmi_addr;
> > +   for (i = 0; i < ETH_ALEN; i++) {
> > +   addr <<= 8;
> > +   addr |= *p++;
> > +   }
> > +   status = lv1_net_add_multicast_address(bus_id(card), 
> > dev_id(card),
> > +   addr, 0);
> > +   if (status)
> > +   dev_err(ctodev(card),
> > +   "lv1_net_add_multicast_address failed, %d\n",
> > +   status);
> > +   }
> 
> this seems not to handle the promisc case

gelic_net driver does not support promisc mode, as the hypervisor does
not support it.

> > +static void gelic_net_disable_txdmac(struct gelic_net_card *card)
> > +{
> > +   int status;
> > +
> > +   /* this hvc blocks until the DMA in progress really stopped */
> > +   status = lv1_net_stop_tx_dma(bus_id(card), dev_id(card), 0);
> > +   if (status)
> > +   dev_err(ctodev(card),
> > +   "lv1_net_stop_tx_dma faild, status=%d\n", status);
> > +}
> 
> do we really need all these three-C-statement functions?

Well, lv1_net_zzz_dma() hypervisor calls are self-descriptive. But
considering the future consolidation with spider_net, I think these
symmetry with spider_net would help.

> > +/**
> > + * gelic_net_xmit - transmits a frame over the device
> > + * @skb: packet to send out
> > + * @netdev: interface device structure
> > + *
> > + * returns 0 on success, <0 on failure
> > + */
> > +static int gelic_net_xmit(struct sk_buff *skb, struct net_device *netdev)
> > +{
> > +   struct gelic_net_card *card = netdev_priv(netdev);
> > +   struct gelic_net_descr *descr = NULL;
> > +   int result;
> > +   unsigned long flags;
> > +
> > +   spin_lock_

Re: [2/2] 2.6.22-rc4: known regressions v3

2007-06-14 Thread William Lee Irwin III
On Thu, Jun 14, 2007 at 11:30:25AM +0100, Mark Fortescue wrote:
> They apear as soon as simpleinit starts up. Somtimes I get to a login 
> prompt before seeing any. Other times, commands in the simpleinit rc 
> script fail.
> They do apear to be random. If a command failes, you re-run the command 
> and it is OK. Commands seen to fail are basic (depmod, rm cat ..).
> The test I did use the same binaries with both the OK and problem kernels 
> so it is not a change to the application code, it is definatly a kernel 
> issue.

This sounds like it may be addressed by benh's ptep_set_access_flags()
fixes. Those fixes are still in -mm, hopefully to hit mainline by 2.6.22.


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


Re: [2/2] 2.6.22-rc4: known regressions v3

2007-06-14 Thread Mark Fortescue


Benh's ptep_set_access_flags() patch needs to be applied in order to get 
anyware with sun4c for all kernels >= linux-2.6.15. If not applied, you 
will be lucky to get sash running as your init and even that will have 
very limitit capabilities before it locks up the processor (power up 
reset required).


It has been applied to both the kernels I used for testing so this 
problem is independent of the ptep_set_access_flags patch but that 
does not mean that it is not a related issue.


I will try to get some testing done over the weekend to narrow down 
when the random illegal instructions first occour.


If I start with 2.6.21 then if that is OK, then I should be able to narow 
the issue down without too much trouble. If it is between 2.6.20 and 
2.6.21 then it will be a right pig as there are a large number of commits 
that don't compile for sun4c between these two. What I am hoping is that 
it occours in the 2.6.22-rc2 as per the x86_64.


I am going to have to put a 'reset' button onto my test system as power up 
resets are bad news on this old hardware and almost all kernel failures 
result in a processor lockup. I have even had to make BUG reports 'panic' 
as thoes that I have during kernel fault location had are terminal to a 
sun4c (they cause a processor lockup).


Regards
Mark Fortescue.

On Thu, 14 Jun 2007, William Lee Irwin III wrote:


On Thu, Jun 14, 2007 at 11:30:25AM +0100, Mark Fortescue wrote:

They apear as soon as simpleinit starts up. Somtimes I get to a login
prompt before seeing any. Other times, commands in the simpleinit rc
script fail.
They do apear to be random. If a command failes, you re-run the command
and it is OK. Commands seen to fail are basic (depmod, rm cat ..).
The test I did use the same binaries with both the OK and problem kernels
so it is not a change to the application code, it is definatly a kernel
issue.


This sounds like it may be addressed by benh's ptep_set_access_flags()
fixes. Those fixes are still in -mm, hopefully to hit mainline by 2.6.22.


-- wli


-
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: Realtek r8168 slow outbound transfer - potential fix/workaround

2007-06-14 Thread David Gundersen



What is the value of the MTU for your 8168 device ?


Hi Francois,

The MTU for the adapter is set at the default of 1500.

A bit more background on how I came across this might be in order.  I 
noticed it when performing very simple SQL queries against a postgres 
database on my server.  I captured the traffic on an XP client machine 
using wireshark and on the linux server with tcpdump. I noticed that 
although the linux server claimed to have sent 2 reply packets, XP was 
seeing only the first.


What got me thinking was the fact that the time between the first and 
second response packets from postgres was 0.05 seconds (according to 
the tcpdump timestamps).  Another 0.4 seconds after that a retry was 
attempted and the packet managed to make it though to the windows 
client.  I started wondering if there might be something going on with 
tightly spaced packets and that's how I ended up checking the NPQ flag. 
 (I also looked into increasing the default interframe gap between 
packets, but that didn't seem to help).


I'm happy to help with additional information including the packet 
captures if you'd like to take a look.


Also, I realised after I posted that first message that having a minimum 
udelay of 25us in that delay loop was probably a bit foolish.  I guess I 
was just so happy to have found something that worked for me that I 
needed to get it off my chest before thinking it through fully.  The 
udelay(25) ends up increasing the minimum inter-frame gap way beyond 
what should be reasonable.I haven't had a good chance to test this 
yet, but I tried dropping the udelay(25) and using ndelay(10) instead 
and it appeared to load the cpu less that way.



Regards,
Dave.
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [2/2] 2.6.22-rc4: known regressions v3

2007-06-14 Thread William Lee Irwin III
On Thu, Jun 14, 2007 at 03:57:25PM +0100, Mark Fortescue wrote:
> Benh's ptep_set_access_flags() patch needs to be applied in order to get 
> anyware with sun4c for all kernels >= linux-2.6.15. If not applied, you 
> will be lucky to get sash running as your init and even that will have 
> very limitit capabilities before it locks up the processor (power up 
> reset required).
> It has been applied to both the kernels I used for testing so this 
> problem is independent of the ptep_set_access_flags patch but that 
> does not mean that it is not a related issue.
> I will try to get some testing done over the weekend to narrow down 
> when the random illegal instructions first occour.
> If I start with 2.6.21 then if that is OK, then I should be able to narow 
> the issue down without too much trouble. If it is between 2.6.20 and 
> 2.6.21 then it will be a right pig as there are a large number of commits 
> that don't compile for sun4c between these two. What I am hoping is that 
> it occours in the 2.6.22-rc2 as per the x86_64.

Sounds like I'll be digging through my hardware stockpiles this weekend
to find a functional sun4c box.


-- wli
-
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: r8169 tx problem (1s pause with ping)

2007-06-14 Thread David Gundersen

Francois Romieu wrote:

Benjamin LaHaise <[EMAIL PROTECTED]> :
[...]
I'm seeing something odd with r8169 on FC7: doing a ping -s 1600 alternates 
between a 1s latency and sub 1ms.  Has anyone else seen anything like this?  
The system in question is an Asus M2A-VM with an onboard RTL8111 (I think).  
NAPI doesn't seem to make a difference.  The kernel in question is currently 
a vanilla 2.6.21.5.  Sub-mtu sized packets behave normally.


Same thing here for my 8168 rev 01 (asrock 945G dvi LOM) with 2.6.22-rc4
and 2.6.22-rc3 + r816x patchkit.

Wonderful.



I've got a modified version of the latest realtek (r8168) driver running 
here that doesn't seem to exhibit those symptoms.


The trouble I have is that I've been playing with multiple sections of 
the code and I'm not 100% sure what part(s) might impact that particular 
test.  The bits I know I've messed with are the bits that set the 
First/Last fragment flags and the NPQ flagging section (as described in 
my previous emails).


I know it's not particularly scientific of me to be changing multiple 
sections of the driver at once and I'm sorry about that but it's fairly 
late here and I really should get some sleep :).  I might do some more 
thorough testing on the weekend to find out what the minimal changes 
required are to get things working.


In the mean-time I'll attach my patch for the r8168-8.001.00 realtek 
driver here in case anybody else wants to have a play with it and see if 
it helps them out.


Also, It might be a silly question, but have you tried taking packet 
captures from the perspective of the box with the realtek chipset & 
another box during the pinging and comparing the two?


Regards,
Dave.


r8168-8.001.00-dg.patch.gz
Description: GNU Zip compressed data


RE: [PATCH 2/2] qdisc_restart - couple of optimizations.

2007-06-14 Thread Waskiewicz Jr, Peter P
> IMHO this scenario occurs so infrequently that the check 
> isn't worth it especially since the driver has to be able to 
> deal with us calling it after netif_stop_queue() anyway.

That sounds just fine to me.  Thanks Krishna and Herbert for weighing in
on this.

-PJ Waskiewicz
-
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] [TCP]: Add missing break to TCP option parsing code

2007-06-14 Thread David Miller
From: "Ilpo_Järvinen" <[EMAIL PROTECTED]>
Date: Thu, 14 Jun 2007 12:37:22 +0300 (EEST)

> This flaw does not affect any behavior (currently).
> 
> Signed-off-by: Ilpo Järvinen <[EMAIL PROTECTED]>

Good catch, patch applied.

Thanks!
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [IPV6] addrconf: Fix IPv6 on tuntap tunnels

2007-06-14 Thread David Miller
From: Herbert Xu <[EMAIL PROTECTED]>
Date: Thu, 14 Jun 2007 18:16:07 +1000

> [IPV6] addrconf: Fix IPv6 on tuntap tunnels
> 
> The recent patch that added ipv6_hwtype is broken on tuntap tunnels.
> Indeed, it's broken on any device that does not pass the ipv6_hwtype
> test.
> 
> The reason is that the original test only applies to autoconfiguration,
> not IPv6 support.  IPv6 support is allowed on any device.  In fact,
> even with the ipv6_hwtype patch applied you can still add IPv6 addresses
> to any interface that doesn't pass thw ipv6_hwtype test provided that
> they have a sufficiently large MTU.  This is a serious problem because
> come deregistration time these devices won't be cleaned up properly.
> 
> I've gone back and looked at the rationale for the patch.  It appears
> that the real problem is that we were creating IPv6 devices even if the
> MTU was too small.  So here's a patch which fixes that and reverts the
> ipv6_hwtype stuff.
> 
> Thanks to Kanru Chen for reporting this issue.
> 
> Signed-off-by: Herbert Xu <[EMAIL PROTECTED]>

Thanks for fixing this up Herbert.

Patch applied.
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [GIT PATCHES] SCTP bugfixes

2007-06-14 Thread David Miller
From: Vlad Yasevich <[EMAIL PROTECTED]>
Date: Wed, 13 Jun 2007 17:23:03 -0400

> Please pull the following SCTP patches from
>   master.kernel.org:/pub/scm/linux/kernel/git/vxy/lksctp-dev.git

Pulled, thanks a lot Vlad.
-
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 2.6.22-rc4-git6] forcedeth: use unicast receive mode for WoL

2007-06-14 Thread Tim Mann
I happened to notice that a system with an NVidia NIC using the
forcedeth driver won't wake-on-LAN if the interface was in promiscuous
mode when you power off.  By experiment, it looks like
the hardware needs to have NvRegPacketFilterFlags set to
NVREG_PFF_ALWAYS|NVREG_PFF_MYADDR (i.e., receive unicast packets to my
address) in order for WoL to work.

Jeff Garzik writes: "NVIDIA says the patch looks OK."  I didn't venture
to insert a signed-off-by line with his name on it, though.

Signed-off-by: Tim Mann <[EMAIL PROTECTED]>

---
(Jeff, thanks for pointing me to the doc for the proper patch format.)

--- 2.6.22-rc4-git6/drivers/net/forcedeth.c 2007-06-14 12:56:47.078002000 
-0700
+++ 2.6.22-rc4-git6-fixed/drivers/net/forcedeth.c   2007-06-14 
12:56:21.200146000 -0700
@@ -4825,8 +4825,10 @@
 
drain_ring(dev);
 
-   if (np->wolenabled)
+   if (np->wolenabled) {
+   writel(NVREG_PFF_ALWAYS|NVREG_PFF_MYADDR, base + 
NvRegPacketFilterFlags);
nv_start_rx(dev);
+   }
 
/* FIXME: power down nic */
 


-- 
Tim Mann  work: [EMAIL PROTECTED]  home: [EMAIL PROTECTED]
  http://www.vmware.com  http://tim-mann.org
-
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: [ANNOUNCE] new driver ixgbe for Intel(R) 10GbE PCI Express adapters.

2007-06-14 Thread Francois Romieu
Ayyappan Veeraiyan <[EMAIL PROTECTED]> :
[...]
> netpoll_send_skb should not deadlock because ixgbe_xmit_frame should
> bail out because of this...
> 
>  if (!spin_trylock_irqsave(&tx_ring->tx_lock, flags))
>   /* Collision - tell upper layer to requeue */
>   return NETDEV_TX_LOCKED;
> 
> Right?

Yes.

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


Re: [2/2] 2.6.22-rc4: known regressions v3

2007-06-14 Thread Stephen Hemminger
On Wed, 13 Jun 2007 21:57:56 +0200
Michal Piotrowski <[EMAIL PROTECTED]> wrote:

> Hi all,
> 
> Here is a list of some known regressions in 2.6.22-rc4.
> 
> Feel free to add new regressions/remove fixed etc.
> http://kernelnewbies.org/known_regressions
> 
> 
> 
> Networking
> 
> Subject: commit 9093bbb2d96d0184f037cea9b4e952a44ebe7c32 broke the 
> bonding driver
> References : http://lkml.org/lkml/2007/6/13/65
> Submitter  : Dan Aloni <[EMAIL PROTECTED]>
> Handled-By : Stephen Hemminger <[EMAIL PROTECTED]>
> Status : Unknown
> 
> 

Patch available (to bonding).
-
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/15] spidernet: null out skb pointer after its been used.

2007-06-14 Thread Linas Vepstas
On Wed, Jun 13, 2007 at 04:10:17PM -0400, Jeff Garzik wrote:
> Linas Vepstas wrote:
> >Avoid kernel crash in mm/slab.c due to double-free of pointer.
> >
> >If the ethernet interface is brought down while there is still
> >RX traffic in flight, the device shutdown routine can end up
> >trying to double-free an skb, leading to a crash in mm/slab.c
> >Avoid the double-free by nulling out the skb pointer.
> >
> >Signed-off-by: Linas Vepstas <[EMAIL PROTECTED]>
> >
> >
> > drivers/net/spider_net.c |1 +
> > 1 file changed, 1 insertion(+)
> 
> applied 1-5, 7 to #upstream-fixes (2.6.22)
> 
> patch #6 was ignored, because it was already upstream

Thank you!

--linas
-
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: r8169 tx problem (1s pause with ping)

2007-06-14 Thread Francois Romieu
David Gundersen <[EMAIL PROTECTED]> :
[...]
> I might do some more thorough testing on the weekend to find out what
> the minimal changes required are to get things working.

In your patch, the first chunk of data (which is handed back to the
nic outside of rtl8169_xmit_frags) will not have is First fragment
bit set when nr_frags != 0. It makes me a bit nervous.

The NPQ part of your patch actually forces the start_xmit handler to
wait for all previously queued packets to be sent before telling the
nic that a packet may be available. I can understand that it will fix
the symptoms but it will implicitly shorten the TX queue a lot.

A pesky fever apart, I should be able to come with a patch before
the week end.

-- 
Ueimor
-
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: [Cbe-oss-dev] [PATCH 0/15] spidernet driver bug fixes

2007-06-14 Thread David Woodhouse
On Wed, 2007-06-13 at 11:14 -0500, Linas Vepstas wrote:
> Some googling seems to show that "git pull" has a bug/feature of
> ignoring the branch that one is working in, and pulling "master"
> no matter what.  I have no clue why; this seems broken to me.

Branches are generally a PITA -- it's probably best just to avoid them
entirely. It's not as if it's hard to create separate trees, and even
share objects between the trees.

-- 
dwmw2

-
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: [Cbe-oss-dev] [PATCH 12/15] spidernet: increase the NAPI weight

2007-06-14 Thread Linas Vepstas
On Wed, Jun 13, 2007 at 10:49:51PM +0200, Arnd Bergmann wrote:
> On Wednesday 13 June 2007, Jeff Garzik wrote:
> > > +/* We really really want to empty the ring buffer every time,
> > > + * so as to avoid the RX ram full bug. So set te napi wieght
> > > + * to the ring size.
> > > + */
> > > +#define SPIDER_NET_NAPI_WEIGHT   SPIDER_NET_RX_DESCRIPTORS_DEFAULT
> > 
> > I don't see why spider_net should have a different NAPI weight from 
> > other drivers

It was a lame attempt to try to trick napi into draining the entire
RX queue in one go, with the goal of avoiding the dreaded rx ram full.
I'm not sure it made much of a difference, so we can let this slide.

> Would it help to do it the other way round, as in

No, that would shorten the RX queue, thus making it more likely
to overflow. At gigabit speeds, its petty easy to fill this thing
up multiple times per jiffy. The driver should continue to operate 
either way, but the larger queue should keep it from being a busy 
beaver.

--linas
-
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


Handling IPv6 RDNSS in RA

2007-06-14 Thread C. Scott Ananian

[Re-sending an earlier email, this time with a wider distribution and
more details.]

I'd like to get opinions on how DNS information packaged with IPv6
Router Advertisement packages should be handled.  The OLPC project
(laptop.org) is currently planning to use this for DNS
autoconfiguration.  The draft RFC is at:
   http://tools.ietf.org/html/draft-jeong-dnsop-ipv6-dns-discovery-12
There is already code in radvd to support this.  [For reference, the
Router Advertisement (RA) option is called RDNSS, for 'Recursive DNS
Server'.]

Two alternatives seem obvious:
 1) Parse the RDNSS option in the kernel.  linux/net/ipv6/ndisc.c
already parses the other RAdv options; it just need to be extended to
parse RDNSS and export the 'last seen DNS conf' in the same way it
does the Managed/Other flags at
http://lxr.linux.no/source/net/ipv6/ndisc.c?v=2.6.20.1#L1115
[Incidentally, I suspect I can get at the Managed/Other flags via
netlink, but would appreciate advice.]

2) Parse the RDNSS information entirely in userspace.  The
NetworkManager(1) daemon would keep a socket open to listen to all
ICMPv6 messages, reparse the RA, and deal with RDNSS information.
This has the disadvantage of requiring redundant tracking of RA
lifetimes, and would require NetworkManager to send (likely redundant)
Router Solicitation messages when/if the RDNSS information expires.

Option 2 seems like duplication of work, but arguably keeps the kernel
small.  Honestly, I'm surprised that IPv6 autoconfiguration is in the
kernel at all.  But since it's there already, option 1's making RDNSS'
3*(128/8) bytes available via netlink doesn't seem too terrible to me.
But if such a patch has no hope of being accepted into the mainline
kernel, I'd rather know now than later.

Also: are there other implementations which use the RA DNS info?
Maybe in fact someone has already written the necessary kernel patch?
I always prefer not to reinvent the wheel.
 --scott

--
( http://cscott.net/ )
-
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 4/15] spidernet: silence the ramfull messages

2007-06-14 Thread Linas Vepstas
On Wed, Jun 13, 2007 at 04:12:00PM -0400, Jeff Garzik wrote:
> Linas Vepstas wrote:
> >--- linux-2.6.22-rc1.orig/drivers/net/spider_net.c   2007-06-11 
> >10:02:34.0 -0500
> >+++ linux-2.6.22-rc1/drivers/net/spider_net.c2007-06-11 
> >11:45:25.0 -0500
> >@@ -1172,7 +1172,7 @@ spider_net_decode_one_descr(struct spide
> > goto bad_desc;
> > }
> > 
> >-if (hwdescr->dmac_cmd_status & 0xfefe) {
> >+if (hwdescr->dmac_cmd_status & 0xfcf4) {
> > pr_err("%s: bad status, cmd_status=x%08x\n",
> >card->netdev->name,
> >hwdescr->dmac_cmd_status);
> 
> 
> A follow-up patch needs to remove the above magic numbers (==numeric 
> constants), replacing them with named constants

I thought laziness was a virtue ... oh, wait, wrong programming language.

Patch coming shortly.

--linas
-
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: [Cbe-oss-dev] [PATCH 0/15] spidernet driver bug fixes

2007-06-14 Thread Jeff Garzik

David Woodhouse wrote:

On Wed, 2007-06-13 at 11:14 -0500, Linas Vepstas wrote:

Some googling seems to show that "git pull" has a bug/feature of
ignoring the branch that one is working in, and pulling "master"
no matter what.  I have no clue why; this seems broken to me.


Branches are generally a PITA -- it's probably best just to avoid them
entirely. It's not as if it's hard to create separate trees, and even
share objects between the trees.


It makes diffing between lines of development more difficult, takes up 
more overall space, less cache friendly, ...


Jeff



-
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: [Cbe-oss-dev] [PATCH 0/15] spidernet driver bug fixes

2007-06-14 Thread David Woodhouse
On Thu, 2007-06-14 at 19:01 -0400, Jeff Garzik wrote:
> It makes diffing between lines of development more difficult, takes up
> more overall space, less cache friendly, ... 

All of which is much less true if you're sharing object directories or
even using alternates.

-- 
dwmw2

-
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: [Cbe-oss-dev] [PATCH 0/15] spidernet driver bug fixes

2007-06-14 Thread Jeff Garzik

David Woodhouse wrote:

On Thu, 2007-06-14 at 19:01 -0400, Jeff Garzik wrote:

It makes diffing between lines of development more difficult, takes up
more overall space, less cache friendly, ... 


All of which is much less true if you're sharing object directories or
even using alternates.


Think about the actual kernel tree source code, not just the metadata...

Jeff



-
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: [Cbe-oss-dev] [PATCH 0/15] spidernet driver bug fixes

2007-06-14 Thread David Woodhouse
On Thu, 2007-06-14 at 19:04 -0400, Jeff Garzik wrote:
> Think about the actual kernel tree source code, not just the
> metadata...

Disk is cheap. Waiting for the whole damn thing to rebuild after
switching branches and back again is less so.

Besides, checking it out is optional.

-- 
dwmw2

-
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] spidernet: Replace literal with const

2007-06-14 Thread Linas Vepstas

Replace literal with const; add bit definitions.

Signed-off-by: Linas Vepstas <[EMAIL PROTECTED]>



On Wed, Jun 13, 2007 at 04:12:00PM -0400, Jeff Garzik wrote:
> A follow-up patch needs to remove the above magic numbers (==numeric 
> constants), replacing them with named constants

Here it is. Lightly stres-tested (about 1/2 hour), as this patch
tests some additonal bits.

 drivers/net/spider_net.c |2 +-
 drivers/net/spider_net.h |   19 +++
 2 files changed, 20 insertions(+), 1 deletion(-)

Index: linux-2.6.22-rc1/drivers/net/spider_net.c
===
--- linux-2.6.22-rc1.orig/drivers/net/spider_net.c  2007-06-11 
15:39:03.0 -0500
+++ linux-2.6.22-rc1/drivers/net/spider_net.c   2007-06-14 17:23:32.0 
-0500
@@ -1235,7 +1235,7 @@ spider_net_decode_one_descr(struct spide
goto bad_desc;
}
 
-   if (hwdescr->dmac_cmd_status & 0xfcf4) {
+   if (hwdescr->dmac_cmd_status & SPIDER_NET_DESCR_BAD_STATUS) {
dev_err(&card->netdev->dev, "bad status, cmd_status=x%08x\n",
   hwdescr->dmac_cmd_status);
pr_err("buf_addr=x%08x\n", hw_buf_addr);
Index: linux-2.6.22-rc1/drivers/net/spider_net.h
===
--- linux-2.6.22-rc1.orig/drivers/net/spider_net.h  2007-06-11 
15:39:03.0 -0500
+++ linux-2.6.22-rc1/drivers/net/spider_net.h   2007-06-14 17:34:56.0 
-0500
@@ -359,6 +359,18 @@ enum spider_net_int2_status {
 #define SPIDER_NET_DMAC_UDP0x0003
 #define SPIDER_NET_TXDCEST 0x0800
 
+#define SPIDER_NET_DESCR_RXFDIS0x0001
+#define SPIDER_NET_DESCR_RXDCEIS   0x0002
+#define SPIDER_NET_DESCR_RXDEN0IS  0x0004
+#define SPIDER_NET_DESCR_RXINVDIS  0x0008
+#define SPIDER_NET_DESCR_RXRERRIS  0x0010
+#define SPIDER_NET_DESCR_RXFDCIMS  0x0100
+#define SPIDER_NET_DESCR_RXDCEIMS  0x0200
+#define SPIDER_NET_DESCR_RXDEN0IMS 0x0400
+#define SPIDER_NET_DESCR_RXINVDIMS 0x0800
+#define SPIDER_NET_DESCR_RXRERRMIS 0x1000
+#define SPIDER_NET_DESCR_UNUSED0x077fe0e0
+
 #define SPIDER_NET_DESCR_IND_PROC_MASK 0xF000
 #define SPIDER_NET_DESCR_COMPLETE  0x /* used in rx and tx 
*/
 #define SPIDER_NET_DESCR_RESPONSE_ERROR0x1000 /* used in 
rx and tx */
@@ -369,6 +381,13 @@ enum spider_net_int2_status {
 #define SPIDER_NET_DESCR_NOT_IN_USE0xF000
 #define SPIDER_NET_DESCR_TXDESFLG  0x0080
 
+#define SPIDER_NET_DESCR_BAD_STATUS   (SPIDER_NET_DESCR_RXDEN0IS | \
+   SPIDER_NET_DESCR_RXRERRIS | \
+   SPIDER_NET_DESCR_RXDEN0IMS | \
+   SPIDER_NET_DESCR_RXINVDIMS | \
+   SPIDER_NET_DESCR_RXRERRMIS | \
+   SPIDER_NET_DESCR_UNUSED)
+
 /* Descriptor, as defined by the hardware */
 struct spider_net_hw_descr {
u32 buf_addr;
-
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: [Cbe-oss-dev] [PATCH 0/15] spidernet driver bug fixes

2007-06-14 Thread Michael Ellerman
On Fri, 2007-06-15 at 00:07 +0100, David Woodhouse wrote:
> On Thu, 2007-06-14 at 19:04 -0400, Jeff Garzik wrote:
> > Think about the actual kernel tree source code, not just the
> > metadata...
> 
> Disk is cheap. Waiting for the whole damn thing to rebuild after
> switching branches and back again is less so.

ccache!

cheers

-- 
Michael Ellerman
OzLabs, IBM Australia Development Lab

wwweb: http://michael.ellerman.id.au
phone: +61 2 6212 1183 (tie line 70 21183)

We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person


signature.asc
Description: This is a digitally signed message part


Re: Fwd: [PATCH] [-mm] ACPI: export ACPI events via netlink

2007-06-14 Thread Zhang Rui
On Thu, 2007-06-14 at 07:28 -0400, jamal wrote:
> On Thu, 2007-14-06 at 16:59 +0800, Zhang Rui wrote:
> > Hi, Jamal,
> > 
> > Now the genl utility can find the acpi event genetlink family.
> > And a simple user space demo is finished for handling acpi event.
> > I really appreciate your help. :)
> 
> np.
> 
> > I think the patch which exposes ACPI events via netlink is ok.
> > But I still have some problems on
> > how to listen to specified genetlink family in user space?
> > 
> > I can get the dynamic id for "acpi_event" genl family.
> > But I don't know how to use this to receive messages from
> > specified genl family.
> > It seems that "#genl ctrl monitor" has something to do with this,
> > IMO, rtnl_open_byproto(&rth, nl_mgrp(GENL_ID_CTRL), NETLINK_GENERIC) is
> > used to receive messages from the nlctrl(controller) only, but
> > unfortunately it never works for me. :(
> > 
> 
> I dont have much time to look at your code given travel, but did you
> try to use your group id instead of the controller's?
> i.e:
> rtnl_open_byproto(&rth, nl_mgrp(mydiscoveredacpiid), NETLINK_GENERIC)
> 
Yes. It doesn't work if I use my group id here.
In fact, I'm using rtnl_open_byproto(&rth, 1, NETLINK_GENERIC) now.
That's why I said that this demo receives all the broadcasted genetlink
messages.
> If this doesnt work, ping me and i will take a look  - just expect some
> latency in response.
> 
That's great. Thanks.

Best regards,
Rui
-
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] NET: Multiqueue network device support.

2007-06-14 Thread Zhu Yi
On Thu, 2007-06-14 at 07:48 -0400, jamal wrote:
> I dont have much time to followup for sometime to come. I have left my
> answer above. To clarify, incase i wasnt clear, I am saying:
> a) It is better to have the driver change via some strategy of when to
> open the tx path than trying to be generic. This shifts the burden to
> the driver.
> b) given the behavior of wireless media (which is very different from
> wired ethernet media), you need a different strategy. In response to
> Guy's question, I gave the example of being able to use management
> frames to open up the tx path for VO (even when you dont know VO
> packets
> are sitting on the qdisc); alternatively you could use a timer etc.
> Theres many ways to skin the cat (with apologies to cat
> lovers/owners).
> i.e you need to look at the media and be creative.
> Peters DCE for example could also be handled by having a specific
> strategy. 

OK. You tried so much to guess the traffic flow pattern in the low level
driver, which could be implemented straightforward in the Qdisc. The pro
is the Qdisc API is untouched. But the cons are:

1. driver becomes complicated (as it is too elaborate in the queue
wakeup strategies design)
2. duplicated code among drivers (otherwise you put all the queue
management logics in a new layer?)
3. it's not 100% accurate. there has to be some overhead, more or less
depends on the queue wakeup strategy the driver selected.

Time for voting?

Thanks,
-yi
-
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