Thread (5 messages) 5 messages, 2 authors, 2008-11-06

Re: [PATCH 1/1] [QPOLICY]: Ignore packets with specific priority

From: Tomasz Grobelny <hidden>
Date: 2008-11-02 23:28:07

Dnia Friday 31 of October 2008, napisałeś:
quoted
quoted
One difficulty that I see is what to do when the send socket is
non-blocking.
But socket doesn't get into non-blocking mode until specifically
requested by fcntl(soc, F_SETFL, O_NONBLOCK) call, does it?
Yes - the problem is that the code does not stop the user from
setting non-blocking mode on the socket.
Yes, currently this concept is more a usage convention than a new interface in 
a strict sense. And so it is quite easy to misuse it.
quoted
quoted
Maybe purists will not like this since the complexity is now shifted to
the
user-kernel interface. But it may well be a start to develop some kind
of
new interface which achieves the same in a cleaner way.
I think that much of the previously written qpolicy code could be
removed from the kernel so the interface would be really simple. No
policy switching, no fancy parameters, etc. The only difference from
standard interface would be that a packet could have a 'drop me' flag
(priority 65 in my code). Ok, I agree some may consider it tricky but I
wouldn't call it complicated. The complicated part is meant to be on the
userspace side. And that in my opinion has many advantages: easier
debugging, easier to add new (possibly complex) queuing policies.
I fully agree with the idea, it is the realisation that causes me
some headaches. It would be great if the code need not call send() twice
to send a single packet, and if an skb need not be allocated in order to
create a "waiting effect" in userspace.

The other alternative that I see is to come up with completely new
system calls - as done in SCTP for instance. But this would only make snse
if with the present means things get too ugly; i.e. if the
new semantics can not be expressed with the given system calls.

So there is agreement on the idea, I hope is that realisation
can be refined - without overloading existing calls too much.
What about using select() call to get the effect of waiting? I think that 
select() is precisely designed for such a thing. It is generally used on 
reading from sockets so it could be used on writing to sockets as well. I 
haven't looked at the code yet to know how complicated it might be to 
implement but it seems to be a nice idea to consider.
quoted
quoted
Can you please narrow down what is happening with CCID-3.  CCID-3 is
very
complicated and sensitive, so it is possible that the problem is within
CCID-3 and not the qpolicy code - need more detailed information.
On one test it seemed not to work at all in my setup: ccid3 seems not to
limit traffic at all. But that was just one test so it may well be my
fault.
If you notice anything odd, please do report it on the mailing list.
I will as soon as I have some useful information (that is when I test it on 
fresh git tree).
-- 
Regards,
Tomasz Grobelny
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help