cregit-Linux how code gets into the kernel

Release 4.16 net/core/xdp.c

Directory: net/core
/* net/core/xdp.c
 *
 * Copyright (c) 2017 Jesper Dangaard Brouer, Red Hat Inc.
 * Released under terms in GPL version 2.  See COPYING.
 */
#include <linux/types.h>
#include <linux/mm.h>

#include <net/xdp.h>


#define REG_STATE_NEW		0x0

#define REG_STATE_REGISTERED	0x1

#define REG_STATE_UNREGISTERED	0x2

#define REG_STATE_UNUSED	0x3


void xdp_rxq_info_unreg(struct xdp_rxq_info *xdp_rxq) { /* Simplify driver cleanup code paths, allow unreg "unused" */ if (xdp_rxq->reg_state == REG_STATE_UNUSED) return; WARN(!(xdp_rxq->reg_state == REG_STATE_REGISTERED), "Driver BUG"); xdp_rxq->reg_state = REG_STATE_UNREGISTERED; xdp_rxq->dev = NULL; }

Contributors

PersonTokensPropCommitsCommitProp
Jesper Dangaard Brouer46100.00%1100.00%
Total46100.00%1100.00%

EXPORT_SYMBOL_GPL(xdp_rxq_info_unreg);
static void xdp_rxq_info_init(struct xdp_rxq_info *xdp_rxq) { memset(xdp_rxq, 0, sizeof(*xdp_rxq)); }

Contributors

PersonTokensPropCommitsCommitProp
Jesper Dangaard Brouer24100.00%1100.00%
Total24100.00%1100.00%

/* Returns 0 on success, negative on failure */
int xdp_rxq_info_reg(struct xdp_rxq_info *xdp_rxq, struct net_device *dev, u32 queue_index) { if (xdp_rxq->reg_state == REG_STATE_UNUSED) { WARN(1, "Driver promised not to register this"); return -EINVAL; } if (xdp_rxq->reg_state == REG_STATE_REGISTERED) { WARN(1, "Missing unregister, handled but fix driver"); xdp_rxq_info_unreg(xdp_rxq); } if (!dev) { WARN(1, "Missing net_device from driver"); return -ENODEV; } /* State either UNREGISTERED or NEW */ xdp_rxq_info_init(xdp_rxq); xdp_rxq->dev = dev; xdp_rxq->queue_index = queue_index; xdp_rxq->reg_state = REG_STATE_REGISTERED; return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Jesper Dangaard Brouer106100.00%1100.00%
Total106100.00%1100.00%

EXPORT_SYMBOL_GPL(xdp_rxq_info_reg);
void xdp_rxq_info_unused(struct xdp_rxq_info *xdp_rxq) { xdp_rxq->reg_state = REG_STATE_UNUSED; }

Contributors

PersonTokensPropCommitsCommitProp
Jesper Dangaard Brouer16100.00%1100.00%
Total16100.00%1100.00%

EXPORT_SYMBOL_GPL(xdp_rxq_info_unused);
bool xdp_rxq_info_is_reg(struct xdp_rxq_info *xdp_rxq) { return (xdp_rxq->reg_state == REG_STATE_REGISTERED); }

Contributors

PersonTokensPropCommitsCommitProp
Jesper Dangaard Brouer19100.00%1100.00%
Total19100.00%1100.00%

EXPORT_SYMBOL_GPL(xdp_rxq_info_is_reg);

Overall Contributors

PersonTokensPropCommitsCommitProp
Jesper Dangaard Brouer258100.00%2100.00%
Total258100.00%2100.00%
Directory: net/core
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.