Message ID | 20220119145259.1790015-3-vinschen@redhat.com |
---|---|
State | Accepted |
Delegated to: | Anthony Nguyen |
Headers | show |
Series | igb/igc: fix XDP registration | expand |
Corinna Vinschen <vinschen@redhat.com> writes: > On changing the RX ring parameters igb uses a hack to avoid a warning > when calling xdp_rxq_info_reg via igb_setup_rx_resources. It just > clears the struct xdp_rxq_info content. > > Instead, change this to unregister if we're already registered. Align > code to the igc code. > > Fixes: 9cbc948b5a20c ("igb: add XDP support") > Signed-off-by: Corinna Vinschen <vinschen@redhat.com> > --- Acked-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
On Jan 19 15:52, Corinna Vinschen wrote: > On changing the RX ring parameters igb uses a hack to avoid a warning > when calling xdp_rxq_info_reg via igb_setup_rx_resources. It just > clears the struct xdp_rxq_info content. > > Instead, change this to unregister if we're already registered. Align > code to the igc code. > > Fixes: 9cbc948b5a20c ("igb: add XDP support") > Signed-off-by: Corinna Vinschen <vinschen@redhat.com> > --- > drivers/net/ethernet/intel/igb/igb_ethtool.c | 4 ---- > drivers/net/ethernet/intel/igb/igb_main.c | 19 +++++++++++++------ > 2 files changed, 13 insertions(+), 10 deletions(-) Any chance this could be set to "Tested" to go forward here? Thanks, Corinna
>-----Original Message----- >From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of >Corinna Vinschen >Sent: Wednesday, January 19, 2022 8:23 PM >To: intel-wired-lan@osuosl.org; netdev@vger.kernel.org; Gomes, Vinicius ><vinicius.gomes@intel.com> >Subject: [Intel-wired-lan] [PATCH 2/2 net-next v6] igb: refactor XDP >registration > >On changing the RX ring parameters igb uses a hack to avoid a warning when >calling xdp_rxq_info_reg via igb_setup_rx_resources. It just clears the struct >xdp_rxq_info content. > >Instead, change this to unregister if we're already registered. Align code to >the igc code. > >Fixes: 9cbc948b5a20c ("igb: add XDP support") >Signed-off-by: Corinna Vinschen <vinschen@redhat.com> >--- > drivers/net/ethernet/intel/igb/igb_ethtool.c | 4 ---- > drivers/net/ethernet/intel/igb/igb_main.c | 19 +++++++++++++------ > 2 files changed, 13 insertions(+), 10 deletions(-) > Tested-by: Sandeep Penigalapati <sandeep.penigalapati@intel.com>
diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c index 51a2dcaf553d..2a5782063f4c 100644 --- a/drivers/net/ethernet/intel/igb/igb_ethtool.c +++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c @@ -965,10 +965,6 @@ static int igb_set_ringparam(struct net_device *netdev, memcpy(&temp_ring[i], adapter->rx_ring[i], sizeof(struct igb_ring)); - /* Clear copied XDP RX-queue info */ - memset(&temp_ring[i].xdp_rxq, 0, - sizeof(temp_ring[i].xdp_rxq)); - temp_ring[i].count = new_rx_count; err = igb_setup_rx_resources(&temp_ring[i]); if (err) { diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index 38ba92022cd4..c1e4ad65b02d 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -4352,7 +4352,18 @@ int igb_setup_rx_resources(struct igb_ring *rx_ring) { struct igb_adapter *adapter = netdev_priv(rx_ring->netdev); struct device *dev = rx_ring->dev; - int size; + int size, res; + + /* XDP RX-queue info */ + if (xdp_rxq_info_is_reg(&rx_ring->xdp_rxq)) + xdp_rxq_info_unreg(&rx_ring->xdp_rxq); + res = xdp_rxq_info_reg(&rx_ring->xdp_rxq, rx_ring->netdev, + rx_ring->queue_index, 0); + if (res < 0) { + dev_err(dev, "Failed to register xdp_rxq index %u\n", + rx_ring->queue_index); + return res; + } size = sizeof(struct igb_rx_buffer) * rx_ring->count; @@ -4375,14 +4386,10 @@ int igb_setup_rx_resources(struct igb_ring *rx_ring) rx_ring->xdp_prog = adapter->xdp_prog; - /* XDP RX-queue info */ - if (xdp_rxq_info_reg(&rx_ring->xdp_rxq, rx_ring->netdev, - rx_ring->queue_index, 0) < 0) - goto err; - return 0; err: + xdp_rxq_info_unreg(&rx_ring->xdp_rxq); vfree(rx_ring->rx_buffer_info); rx_ring->rx_buffer_info = NULL; dev_err(dev, "Unable to allocate memory for the Rx descriptor ring\n");
On changing the RX ring parameters igb uses a hack to avoid a warning when calling xdp_rxq_info_reg via igb_setup_rx_resources. It just clears the struct xdp_rxq_info content. Instead, change this to unregister if we're already registered. Align code to the igc code. Fixes: 9cbc948b5a20c ("igb: add XDP support") Signed-off-by: Corinna Vinschen <vinschen@redhat.com> --- drivers/net/ethernet/intel/igb/igb_ethtool.c | 4 ---- drivers/net/ethernet/intel/igb/igb_main.c | 19 +++++++++++++------ 2 files changed, 13 insertions(+), 10 deletions(-)