Am 05.10.2010 11:32, schrieb Mario Schuknecht: > In contrast to SIOCOUTQ which returns the amount of data sent > but not yet acknowledged plus data not yet sent this patch only > returns the data not sent. > > For various methods of live streaming bitrate control it may > be helpful to know how much data are in the tcp outqueue are > not sent yet. > > Signed-off-by: Mario Schuknecht <m.schuknecht@xxxxxxxxxxxx> > --- > include/asm-generic/ioctls.h | 1 + > include/linux/sockios.h | 1 + > net/ipv4/tcp.c | 9 +++++++++ > 3 files changed, 11 insertions(+), 0 deletions(-) > > diff --git a/include/asm-generic/ioctls.h b/include/asm-generic/ioctls.h > index a321665..b87115b 100644 > --- a/include/asm-generic/ioctls.h > +++ b/include/asm-generic/ioctls.h > @@ -72,6 +72,7 @@ > #define TCSETXF 0x5434 > #define TCSETXW 0x5435 > #define TIOCSIG _IOW('T', 0x36, int) /* pty: generate signal */ > +#define TIOCOUTQNSD 0x5437 > > #define FIONCLEX 0x5450 > #define FIOCLEX 0x5451 > diff --git a/include/linux/sockios.h b/include/linux/sockios.h > index 241f179..4c5ca47 100644 > --- a/include/linux/sockios.h > +++ b/include/linux/sockios.h > @@ -23,6 +23,7 @@ > /* Linux-specific socket ioctls */ > #define SIOCINQ FIONREAD > #define SIOCOUTQ TIOCOUTQ > +#define SIOCOUTQNSD TIOCOUTQNSD > > /* Routing table calls. */ > #define SIOCADDRT 0x890B /* add routing table entry */ > diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c > index 1664a05..c2d52e8 100644 > --- a/net/ipv4/tcp.c > +++ b/net/ipv4/tcp.c > @@ -505,6 +505,15 @@ int tcp_ioctl(struct sock *sk, int cmd, unsigned long arg) > else > answ = tp->write_seq - tp->snd_una; > break; > + case SIOCOUTQNSD: > + if (sk->sk_state == TCP_LISTEN) > + return -EINVAL; > + > + if ((1 << sk->sk_state) & (TCPF_SYN_SENT | TCPF_SYN_RECV)) > + answ = 0; > + else > + answ = tp->write_seq - tp->snd_nxt; > + break; > default: > return -ENOIOCTLCMD; > } Ping! It would be nice to get some feedback on this. We really need an extension of this kind. If the patch does something in a wrong way (esp. choosing the TIOCOUTQNSD id) please give us a hint how to do it in the right way. Thx, Steffen Sledz -- DResearch Fahrzeugelektronik GmbH Otto-Schmirgal-Str. 3, 10319 Berlin, Germany Tel: +49 30 515932-237 mailto:sledz@xxxxxxxxxxxx Fax: +49 30 515932-299 Geschäftsführer: Dr. Michael Weber, Werner Mögle; Amtsgericht Berlin Charlottenburg; HRB 130120 B; Ust.-IDNr. DE273952058 -- To unsubscribe from this list: send the line "unsubscribe linux-net" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html