On Sun, 14 Apr 2013 10:09:54 +0200, michi1@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 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:
pgpQdeX_qYhyr.pgp
Description: PGP signature
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies