[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.18 and 1.18.2.4

version 1.18, 2007/08/26 22:32:46 version 1.18.2.4, 2008/03/23 02:04:30
Line 1 
Line 1 
 /*      $NetBSD$      */  /*      if_xennet_xenbus.c,v 1.18.2.3 2008/01/09 01:50:19 matt Exp      */
   
 /*  /*
  * Copyright (c) 2006 Manuel Bouyer.   * Copyright (c) 2006 Manuel Bouyer.
Line 61 
Line 61 
  */   */
   
 #include <sys/cdefs.h>  #include <sys/cdefs.h>
 __KERNEL_RCSID(0, "$NetBSD$");  __KERNEL_RCSID(0, "if_xennet_xenbus.c,v 1.18.2.3 2008/01/09 01:50:19 matt Exp");
   
 #include "opt_xen.h"  #include "opt_xen.h"
 #include "opt_nfs_boot.h"  #include "opt_nfs_boot.h"
Line 74  __KERNEL_RCSID(0, "$NetBSD$");
Line 74  __KERNEL_RCSID(0, "$NetBSD$");
 #include <sys/kernel.h>  #include <sys/kernel.h>
 #include <sys/proc.h>  #include <sys/proc.h>
 #include <sys/systm.h>  #include <sys/systm.h>
   #include <sys/intr.h>
 #if NRND > 0  #if NRND > 0
 #include <sys/rnd.h>  #include <sys/rnd.h>
 #endif  #endif
Line 96  __KERNEL_RCSID(0, "$NetBSD$");
Line 97  __KERNEL_RCSID(0, "$NetBSD$");
 #include <nfs/nfs.h>  #include <nfs/nfs.h>
 #include <nfs/nfsmount.h>  #include <nfs/nfsmount.h>
 #include <nfs/nfsdiskless.h>  #include <nfs/nfsdiskless.h>
 #include <machine/if_xennetvar.h>  #include <xen/if_xennetvar.h>
 #endif /* defined(NFS_BOOT_BOOTSTATIC) */  #endif /* defined(NFS_BOOT_BOOTSTATIC) */
   
 #include <machine/xennet_checksum.h>  #include <xen/xennet_checksum.h>
   
 #include <uvm/uvm.h>  #include <uvm/uvm.h>
   
 #include <machine/xen3-public/io/ring.h>  #include <xen/xen3-public/io/ring.h>
   
 #include <machine/granttables.h>  #include <xen/granttables.h>
 #include <machine/xenbus.h>  #include <xen/xenbus.h>
 #include "locators.h"  #include "locators.h"
   
 #undef XENNET_DEBUG_DUMP  #undef XENNET_DEBUG_DUMP
Line 182  struct xennet_xenbus_softc {
Line 183  struct xennet_xenbus_softc {
   
 /* too big to be on stack */  /* too big to be on stack */
 static multicall_entry_t rx_mcl[NET_RX_RING_SIZE+1];  static multicall_entry_t rx_mcl[NET_RX_RING_SIZE+1];
 static paddr_t xennet_pages[NET_RX_RING_SIZE];  static u_long xennet_pages[NET_RX_RING_SIZE];
   
 static int  xennet_xenbus_match(struct device *, struct cfdata *, void *);  static int  xennet_xenbus_match(struct device *, struct cfdata *, void *);
 static void xennet_xenbus_attach(struct device *, struct device *, void *);  static void xennet_xenbus_attach(struct device *, struct device *, void *);
Line 336  xennet_xenbus_attach(struct device *pare
Line 337  xennet_xenbus_attach(struct device *pare
         IFQ_SET_READY(&ifp->if_snd);          IFQ_SET_READY(&ifp->if_snd);
         if_attach(ifp);          if_attach(ifp);
         ether_ifattach(ifp, sc->sc_enaddr);          ether_ifattach(ifp, sc->sc_enaddr);
         sc->sc_softintr = softintr_establish(IPL_SOFTNET, xennet_softstart, sc);          sc->sc_softintr = softint_establish(SOFTINT_NET, xennet_softstart, sc);
         if (sc->sc_softintr == NULL)          if (sc->sc_softintr == NULL)
                 panic(" xennet: can't establish soft interrupt");                  panic(" xennet: can't establish soft interrupt");
   
Line 385  xennet_xenbus_detach(struct device *self
Line 386  xennet_xenbus_detach(struct device *self
         xengnt_revoke_access(sc->sc_rx_ring_gntref);          xengnt_revoke_access(sc->sc_rx_ring_gntref);
         uvm_km_free(kernel_map, (vaddr_t)sc->sc_rx_ring.sring, PAGE_SIZE,          uvm_km_free(kernel_map, (vaddr_t)sc->sc_rx_ring.sring, PAGE_SIZE,
             UVM_KMF_WIRED);              UVM_KMF_WIRED);
         softintr_disestablish(sc->sc_softintr);          softint_disestablish(sc->sc_softintr);
         event_remove_handler(sc->sc_evtchn, &xennet_handler, sc);          event_remove_handler(sc->sc_evtchn, &xennet_handler, sc);
         splx(s0);          splx(s0);
         DPRINTF(("%s: xennet_xenbus_detach done\n", sc->sc_dev.dv_xname));          DPRINTF(("%s: xennet_xenbus_detach done\n", sc->sc_dev.dv_xname));
Line 609  xennet_free_rx_buffer(struct xennet_xenb
Line 610  xennet_free_rx_buffer(struct xennet_xenb
                         ma = xengnt_revoke_transfer(rxreq->rxreq_gntref);                          ma = xengnt_revoke_transfer(rxreq->rxreq_gntref);
                         rxreq->rxreq_gntref = GRANT_INVALID_REF;                          rxreq->rxreq_gntref = GRANT_INVALID_REF;
                         if (ma == 0) {                          if (ma == 0) {
                                   u_long pfn;
                                 struct xen_memory_reservation xenres;                                  struct xen_memory_reservation xenres;
                                 /*                                  /*
                                  * transfer not complete, we lost the page.                                   * transfer not complete, we lost the page.
                                  * Get one from hypervisor                                   * Get one from hypervisor
                                  */                                   */
                                 xenres.extent_start = &ma;                                  xenres.extent_start = &pfn;
                                 xenres.nr_extents = 1;                                  xenres.nr_extents = 1;
                                 xenres.extent_order = 0;                                  xenres.extent_order = 0;
                                 xenres.address_bits = 31;                                  xenres.address_bits = 31;
Line 624  xennet_free_rx_buffer(struct xennet_xenb
Line 626  xennet_free_rx_buffer(struct xennet_xenb
                                         panic("xennet_free_rx_buffer: "                                          panic("xennet_free_rx_buffer: "
                                             "can't get memory back");                                              "can't get memory back");
                                 }                                  }
                                   ma = pfn;
                                 KASSERT(ma != 0);                                  KASSERT(ma != 0);
                         }                          }
                         pa = rxreq->rxreq_pa;                          pa = rxreq->rxreq_pa;
Line 667  xennet_rx_mbuf_free(struct mbuf *m, void
Line 670  xennet_rx_mbuf_free(struct mbuf *m, void
         }          }
   
         if (m)          if (m)
                 pool_cache_put(&mbpool_cache, m);                  pool_cache_put(mb_cache, m);
         splx(s);          splx(s);
 }  }
   
Line 892  xennet_start(struct ifnet *ifp)
Line 895  xennet_start(struct ifnet *ifp)
          * stack will enqueue all pending mbufs in the interface's send queue           * stack will enqueue all pending mbufs in the interface's send queue
          * before it is processed by xennet_softstart().           * before it is processed by xennet_softstart().
          */           */
         softintr_schedule(sc->sc_softintr);          softint_schedule(sc->sc_softintr);
         return;          return;
 }  }
   

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.18.2.4

CVSweb <webmaster@jp.NetBSD.org>