From owner-p4-projects@FreeBSD.ORG Sun Oct 18 15:59:28 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 180461065694; Sun, 18 Oct 2009 15:59:28 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B0B94106566B for ; Sun, 18 Oct 2009 15:59:27 +0000 (UTC) (envelope-from yohanes@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 861C98FC0C for ; Sun, 18 Oct 2009 15:59:27 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n9IFxRcD003269 for ; Sun, 18 Oct 2009 15:59:27 GMT (envelope-from yohanes@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n9IFxRDf003267 for perforce@freebsd.org; Sun, 18 Oct 2009 15:59:27 GMT (envelope-from yohanes@FreeBSD.org) Date: Sun, 18 Oct 2009 15:59:27 GMT Message-Id: <200910181559.n9IFxRDf003267@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to yohanes@FreeBSD.org using -f From: Yohanes Nugroho To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 169569 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Oct 2009 15:59:28 -0000 http://p4web.freebsd.org/chv.cgi?CH=169569 Change 169569 by yohanes@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; lm_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; lm_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;