From 9dc0f5536a83ce4ef09e0009beec208ac83f0a75 Mon Sep 17 00:00:00 2001 From: Robert Mustacchi Date: Wed, 28 Mar 2018 23:20:07 +0000 Subject: OS-XXXX wip vxlan lso --- usr/src/uts/common/io/dld/dld_proto.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'usr/src/uts/common/io/dld') diff --git a/usr/src/uts/common/io/dld/dld_proto.c b/usr/src/uts/common/io/dld/dld_proto.c index d6f57091b4..56de77bc60 100644 --- a/usr/src/uts/common/io/dld/dld_proto.c +++ b/usr/src/uts/common/io/dld/dld_proto.c @@ -1493,6 +1493,17 @@ dld_capab_poll(dld_str_t *dsp, void *data, uint_t flags) return (ENOTSUP); } +static void +dld_capab_lso_fill_vxlan(mac_capab_lso_t *mac, dld_capab_lso_t *lso) +{ + lso->lso_vxlan_cksum = mac->lso_vxlan_tcp.lso_oudp_cksum; + + if (mac->lso_vxlan_tcp.lso_tcp_max > 0) { + lso->lso_flags |= DLD_LSO_VXLAN_TCP_IPV4 | DLD_LSO_VXLAN_TCP_IPV6; + lso->lso_vxlan_tcp_max = mac->lso_vxlan_tcp.lso_tcp_max; + } +} + static int dld_capab_lso(dld_str_t *dsp, void *data, uint_t flags) { @@ -1514,14 +1525,9 @@ dld_capab_lso(dld_str_t *dsp, void *data, uint_t flags) /* translate the flag for mac clients */ if ((mac_lso.lso_flags & LSO_TX_BASIC_TCP_IPV4) != 0) lso->lso_flags |= DLD_LSO_BASIC_TCP_IPV4; - /* XXX We should probably not rely on equality */ - if ((mac_lso.lso_flags & LSO_TX_VXLAN_TCP) != 0 && - mac_lso.lso_vxlan_tcp.lso_tcpv4_max == lso->lso_max) { - lso->lso_flags |= DLD_LSO_VXLAN_TCP_IPV4; - } - if ((mac_lso.lso_flags & LSO_TX_VXLAN_TCP) != 0 && - mac_lso.lso_vxlan_tcp.lso_tcpv6_max == lso->lso_max) { - lso->lso_flags |= DLD_LSO_VXLAN_TCP_IPV6; + + if ((mac_lso.lso_flags & LSO_TX_VXLAN_TCP) != 0) { + dld_capab_lso_fill_vxlan(&mac_lso, lso); } dsp->ds_lso = B_TRUE; dsp->ds_lso_max = lso->lso_max; -- cgit v1.2.3