xsk: add id to umem
This commit adds an id to the umem structure. The id uniquely identifies a umem instance, and will be exposed to user-space via the socket monitoring interface. Signed-off-by: Björn Töpel <bjorn.topel@intel.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
Родитель
1d0dc06930
Коммит
50e74c0131
|
@ -42,6 +42,7 @@ struct xdp_umem {
|
|||
struct work_struct work;
|
||||
struct page **pgs;
|
||||
u32 npgs;
|
||||
int id;
|
||||
struct net_device *dev;
|
||||
struct xdp_umem_fq_reuse *fq_reuse;
|
||||
u16 queue_id;
|
||||
|
|
|
@ -13,12 +13,15 @@
|
|||
#include <linux/mm.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/rtnetlink.h>
|
||||
#include <linux/idr.h>
|
||||
|
||||
#include "xdp_umem.h"
|
||||
#include "xsk_queue.h"
|
||||
|
||||
#define XDP_UMEM_MIN_CHUNK_SIZE 2048
|
||||
|
||||
static DEFINE_IDA(umem_ida);
|
||||
|
||||
void xdp_add_sk_umem(struct xdp_umem *umem, struct xdp_sock *xs)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
@ -183,6 +186,8 @@ static void xdp_umem_release(struct xdp_umem *umem)
|
|||
|
||||
xdp_umem_clear_dev(umem);
|
||||
|
||||
ida_simple_remove(&umem_ida, umem->id);
|
||||
|
||||
if (umem->fq) {
|
||||
xskq_destroy(umem->fq);
|
||||
umem->fq = NULL;
|
||||
|
@ -389,8 +394,16 @@ struct xdp_umem *xdp_umem_create(struct xdp_umem_reg *mr)
|
|||
if (!umem)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
err = ida_simple_get(&umem_ida, 0, 0, GFP_KERNEL);
|
||||
if (err < 0) {
|
||||
kfree(umem);
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
umem->id = err;
|
||||
|
||||
err = xdp_umem_reg(umem, mr);
|
||||
if (err) {
|
||||
ida_simple_remove(&umem_ida, umem->id);
|
||||
kfree(umem);
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче