From: Henneberg - Systemdesign <lists@henneberg-systemdesign.com>
To: Willy Tarreau <w@1wt.eu>
Cc: netdev@vger.kernel.org
Subject: Re: TIOCOUTQ implementation for sockets vs. tty
Date: Wed, 10 Mar 2021 21:15:37 +0100 [thread overview]
Message-ID: <87eegmrcie.fsf@henneberg-systemdesign.com> (raw)
In-Reply-To: <20210310182935.GC17851@1wt.eu>
Willy Tarreau <w@1wt.eu> writes:
> Hi,
>
> On Wed, Mar 10, 2021 at 07:16:34PM +0100, Henneberg - Systemdesign wrote:
>> Hi,
>>
>> I have a question regarding the implementation of ioctl TIOCOUTQ for
>> various sockets compared to the tty implementation.
>>
>> For several sockets, e. g. AF_BLUETOOTH it is done like this
>>
>> af_bluetooth.c:
>> case TIOCOUTQ:
>> if (sk->sk_state == BT_LISTEN)
>> return -EINVAL;
>>
>> amount = sk->sk_sndbuf - sk_wmem_alloc_get(sk);
>> if (amount < 0)
>> amount = 0;
>> err = put_user(amount, (int __user *)arg);
>> break;
>>
>> so the ioctl returns the available space in the send queue if I
>> understand the code correctly (this is also what I observed from tests).
>>
>> The tty does this:
>>
>> n_tty.c:
>> case TIOCOUTQ:
>> return put_user(tty_chars_in_buffer(tty), (int __user *) arg);
>>
>> so it returns the used space in the send queue. This is also what I
>> would expect from the manpage description.
>>
>> Is this mismatch intentional?
>
> At least both man pages (tty_ioctl and tcp(7)) mention that TIOCOUTQ
> should return the number of byte in queue.
>
> What I suspect for sockets is that sk_sndbuf grows with allocations
> and that sk_wmem_alloc_get() in fact returns the number of unused
> allocations thus the difference would be the amount queued. But I
> could be wrong and I would tend to read the code the same way as you
> did.
I am quite sure that my assumption is right. When I call the ioctl right
before and after writing data to an AF_BLUETOOTH socket the returned
value decreases where it should increase.
-Jochen
>
> Willy
--
Henneberg - Systemdesign
Jochen Henneberg
Loehnfeld 26
21423 Winsen (Luhe)
--
Fon: +49 172 160 14 69
www: www.henneberg-systemdesign.com
prev parent reply other threads:[~2021-03-10 20:16 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-10 18:16 TIOCOUTQ implementation for sockets vs. tty Henneberg - Systemdesign
2021-03-10 18:29 ` Willy Tarreau
2021-03-10 20:15 ` Henneberg - Systemdesign [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87eegmrcie.fsf@henneberg-systemdesign.com \
--to=lists@henneberg-systemdesign.com \
--cc=netdev@vger.kernel.org \
--cc=w@1wt.eu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.