summaryrefslogtreecommitdiff
path: root/sys/dev/pci
diff options
context:
space:
mode:
authorChristian Weisgerber <naddy@cvs.openbsd.org>2008-09-18 15:16:31 +0000
committerChristian Weisgerber <naddy@cvs.openbsd.org>2008-09-18 15:16:31 +0000
commit5eab433266681d6216c8e05ad5786344f11779c3 (patch)
tree9dfd93a6804acadebfb92a46d8dcdd141d2b3dd4 /sys/dev/pci
parent80e73464cddea0a649b4991ab2b43d25504d8f4f (diff)
Introduce the infrastructure required to support hardware VLAN tag
stripping: Add a field to the mbuf pkthdr to hold the tag and an mbuf flag that tells if the tag is valid. Inspired by FreeBSD. Struct packing suggested by kettenis@. csum_flags is now 16 bits. Adapt to this in the drivers. ok reyk@, henning@
Diffstat (limited to 'sys/dev/pci')
-rw-r--r--sys/dev/pci/if_bge.c4
-rw-r--r--sys/dev/pci/if_san_xilinx.c8
-rw-r--r--sys/dev/pci/if_ti.c4
-rw-r--r--sys/dev/pci/if_txp.c5
4 files changed, 12 insertions, 9 deletions
diff --git a/sys/dev/pci/if_bge.c b/sys/dev/pci/if_bge.c
index 1c330c05fe9..943ddcce938 100644
--- a/sys/dev/pci/if_bge.c
+++ b/sys/dev/pci/if_bge.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_bge.c,v 1.243 2008/09/10 14:01:22 blambert Exp $ */
+/* $OpenBSD: if_bge.c,v 1.244 2008/09/18 15:16:30 naddy Exp $ */
/*
* Copyright (c) 2001 Wind River Systems
@@ -2449,7 +2449,7 @@ bge_rxeof(struct bge_softc *sc)
u_int32_t rxidx;
struct mbuf *m = NULL;
#ifdef BGE_CHECKSUM
- int sumflags = 0;
+ u_int16_t sumflags = 0;
#endif
cur_rx = &sc->bge_rdata->
diff --git a/sys/dev/pci/if_san_xilinx.c b/sys/dev/pci/if_san_xilinx.c
index 4a4f7e87665..bc0df31f743 100644
--- a/sys/dev/pci/if_san_xilinx.c
+++ b/sys/dev/pci/if_san_xilinx.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_san_xilinx.c,v 1.22 2008/09/10 14:01:22 blambert Exp $ */
+/* $OpenBSD: if_san_xilinx.c,v 1.23 2008/09/18 15:16:30 naddy Exp $ */
/*-
* Copyright (c) 2001-2004 Sangoma Technologies (SAN)
@@ -1977,7 +1977,8 @@ xilinx_dma_tx_complete(sdla_t *card, xilinx_softc_t *sc)
}
sc->pci_retry = 0;
- sc->tx_dma_mbuf->m_pkthdr.csum_flags = reg;
+ sc->tx_dma_mbuf->m_pkthdr.csum_flags = reg & 0xFFFF;
+ sc->tx_dma_mbuf->m_pkthdr.ether_vtag = (reg >> 16) & 0xFFFF;
IF_ENQUEUE(&sc->wp_tx_complete_list, sc->tx_dma_mbuf);
sc->tx_dma_mbuf = NULL;
@@ -1990,9 +1991,10 @@ static void
xilinx_tx_post_complete(sdla_t *card, xilinx_softc_t *sc, struct mbuf *m)
{
struct ifnet *ifp;
- unsigned long reg = m->m_pkthdr.csum_flags;
+ u_int32_t reg;
WAN_ASSERT1(sc == NULL);
+ reg = (m->m_pkthdr.ether_vtag << 16) + m->m_pkthdr.csum_flags;
ifp = (struct ifnet *)&sc->common.ifp;
if ((bit_test((u_int8_t *)&reg, TxDMA_HI_DMA_GO_READY_BIT)) ||
(reg & TxDMA_HI_DMA_DATA_LENGTH_MASK) ||
diff --git a/sys/dev/pci/if_ti.c b/sys/dev/pci/if_ti.c
index 06fd41a89a0..c1abaa89262 100644
--- a/sys/dev/pci/if_ti.c
+++ b/sys/dev/pci/if_ti.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_ti.c,v 1.85 2008/06/07 19:03:13 brad Exp $ */
+/* $OpenBSD: if_ti.c,v 1.86 2008/09/18 15:16:30 naddy Exp $ */
/*
* Copyright (c) 1997, 1998, 1999
@@ -1767,7 +1767,7 @@ ti_rxeof(struct ti_softc *sc)
struct ti_rx_desc *cur_rx;
u_int32_t rxidx;
struct mbuf *m = NULL;
- int sumflags = 0;
+ u_int16_t sumflags = 0;
bus_dmamap_t dmamap;
cur_rx =
diff --git a/sys/dev/pci/if_txp.c b/sys/dev/pci/if_txp.c
index 37beacde363..7642e8a1183 100644
--- a/sys/dev/pci/if_txp.c
+++ b/sys/dev/pci/if_txp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_txp.c,v 1.93 2008/09/10 14:01:23 blambert Exp $ */
+/* $OpenBSD: if_txp.c,v 1.94 2008/09/18 15:16:30 naddy Exp $ */
/*
* Copyright (c) 2001
@@ -609,7 +609,8 @@ txp_rx_reclaim(struct txp_softc *sc, struct txp_rx_ring *r,
struct mbuf *m;
struct txp_swdesc *sd;
u_int32_t roff, woff;
- int sumflags = 0, idx;
+ int idx;
+ u_int16_t sumflags = 0;
roff = letoh32(*r->r_roff);
woff = letoh32(*r->r_woff);