PERFORCE change 129994 for review

Marko Zec zec at imunes.net
Sun Dec 2 03:25:30 PST 2007


On Sunday 02 December 2007 12:13:40 Marko Zec wrote:
> http://perforce.freebsd.org/chv.cgi?CH=129994
>
> Change 129994 by zec at zec_tpx32 on 2007/12/02 11:13:11
>
> 	IFC
>
> Affected files ...
>
> .. //depot/projects/vimage/src/sys/dev/iwi/if_iwi.c#7 edit
> .. //depot/projects/vimage/src/sys/net80211/ieee80211.c#8 edit
> .. //depot/projects/vimage/src/sys/net80211/ieee80211_var.h#7 edit

Ahm, those three changes that unintentionally slipped into an IFC for a 
private branch were actually intended to provide capability for moving 
80211 ifnets among vnets.  This doesn't work quite properly yet, and the 
biggest issue here is that for the first time we are pushing stack 
virtualization hacks into device driver level, something that I think 
should be avoided like a plaque in general.

Marko

> .. //depot/user/zec/forwarding/sys/amd64/amd64/busdma_machdep.c#2
...
> Differences ...
>
> ==== //depot/projects/vimage/src/sys/dev/iwi/if_iwi.c#7 (text+ko)
> ====
>
> @@ -35,6 +35,8 @@
>   *
> http://www.intel.com/network/connectivity/products/wireless/prowirele
>ss_mobile.htm */
>
> +#include "opt_vimage.h"
> +
>  #include <sys/param.h>
>  #include <sys/sysctl.h>
>  #include <sys/sockio.h>
> @@ -55,6 +57,7 @@
>  #include <sys/firmware.h>
>  #include <sys/kthread.h>
>  #include <sys/taskqueue.h>
> +#include <sys/vimage.h>
>
>  #include <machine/bus.h>
>  #include <machine/resource.h>
> @@ -193,6 +196,7 @@
>  static int iwi_probe(device_t);
>  static int iwi_attach(device_t);
>  static int iwi_detach(device_t);
> +static void iwi_reassign(struct ifnet *, struct vnet *, char *);
>  static int iwi_shutdown(device_t);
>  static int iwi_suspend(device_t);
>  static int iwi_resume(device_t);
> @@ -407,6 +411,9 @@
>  	ieee80211_ifattach(ic);
>  	ic->ic_bmissthreshold = 10;		/* override default */
>  	/* override default methods */
> +#ifdef VIMAGE
> +	ifp->if_reassign = iwi_reassign;
> +#endif
>  	ic->ic_node_alloc = iwi_node_alloc;
>  	sc->sc_node_free = ic->ic_node_free;
>  	ic->ic_node_free = iwi_node_free;
> @@ -505,6 +512,28 @@
>  	return 0;
>  }
>
> +#ifdef VIMAGE
> +static void
> +iwi_reassign(struct ifnet *ifp, struct vnet *vnet, char *dname)
> +{
> +	struct iwi_softc *sc = ifp->if_softc;
> +	struct ieee80211com *ic = &sc->sc_ic;
> +	IWI_LOCK_DECL;
> +
> +	IWI_LOCK(sc);
> +	bpfdetach(ifp);
> +	sc->sc_drvbpf = NULL;
> +	ieee80211_reassign(ic, vnet, dname);
> +
> +        CURVNET_SET_QUIET(vnet);
> +	bpfattach2(ifp, DLT_IEEE802_11_RADIO,
> +	    sizeof (struct ieee80211_frame) + sizeof (sc->sc_txtap),
> +	    &sc->sc_drvbpf);
> +        CURVNET_RESTORE();
> +	IWI_UNLOCK(sc);
> +}
> +#endif
>
> >>> TRUNCATED FOR MAIL (1000 lines) <<<




More information about the p4-projects mailing list