summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/io/mac/mac_client.c
diff options
context:
space:
mode:
authorJohn Levon <john.levon@joyent.com>2020-05-26 13:57:13 +0000
committerJohn Levon <john.levon@joyent.com>2020-05-26 13:57:13 +0000
commit5b2acc0949194447bba6e45a0fa44d0b5f42f208 (patch)
tree7ea9eb87bc68fee386dd39035ce715e87a0e673c /usr/src/uts/common/io/mac/mac_client.c
parent8ca018083101bf1cb175869679bc123187fb1bab (diff)
parent2a1277d3064386cd5c4e372301007aa330bf1d5e (diff)
downloadillumos-joyent-gcc9.tar.gz
mergegcc9
Diffstat (limited to 'usr/src/uts/common/io/mac/mac_client.c')
-rw-r--r--usr/src/uts/common/io/mac/mac_client.c27
1 files changed, 21 insertions, 6 deletions
diff --git a/usr/src/uts/common/io/mac/mac_client.c b/usr/src/uts/common/io/mac/mac_client.c
index dcfb4803d6..b166e7987a 100644
--- a/usr/src/uts/common/io/mac/mac_client.c
+++ b/usr/src/uts/common/io/mac/mac_client.c
@@ -4243,7 +4243,7 @@ mac_promisc_dispatch(mac_impl_t *mip, mblk_t *mp_chain,
mpip->mpi_type == MAC_CLIENT_PROMISC_ALL ||
is_mcast) {
mac_promisc_dispatch_one(mpip, mp, is_sender,
- local);
+ local);
}
}
}
@@ -4274,7 +4274,7 @@ mac_promisc_client_dispatch(mac_client_impl_t *mcip, mblk_t *mp_chain)
if (mpip->mpi_type == MAC_CLIENT_PROMISC_FILTERED &&
!is_mcast) {
mac_promisc_dispatch_one(mpip, mp, B_FALSE,
- B_FALSE);
+ B_FALSE);
}
}
}
@@ -4352,12 +4352,27 @@ i_mac_capab_get(mac_handle_t mh, mac_capab_t cap, void *cap_data)
{
mac_impl_t *mip = (mac_impl_t *)mh;
- if (mip->mi_bridge_link != NULL && cap == MAC_CAPAB_NO_ZCOPY)
+ if (mip->mi_bridge_link != NULL && cap == MAC_CAPAB_NO_ZCOPY) {
return (B_TRUE);
- else if (mip->mi_callbacks->mc_callbacks & MC_GETCAPAB)
- return (mip->mi_getcapab(mip->mi_driver, cap, cap_data));
- else
+ } else if (mip->mi_callbacks->mc_callbacks & MC_GETCAPAB) {
+ boolean_t res;
+
+ res = mip->mi_getcapab(mip->mi_driver, cap, cap_data);
+ /*
+ * Until we have suppport for TSOv6 emulation in the MAC
+ * loopback path, do not allow the TSOv6 capability to be
+ * advertised to consumers.
+ */
+ if (res && cap == MAC_CAPAB_LSO) {
+ mac_capab_lso_t *cap_lso = cap_data;
+
+ cap_lso->lso_flags &= ~LSO_TX_BASIC_TCP_IPV6;
+ cap_lso->lso_basic_tcp_ipv6.lso_max = 0;
+ }
+ return (res);
+ } else {
return (B_FALSE);
+ }
}
/*