problem with noop and pfifo_fast Qdisc switching

4 messages, 2 authors, 2012-01-19 · open the first message on its own page

problem with noop and pfifo_fast Qdisc switching

From: Hemant-vilas RAMDASI <hidden>
Date: 2012-01-19 12:47:46

Hi,

I have a situation where one of important message (phonet pipe message) gets dropped because of 'noop' Qdisc.
This situation mostly happens when coming out of sleep and there is a message to send.
What I have observed is this.
In normal case the qdisc used id pfifo_fast. When CPU goes to sleep, it changes the qdisc to noop.
When CPU wakes up (because of a message from lower layers), phonet tries to send a control packet to driver and finds qdisc is still 'noop'. 
Because the concerned message is a control message, this packet drop is creating deadlock situation.

How the switch between pfifo_fast and noop is handled? Is this something solved in 3.0?
We are running a older version of kernel (2.6.35 based).

Thanks,
Hemant
 

Re: problem with noop and pfifo_fast Qdisc switching

From: Eric Dumazet <hidden>
Date: 2012-01-19 13:15:37

Le jeudi 19 janvier 2012 à 13:47 +0100, Hemant-vilas RAMDASI a écrit :
Hi,

I have a situation where one of important message (phonet pipe message) gets dropped because of 'noop' Qdisc.
This situation mostly happens when coming out of sleep and there is a message to send.
What I have observed is this.
In normal case the qdisc used id pfifo_fast. When CPU goes to sleep, it changes the qdisc to noop.
When CPU wakes up (because of a message from lower layers), phonet tries to send a control packet to driver and finds qdisc is still 'noop'. 
Because the concerned message is a control message, this packet drop is creating deadlock situation.

How the switch between pfifo_fast and noop is handled? Is this something solved in 3.0?
We are running a older version of kernel (2.6.35 based).
If message is important, you should check return code from xmit
(NET_XMIT_CN is returned by noop_enqueue), and maybe resend it later.

Not sure by what you mean by 'cpu goes to sleep' or 'cpu wakes up' ?

Is it the machine going to suspend mode ?

RE: problem with noop and pfifo_fast Qdisc switching

From: Hemant-vilas RAMDASI <hidden>
Date: 2012-01-19 13:44:59

Hi,
-----Original Message-----
From: Eric Dumazet [mailto:eric.dumazet@gmail.com]
Sent: Thursday, January 19, 2012 6:46 PM
To: Hemant-vilas RAMDASI
Cc: netdev@vger.kernel.org; netdev-owner@vger.kernel.org
Subject: Re: problem with noop and pfifo_fast Qdisc switching

Le jeudi 19 janvier 2012 à 13:47 +0100, Hemant-vilas RAMDASI a écrit :
quoted
Hi,

I have a situation where one of important message (phonet pipe
message) gets dropped because of 'noop' Qdisc.
quoted
This situation mostly happens when coming out of sleep and there is a
message to send.
quoted
What I have observed is this.
In normal case the qdisc used id pfifo_fast. When CPU goes to sleep,
it changes the qdisc to noop.
quoted
When CPU wakes up (because of a message from lower layers), phonet
tries to send a control packet to driver and finds qdisc is still
'noop'.
quoted
Because the concerned message is a control message, this packet drop
is creating deadlock situation.
quoted
How the switch between pfifo_fast and noop is handled? Is this
something solved in 3.0?
quoted
We are running a older version of kernel (2.6.35 based).
If message is important, you should check return code from xmit
(NET_XMIT_CN is returned by noop_enqueue), and maybe resend it later.

Not sure by what you mean by 'cpu goes to sleep' or 'cpu wakes up' ?

Is it the machine going to suspend mode ?
Yes, I mean machine going to suspend..
The problem with this message is that it can be retried only a couple of time.
We saw a code where dev_deactivate is called which changes the Qdisc to 'noop'. 
I hope it will restore it in dev_activate() again when machine resumes. We are checking this.
Is there any race between when dev_queue_xmit is called and dev_activate is still not complete?

Thanks,
Hemant

RE: problem with noop and pfifo_fast Qdisc switching

From: Eric Dumazet <hidden>
Date: 2012-01-19 14:13:21

Le jeudi 19 janvier 2012 à 14:44 +0100, Hemant-vilas RAMDASI a écrit :
Yes, I mean machine going to suspend..
The problem with this message is that it can be retried only a couple of time.
We saw a code where dev_deactivate is called which changes the Qdisc to 'noop'. 
I hope it will restore it in dev_activate() again when machine resumes. We are checking this.
Is there any race between when dev_queue_xmit is called and dev_activate is still not complete?
No race, just dev_queue_xmit() returns an error ;)

There is no 'queue' at this level.

IP has sort of a (small) queue because of ARP resolution.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help