freebsd_iflib: Upgrade to that of FreeBSD 13.
ipro1000 still works.
This commit is contained in:
@@ -48,7 +48,7 @@ typedef uint16_t qidx_t;
|
|||||||
struct iflib_ctx;
|
struct iflib_ctx;
|
||||||
typedef struct iflib_ctx *if_ctx_t;
|
typedef struct iflib_ctx *if_ctx_t;
|
||||||
struct if_shared_ctx;
|
struct if_shared_ctx;
|
||||||
typedef struct if_shared_ctx *if_shared_ctx_t;
|
typedef const struct if_shared_ctx *if_shared_ctx_t;
|
||||||
struct if_int_delay_info;
|
struct if_int_delay_info;
|
||||||
typedef struct if_int_delay_info *if_int_delay_info_t;
|
typedef struct if_int_delay_info *if_int_delay_info_t;
|
||||||
struct if_pseudo;
|
struct if_pseudo;
|
||||||
@@ -94,7 +94,6 @@ typedef struct if_rxd_info {
|
|||||||
|
|
||||||
typedef struct if_rxd_update {
|
typedef struct if_rxd_update {
|
||||||
uint64_t *iru_paddrs;
|
uint64_t *iru_paddrs;
|
||||||
caddr_t *iru_vaddrs;
|
|
||||||
qidx_t *iru_idxs;
|
qidx_t *iru_idxs;
|
||||||
qidx_t iru_pidx;
|
qidx_t iru_pidx;
|
||||||
uint16_t iru_qsidx;
|
uint16_t iru_qsidx;
|
||||||
@@ -167,13 +166,13 @@ typedef struct pci_vendor_info {
|
|||||||
uint32_t pvi_class_mask;
|
uint32_t pvi_class_mask;
|
||||||
const char *pvi_name;
|
const char *pvi_name;
|
||||||
} pci_vendor_info_t;
|
} pci_vendor_info_t;
|
||||||
|
|
||||||
#define PVID(vendor, devid, name) {vendor, devid, 0, 0, 0, 0, name}
|
#define PVID(vendor, devid, name) {vendor, devid, 0, 0, 0, 0, name}
|
||||||
#define PVID_OEM(vendor, devid, svid, sdevid, revid, name) {vendor, devid, svid, sdevid, revid, 0, name}
|
#define PVID_OEM(vendor, devid, svid, sdevid, revid, name) {vendor, devid, svid, sdevid, revid, 0, name}
|
||||||
#define PVID_END {0, 0, 0, 0, 0, 0, NULL}
|
#define PVID_END {0, 0, 0, 0, 0, 0, NULL}
|
||||||
|
|
||||||
#define IFLIB_PNP_DESCR "U32:vendor;U32:device;U32:subvendor;U32:subdevice;" \
|
/* No drivers in tree currently match on anything except vendor:device. */
|
||||||
"U32:revision;U32:class;D:#"
|
#define IFLIB_PNP_DESCR "U32:vendor;U32:device;U32:#;U32:#;" \
|
||||||
|
"U32:#;U32:#;D:#"
|
||||||
#define IFLIB_PNP_INFO(b, u, t) \
|
#define IFLIB_PNP_INFO(b, u, t) \
|
||||||
MODULE_PNP_INFO(IFLIB_PNP_DESCR, b, u, t, nitems(t) - 1)
|
MODULE_PNP_INFO(IFLIB_PNP_DESCR, b, u, t, nitems(t) - 1)
|
||||||
|
|
||||||
@@ -219,6 +218,9 @@ typedef struct if_softc_ctx {
|
|||||||
uint32_t __spare2__;
|
uint32_t __spare2__;
|
||||||
|
|
||||||
iflib_intr_mode_t isc_intr;
|
iflib_intr_mode_t isc_intr;
|
||||||
|
uint16_t isc_rxd_buf_size[8]; /* set at init time by driver, 0
|
||||||
|
means use iflib-calculated size
|
||||||
|
based on isc_max_frame_size */
|
||||||
uint16_t isc_max_frame_size; /* set at init time by driver */
|
uint16_t isc_max_frame_size; /* set at init time by driver */
|
||||||
uint16_t isc_min_frame_size; /* set at init time by driver, only used if
|
uint16_t isc_min_frame_size; /* set at init time by driver, only used if
|
||||||
IFLIB_NEED_ETHER_PAD is set. */
|
IFLIB_NEED_ETHER_PAD is set. */
|
||||||
@@ -285,15 +287,32 @@ typedef struct iflib_dma_info {
|
|||||||
#define IFLIB_MAGIC 0xCAFEF00D
|
#define IFLIB_MAGIC 0xCAFEF00D
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
/* Interrupt or softirq handles only receive */
|
||||||
IFLIB_INTR_RX,
|
IFLIB_INTR_RX,
|
||||||
|
|
||||||
|
/* Interrupt or softirq handles only transmit */
|
||||||
IFLIB_INTR_TX,
|
IFLIB_INTR_TX,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Interrupt will check for both pending receive
|
||||||
|
* and available tx credits and dispatch a task
|
||||||
|
* for one or both depending on the disposition
|
||||||
|
* of the respective queues.
|
||||||
|
*/
|
||||||
IFLIB_INTR_RXTX,
|
IFLIB_INTR_RXTX,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Other interrupt - typically link status and
|
||||||
|
* or error conditions.
|
||||||
|
*/
|
||||||
IFLIB_INTR_ADMIN,
|
IFLIB_INTR_ADMIN,
|
||||||
|
|
||||||
|
/* Softirq (task) for iov handling */
|
||||||
IFLIB_INTR_IOV,
|
IFLIB_INTR_IOV,
|
||||||
} iflib_intr_type_t;
|
} iflib_intr_type_t;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interface has a separate command queue for RX
|
* Interface has a separate completion queue for RX
|
||||||
*/
|
*/
|
||||||
#define IFLIB_HAS_RXCQ 0x01
|
#define IFLIB_HAS_RXCQ 0x01
|
||||||
/*
|
/*
|
||||||
@@ -305,7 +324,7 @@ typedef enum {
|
|||||||
*/
|
*/
|
||||||
#define IFLIB_IS_VF 0x04
|
#define IFLIB_IS_VF 0x04
|
||||||
/*
|
/*
|
||||||
* Interface has a separate command queue for TX
|
* Interface has a separate completion queue for TX
|
||||||
*/
|
*/
|
||||||
#define IFLIB_HAS_TXCQ 0x08
|
#define IFLIB_HAS_TXCQ 0x08
|
||||||
/*
|
/*
|
||||||
@@ -365,6 +384,25 @@ typedef enum {
|
|||||||
* Driver will pass the media
|
* Driver will pass the media
|
||||||
*/
|
*/
|
||||||
#define IFLIB_DRIVER_MEDIA 0x20000
|
#define IFLIB_DRIVER_MEDIA 0x20000
|
||||||
|
/*
|
||||||
|
* When using a single hardware interrupt for the interface, only process RX
|
||||||
|
* interrupts instead of doing combined RX/TX processing.
|
||||||
|
*/
|
||||||
|
#define IFLIB_SINGLE_IRQ_RX_ONLY 0x40000
|
||||||
|
/*
|
||||||
|
* Don't need/want most of the niceties of
|
||||||
|
* emulating ethernet
|
||||||
|
*/
|
||||||
|
#define IFLIB_PSEUDO_ETHER 0x80000
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These enum values are used in iflib_needs_restart to indicate to iflib
|
||||||
|
* functions whether or not the interface needs restarting when certain events
|
||||||
|
* happen.
|
||||||
|
*/
|
||||||
|
enum iflib_restart_event {
|
||||||
|
IFLIB_RESTART_VLAN_CONFIG,
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* field accessors
|
* field accessors
|
||||||
|
|||||||
+1094
-728
File diff suppressed because it is too large
Load Diff
@@ -109,7 +109,6 @@ drain_ring_locked(struct ifmp_ring *r, union ring_state os, uint16_t prev, int b
|
|||||||
total = 0;
|
total = 0;
|
||||||
|
|
||||||
while (cidx != pidx) {
|
while (cidx != pidx) {
|
||||||
|
|
||||||
/* Items from cidx to pidx are available for consumption. */
|
/* Items from cidx to pidx are available for consumption. */
|
||||||
n = r->drain(r, cidx, pidx);
|
n = r->drain(r, cidx, pidx);
|
||||||
if (n == 0) {
|
if (n == 0) {
|
||||||
@@ -184,7 +183,6 @@ drain_ring_lockless(struct ifmp_ring *r, union ring_state os, uint16_t prev, int
|
|||||||
total = 0;
|
total = 0;
|
||||||
|
|
||||||
while (cidx != pidx) {
|
while (cidx != pidx) {
|
||||||
|
|
||||||
/* Items from cidx to pidx are available for consumption. */
|
/* Items from cidx to pidx are available for consumption. */
|
||||||
n = r->drain(r, cidx, pidx);
|
n = r->drain(r, cidx, pidx);
|
||||||
if (n == 0) {
|
if (n == 0) {
|
||||||
@@ -491,7 +489,6 @@ ifmp_ring_check_drainage(struct ifmp_ring *r, int budget)
|
|||||||
ns.state = os.state;
|
ns.state = os.state;
|
||||||
ns.flags = BUSY;
|
ns.flags = BUSY;
|
||||||
|
|
||||||
|
|
||||||
#ifdef MP_RING_NO_64BIT_ATOMICS
|
#ifdef MP_RING_NO_64BIT_ATOMICS
|
||||||
mtx_lock(&r->lock);
|
mtx_lock(&r->lock);
|
||||||
if (r->state != os.state) {
|
if (r->state != os.state) {
|
||||||
@@ -509,7 +506,6 @@ ifmp_ring_check_drainage(struct ifmp_ring *r, int budget)
|
|||||||
if (!atomic_cmpset_acq_64(&r->state, os.state, ns.state))
|
if (!atomic_cmpset_acq_64(&r->state, os.state, ns.state))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
drain_ring_lockless(r, ns, os.flags, budget);
|
drain_ring_lockless(r, ns, os.flags, budget);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,13 +52,13 @@ typedef struct nvpair nvpair_t;
|
|||||||
#define NV_FLAG_IN_ARRAY 0x100
|
#define NV_FLAG_IN_ARRAY 0x100
|
||||||
|
|
||||||
#ifdef _KERNEL
|
#ifdef _KERNEL
|
||||||
#define nv_malloc(size) malloc((size), M_NVLIST, M_WAITOK)
|
#define nv_malloc(size) malloc((size), M_NVLIST, M_NOWAIT)
|
||||||
#define nv_calloc(n, size) mallocarray((n), (size), M_NVLIST, \
|
#define nv_calloc(n, size) mallocarray((n), (size), M_NVLIST, \
|
||||||
M_WAITOK | M_ZERO)
|
M_NOWAIT | M_ZERO)
|
||||||
#define nv_realloc(buf, size) realloc((buf), (size), M_NVLIST, \
|
#define nv_realloc(buf, size) realloc((buf), (size), M_NVLIST, \
|
||||||
M_WAITOK)
|
M_NOWAIT)
|
||||||
#define nv_free(buf) free((buf), M_NVLIST)
|
#define nv_free(buf) free((buf), M_NVLIST)
|
||||||
#define nv_strdup(buf) strdup((buf), M_NVLIST)
|
#define nv_strdup(buf) strdup_flags((buf), M_NVLIST, M_NOWAIT)
|
||||||
#define nv_vasprintf(ptr, ...) vasprintf(ptr, M_NVLIST, __VA_ARGS__)
|
#define nv_vasprintf(ptr, ...) vasprintf(ptr, M_NVLIST, __VA_ARGS__)
|
||||||
|
|
||||||
#define ERRNO_SET(var) do { } while (0)
|
#define ERRNO_SET(var) do { } while (0)
|
||||||
@@ -103,6 +103,7 @@ bool nvlist_move_nvpair(nvlist_t *nvl, nvpair_t *nvp);
|
|||||||
|
|
||||||
void nvlist_set_parent(nvlist_t *nvl, nvpair_t *parent);
|
void nvlist_set_parent(nvlist_t *nvl, nvpair_t *parent);
|
||||||
void nvlist_set_array_next(nvlist_t *nvl, nvpair_t *ele);
|
void nvlist_set_array_next(nvlist_t *nvl, nvpair_t *ele);
|
||||||
|
nvpair_t *nvlist_get_array_next_nvpair(nvlist_t *nvl);
|
||||||
|
|
||||||
const nvpair_t *nvlist_get_nvpair(const nvlist_t *nvl, const char *name);
|
const nvpair_t *nvlist_get_nvpair(const nvlist_t *nvl, const char *name);
|
||||||
|
|
||||||
|
|||||||
@@ -99,6 +99,7 @@ struct nvlist {
|
|||||||
int nvl_magic;
|
int nvl_magic;
|
||||||
int nvl_error;
|
int nvl_error;
|
||||||
int nvl_flags;
|
int nvl_flags;
|
||||||
|
size_t nvl_datasize;
|
||||||
nvpair_t *nvl_parent;
|
nvpair_t *nvl_parent;
|
||||||
nvpair_t *nvl_array_next;
|
nvpair_t *nvl_array_next;
|
||||||
struct nvl_head nvl_head;
|
struct nvl_head nvl_head;
|
||||||
@@ -139,6 +140,7 @@ nvlist_create(int flags)
|
|||||||
nvl->nvl_flags = flags;
|
nvl->nvl_flags = flags;
|
||||||
nvl->nvl_parent = NULL;
|
nvl->nvl_parent = NULL;
|
||||||
nvl->nvl_array_next = NULL;
|
nvl->nvl_array_next = NULL;
|
||||||
|
nvl->nvl_datasize = sizeof(struct nvlist_header);
|
||||||
TAILQ_INIT(&nvl->nvl_head);
|
TAILQ_INIT(&nvl->nvl_head);
|
||||||
nvl->nvl_magic = NVLIST_MAGIC;
|
nvl->nvl_magic = NVLIST_MAGIC;
|
||||||
|
|
||||||
@@ -247,6 +249,60 @@ nvlist_set_array_next(nvlist_t *nvl, nvpair_t *ele)
|
|||||||
nvl->nvl_array_next = ele;
|
nvl->nvl_array_next = ele;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
nvlist_update_size(nvlist_t *nvl, nvpair_t *new, ssize_t mul)
|
||||||
|
{
|
||||||
|
ssize_t size;
|
||||||
|
size_t nitems;
|
||||||
|
const nvlist_t *nvlistnew;
|
||||||
|
const nvlist_t * const *nvlarray;
|
||||||
|
nvlist_t *parent;
|
||||||
|
unsigned int ii;
|
||||||
|
|
||||||
|
NVLIST_ASSERT(nvl);
|
||||||
|
NVPAIR_ASSERT(new);
|
||||||
|
PJDLOG_ASSERT(mul == 1 || mul == -1);
|
||||||
|
|
||||||
|
size = nvpair_header_size();
|
||||||
|
size += strlen(nvpair_name(new)) + 1;
|
||||||
|
|
||||||
|
if (nvpair_type(new) == NV_TYPE_NVLIST) {
|
||||||
|
nvlistnew = nvpair_get_nvlist(new);
|
||||||
|
size += nvlistnew->nvl_datasize;
|
||||||
|
size += nvpair_header_size() + 1;
|
||||||
|
} else if (nvpair_type(new) == NV_TYPE_NVLIST_ARRAY) {
|
||||||
|
nvlarray = nvpair_get_nvlist_array(new, &nitems);
|
||||||
|
PJDLOG_ASSERT(nitems > 0);
|
||||||
|
|
||||||
|
size += (nvpair_header_size() + 1) * nitems;
|
||||||
|
for (ii = 0; ii < nitems; ii++) {
|
||||||
|
PJDLOG_ASSERT(nvlarray[ii]->nvl_error == 0);
|
||||||
|
size += nvlarray[ii]->nvl_datasize;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
size += nvpair_size(new);
|
||||||
|
}
|
||||||
|
|
||||||
|
size *= mul;
|
||||||
|
|
||||||
|
nvl->nvl_datasize += size;
|
||||||
|
|
||||||
|
parent = nvl;
|
||||||
|
while ((parent = __DECONST(nvlist_t *,
|
||||||
|
nvlist_get_parent(parent, NULL))) != NULL) {
|
||||||
|
parent->nvl_datasize += size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
nvpair_t *
|
||||||
|
nvlist_get_array_next_nvpair(nvlist_t *nvl)
|
||||||
|
{
|
||||||
|
|
||||||
|
NVLIST_ASSERT(nvl);
|
||||||
|
|
||||||
|
return (nvl->nvl_array_next);
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
nvlist_in_array(const nvlist_t *nvl)
|
nvlist_in_array(const nvlist_t *nvl)
|
||||||
{
|
{
|
||||||
@@ -631,78 +687,8 @@ nvlist_fdump(const nvlist_t *nvl, FILE *fp)
|
|||||||
size_t
|
size_t
|
||||||
nvlist_size(const nvlist_t *nvl)
|
nvlist_size(const nvlist_t *nvl)
|
||||||
{
|
{
|
||||||
const nvlist_t *tmpnvl;
|
|
||||||
const nvlist_t * const *nvlarray;
|
|
||||||
const nvpair_t *nvp, *tmpnvp;
|
|
||||||
void *cookie;
|
|
||||||
size_t size, nitems;
|
|
||||||
unsigned int ii;
|
|
||||||
|
|
||||||
NVLIST_ASSERT(nvl);
|
return (nvl->nvl_datasize);
|
||||||
PJDLOG_ASSERT(nvl->nvl_error == 0);
|
|
||||||
|
|
||||||
size = sizeof(struct nvlist_header);
|
|
||||||
nvp = nvlist_first_nvpair(nvl);
|
|
||||||
while (nvp != NULL) {
|
|
||||||
size += nvpair_header_size();
|
|
||||||
size += strlen(nvpair_name(nvp)) + 1;
|
|
||||||
if (nvpair_type(nvp) == NV_TYPE_NVLIST) {
|
|
||||||
size += sizeof(struct nvlist_header);
|
|
||||||
size += nvpair_header_size() + 1;
|
|
||||||
tmpnvl = nvpair_get_nvlist(nvp);
|
|
||||||
PJDLOG_ASSERT(tmpnvl->nvl_error == 0);
|
|
||||||
tmpnvp = nvlist_first_nvpair(tmpnvl);
|
|
||||||
if (tmpnvp != NULL) {
|
|
||||||
nvl = tmpnvl;
|
|
||||||
nvp = tmpnvp;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
} else if (nvpair_type(nvp) == NV_TYPE_NVLIST_ARRAY) {
|
|
||||||
nvlarray = nvpair_get_nvlist_array(nvp, &nitems);
|
|
||||||
PJDLOG_ASSERT(nitems > 0);
|
|
||||||
|
|
||||||
size += (nvpair_header_size() + 1) * nitems;
|
|
||||||
size += sizeof(struct nvlist_header) * nitems;
|
|
||||||
|
|
||||||
tmpnvl = NULL;
|
|
||||||
tmpnvp = NULL;
|
|
||||||
for (ii = 0; ii < nitems; ii++) {
|
|
||||||
PJDLOG_ASSERT(nvlarray[ii]->nvl_error == 0);
|
|
||||||
tmpnvp = nvlist_first_nvpair(nvlarray[ii]);
|
|
||||||
if (tmpnvp != NULL) {
|
|
||||||
tmpnvl = nvlarray[ii];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (tmpnvp != NULL) {
|
|
||||||
nvp = tmpnvp;
|
|
||||||
nvl = tmpnvl;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
size += nvpair_size(nvp);
|
|
||||||
}
|
|
||||||
|
|
||||||
while ((nvp = nvlist_next_nvpair(nvl, nvp)) == NULL) {
|
|
||||||
do {
|
|
||||||
cookie = NULL;
|
|
||||||
nvl = nvlist_get_pararr(nvl, &cookie);
|
|
||||||
if (nvl == NULL)
|
|
||||||
goto out;
|
|
||||||
if (nvlist_in_array(nvl) && cookie == NULL) {
|
|
||||||
nvp = nvlist_first_nvpair(nvl);
|
|
||||||
} else {
|
|
||||||
nvp = cookie;
|
|
||||||
}
|
|
||||||
} while (nvp == NULL);
|
|
||||||
if (nvlist_in_array(nvl) && cookie == NULL)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
out:
|
|
||||||
return (size);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef _KERNEL
|
#ifndef _KERNEL
|
||||||
@@ -1365,7 +1351,7 @@ nvlist_first_nvpair(const nvlist_t *nvl)
|
|||||||
}
|
}
|
||||||
|
|
||||||
nvpair_t *
|
nvpair_t *
|
||||||
nvlist_next_nvpair(const nvlist_t *nvl, const nvpair_t *nvp)
|
nvlist_next_nvpair(const nvlist_t *nvl __unused, const nvpair_t *nvp)
|
||||||
{
|
{
|
||||||
nvpair_t *retnvp;
|
nvpair_t *retnvp;
|
||||||
|
|
||||||
@@ -1381,7 +1367,7 @@ nvlist_next_nvpair(const nvlist_t *nvl, const nvpair_t *nvp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
nvpair_t *
|
nvpair_t *
|
||||||
nvlist_prev_nvpair(const nvlist_t *nvl, const nvpair_t *nvp)
|
nvlist_prev_nvpair(const nvlist_t *nvl __unused, const nvpair_t *nvp)
|
||||||
{
|
{
|
||||||
nvpair_t *retnvp;
|
nvpair_t *retnvp;
|
||||||
|
|
||||||
@@ -1474,12 +1460,9 @@ nvlist_add_nvpair(nvlist_t *nvl, const nvpair_t *nvp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
nvpair_insert(&nvl->nvl_head, newnvp, nvl);
|
nvpair_insert(&nvl->nvl_head, newnvp, nvl);
|
||||||
|
nvlist_update_size(nvl, newnvp, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
nvlist_add_stringv(nvlist_t *nvl, const char *name, const char *valuefmt,
|
|
||||||
va_list valueap);
|
|
||||||
|
|
||||||
void
|
void
|
||||||
nvlist_add_stringf(nvlist_t *nvl, const char *name, const char *valuefmt, ...)
|
nvlist_add_stringf(nvlist_t *nvl, const char *name, const char *valuefmt, ...)
|
||||||
{
|
{
|
||||||
@@ -1626,10 +1609,12 @@ nvlist_append_##type##_array(nvlist_t *nvl, const char *name, vtype value)\
|
|||||||
nvlist_add_##type##_array(nvl, name, &value, 1); \
|
nvlist_add_##type##_array(nvl, name, &value, 1); \
|
||||||
return; \
|
return; \
|
||||||
} \
|
} \
|
||||||
|
nvlist_update_size(nvl, nvp, -1); \
|
||||||
if (nvpair_append_##type##_array(nvp, value) == -1) { \
|
if (nvpair_append_##type##_array(nvp, value) == -1) { \
|
||||||
nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM); \
|
nvl->nvl_error = ERRNO_OR_DEFAULT(ENOMEM); \
|
||||||
ERRNO_SET(nvl->nvl_error); \
|
ERRNO_SET(nvl->nvl_error); \
|
||||||
} \
|
} \
|
||||||
|
nvlist_update_size(nvl, nvp, 1); \
|
||||||
}
|
}
|
||||||
|
|
||||||
NVLIST_APPEND_ARRAY(const bool, bool, BOOL)
|
NVLIST_APPEND_ARRAY(const bool, bool, BOOL)
|
||||||
@@ -1664,6 +1649,7 @@ nvlist_move_nvpair(nvlist_t *nvl, nvpair_t *nvp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
nvpair_insert(&nvl->nvl_head, nvp, nvl);
|
nvpair_insert(&nvl->nvl_head, nvp, nvl);
|
||||||
|
nvlist_update_size(nvl, nvp, 1);
|
||||||
return (true);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2015,6 +2001,7 @@ nvlist_remove_nvpair(nvlist_t *nvl, nvpair_t *nvp)
|
|||||||
PJDLOG_ASSERT(nvpair_nvlist(nvp) == nvl);
|
PJDLOG_ASSERT(nvpair_nvlist(nvp) == nvl);
|
||||||
|
|
||||||
nvpair_remove(&nvl->nvl_head, nvp, nvl);
|
nvpair_remove(&nvl->nvl_head, nvp, nvl);
|
||||||
|
nvlist_update_size(nvl, nvp, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021, Haiku, Inc. All rights reserved.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
#ifndef _FBSD_COMPAT_NET_DEBUGNET_H
|
||||||
|
#define _FBSD_COMPAT_NET_DEBUGNET_H
|
||||||
|
|
||||||
|
|
||||||
|
#define DEBUGNET_DEFINE(driver)
|
||||||
|
#define DEBUGNET_REINIT(ifp)
|
||||||
|
#define DEBUGNET_SET(ifp, driver)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* _FBSD_COMPAT_NET_DEBUGNET_H */
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2018, Haiku Inc. All rights reserved.
|
|
||||||
* Distributed under the terms of the MIT License.
|
|
||||||
*/
|
|
||||||
#ifndef _FBSD_COMPAT_NETINET_NETDUMP_H_
|
|
||||||
#define _FBSD_COMPAT_NETINET_NETDUMP_H_
|
|
||||||
|
|
||||||
|
|
||||||
#define NETDUMP_DEFINE(driver)
|
|
||||||
#define NETDUMP_REINIT(ifp)
|
|
||||||
#define NETDUMP_SET(ifp, driver)
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* _FBSD_COMPAT_NETINET_NETDUMP_H_ */
|
|
||||||
Reference in New Issue
Block a user