diff options
author | Magnus Karlsson <magnus.karlsson@intel.com> | 2019-12-19 13:39:30 +0100 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2019-12-20 16:00:09 -0800 |
commit | 15d8c9162ced1789d25261859a7b37db8426e409 (patch) | |
tree | 68eb70d43dcc4d24d0ac88ec3261cdef01b393b3 /net/xdp/xsk.c | |
parent | c34787fcc90f0732ff00754057f11780007002e4 (diff) | |
download | linux-stable-15d8c9162ced1789d25261859a7b37db8426e409.tar.gz linux-stable-15d8c9162ced1789d25261859a7b37db8426e409.tar.bz2 linux-stable-15d8c9162ced1789d25261859a7b37db8426e409.zip |
xsk: Add function naming comments and reorder functions
Add comments on how the ring access functions are named and how they
are supposed to be used for producers and consumers. The functions are
also reordered so that the consumer functions are in the beginning and
the producer functions in the end, for easier reference. Put this in a
separate patch as the diff might look a little odd, but no
functionality has changed in this patch.
Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/1576759171-28550-12-git-send-email-magnus.karlsson@intel.com
Diffstat (limited to 'net/xdp/xsk.c')
-rw-r--r-- | net/xdp/xsk.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c index 55092feeaf36..5560d60c1ff5 100644 --- a/net/xdp/xsk.c +++ b/net/xdp/xsk.c @@ -319,6 +319,11 @@ bool xsk_umem_consume_tx(struct xdp_umem *umem, struct xdp_desc *desc) if (!xskq_cons_peek_desc(xs->tx, desc, umem)) continue; + /* This is the backpreassure mechanism for the Tx path. + * Reserve space in the completion queue and only proceed + * if there is space in it. This avoids having to implement + * any buffering in the Tx path. + */ if (xskq_prod_reserve_addr(umem->cq, desc->addr)) goto out; @@ -389,6 +394,11 @@ static int xsk_generic_xmit(struct sock *sk) addr = desc.addr; buffer = xdp_umem_get_data(xs->umem, addr); err = skb_store_bits(skb, 0, buffer, len); + /* This is the backpreassure mechanism for the Tx path. + * Reserve space in the completion queue and only proceed + * if there is space in it. This avoids having to implement + * any buffering in the Tx path. + */ if (unlikely(err) || xskq_prod_reserve(xs->umem->cq)) { kfree_skb(skb); goto out; |