@@ -185,6 +185,8 @@ FIONREAD
Works as in udp(7): returns in the `int' argument pointer the size of
the next pending datagram in bytes, or 0 when no datagram is pending.
+SIOCOUTQ
+ Returns the number of data bytes in the local send queue.
Other tunables
==============
@@ -375,6 +375,14 @@ int dccp_ioctl(struct sock *sk, int cmd, unsigned long arg)
goto out;
switch (cmd) {
+ case SIOCOUTQ: {
+ /* Using sk_wmem_alloc here because sk_wmem_queued is not used by DCCP and
+ * always 0, comparably to UDP.
+ */
+ int amount = sk_wmem_alloc_get(sk);
+ rc = put_user(amount, (int __user *)arg);
+ }
+ break;
case SIOCINQ: {
struct sk_buff *skb;
unsigned long amount = 0;
From: Richard Sailer <rs@tuxedocomputers.com> This adds support for the SIOCOUTQ IOCTL to call send buffer fill from the DCCP socket, like UDP and TCP already have. Regarding the used data field. DCCP uses per packet sequence numbers, not per byte, so sequence numbers can't be used like in TCP. sk_wmem_queued is not used by DCCP and always 0, even in test on highly congested paths. Therefore this uses sk_wmem_alloc like in UDP. --- Documentation/networking/dccp.txt | 2 ++ net/dccp/proto.c | 8 ++++++++ 2 files changed, 10 insertions(+)