Date: Fri, 30 Aug 2013 21:31:45 -0400 From: J David <j.david.lists@gmail.com> To: freebsd-pf@freebsd.org Subject: pf unconditionally disables TCP checksum offloading Message-ID: <CABXB=RQPqAQF3zLBdfoP4P5MVw97sbWdgag0nv8h=SGFFTY7SQ@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hello, While testing 9.2, we discovered that merely having pf enabled (no rules of any kind) was sufficient to completely, unconditionally disables hardware checksum offloading. If pf is disabled ("pfctl -d") then checksum offloading works fine. If pf is merely enabled with no rules ("pfctl -e -F all"), checksum offloading no longer works. The culprit appears to be this code in pf_check_out: if ((*m)->m_pkthdr.csum_flags & CSUM_DELAY_DATA) { in_delayed_cksum(*m); (*m)->m_pkthdr.csum_flags &= ~CSUM_DELAY_DATA; } CSUM_DELAY_DATA is defined as (CSUM_TCP | CSUM_UDP) in sys/mbuf.h, so this effectively clears (*m)->m_pkthdr.csum_flags and never puts it back. Is this behavior intentional? Thanks!
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CABXB=RQPqAQF3zLBdfoP4P5MVw97sbWdgag0nv8h=SGFFTY7SQ>