summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Mustacchi <rm@joyent.com>2019-02-16 01:16:34 +0000
committerRobert Mustacchi <rm@joyent.com>2019-02-26 01:00:22 +0000
commit1b1bcfc89ac08be2fc9fd5df44b98ec44e4d909b (patch)
tree4b0bae11edee330f057483869aa2f0f6a43b97e5
parenta23a88c8822def3a025fde613631b67191ea9ae0 (diff)
downloadillumos-joyent-1b1bcfc89ac08be2fc9fd5df44b98ec44e4d909b.tar.gz
OS-7592 viona doesn't zero ULP checksum for HCK_FULLCKSUM
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com> Reviewed by: Ryan Zezeski <rpz@joyent.com> Approved by: Patrick Mooney <patrick.mooney@joyent.com>
-rw-r--r--usr/src/uts/i86pc/io/viona/viona.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/usr/src/uts/i86pc/io/viona/viona.c b/usr/src/uts/i86pc/io/viona/viona.c
index 4ae0f7317f..74fd237fc9 100644
--- a/usr/src/uts/i86pc/io/viona/viona.c
+++ b/usr/src/uts/i86pc/io/viona/viona.c
@@ -2661,6 +2661,8 @@ viona_tx_csum(viona_vring_t *ring, const struct virtio_net_hdr *hdr,
if (ftype == ETHERTYPE_IP) {
if ((link->l_cap_csum & HCKSUM_INET_FULL_V4) != 0 &&
(ipproto == IPPROTO_TCP || ipproto == IPPROTO_UDP)) {
+ uint16_t *csump = (uint16_t *)(mp->b_rptr + csum_stuff);
+ *csump = 0;
flags |= HCK_FULLCKSUM;
mac_hcksum_set(mp, 0, 0, 0, 0, flags);
return (B_TRUE);
@@ -2673,6 +2675,8 @@ viona_tx_csum(viona_vring_t *ring, const struct virtio_net_hdr *hdr,
} else if (ftype == ETHERTYPE_IPV6) {
if ((link->l_cap_csum & HCKSUM_INET_FULL_V6) != 0 &&
(ipproto == IPPROTO_TCP || ipproto == IPPROTO_UDP)) {
+ uint16_t *csump = (uint16_t *)(mp->b_rptr + csum_stuff);
+ *csump = 0;
flags |= HCK_FULLCKSUM;
mac_hcksum_set(mp, 0, 0, 0, 0, flags);
return (B_TRUE);