PERFORCE change 169569 for review
Yohanes Nugroho
yohanes at FreeBSD.org
Sun Oct 18 15:59:28 UTC 2009
http://p4web.freebsd.org/chv.cgi?CH=169569
Change 169569 by yohanes at econa on 2009/10/18 15:59:19
remove m_devget
Affected files ...
.. //depot/projects/str91xx/src/sys/arm/conf/CNS11XXNAS#5 edit
.. //depot/projects/str91xx/src/sys/arm/econa/if_ece.c#7 edit
Differences ...
==== //depot/projects/str91xx/src/sys/arm/conf/CNS11XXNAS#5 (text+ko) ====
@@ -52,8 +52,8 @@
#options COMPAT_FREEBSD7
-#options SCHED_ULE #ULE scheduler
-options SCHED_4BSD #4BSD scheduler
+options SCHED_ULE #ULE scheduler
+#options SCHED_4BSD #4BSD scheduler
options GEOM_PART_GPT # GUID Partition Tables.
#options GEOM_PART_EBR
#options GEOM_PART_EBR_COMPAT
==== //depot/projects/str91xx/src/sys/arm/econa/if_ece.c#7 (text+ko) ====
@@ -67,6 +67,9 @@
#include "miibus_if.h"
+//#define ECE_MAX_TX_BUFFERS 256
+//#define ECE_MAX_RX_BUFFERS 256
+
#define ECE_MAX_TX_BUFFERS 128
#define ECE_MAX_RX_BUFFERS 128
@@ -307,7 +310,7 @@
for (ii = 0; ii < 0x1000; ii++) {
status = RD4(sc, PHY_CONTROL);
- DELAY(1);
+ //DELAY(1);
if (status & (0x1 << 15)) {
/* clear the rw_ok status, and clear other bits value */
WR4(sc, PHY_CONTROL, (0x1 << 15));
@@ -655,7 +658,7 @@
desc_paddr = sc->ring_paddr_tx;
-
+
/* Allocate a busdma tag for mbufs. */
error = bus_dma_tag_create(sc->sc_parent_tag, /* parent */
16, 0, /* alignment, boundary */
@@ -1594,13 +1597,15 @@
bus_dmamap_sync(sc->dmatag_data_rx, sc->dmap_rx[idx],
BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE);
-
+#if 0
mb = m_devget((void *)sc->buffer_rx[idx]->m_data,
desc->length+16,
0, ifp, NULL);
if (mb) {
+// int l;
mb->m_data += 2;
+
if (desc->prot!=3) {
mb->m_pkthdr.csum_flags |= CSUM_IP_CHECKED;
mb->m_pkthdr.csum_flags |= CSUM_IP_VALID;
@@ -1608,6 +1613,15 @@
}
mb->m_len = mb->m_pkthdr.len;
+/*
+ printf("packet len %d\n", mb->m_len);
+ for (l = 0; l<mb->m_len; l++) {
+ printf("%02x ", mb->m_data[l]);
+ if (((l+1) %16)==0) {
+ printf("\n");
+ }
+ }
+ printf("-----\n");*/
ECE_RXUNLOCK(sc);
(*ifp->if_input)(ifp, mb);
ECE_RXLOCK(sc);
@@ -1615,7 +1629,40 @@
if_printf(sc->ifp, "no mbuf length = %d\n", desc->length);
/* Give up if no mbufs */
}
+#else
+ mb = sc->buffer_rx[idx];
+ mb->m_data += 2;
+ mb->m_pkthdr.rcvif = ifp;
+ if (desc->prot!=3) {
+ mb->m_pkthdr.csum_flags |= CSUM_IP_CHECKED;
+ mb->m_pkthdr.csum_flags |= CSUM_IP_VALID;
+ mb->m_pkthdr.csum_data = 0xffff;
+ }
+
+ mb->m_len = mb->m_pkthdr.len = desc->length+16;
+/*
+
+ int l;
+ printf("packet len %d\n", mb->m_len);
+ for (l = 0; l<mb->m_len; l++) {
+ printf("%02x ", mb->m_data[l]);
+ if (((l+1) %16)==0) {
+ printf("\n");
+ }
+ }
+ printf("-----\n");*/
+
+ ECE_RXUNLOCK(sc);
+ (*ifp->if_input)(ifp, mb);
+ ECE_RXLOCK(sc);
+
+ ece_new_rxbuf(sc->dmatag_ring_rx, &sc->dmap_rx[idx],
+ &(sc->buffer_rx[idx]),
+ (bus_addr_t *)&(desc->data_ptr));
+
+#endif
+
} else {
/*not ready, process later*/
return;
@@ -1682,12 +1729,15 @@
struct ece_softc *sc = xsc;
struct ifnet *ifp = sc->ifp;
int stat;
- int fssd_curr, fssd;
+ //int fssd_curr, fssd;
stat = RD4(sc, INTERRUPT_STATUS);
- fssd_curr = RD4(sc, FS_DESCRIPTOR_POINTER);
+
+ //printf("status = %08x\n", stat);
+
+ //fssd_curr = RD4(sc, FS_DESCRIPTOR_POINTER);
- fssd = (fssd_curr - (uint32_t)sc->ring_paddr_rx)>>4;
+ //fssd = (fssd_curr - (uint32_t)sc->ring_paddr_rx)>>4;
WR4(sc, INTERRUPT_STATUS, stat);
@@ -1696,7 +1746,7 @@
return;
}
- taskqueue_enqueue(sc->sc_tq, &sc->sc_intr_task);
+ //taskqueue_enqueue(sc->sc_tq, &sc->sc_intr_task);
}
static void
@@ -1850,6 +1900,8 @@
sc->curr_tx_mbuf = (sc->curr_tx_mbuf+1) % ECE_MAX_TX_BUFFERS;
+ //printf("encap nsegs = %d\n", nsegs);
+
/* Everything is ok, now we can send buffers */
for (seg = 0; seg < nsegs; seg++) {
@@ -1858,6 +1910,7 @@
}
desc->length = segs[seg].ds_len;
+ // printf("dlength = %d\n", desc->length);
desc->data_ptr = segs[seg].ds_addr;
//dw->buffer = m0;
More information about the p4-projects
mailing list