summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpvalchev <pvalchev@openbsd.org>2005-04-30 08:22:23 +0000
committerpvalchev <pvalchev@openbsd.org>2005-04-30 08:22:23 +0000
commit4ea07787ee22b55821f11a31a6fc64e0d7fc1537 (patch)
tree3b218ee5705c5b7e47d963f03b3c1a8621874e13
parentmatch disklabel change (diff)
downloadwireguard-openbsd-4ea07787ee22b55821f11a31a6fc64e0d7fc1537.tar.xz
wireguard-openbsd-4ea07787ee22b55821f11a31a6fc64e0d7fc1537.zip
From NetBSD, pt to by brad (might fix csum problems, else they may
need to be disabled after more testing): re_encap: set RTK_TDESC_CMD_IPCSUM if any of checksum offloading is requested. otherwise, RTK_TDESC_CMD_TCPCSUM/UDPCSUM don't seem to make any effect.
-rw-r--r--sys/dev/ic/re.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/sys/dev/ic/re.c b/sys/dev/ic/re.c
index a10099b356e..109f4184269 100644
--- a/sys/dev/ic/re.c
+++ b/sys/dev/ic/re.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: re.c,v 1.9 2005/04/25 17:55:51 brad Exp $ */
+/* $OpenBSD: re.c,v 1.10 2005/04/30 08:22:23 pvalchev Exp $ */
/* $FreeBSD: if_re.c,v 1.31 2004/09/04 07:54:05 ru Exp $ */
/*
* Copyright (c) 1997, 1998-2003
@@ -1450,14 +1450,22 @@ re_encap(sc, m_head, idx)
* chip. I'm not sure if this is a requirement or a bug.)
*/
+ /*
+ * Set RL_TDESC_CMD_IPCSUM if any checksum offloading
+ * is requested. Otherwise, RL_TDESC_CMD_TCPCSUM/
+ * RL_TDESC_CMD_UDPCSUM does not take affect.
+ */
+
rl_flags = 0;
- if (m_head->m_pkthdr.csum_flags & M_IPV4_CSUM_OUT)
+ if ((m_head->m_pkthdr.csum_flags &
+ (M_IPV4_CSUM_OUT|M_TCPV4_CSUM_OUT|M_UDPV4_CSUM_OUT)) != 0) {
rl_flags |= RL_TDESC_CMD_IPCSUM;
- if (m_head->m_pkthdr.csum_flags & M_TCPV4_CSUM_OUT)
- rl_flags |= RL_TDESC_CMD_TCPCSUM;
- if (m_head->m_pkthdr.csum_flags & M_UDPV4_CSUM_OUT)
- rl_flags |= RL_TDESC_CMD_UDPCSUM;
+ if (m_head->m_pkthdr.csum_flags & M_TCPV4_CSUM_OUT)
+ rl_flags |= RL_TDESC_CMD_TCPCSUM;
+ if (m_head->m_pkthdr.csum_flags & M_UDPV4_CSUM_OUT)
+ rl_flags |= RL_TDESC_CMD_UDPCSUM;
+ }
map = sc->rl_ldata.rl_tx_dmamap[*idx];
error = bus_dmamap_load_mbuf(sc->sc_dmat, map,