aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/e1000/if_igb_iov.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/e1000/if_igb_iov.h')
-rw-r--r--sys/dev/e1000/if_igb_iov.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/sys/dev/e1000/if_igb_iov.h b/sys/dev/e1000/if_igb_iov.h
new file mode 100644
index 000000000000..390e63175c7a
--- /dev/null
+++ b/sys/dev/e1000/if_igb_iov.h
@@ -0,0 +1,60 @@
+/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 2010-2016, Intel Corporation
+ * Copyright (c) 2026 Kevin Bowling <kbowling@FreeBSD.org>
+ */
+
+#ifndef _IF_IGB_IOV_H_
+#define _IF_IGB_IOV_H_
+
+#define IGB_IOV_MAX_FRAME_SIZE 0x2600
+
+#ifdef PCI_IOV
+
+#include <sys/nv.h>
+#include <sys/iov_schema.h>
+#include <dev/pci/pci_iov.h>
+
+int igb_iov_attach(struct e1000_softc *);
+void igb_iov_detach(struct e1000_softc *);
+bool igb_iov_supported(const struct e1000_softc *);
+bool igb_iov_enabled(const struct e1000_softc *);
+int igb_iov_validate(struct e1000_softc *, u16);
+int igb_if_iov_init(if_ctx_t, u16, const nvlist_t *);
+void igb_if_iov_uninit(if_ctx_t);
+int igb_if_iov_vf_add(if_ctx_t, u16, const nvlist_t *);
+int igb_if_vf_status(if_ctx_t, nvlist_t *);
+void igb_iov_initialize(struct e1000_softc *);
+void igb_iov_handle_mbx(struct e1000_softc *);
+void igb_iov_handle_mdd(struct e1000_softc *);
+void igb_iov_mdd_event(struct e1000_softc *);
+void igb_iov_ping_all_vfs(struct e1000_softc *);
+void igb_iov_reset_prepare(struct e1000_softc *);
+u32 igb_iov_intr_mask(const struct e1000_softc *);
+void igb_iov_intr_drain_stale(struct e1000_softc *);
+void igb_iov_rebuild_mta(struct e1000_softc *);
+void igb_iov_rebuild_vlan(struct e1000_softc *);
+void igb_iov_update_pf_vmolr(struct e1000_softc *);
+
+#else
+
+#define igb_iov_attach(_sc) ((void)(_sc), 0)
+#define igb_iov_detach(_sc) ((void)(_sc))
+#define igb_iov_supported(_sc) (false)
+#define igb_iov_enabled(_sc) (false)
+#define igb_iov_initialize(_sc)
+#define igb_iov_handle_mbx(_sc)
+#define igb_iov_handle_mdd(_sc)
+#define igb_iov_mdd_event(_sc)
+#define igb_iov_ping_all_vfs(_sc)
+#define igb_iov_reset_prepare(_sc)
+#define igb_iov_intr_mask(_sc) (0)
+#define igb_iov_intr_drain_stale(_sc) ((void)(_sc))
+#define igb_iov_rebuild_mta(_sc)
+#define igb_iov_rebuild_vlan(_sc)
+#define igb_iov_update_pf_vmolr(_sc)
+
+#endif
+
+#endif /* _IF_IGB_IOV_H_ */