summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/sys')
-rw-r--r--usr/src/uts/common/sys/fm/io/ddi.h11
-rw-r--r--usr/src/uts/common/sys/fs/namenode.h8
-rw-r--r--usr/src/uts/common/sys/mac_client_impl.h2
-rw-r--r--usr/src/uts/common/sys/mac_impl.h48
-rw-r--r--usr/src/uts/common/sys/mac_provider.h12
-rw-r--r--usr/src/uts/common/sys/strsubr.h4
6 files changed, 76 insertions, 9 deletions
diff --git a/usr/src/uts/common/sys/fm/io/ddi.h b/usr/src/uts/common/sys/fm/io/ddi.h
index 75afff5c38..d8c772cdaf 100644
--- a/usr/src/uts/common/sys/fm/io/ddi.h
+++ b/usr/src/uts/common/sys/fm/io/ddi.h
@@ -66,6 +66,17 @@ extern "C" {
#define DVR_STACK_DEPTH "dvr-stack-depth"
#define DVR_ERR_SPECIFIC "dvr-error-specific"
+/* Generic NIC driver ereports. */
+#define DDI_FM_NIC "nic"
+#define DDI_FM_TXR_ERROR "txr-err"
+
+/* Valid values of the "error" field in txr-err ereports */
+#define DDI_FM_TXR_ERROR_WHITELIST "whitelist"
+#define DDI_FM_TXR_ERROR_NOTSUPP "notsupp"
+#define DDI_FM_TXR_ERROR_OVERTEMP "overtemp"
+#define DDI_FM_TXR_ERROR_HWFAIL "hwfail"
+#define DDI_FM_TXR_ERROR_UNKNOWN "unknown"
+
#ifdef __cplusplus
}
#endif
diff --git a/usr/src/uts/common/sys/fs/namenode.h b/usr/src/uts/common/sys/fs/namenode.h
index 9ebf2cf1ca..24d276b6c3 100644
--- a/usr/src/uts/common/sys/fs/namenode.h
+++ b/usr/src/uts/common/sys/fs/namenode.h
@@ -26,6 +26,10 @@
* Use is subject to license terms.
*/
+/*
+ * Copyright 2020 OmniOS Community Edition (OmniOSce) Association.
+ */
+
#ifndef _SYS_FS_NAMENODE_H
#define _SYS_FS_NAMENODE_H
@@ -93,6 +97,10 @@ extern struct vnodeops *nm_vnodeops;
extern const struct fs_operation_def nm_vnodeops_template[];
extern kmutex_t ntable_lock;
+typedef int nm_walk_mounts_f(const struct namenode *, cred_t *, void *);
+extern int nm_walk_mounts(const vnode_t *, nm_walk_mounts_f *, cred_t *,
+ void *);
+
#endif /* _KERNEL */
#ifdef __cplusplus
diff --git a/usr/src/uts/common/sys/mac_client_impl.h b/usr/src/uts/common/sys/mac_client_impl.h
index 21641b884d..0f8be50fde 100644
--- a/usr/src/uts/common/sys/mac_client_impl.h
+++ b/usr/src/uts/common/sys/mac_client_impl.h
@@ -230,7 +230,7 @@ extern int mac_tx_percpu_cnt;
&(mcip)->mci_flent->fe_resource_props)
#define MCIP_EFFECTIVE_PROPS(mcip) \
- (mcip->mci_flent == NULL ? NULL : \
+ (mcip->mci_flent == NULL ? NULL : \
&(mcip)->mci_flent->fe_effective_props)
#define MCIP_RESOURCE_PROPS_MASK(mcip) \
diff --git a/usr/src/uts/common/sys/mac_impl.h b/usr/src/uts/common/sys/mac_impl.h
index 21f2c10a8e..3c103c073a 100644
--- a/usr/src/uts/common/sys/mac_impl.h
+++ b/usr/src/uts/common/sys/mac_impl.h
@@ -290,6 +290,54 @@ struct mac_group_s {
#define GROUP_INTR_ENABLE_FUNC(g) (g)->mrg_info.mgi_intr.mi_enable
#define GROUP_INTR_DISABLE_FUNC(g) (g)->mrg_info.mgi_intr.mi_disable
+#define MAC_RING_TX(mhp, rh, mp, rest) { \
+ mac_ring_handle_t mrh = rh; \
+ mac_impl_t *mimpl = (mac_impl_t *)mhp; \
+ /* \
+ * Send packets through a selected tx ring, or through the \
+ * default handler if there is no selected ring. \
+ */ \
+ if (mrh == NULL) \
+ mrh = mimpl->mi_default_tx_ring; \
+ if (mrh == NULL) { \
+ rest = mimpl->mi_tx(mimpl->mi_driver, mp); \
+ } else { \
+ rest = mac_hwring_tx(mrh, mp); \
+ } \
+}
+
+/*
+ * This is the final stop before reaching the underlying driver
+ * or aggregation, so this is where the bridging hook is implemented.
+ * Packets that are bridged will return through mac_bridge_tx(), with
+ * rh nulled out if the bridge chooses to send output on a different
+ * link due to forwarding.
+ */
+#define MAC_TX(mip, rh, mp, src_mcip) { \
+ mac_ring_handle_t rhandle = (rh); \
+ /* \
+ * If there is a bound Hybrid I/O share, send packets through \
+ * the default tx ring. (When there's a bound Hybrid I/O share, \
+ * the tx rings of this client are mapped in the guest domain \
+ * and not accessible from here.) \
+ */ \
+ _NOTE(CONSTANTCONDITION) \
+ if ((src_mcip)->mci_state_flags & MCIS_SHARE_BOUND) \
+ rhandle = (mip)->mi_default_tx_ring; \
+ if (mip->mi_promisc_list != NULL) \
+ mac_promisc_dispatch(mip, mp, src_mcip); \
+ /* \
+ * Grab the proper transmit pointer and handle. Special \
+ * optimization: we can test mi_bridge_link itself atomically, \
+ * and if that indicates no bridge send packets through tx ring.\
+ */ \
+ if (mip->mi_bridge_link == NULL) { \
+ MAC_RING_TX(mip, rhandle, mp, mp); \
+ } else { \
+ mp = mac_bridge_tx(mip, rhandle, mp); \
+ } \
+}
+
/* mci_tx_flag */
#define MCI_TX_QUIESCE 0x1
diff --git a/usr/src/uts/common/sys/mac_provider.h b/usr/src/uts/common/sys/mac_provider.h
index 2dea3a4758..fc3b3892bd 100644
--- a/usr/src/uts/common/sys/mac_provider.h
+++ b/usr/src/uts/common/sys/mac_provider.h
@@ -567,14 +567,14 @@ extern void mac_free(mac_register_t *);
extern int mac_register(mac_register_t *, mac_handle_t *);
extern int mac_disable_nowait(mac_handle_t);
extern int mac_disable(mac_handle_t);
-extern int mac_unregister(mac_handle_t);
-extern void mac_rx(mac_handle_t, mac_resource_handle_t,
+extern int mac_unregister(mac_handle_t);
+extern void mac_rx(mac_handle_t, mac_resource_handle_t,
mblk_t *);
-extern void mac_rx_ring(mac_handle_t, mac_ring_handle_t,
+extern void mac_rx_ring(mac_handle_t, mac_ring_handle_t,
mblk_t *, uint64_t);
-extern void mac_link_update(mac_handle_t, link_state_t);
-extern void mac_link_redo(mac_handle_t, link_state_t);
-extern void mac_unicst_update(mac_handle_t,
+extern void mac_link_update(mac_handle_t, link_state_t);
+extern void mac_link_redo(mac_handle_t, link_state_t);
+extern void mac_unicst_update(mac_handle_t,
const uint8_t *);
extern void mac_dst_update(mac_handle_t, const uint8_t *);
extern void mac_tx_update(mac_handle_t);
diff --git a/usr/src/uts/common/sys/strsubr.h b/usr/src/uts/common/sys/strsubr.h
index 65bdfb2e17..14e17c1c0c 100644
--- a/usr/src/uts/common/sys/strsubr.h
+++ b/usr/src/uts/common/sys/strsubr.h
@@ -29,7 +29,7 @@
*/
/*
- * Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
+ * Copyright 2020 OmniOS Community Edition (OmniOSce) Association.
*/
#ifndef _SYS_STRSUBR_H
@@ -289,7 +289,7 @@ typedef struct stdata {
#define SNDMREAD 0x00008000 /* used for read notification */
#define OLDNDELAY 0x00010000 /* use old TTY semantics for */
/* NDELAY reads and writes */
- /* 0x00020000 unused */
+#define STRXPG4TTY 0x00020000 /* Use XPG4 TTY semantics */
/* 0x00040000 unused */
#define STRTOSTOP 0x00080000 /* block background writes */
#define STRCMDWAIT 0x00100000 /* someone is doing an _I_CMD */