ixgbe: NULL xdp_tx rings on resource cleanup
authorJohn Fastabend <john.fastabend@gmail.com>
Mon, 17 Jul 2017 16:26:24 +0000 (09:26 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 17 Jul 2017 16:48:05 +0000 (09:48 -0700)
tx_rings and rx_rings are cleaned up on close paths in ixgbe driver
however, xdp_rings are not. Set the xdp_rings to NULL here so that
we can use the pointer to indicate if the XDP rings are initialized.

Signed-off-by: John Fastabend <john.fastabend@gmail.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c

index b45fdc98033dc4b052ebdd6492ecbc437fe4071b..f1bfae0c41d0cd406b5eff080fd08295729755a9 100644 (file)
@@ -1018,8 +1018,12 @@ static void ixgbe_free_q_vector(struct ixgbe_adapter *adapter, int v_idx)
        struct ixgbe_q_vector *q_vector = adapter->q_vector[v_idx];
        struct ixgbe_ring *ring;
 
-       ixgbe_for_each_ring(ring, q_vector->tx)
-               adapter->tx_ring[ring->queue_index] = NULL;
+       ixgbe_for_each_ring(ring, q_vector->tx) {
+               if (ring_is_xdp(ring))
+                       adapter->xdp_ring[ring->queue_index] = NULL;
+               else
+                       adapter->tx_ring[ring->queue_index] = NULL;
+       }
 
        ixgbe_for_each_ring(ring, q_vector->rx)
                adapter->rx_ring[ring->queue_index] = NULL;