On Sun, 14 Apr 2013 10:09:54 +0200, mic...@michaelblizek.twilightparadox.com 
said:

> This is not what I meant. When the qdisc has a size of say 256KB and the
> socket memory is, say 128kb, the socket memory limit will be reached before
> the qdisc limit and the socket will sleep. But when the socket memory limit
> is greater than the qdisc limit, it will be interesting whether the socket
> still sleeps or starts dropping packets.

How to figure this out for yourself:

Look at net/sched/sch_plug.c, which is a pretty simple qdisc (transmit packets
until a plug request is recieved, then queue until unplugged). In particular,
look at plug_enqueue() to see what happens when q->limit is exceeded, and
plug_init() to see where q->limit is set.

Then look at the definition of qdisc_reshape_fail() in
include/net/sch_generic.h to figure out what the qdisc returns if q->limit is
exceeded.

Then go look at net/core/dev.c, in function __dev_xmit_skb(), and
watch the variable 'rc'.

Now go find the caller of __dev_xmit_skb() and see what it does with
that return value.

Hope that helps...

Attachment: pgpP8jeZUYp64.pgp
Description: PGP signature

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to