Deleted Added
full compact
if_nge.c (162321) if_nge.c (162375)
1/*-
2 * Copyright (c) 2001 Wind River Systems
3 * Copyright (c) 1997, 1998, 1999, 2000, 2001
4 * Bill Paul <wpaul@bsdi.com>. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 18 unchanged lines hidden (view full) ---

27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31 * THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 2001 Wind River Systems
3 * Copyright (c) 1997, 1998, 1999, 2000, 2001
4 * Bill Paul <wpaul@bsdi.com>. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

--- 18 unchanged lines hidden (view full) ---

27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31 * THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34#include <sys/cdefs.h>
35__FBSDID("$FreeBSD: head/sys/dev/nge/if_nge.c 162321 2006-09-15 15:16:12Z glebius $");
35__FBSDID("$FreeBSD: head/sys/dev/nge/if_nge.c 162375 2006-09-17 13:33:30Z andre $");
36
37/*
38 * National Semiconductor DP83820/DP83821 gigabit ethernet driver
39 * for FreeBSD. Datasheets are available from:
40 *
41 * http://www.national.com/ds/DP/DP83820.pdf
42 * http://www.national.com/ds/DP/DP83821.pdf
43 *

--- 1178 unchanged lines hidden (view full) ---

1222 m->m_pkthdr.csum_data = 0xffff;
1223 }
1224
1225 /*
1226 * If we received a packet with a vlan tag, pass it
1227 * to vlan_input() instead of ether_input().
1228 */
1229 if (extsts & NGE_RXEXTSTS_VLANPKT) {
36
37/*
38 * National Semiconductor DP83820/DP83821 gigabit ethernet driver
39 * for FreeBSD. Datasheets are available from:
40 *
41 * http://www.national.com/ds/DP/DP83820.pdf
42 * http://www.national.com/ds/DP/DP83821.pdf
43 *

--- 1178 unchanged lines hidden (view full) ---

1222 m->m_pkthdr.csum_data = 0xffff;
1223 }
1224
1225 /*
1226 * If we received a packet with a vlan tag, pass it
1227 * to vlan_input() instead of ether_input().
1228 */
1229 if (extsts & NGE_RXEXTSTS_VLANPKT) {
1230 VLAN_INPUT_TAG(ifp, m,
1231 ntohs(extsts & NGE_RXEXTSTS_VTCI));
1232 if (m == NULL)
1233 continue;
1230 m->m_pkthdr.ether_vtag =
1231 ntohs(extsts & NGE_RXEXTSTS_VTCI);
1232 m->m_flags |= M_VLANTAG;
1234 }
1235 NGE_UNLOCK(sc);
1236 (*ifp->if_input)(ifp, m);
1237 NGE_LOCK(sc);
1238 }
1239
1240 sc->nge_cdata.nge_rx_prod = i;
1241

--- 260 unchanged lines hidden (view full) ---

1502nge_encap(sc, m_head, txidx)
1503 struct nge_softc *sc;
1504 struct mbuf *m_head;
1505 u_int32_t *txidx;
1506{
1507 struct nge_desc *f = NULL;
1508 struct mbuf *m;
1509 int frag, cur, cnt = 0;
1233 }
1234 NGE_UNLOCK(sc);
1235 (*ifp->if_input)(ifp, m);
1236 NGE_LOCK(sc);
1237 }
1238
1239 sc->nge_cdata.nge_rx_prod = i;
1240

--- 260 unchanged lines hidden (view full) ---

1501nge_encap(sc, m_head, txidx)
1502 struct nge_softc *sc;
1503 struct mbuf *m_head;
1504 u_int32_t *txidx;
1505{
1506 struct nge_desc *f = NULL;
1507 struct mbuf *m;
1508 int frag, cur, cnt = 0;
1510 struct m_tag *mtag;
1511
1512 /*
1513 * Start packing the mbufs in this chain into
1514 * the fragment pointers. Stop when we run out
1515 * of fragments or hit the end of the mbuf chain.
1516 */
1517 m = m_head;
1518 cur = frag = *txidx;

--- 25 unchanged lines hidden (view full) ---

1544 if (m_head->m_pkthdr.csum_flags & CSUM_TCP)
1545 sc->nge_ldata->nge_tx_list[*txidx].nge_extsts |=
1546 NGE_TXEXTSTS_TCPCSUM;
1547 if (m_head->m_pkthdr.csum_flags & CSUM_UDP)
1548 sc->nge_ldata->nge_tx_list[*txidx].nge_extsts |=
1549 NGE_TXEXTSTS_UDPCSUM;
1550 }
1551
1509
1510 /*
1511 * Start packing the mbufs in this chain into
1512 * the fragment pointers. Stop when we run out
1513 * of fragments or hit the end of the mbuf chain.
1514 */
1515 m = m_head;
1516 cur = frag = *txidx;

--- 25 unchanged lines hidden (view full) ---

1542 if (m_head->m_pkthdr.csum_flags & CSUM_TCP)
1543 sc->nge_ldata->nge_tx_list[*txidx].nge_extsts |=
1544 NGE_TXEXTSTS_TCPCSUM;
1545 if (m_head->m_pkthdr.csum_flags & CSUM_UDP)
1546 sc->nge_ldata->nge_tx_list[*txidx].nge_extsts |=
1547 NGE_TXEXTSTS_UDPCSUM;
1548 }
1549
1552 mtag = VLAN_OUTPUT_TAG(sc->nge_ifp, m_head);
1553 if (mtag != NULL) {
1550 if (m_head->m_flags & M_VLANTAG) {
1554 sc->nge_ldata->nge_tx_list[cur].nge_extsts |=
1551 sc->nge_ldata->nge_tx_list[cur].nge_extsts |=
1555 (NGE_TXEXTSTS_VLANPKT|htons(VLAN_TAG_VALUE(mtag)));
1552 (NGE_TXEXTSTS_VLANPKT|htons(m_head->m_pkthdr.ether_vtag));
1556 }
1557
1558 sc->nge_ldata->nge_tx_list[cur].nge_mbuf = m_head;
1559 sc->nge_ldata->nge_tx_list[cur].nge_ctl &= ~NGE_CMDSTS_MORE;
1560 sc->nge_ldata->nge_tx_list[*txidx].nge_ctl |= NGE_CMDSTS_OWN;
1561 sc->nge_cdata.nge_tx_cnt += cnt;
1562 *txidx = frag;
1563

--- 618 unchanged lines hidden ---
1553 }
1554
1555 sc->nge_ldata->nge_tx_list[cur].nge_mbuf = m_head;
1556 sc->nge_ldata->nge_tx_list[cur].nge_ctl &= ~NGE_CMDSTS_MORE;
1557 sc->nge_ldata->nge_tx_list[*txidx].nge_ctl |= NGE_CMDSTS_OWN;
1558 sc->nge_cdata.nge_tx_cnt += cnt;
1559 *txidx = frag;
1560

--- 618 unchanged lines hidden ---