Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 31 Oct 2012 23:16:43 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        Pyun YongHyeon <yongari@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r242425 - head/sys/dev/ti
Message-ID:  <CAJ-VmonVTzDz64YTPn3X5Fq-EQ_B4fb2=xVO-gxgJpQyjJHGXw@mail.gmail.com>
In-Reply-To: <201211010539.qA15dLjs026526@svn.freebsd.org>
References:  <201211010539.qA15dLjs026526@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
so where'd this happen? interleaved TX nowdays via if_transmit() ?



Adrian

On 31 October 2012 22:39, Pyun YongHyeon <yongari@freebsd.org> wrote:
> Author: yongari
> Date: Thu Nov  1 05:39:21 2012
> New Revision: 242425
> URL: http://svn.freebsd.org/changeset/base/242425
>
> Log:
>   Remove TCP/UDP checksum offloading feature for IP fragmented
>   datagrams.  Traditionally upper stack fragmented packets without
>   computing TCP/UDP checksum and these datagrams were passed to
>   driver.  But there are chances that other packets slip into the
>   interface queue in SMP world. If this happens firmware running on
>   MIPS 4000 processor in the controller would see mixed packets and
>   it shall send out corrupted packets.
>   While I'm here simplify checksum offloading setup.
>
>   MFC After:    1 week
>
> Modified:
>   head/sys/dev/ti/if_ti.c
>
> Modified: head/sys/dev/ti/if_ti.c
> ==============================================================================
> --- head/sys/dev/ti/if_ti.c     Thu Nov  1 04:07:08 2012        (r242424)
> +++ head/sys/dev/ti/if_ti.c     Thu Nov  1 05:39:21 2012        (r242425)
> @@ -127,7 +127,7 @@ __FBSDID("$FreeBSD$");
>
>  #include <sys/sysctl.h>
>
> -#define TI_CSUM_FEATURES       (CSUM_IP | CSUM_TCP | CSUM_UDP | CSUM_IP_FRAGS)
> +#define TI_CSUM_FEATURES       (CSUM_IP | CSUM_TCP | CSUM_UDP)
>  /*
>   * We can only turn on header splitting if we're using extended receive
>   * BDs.
> @@ -3082,16 +3082,10 @@ ti_encap(struct ti_softc *sc, struct mbu
>
>         m = *m_head;
>         csum_flags = 0;
> -       if (m->m_pkthdr.csum_flags) {
> -               if (m->m_pkthdr.csum_flags & CSUM_IP)
> -                       csum_flags |= TI_BDFLAG_IP_CKSUM;
> -               if (m->m_pkthdr.csum_flags & (CSUM_TCP | CSUM_UDP))
> -                       csum_flags |= TI_BDFLAG_TCP_UDP_CKSUM;
> -               if (m->m_flags & M_LASTFRAG)
> -                       csum_flags |= TI_BDFLAG_IP_FRAG_END;
> -               else if (m->m_flags & M_FRAG)
> -                       csum_flags |= TI_BDFLAG_IP_FRAG;
> -       }
> +       if (m->m_pkthdr.csum_flags & CSUM_IP)
> +               csum_flags |= TI_BDFLAG_IP_CKSUM;
> +       if (m->m_pkthdr.csum_flags & (CSUM_TCP | CSUM_UDP))
> +               csum_flags |= TI_BDFLAG_TCP_UDP_CKSUM;
>
>         frag = sc->ti_tx_saved_prodidx;
>         for (i = 0; i < nseg; i++) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmonVTzDz64YTPn3X5Fq-EQ_B4fb2=xVO-gxgJpQyjJHGXw>