All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: stable@vger.kernel.org
Cc: Ziwei Xiao <ziweixiao@google.com>, Sasha Levin <sashal@kernel.org>
Subject: Re: [PATCH 6.1 v2] gve: Fixes for napi_poll when budget is 0
Date: Wed, 11 Dec 2024 11:33:32 -0500	[thread overview]
Message-ID: <20241211103629-2d6e9d387278b995@stable.kernel.org> (raw)
In-Reply-To: <20241210235758.637910-1-ziweixiao@google.com>

[ Sasha's backport helper bot ]

Hi,

Found matching upstream commit: 278a370c1766060d2144d6cf0b06c101e1043b6d


Status in newer kernel trees:
6.12.y | Present (exact SHA1)
6.6.y | Present (different SHA1: ff33be9cecee)
6.1.y | Not found

Note: The patch differs from the upstream commit:
---
1:  278a370c17660 ! 1:  68463e6a71027 gve: Fixes for napi_poll when budget is 0
    @@ Metadata
      ## Commit message ##
         gve: Fixes for napi_poll when budget is 0
     
    -    Netpoll will explicilty pass the polling call with a budget of 0 to
    +    Netpoll will explicitly pass the polling call with a budget of 0 to
         indicate it's clearing the Tx path only. For the gve_rx_poll and
         gve_xdp_poll, they were mistakenly taking the 0 budget as the indication
         to do all the work. Add check to avoid the rx path and xdp path being
         called when budget is 0. And also avoid napi_complete_done being called
         when budget is 0 for netpoll.
     
    +    The original fix was merged here:
    +    https://lore.kernel.org/r/20231114004144.2022268-1-ziweixiao@google.com
    +    Resend it since the original one was not cleanly applied to 6.1 kernel.
    +
    +    commit 278a370c1766 ("gve: Fixes for napi_poll when budget is 0")
    +
         Fixes: f5cedc84a30d ("gve: Add transmit and receive support")
         Signed-off-by: Ziwei Xiao <ziweixiao@google.com>
    -    Link: https://lore.kernel.org/r/20231114004144.2022268-1-ziweixiao@google.com
    -    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    +    Reviewed-by: Praveen Kaligineedi <pkaligineedi@google.com>
    +    Signed-off-by: Praveen Kaligineedi <pkaligineedi@google.com>
     
      ## drivers/net/ethernet/google/gve/gve_main.c ##
     @@ drivers/net/ethernet/google/gve/gve_main.c: static int gve_napi_poll(struct napi_struct *napi, int budget)
    - 	if (block->tx) {
    - 		if (block->tx->q_num < priv->tx_cfg.num_queues)
    - 			reschedule |= gve_tx_poll(block, budget);
    --		else
    -+		else if (budget)
    - 			reschedule |= gve_xdp_poll(block, budget);
    - 	}
      
    + 	if (block->tx)
    + 		reschedule |= gve_tx_poll(block, budget);
    ++
     +	if (!budget)
     +		return 0;
     +
    @@ drivers/net/ethernet/google/gve/gve_rx.c: int gve_rx_poll(struct gve_notify_bloc
      
     
      ## drivers/net/ethernet/google/gve/gve_tx.c ##
    -@@ drivers/net/ethernet/google/gve/gve_tx.c: bool gve_xdp_poll(struct gve_notify_block *block, int budget)
    - 	bool repoll;
    +@@ drivers/net/ethernet/google/gve/gve_tx.c: bool gve_tx_poll(struct gve_notify_block *block, int budget)
    + 	u32 nic_done;
      	u32 to_do;
      
     -	/* If budget is 0, do all the work */
     -	if (budget == 0)
     -		budget = INT_MAX;
     -
    - 	/* Find out how much work there is to be done */
    - 	nic_done = gve_tx_load_event_counter(priv, tx);
    - 	to_do = min_t(u32, (nic_done - tx->done), budget);
    + 	/* In TX path, it may try to clean completed pkts in order to xmit,
    + 	 * to avoid cleaning conflict, use spin_lock(), it yields better
    + 	 * concurrency between xmit/clean than netif's lock.
---

Results of testing on various branches:

| Branch                    | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| stable/linux-6.1.y        |  Success    |  Success   |

      reply	other threads:[~2024-12-11 16:33 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-10 23:57 [PATCH 6.1 v2] gve: Fixes for napi_poll when budget is 0 Ziwei Xiao
2024-12-11 16:33 ` Sasha Levin [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=20241211103629-2d6e9d387278b995@stable.kernel.org \
    --to=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=ziweixiao@google.com \
    /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.