[BACK]Return to if_xennet_xenbus.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / xen / xen

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/arch/xen/xen/if_xennet_xenbus.c between version 1.10 and 1.11

version 1.10, 2006/05/27 19:54:59 version 1.11, 2006/07/02 16:29:49
Line 511  xennet_alloc_rx_buffer(struct xennet_xen
Line 511  xennet_alloc_rx_buffer(struct xennet_xen
         for (i = 0; sc->sc_free_rxreql != 0; i++) {          for (i = 0; sc->sc_free_rxreql != 0; i++) {
                 req  = SLIST_FIRST(&sc->sc_rxreq_head);                  req  = SLIST_FIRST(&sc->sc_rxreq_head);
                 KASSERT(req != NULL);                  KASSERT(req != NULL);
                   KASSERT(req == &sc->sc_rxreqs[req->rxreq_id]);
                 RING_GET_REQUEST(&sc->sc_rx_ring, req_prod + i)->id =                  RING_GET_REQUEST(&sc->sc_rx_ring, req_prod + i)->id =
                     req->rxreq_id;                      req->rxreq_id;
                 if (xengnt_grant_transfer(sc->sc_xbusd->xbusd_otherend_id,                  if (xengnt_grant_transfer(sc->sc_xbusd->xbusd_otherend_id,
Line 648  xennet_rx_mbuf_free(struct mbuf *m, cadd
Line 649  xennet_rx_mbuf_free(struct mbuf *m, cadd
         struct xennet_rxreq *req = arg;          struct xennet_rxreq *req = arg;
         struct xennet_xenbus_softc *sc = req->rxreq_sc;          struct xennet_xenbus_softc *sc = req->rxreq_sc;
   
           int s = splnet();
   
         SLIST_INSERT_HEAD(&sc->sc_rxreq_head, req, rxreq_next);          SLIST_INSERT_HEAD(&sc->sc_rxreq_head, req, rxreq_next);
         sc->sc_free_rxreql++;          sc->sc_free_rxreql++;
   
Line 659  xennet_rx_mbuf_free(struct mbuf *m, cadd
Line 662  xennet_rx_mbuf_free(struct mbuf *m, cadd
   
         if (m)          if (m)
                 pool_cache_put(&mbpool_cache, m);                  pool_cache_put(&mbpool_cache, m);
           splx(s);
 }  }
   
   
Line 740  again:
Line 744  again:
                 netif_rx_response_t *rx = RING_GET_RESPONSE(&sc->sc_rx_ring, i);                  netif_rx_response_t *rx = RING_GET_RESPONSE(&sc->sc_rx_ring, i);
                 req = &sc->sc_rxreqs[rx->id];                  req = &sc->sc_rxreqs[rx->id];
                 KASSERT(req->rxreq_gntref != GRANT_INVALID_REF);                  KASSERT(req->rxreq_gntref != GRANT_INVALID_REF);
                   KASSERT(req->rxreq_id == rx->id);
                 ma = xengnt_revoke_transfer(req->rxreq_gntref);                  ma = xengnt_revoke_transfer(req->rxreq_gntref);
                 if (ma == 0) {                  if (ma == 0) {
                         DPRINTFN(XEDB_EVENT, ("xennet_handler ma == 0\n"));                          DPRINTFN(XEDB_EVENT, ("xennet_handler ma == 0\n"));
Line 799  again:
Line 804  again:
                         xennet_rx_mbuf_free(NULL, (void *)va, PAGE_SIZE, req);                          xennet_rx_mbuf_free(NULL, (void *)va, PAGE_SIZE, req);
                         continue;                          continue;
                 }                  }
                   MCLAIM(m, &sc->sc_ethercom.ec_rx_mowner);
   
                 m->m_pkthdr.rcvif = ifp;                  m->m_pkthdr.rcvif = ifp;
                 if (__predict_true(sc->sc_rx_ring.req_prod_pvt !=                  if (__predict_true(sc->sc_rx_ring.req_prod_pvt !=
Line 814  again:
Line 820  again:
                          * memory, copy data and push the receive                           * memory, copy data and push the receive
                          * buffer back to the hypervisor.                           * buffer back to the hypervisor.
                          */                           */
                         m->m_len = MHLEN;                          m->m_len = min(MHLEN, rx->status);
                         m->m_pkthdr.len = 0;                          m->m_pkthdr.len = 0;
                         m_copyback(m, 0, rx->status, pktp);                          m_copyback(m, 0, rx->status, pktp);
                         xennet_rx_mbuf_free(NULL, (void *)va, PAGE_SIZE, req);                          xennet_rx_mbuf_free(NULL, (void *)va, PAGE_SIZE, req);
Line 986  xennet_softstart(void *arg)
Line 992  xennet_softstart(void *arg)
                         /* we will be able to send m */                          /* we will be able to send m */
                         IFQ_DEQUEUE(&ifp->if_snd, m);                          IFQ_DEQUEUE(&ifp->if_snd, m);
                 }                  }
                   MCLAIM(m, &sc->sc_ethercom.ec_tx_mowner);
   
                 KASSERT(((pa ^ (pa + m->m_pkthdr.len -  1)) & PG_FRAME) == 0);                  KASSERT(((pa ^ (pa + m->m_pkthdr.len -  1)) & PG_FRAME) == 0);
   

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

CVSweb <webmaster@jp.NetBSD.org>