Merge tag 'for-5.12/io_uring-2021-02-25' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / net / xdp / xsk_diag.c
index 21e9c2d..c014217 100644 (file)
@@ -46,6 +46,7 @@ static int xsk_diag_put_rings_cfg(const struct xdp_sock *xs,
 
 static int xsk_diag_put_umem(const struct xdp_sock *xs, struct sk_buff *nlskb)
 {
+       struct xsk_buff_pool *pool = xs->pool;
        struct xdp_umem *umem = xs->umem;
        struct xdp_diag_umem du = {};
        int err;
@@ -58,21 +59,20 @@ static int xsk_diag_put_umem(const struct xdp_sock *xs, struct sk_buff *nlskb)
        du.num_pages = umem->npgs;
        du.chunk_size = umem->chunk_size;
        du.headroom = umem->headroom;
-       du.ifindex = umem->dev ? umem->dev->ifindex : 0;
-       du.queue_id = umem->queue_id;
+       du.ifindex = (pool && pool->netdev) ? pool->netdev->ifindex : 0;
+       du.queue_id = pool ? pool->queue_id : 0;
        du.flags = 0;
        if (umem->zc)
                du.flags |= XDP_DU_F_ZEROCOPY;
        du.refs = refcount_read(&umem->users);
 
        err = nla_put(nlskb, XDP_DIAG_UMEM, sizeof(du), &du);
-
-       if (!err && umem->fq)
-               err = xsk_diag_put_ring(umem->fq, XDP_DIAG_UMEM_FILL_RING, nlskb);
-       if (!err && umem->cq) {
-               err = xsk_diag_put_ring(umem->cq, XDP_DIAG_UMEM_COMPLETION_RING,
-                                       nlskb);
-       }
+       if (!err && pool && pool->fq)
+               err = xsk_diag_put_ring(pool->fq,
+                                       XDP_DIAG_UMEM_FILL_RING, nlskb);
+       if (!err && pool && pool->cq)
+               err = xsk_diag_put_ring(pool->cq,
+                                       XDP_DIAG_UMEM_COMPLETION_RING, nlskb);
        return err;
 }
 
@@ -83,7 +83,7 @@ static int xsk_diag_put_stats(const struct xdp_sock *xs, struct sk_buff *nlskb)
        du.n_rx_dropped = xs->rx_dropped;
        du.n_rx_invalid = xskq_nb_invalid_descs(xs->rx);
        du.n_rx_full = xs->rx_queue_full;
-       du.n_fill_ring_empty = xs->umem ? xskq_nb_queue_empty_descs(xs->umem->fq) : 0;
+       du.n_fill_ring_empty = xs->pool ? xskq_nb_queue_empty_descs(xs->pool->fq) : 0;
        du.n_tx_invalid = xskq_nb_invalid_descs(xs->tx);
        du.n_tx_ring_empty = xskq_nb_queue_empty_descs(xs->tx);
        return nla_put(nlskb, XDP_DIAG_STATS, sizeof(du), &du);