diff options
author | Roamer <Roamer@Sun.COM> | 2010-01-11 21:01:02 -0800 |
---|---|---|
committer | Roamer <Roamer@Sun.COM> | 2010-01-11 21:01:02 -0800 |
commit | 1908fb0e6a43a40b10543e14d9fcf29c75f182d7 (patch) | |
tree | 3d9be545a0f6e67b1cb48ee6dae1c1e73c80e55b /usr/src/uts/common/os/strsubr.c | |
parent | 71b428bebcb3bd69d99d304083ab5f83cbd41bbe (diff) | |
download | illumos-gate-1908fb0e6a43a40b10543e14d9fcf29c75f182d7.tar.gz |
6910514 TCP might send down non-LSO packets with LSO flags
Diffstat (limited to 'usr/src/uts/common/os/strsubr.c')
-rw-r--r-- | usr/src/uts/common/os/strsubr.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/usr/src/uts/common/os/strsubr.c b/usr/src/uts/common/os/strsubr.c index 3f64f77cff..c3d928c586 100644 --- a/usr/src/uts/common/os/strsubr.c +++ b/usr/src/uts/common/os/strsubr.c @@ -23,7 +23,7 @@ /* - * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -8516,6 +8516,7 @@ void lso_info_set(mblk_t *mp, uint32_t mss, uint32_t flags) { ASSERT(DB_TYPE(mp) == M_DATA); + ASSERT((flags & ~HW_LSO_FLAGS) == 0); /* Set the flags */ DB_LSOFLAGS(mp) |= flags; @@ -8523,12 +8524,22 @@ lso_info_set(mblk_t *mp, uint32_t mss, uint32_t flags) } void +lso_info_cleanup(mblk_t *mp) +{ + ASSERT(DB_TYPE(mp) == M_DATA); + + /* Clear the flags */ + DB_LSOFLAGS(mp) &= ~HW_LSO_FLAGS; + DB_LSOMSS(mp) = 0; +} + +void lso_info_get(mblk_t *mp, uint32_t *mss, uint32_t *flags) { ASSERT(DB_TYPE(mp) == M_DATA); if (flags != NULL) { - *flags = DB_CKSUMFLAGS(mp) & HW_LSO; + *flags = DB_CKSUMFLAGS(mp) & HW_LSO_FLAGS; if ((*flags != 0) && (mss != NULL)) *mss = (uint32_t)DB_LSOMSS(mp); } |