diff mbox series

[net-next,v3] net/core: Rephrase function description of __dev_queue_xmit()

Message ID 20220507084643.18278-1-bagasdotme@gmail.com (mailing list archive)
State Superseded
Delegated to: Netdev Maintainers
Headers show
Series [net-next,v3] net/core: Rephrase function description of __dev_queue_xmit() | expand

Checks

Context Check Description
netdev/tree_selection success Clearly marked for net-next
netdev/fixes_present success Fixes tag not required for -next series
netdev/subject_prefix success Link
netdev/cover_letter success Single patches do not need cover letters
netdev/patch_count success Link
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 7 this patch: 7
netdev/cc_maintainers warning 3 maintainers not CCed: petrm@nvidia.com edumazet@google.com pabeni@redhat.com
netdev/build_clang success Errors and warnings before: 9 this patch: 9
netdev/module_param success Was 0 now: 0
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/verify_fixes success Fixes tag looks correct
netdev/build_allmodconfig_warn success Errors and warnings before: 7 this patch: 7
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 36 lines checked
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

Bagas Sanjaya May 7, 2022, 8:46 a.m. UTC
Commit c526fd8f9f4f21 ("net: inline dev_queue_xmit()") inlines
dev_queue_xmit() that contains comment quote from Ben Greear, which
originates from commit af191367a75262 ("[NET]: Document ->hard_start_xmit()
locking in comments."). It triggers htmldocs warning:

Documentation/networking/kapi:92: net/core/dev.c:4101: WARNING: Missing matching underline for section title overline.

-----------------------------------------------------------------------------------
     I notice this method can also return errors from the queue disciplines,
     including NET_XMIT_DROP, which is a positive value.  So, errors can also

Fix the warning by rephrasing the function description. This is done by
incorporating notes from the quote as well as dropping the banner and
attribution signature.

Fixes: c526fd8f9f4f21 ("net: inline dev_queue_xmit()")
Link: https://lore.kernel.org/linux-next/20220503073420.6d3f135d@canb.auug.org.au/
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Ben Greear <greearb@candelatech.com>
Cc: Pavel Begunkov <asml.silence@gmail.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Akira Yokosawa <akiyks@gmail.com>
Cc: netdev@vger.kernel.org
Cc: linux-next@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Bagas Sanjaya <bagasdotme@gmail.com>
---
 Changes since v2 [1]:
   - Approach the problem by rephrasing (suggested by Jakub)
   - Explain that inlining in the Fixes: commit triggers the warning
     (suggested by Akira)

 [1]: https://lore.kernel.org/linux-doc/20220505082907.42393-1-bagasdotme@gmail.com/

 net/core/dev.c | 30 ++++++++++++++----------------
 1 file changed, 14 insertions(+), 16 deletions(-)


base-commit: 8fc0b6992a06998404321f26a57ea54522659b64

Comments

Akira Yokosawa May 8, 2022, 11:48 a.m. UTC | #1
On 2022/05/07 17:46,
Bagas Sanjaya wrote:
> Commit c526fd8f9f4f21 ("net: inline dev_queue_xmit()") inlines
> dev_queue_xmit() that contains comment quote from Ben Greear, which
> originates from commit af191367a75262 ("[NET]: Document ->hard_start_xmit()
> locking in comments.").It triggers htmldocs warning:

What I asked was the explanation of *why* the inlining of the
function caused the new warning.

Your explanation above tries to tell *what* the offending commit
did, which is not what I asked.  Furthermore, your explanation
is not accurate in that the comment block does not belong to
dev_queue_xmit() but to __dev_queue_xmit().

After seeking the answer myself, I reached a conclusion that
it is wrong to meddle with the comment block.

So, appended below is my version of the fix with the answer to
Stephen's question, "I am not sure why this has turned up just now."

Stephen, Jakub, what do you think?

        Thanks, Akira

----8<--------------
From: Akira Yokosawa <akiyks@gmail.com>
Subject: [PATCH -next] net/core: Hide __dev_queue_xmit()'s kernel-doc

Commit c526fd8f9f4f21 ("net: inline dev_queue_xmit()") added
export of __dev_queue_exit() to cope with inlining of its
wrapper functions dev_queue_xmit() and dev_queue_xmit_accel().
This made __dev_queue_exit()'s comment block visible to Sphinx
processing in "make htmldocs" because
Documentation/networking/kapi.rst has the directive of:

    .. kernel-doc:: net/core/dev.c
       :export:

Unfortunately, the kernel-doc style comment has a number of
issues when parsed as RestructuredText.  Stephen reported a
new warning message from "make htmldocs" caused by one of
such issues.

The leading "__" in the function name indicates that it is an
internal API and should not be widely used.
Exposing documentation of such a function in HTML and PDF
documentations does not make sense.

For the time being, hide the kernel-doc style comment from Sphinx
processing by removing the kernel-doc marker of "/**".

Proper kernel-doc comments should be added to the inlined
wrapper functions, which is deferred to those who are familiar
with those netdev APIs.

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Fixes: c526fd8f9f4f21 ("net: inline dev_queue_xmit()")
Link: https://lore.kernel.org/linux-next/20220503073420.6d3f135d@canb.auug.org.au/
Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Pavel Begunkov <asml.silence@gmail.com>
---
 net/core/dev.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/net/core/dev.c b/net/core/dev.c
index c2d73595a7c3..a97fd413d705 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4085,8 +4085,7 @@ struct netdev_queue *netdev_core_pick_tx(struct net_device *dev,
 	return netdev_get_tx_queue(dev, queue_index);
 }
 
-/**
- *	__dev_queue_xmit - transmit a buffer
+/*	__dev_queue_xmit - transmit a buffer
  *	@skb: buffer to transmit
  *	@sb_dev: suboordinate device used for L2 forwarding offload
  *
Bagas Sanjaya May 9, 2022, 6:54 a.m. UTC | #2
On Sun, May 08, 2022 at 08:48:10PM +0900, Akira Yokosawa wrote:
> So, appended below is my version of the fix with the answer to
> Stephen's question, "I am not sure why this has turned up just now."
> 
> Stephen, Jakub, what do you think?
> 
>         Thanks, Akira
> 
> ----8<--------------
> From: Akira Yokosawa <akiyks@gmail.com>
> Subject: [PATCH -next] net/core: Hide __dev_queue_xmit()'s kernel-doc
> 
> Commit c526fd8f9f4f21 ("net: inline dev_queue_xmit()") added
> export of __dev_queue_exit() to cope with inlining of its
> wrapper functions dev_queue_xmit() and dev_queue_xmit_accel().
> This made __dev_queue_exit()'s comment block visible to Sphinx
> processing in "make htmldocs" because
> Documentation/networking/kapi.rst has the directive of:
> 
>     .. kernel-doc:: net/core/dev.c
>        :export:
> 
> Unfortunately, the kernel-doc style comment has a number of
> issues when parsed as RestructuredText.  Stephen reported a
> new warning message from "make htmldocs" caused by one of
> such issues.
> 
> The leading "__" in the function name indicates that it is an
> internal API and should not be widely used.
> Exposing documentation of such a function in HTML and PDF
> documentations does not make sense.
> 

Oops, I don't see that internal API marker. Maybe we can add "Only
public funtions should be added kernel-doc comments" note to
Documentation/doc-guide/kernel-doc.rst?

> For the time being, hide the kernel-doc style comment from Sphinx
> processing by removing the kernel-doc marker of "/**".
> 
> Proper kernel-doc comments should be added to the inlined
> wrapper functions, which is deferred to those who are familiar
> with those netdev APIs.
> 

Ah! Thanks for the explanation.

Did you mean proper kernel-doc comments should be added to the wrapper
functions that called this inlined method?

> Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
> Fixes: c526fd8f9f4f21 ("net: inline dev_queue_xmit()")
> Link: https://lore.kernel.org/linux-next/20220503073420.6d3f135d@canb.auug.org.au/
> Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
> Cc: Jakub Kicinski <kuba@kernel.org>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Pavel Begunkov <asml.silence@gmail.com>
> ---
>  net/core/dev.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/net/core/dev.c b/net/core/dev.c
> index c2d73595a7c3..a97fd413d705 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -4085,8 +4085,7 @@ struct netdev_queue *netdev_core_pick_tx(struct net_device *dev,
>  	return netdev_get_tx_queue(dev, queue_index);
>  }
>  
> -/**
> - *	__dev_queue_xmit - transmit a buffer
> +/*	__dev_queue_xmit - transmit a buffer
>   *	@skb: buffer to transmit
>   *	@sb_dev: suboordinate device used for L2 forwarding offload
>   *
> -- 
> 2.25.1
> 

I'm in favor of this patch. Thanks.
Bagas Sanjaya May 9, 2022, 6:59 a.m. UTC | #3
On 5/9/22 13:54, Bagas Sanjaya wrote:
> I'm in favor of this patch. Thanks.
> 

Oops, I mean I'm in favor of your patch suggestion.
Jakub Kicinski May 9, 2022, 5:05 p.m. UTC | #4
On Mon, 9 May 2022 13:59:48 +0700 Bagas Sanjaya wrote:
> On 5/9/22 13:54, Bagas Sanjaya wrote:
> > I'm in favor of this patch. Thanks.
> 
> Oops, I mean I'm in favor of your patch suggestion.

I think I already said what my preference was. This is a trivial
matter, let me just send a patch myself.
diff mbox series

Patch

diff --git a/net/core/dev.c b/net/core/dev.c
index f036ccb61da4da..75c00bb45f9b46 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4139,22 +4139,20 @@  struct netdev_queue *netdev_core_pick_tx(struct net_device *dev,
  *	have set the device and priority and built the buffer before calling
  *	this function. The function can be called from an interrupt.
  *
- *	A negative errno code is returned on a failure. A success does not
- *	guarantee the frame will be transmitted as it may be dropped due
- *	to congestion or traffic shaping.
- *
- * -----------------------------------------------------------------------------------
- *      I notice this method can also return errors from the queue disciplines,
- *      including NET_XMIT_DROP, which is a positive value.  So, errors can also
- *      be positive.
- *
- *      Regardless of the return value, the skb is consumed, so it is currently
- *      difficult to retry a send to this method.  (You can bump the ref count
- *      before sending to hold a reference for retry if you are careful.)
- *
- *      When calling this method, interrupts MUST be enabled.  This is because
- *      the BH enable code must have IRQs enabled so that it will not deadlock.
- *          --BLG
+ *	This function can returns a negative errno code in case of failure.
+ *	Positive errno code can also be returned from the queue disciplines
+ *	(including NET_XMIT_DROP). A success does not guarantee the frame
+ *	will be transmitted as it may be dropped due to congestion or
+ *	traffic shaping.
+ *
+ *	The skb is consumed anyway regardless of return value, so it is
+ *	currently difficult to retry sending to this method. If careful,
+ *	you can bump the ref count before sending to hold a reference for
+ *	retry.
+ *
+ *	Interrupts must be enabled when calling this function, because
+ *	BH-enabled code must have IRQs enabled so that it will not deadlock.
+ *
  */
 int __dev_queue_xmit(struct sk_buff *skb, struct net_device *sb_dev)
 {