[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <b9804c40-3402-1dac-a9c0-db37a5360015@molgen.mpg.de>
Date: Tue, 19 Apr 2022 16:19:29 +0200
From: Paul Menzel <pmenzel@...gen.mpg.de>
To: Jeff Evanson <jeff.evanson@...il.com>
Cc: Jesse Brandeburg <jesse.brandeburg@...el.com>,
Tony Nguyen <anthony.l.nguyen@...el.com>,
"David S. Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>,
intel-wired-lan@...ts.osuosl.org, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org, jeff.evanson@....com
Subject: Re: [Intel-wired-lan] [PATCH 2/2] Trigger proper interrupts in
igc_xsk_wakeup
Dear Jeff,
Thank you for your patch.
Am 15.04.22 um 23:05 schrieb Jeff Evanson:
1. Add a From tag(?), so your company instead of gmail.com email is used?
2. Please add a prefix to the commit message summary. See `git log
--oneline drivers/net/ethernet/igc` for examples.
> in igc_xsk_wakeup, trigger the proper interrupt based on whether flags
> contains XDP_WAKEUP_RX and/or XDP_WAKEUP_TX
Nit. Please add a dot/period to the end of sentences.
Can you please add a paragraph on what system you experienced the
problem, and how to verify your fix?
> Signed-off-by: Jeff Evanson <jeff.evanson@....com>
> ---
> drivers/net/ethernet/intel/igc/igc_main.c | 36 +++++++++++++++++------
> 1 file changed, 27 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
> index a36a18c84aeb..d706de95dc06 100644
> --- a/drivers/net/ethernet/intel/igc/igc_main.c
> +++ b/drivers/net/ethernet/intel/igc/igc_main.c
> @@ -6073,7 +6073,7 @@ static void igc_trigger_rxtxq_interrupt(struct igc_adapter *adapter,
> int igc_xsk_wakeup(struct net_device *dev, u32 queue_id, u32 flags)
> {
> struct igc_adapter *adapter = netdev_priv(dev);
> - struct igc_q_vector *q_vector;
> + struct igc_q_vector *txq_vector = 0, *rxq_vector = 0;
Should you use NULL instead of 0?
Kind regards,
Paul
> struct igc_ring *ring;
>
> if (test_bit(__IGC_DOWN, &adapter->state))
> @@ -6082,17 +6082,35 @@ int igc_xsk_wakeup(struct net_device *dev, u32 queue_id, u32 flags)
> if (!igc_xdp_is_enabled(adapter))
> return -ENXIO;
>
> - if (queue_id >= adapter->num_rx_queues)
> - return -EINVAL;
> + if (flags & XDP_WAKEUP_RX) {
> + if (queue_id >= adapter->num_rx_queues)
> + return -EINVAL;
>
> - ring = adapter->rx_ring[queue_id];
> + ring = adapter->rx_ring[queue_id];
> + if (!ring->xsk_pool)
> + return -ENXIO;
>
> - if (!ring->xsk_pool)
> - return -ENXIO;
> + rxq_vector = ring->q_vector;
> + }
> +
> + if (flags & XDP_WAKEUP_TX) {
> + if (queue_id >= adapter->num_tx_queues)
> + return -EINVAL;
> +
> + ring = adapter->tx_ring[queue_id];
> + if (!ring->xsk_pool)
> + return -ENXIO;
> +
> + txq_vector = ring->q_vector;
> + }
> +
> + if (rxq_vector &&
> + !napi_if_scheduled_mark_missed(&rxq_vector->napi))
> + igc_trigger_rxtxq_interrupt(adapter, rxq_vector);
>
> - q_vector = adapter->q_vector[queue_id];
> - if (!napi_if_scheduled_mark_missed(&q_vector->napi))
> - igc_trigger_rxtxq_interrupt(adapter, q_vector);
> + if (txq_vector && txq_vector != rxq_vector &&
> + !napi_if_scheduled_mark_missed(&txq_vector->napi))
> + igc_trigger_rxtxq_interrupt(adapter, txq_vector);
>
> return 0;
> }
Powered by blists - more mailing lists