diff options
Diffstat (limited to 'usr/src/uts/common/io/overlay')
-rw-r--r-- | usr/src/uts/common/io/overlay/overlay.c | 11 | ||||
-rw-r--r-- | usr/src/uts/common/io/overlay/plugins/overlay_vxlan.c | 9 |
2 files changed, 12 insertions, 8 deletions
diff --git a/usr/src/uts/common/io/overlay/overlay.c b/usr/src/uts/common/io/overlay/overlay.c index 7aba941fd6..73c3c1ebb7 100644 --- a/usr/src/uts/common/io/overlay/overlay.c +++ b/usr/src/uts/common/io/overlay/overlay.c @@ -1066,6 +1066,16 @@ overlay_tx_checksum_shift(mblk_t *mp, uint16_t flags) } } +static inline void +overlay_tx_lso_copy(const mblk_t *src, mblk_t *dst) +{ + uint16_t flags = DB_LSOFLAGS(src) & HW_LSO_FLAGS; + if (flags == 0) + return; + DB_LSOFLAGS(dst) |= flags; + DB_LSOMSS(dst) = DB_LSOMSS(src); +} + mblk_t * overlay_m_tx(void *arg, mblk_t *mp_chain) { @@ -1123,6 +1133,7 @@ overlay_m_tx(void *arg, mblk_t *mp_chain) */ overlay_tx_checksum_shift(ep, DB_CKSUMFLAGS(mp)); if (ep != mp) { + overlay_tx_lso_copy(mp, ep); ep->b_cont = mp; } diff --git a/usr/src/uts/common/io/overlay/plugins/overlay_vxlan.c b/usr/src/uts/common/io/overlay/plugins/overlay_vxlan.c index 60659ade8c..30568873a5 100644 --- a/usr/src/uts/common/io/overlay/plugins/overlay_vxlan.c +++ b/usr/src/uts/common/io/overlay/plugins/overlay_vxlan.c @@ -385,10 +385,6 @@ vxlan_o_mac_capab(void *arg, mac_capab_t capab, void *cap_data, ksocket_t ksock) switch (capab) { case MAC_CAPAB_HCKSUM: - /* - * XXX Almost certainly some things are going to need the right - * psuedo-header on transmit. - */ if ((vxl->vxl_utunnel.uto_cksum_flags & (HCKSUM_VXLAN_FULL | HCKSUM_VXLAN_PSEUDO | HCKSUM_VXLAN_PSEUDO_NO_OL4)) != 0) { uint32_t *hck = cap_data; @@ -404,18 +400,15 @@ vxlan_o_mac_capab(void *arg, mac_capab_t capab, void *cap_data, ksocket_t ksock) hcapab = B_TRUE; } break; -#if 0 case MAC_CAPAB_LSO: if ((vxl->vxl_utunnel.uto_lso_flags & DLD_LSO_VXLAN_TCP_IPV4) != 0) { mac_capab_lso_t *lso = cap_data; lso->lso_flags = LSO_TX_BASIC_TCP_IPV4; - /* XXX Check value */ lso->lso_basic_tcp_ipv4.lso_max = - vxl->vxl_utunnel.uto_lso_max - 100; + vxl->vxl_utunnel.uto_lso_tcp_max - 1024; hcapab = B_TRUE; } break; -#endif default: hcapab = B_FALSE; break; |