All of lore.kernel.org
 help / color / mirror / Atom feed
From: Saeed Mahameed <saeed@kernel.org>
To: Tony Nguyen <anthony.l.nguyen@intel.com>
Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com,
	edumazet@google.com,
	Bartosz Staszewski <bartoszx.staszewski@intel.com>,
	netdev@vger.kernel.org, bjorn@kernel.org,
	maciej.fijalkowski@intel.com, magnus.karlsson@intel.com,
	ast@kernel.org, daniel@iogearbox.net, hawk@kernel.org,
	john.fastabend@gmail.com, bpf@vger.kernel.org,
	Mateusz Palczewski <mateusz.palczewski@intel.com>,
	Shwetha Nagaraju <Shwetha.nagaraju@intel.com>
Subject: Re: [PATCH net v2 1/1] i40e: Fix the inability to attach XDP program on downed interface
Date: Wed, 7 Dec 2022 10:25:44 -0800	[thread overview]
Message-ID: <Y5DaqDKuC4y4icGe@x130> (raw)
In-Reply-To: <20221207180842.1096243-1-anthony.l.nguyen@intel.com>

On 07 Dec 10:08, Tony Nguyen wrote:
>From: Bartosz Staszewski <bartoszx.staszewski@intel.com>
>
>Whenever trying to load XDP prog on downed interface, function i40e_xdp
>was passing vsi->rx_buf_len field to i40e_xdp_setup() which was equal 0.
>i40e_open() calls i40e_vsi_configure_rx() which configures that field,
>but that only happens when interface is up. When it is down, i40e_open()
>is not being called, thus vsi->rx_buf_len is not set.
>
>Solution for this is calculate buffer length in newly created
>function - i40e_calculate_vsi_rx_buf_len() that return actual buffer
>length. Buffer length is being calculated based on the same rules
>applied previously in i40e_vsi_configure_rx() function.
>
>Fixes: 613142b0bb88 ("i40e: Log error for oversized MTU on device")
>Fixes: 0c8493d90b6b ("i40e: add XDP support for pass and drop actions")
>Signed-off-by: Bartosz Staszewski <bartoszx.staszewski@intel.com>
>Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
>Tested-by: Shwetha Nagaraju <Shwetha.nagaraju@intel.com>
>Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
>Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
>---
>v2:
>- Change title and rework commit message
>- Dropped, previous, patch 1
>
>v1: https://lore.kernel.org/netdev/20221115000324.3040207-1-anthony.l.nguyen@intel.com/
>
> drivers/net/ethernet/intel/i40e/i40e_main.c | 42 +++++++++++++++------
> 1 file changed, 30 insertions(+), 12 deletions(-)
>
>diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
>index 6416322d7c18..b8a8098110eb 100644
>--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
>+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
>@@ -3693,6 +3693,30 @@ static int i40e_vsi_configure_tx(struct i40e_vsi *vsi)
> 	return err;
> }
>
>+/**
>+ * i40e_calculate_vsi_rx_buf_len - Calculates buffer length
>+ *
>+ * @vsi: VSI to calculate rx_buf_len from
>+ */
>+static u16 i40e_calculate_vsi_rx_buf_len(struct i40e_vsi *vsi)
>+{
>+	u16 ret;
>+
>+	if (!vsi->netdev || (vsi->back->flags & I40E_FLAG_LEGACY_RX)) {
>+		ret = I40E_RXBUFFER_2048;
>+#if (PAGE_SIZE < 8192)
>+	} else if (!I40E_2K_TOO_SMALL_WITH_PADDING &&
>+		   (vsi->netdev->mtu <= ETH_DATA_LEN)) {
>+		ret = I40E_RXBUFFER_1536 - NET_IP_ALIGN;
>+#endif
>+	} else {
>+		ret = (PAGE_SIZE < 8192) ? I40E_RXBUFFER_3072 :
>+					   I40E_RXBUFFER_2048;
>+	}
>+
>+	return ret;
>+}

nit: linux coding style states:
"Do not unnecessarily use braces where a single statement will do"

I think this applies here.

Also you could simplify this function to do early returns and drop the u16
ret variable and all the else statements.

if (condition 1)
     return val1;

if (condition 2)
     return val2;

return val3;


Other than that LGTM.


  reply	other threads:[~2022-12-07 18:25 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-07 18:08 [PATCH net v2 1/1] i40e: Fix the inability to attach XDP program on downed interface Tony Nguyen
2022-12-07 18:25 ` Saeed Mahameed [this message]
2022-12-07 21:16   ` Tony Nguyen

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=Y5DaqDKuC4y4icGe@x130 \
    --to=saeed@kernel.org \
    --cc=Shwetha.nagaraju@intel.com \
    --cc=anthony.l.nguyen@intel.com \
    --cc=ast@kernel.org \
    --cc=bartoszx.staszewski@intel.com \
    --cc=bjorn@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=hawk@kernel.org \
    --cc=john.fastabend@gmail.com \
    --cc=kuba@kernel.org \
    --cc=maciej.fijalkowski@intel.com \
    --cc=magnus.karlsson@intel.com \
    --cc=mateusz.palczewski@intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.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.