From: Richard Sailer <richard_siegfried@systemli.org>
To: dccp@vger.kernel.org
Subject: Re: [PATCH net-next v4] net: dccp: Add SIOCOUTQ IOCTL support (send buffer fill)
Date: Fri, 17 Jul 2020 00:56:59 +0000 [thread overview]
Message-ID: <a0b896e3-e422-4901-bfba-8634c0fe6f5e@systemli.org> (raw)
In-Reply-To: <20200712225520.269542-1-richard_siegfried@systemli.org>
[-- Attachment #1.1: Type: text/plain, Size: 2766 bytes --]
On 16/07/2020 21:56, Jakub Kicinski wrote:
> On Mon, 13 Jul 2020 00:55:20 +0200 Richard Sailer wrote:
>> This adds support for the SIOCOUTQ IOCTL to get the send buffer fill
>> of a DCCP socket, like UDP and TCP sockets 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.
>>
>> Signed-off-by: Richard Sailer <richard_siegfried@systemli.org>
>
> Sorry for the late review
No problem, nothing compared to the information delays at university^^
>
>> diff --git a/Documentation/networking/dccp.rst b/Documentation/networking/dccp.rst
>> index dde16be044562..74659da107f6b 100644
>> --- a/Documentation/networking/dccp.rst
>> +++ b/Documentation/networking/dccp.rst
>> @@ -192,6 +192,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.
>
> FIONREAD uses tabs for indentation, it seems like a good idea to
> document the size of the argument (i.e. "returns in the ``int`` ...").
Agreed
>
>> Other tunables
>> ==============
>> diff --git a/net/dccp/proto.c b/net/dccp/proto.c
>> index c13b6609474b6..dab74e8a8a69b 100644
>> --- a/net/dccp/proto.c
>> +++ b/net/dccp/proto.c
>> @@ -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);
>
> checkpatch warns:
>
> WARNING: Missing a blank line after declarations
> #48: FILE: net/dccp/proto.c:383:
> + int amount = sk_wmem_alloc_get(sk);
> + rc = put_user(amount, (int __user *)arg);
>
> Could you please address that, and better still move the declaration of
> "int amount" up to the function level and avoid the funky bracket around
> the case statement altogether?
I found the funky braces disturbing too, but thought they were
convention, so happy to delete them.
Regarding "putting int amount at function level": well the problem is in
the other case statement is a unsigned long (and the pointer in
put_user() is (int __user *) ). I don't yet know if I can make that all
a simple int without losing correctness/security. I will send a v5 when
I figured that out.
Thanks,
-- Richard
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Richard Sailer <richard_siegfried@systemli.org>
To: Jakub Kicinski <kuba@kernel.org>
Cc: gerrit@erg.abdn.ac.uk, davem@davemloft.net, dccp@vger.kernel.org,
netdev@vger.kernel.org
Subject: Re: [PATCH net-next v4] net: dccp: Add SIOCOUTQ IOCTL support (send buffer fill)
Date: Fri, 17 Jul 2020 02:56:59 +0200 [thread overview]
Message-ID: <a0b896e3-e422-4901-bfba-8634c0fe6f5e@systemli.org> (raw)
In-Reply-To: <20200716125608.33a0589b@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com>
[-- Attachment #1.1: Type: text/plain, Size: 2766 bytes --]
On 16/07/2020 21:56, Jakub Kicinski wrote:
> On Mon, 13 Jul 2020 00:55:20 +0200 Richard Sailer wrote:
>> This adds support for the SIOCOUTQ IOCTL to get the send buffer fill
>> of a DCCP socket, like UDP and TCP sockets 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.
>>
>> Signed-off-by: Richard Sailer <richard_siegfried@systemli.org>
>
> Sorry for the late review
No problem, nothing compared to the information delays at university^^
>
>> diff --git a/Documentation/networking/dccp.rst b/Documentation/networking/dccp.rst
>> index dde16be044562..74659da107f6b 100644
>> --- a/Documentation/networking/dccp.rst
>> +++ b/Documentation/networking/dccp.rst
>> @@ -192,6 +192,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.
>
> FIONREAD uses tabs for indentation, it seems like a good idea to
> document the size of the argument (i.e. "returns in the ``int`` ...").
Agreed
>
>> Other tunables
>> ==============
>> diff --git a/net/dccp/proto.c b/net/dccp/proto.c
>> index c13b6609474b6..dab74e8a8a69b 100644
>> --- a/net/dccp/proto.c
>> +++ b/net/dccp/proto.c
>> @@ -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);
>
> checkpatch warns:
>
> WARNING: Missing a blank line after declarations
> #48: FILE: net/dccp/proto.c:383:
> + int amount = sk_wmem_alloc_get(sk);
> + rc = put_user(amount, (int __user *)arg);
>
> Could you please address that, and better still move the declaration of
> "int amount" up to the function level and avoid the funky bracket around
> the case statement altogether?
I found the funky braces disturbing too, but thought they were
convention, so happy to delete them.
Regarding "putting int amount at function level": well the problem is in
the other case statement is a unsigned long (and the pointer in
put_user() is (int __user *) ). I don't yet know if I can make that all
a simple int without losing correctness/security. I will send a v5 when
I figured that out.
Thanks,
-- Richard
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2020-07-17 0:56 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-12 22:55 [PATCH net-next v4] net: dccp: Add SIOCOUTQ IOCTL support (send buffer fill) Richard Sailer
2020-07-12 22:55 ` Richard Sailer
2020-07-16 19:56 ` Jakub Kicinski
2020-07-16 19:56 ` Jakub Kicinski
2020-07-17 0:56 ` Richard Sailer [this message]
2020-07-17 0:56 ` Richard Sailer
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=a0b896e3-e422-4901-bfba-8634c0fe6f5e@systemli.org \
--to=richard_siegfried@systemli.org \
--cc=dccp@vger.kernel.org \
/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.