diff options
| author | Pyun YongHyeon <yongari@FreeBSD.org> | 2010-04-19 22:10:40 +0000 |
|---|---|---|
| committer | Pyun YongHyeon <yongari@FreeBSD.org> | 2010-04-19 22:10:40 +0000 |
| commit | 6da6d0a9e3f608feb5ca67cf633670359157549b (patch) | |
| tree | 4e38df74b4ad94becb3a95f35a704d97f0681706 /sys/dev/ale | |
| parent | 696dd8f41c7b9f593573e772b3a7b693b21c7cec (diff) | |
Notes
Diffstat (limited to 'sys/dev/ale')
| -rw-r--r-- | sys/dev/ale/if_ale.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/sys/dev/ale/if_ale.c b/sys/dev/ale/if_ale.c index 76f1b74f2afa..b3e71872d5ba 100644 --- a/sys/dev/ale/if_ale.c +++ b/sys/dev/ale/if_ale.c @@ -1737,8 +1737,14 @@ ale_encap(struct ale_softc *sc, struct mbuf **m_head) bus_dmamap_sync(sc->ale_cdata.ale_tx_tag, map, BUS_DMASYNC_PREWRITE); m = *m_head; - /* Configure Tx checksum offload. */ - if ((m->m_pkthdr.csum_flags & ALE_CSUM_FEATURES) != 0) { + if ((m->m_pkthdr.csum_flags & CSUM_TSO) != 0) { + /* Request TSO and set MSS. */ + cflags |= ALE_TD_TSO; + cflags |= ((uint32_t)m->m_pkthdr.tso_segsz << ALE_TD_MSS_SHIFT); + /* Set IP/TCP header size. */ + cflags |= ip->ip_hl << ALE_TD_IPHDR_LEN_SHIFT; + cflags |= tcp->th_off << ALE_TD_TCPHDR_LEN_SHIFT; + } else if ((m->m_pkthdr.csum_flags & ALE_CSUM_FEATURES) != 0) { /* * AR81xx supports Tx custom checksum offload feature * that offloads single 16bit checksum computation. @@ -1769,15 +1775,6 @@ ale_encap(struct ale_softc *sc, struct mbuf **m_head) ALE_TD_CSUM_XSUMOFFSET_SHIFT); } - if ((m->m_pkthdr.csum_flags & CSUM_TSO) != 0) { - /* Request TSO and set MSS. */ - cflags |= ALE_TD_TSO; - cflags |= ((uint32_t)m->m_pkthdr.tso_segsz << ALE_TD_MSS_SHIFT); - /* Set IP/TCP header size. */ - cflags |= ip->ip_hl << ALE_TD_IPHDR_LEN_SHIFT; - cflags |= tcp->th_off << ALE_TD_TCPHDR_LEN_SHIFT; - } - /* Configure VLAN hardware tag insertion. */ if ((m->m_flags & M_VLANTAG) != 0) { vtag = ALE_TX_VLAN_TAG(m->m_pkthdr.ether_vtag); |
