socsvn commit: r304516 - soc2016/vincenzo/head/sys/dev/netmap

vincenzo at FreeBSD.org vincenzo at FreeBSD.org
Fri Jun 3 14:09:05 UTC 2016


Author: vincenzo
Date: Fri Jun  3 14:09:03 2016
New Revision: 304516
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=304516

Log:
   freebsd: ptnet: initialize driver netmap adapter

Modified:
  soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c

Modified: soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c
==============================================================================
--- soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c	Fri Jun  3 14:08:33 2016	(r304515)
+++ soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c	Fri Jun  3 14:09:03 2016	(r304516)
@@ -359,7 +359,15 @@
 	sc->ptna_nm = (struct netmap_pt_guest_adapter *)NA(ifp);
 	sc->ptna_nm->csb = sc->csb;
 
+	/* Initialize a separate pass-through netmap adapter that is going to
+	 * be used by this driver only, and so never exposed to netmap. We
+	 * only need a subset of the available fields. */
 	memset(&sc->ptna_dr, 0, sizeof(sc->ptna_dr));
+	sc->ptna_dr.hwup.up.ifp = ifp;
+	sc->ptna_dr.hwup.up.nm_mem = sc->ptna_nm->hwup.up.nm_mem;
+	netmap_mem_get(sc->ptna_dr.hwup.up.nm_mem);
+	sc->ptna_dr.hwup.up.nm_config = ptnet_nm_config;
+	sc->ptna_dr.csb = sc->csb;
 
 	return (0);
 
@@ -378,6 +386,9 @@
 	if (sc->ifp) {
 		ether_ifdetach(sc->ifp);
 
+		/* Uninitialize netmap adapters for this device. */
+		netmap_mem_put(sc->ptna_dr.hwup.up.nm_mem);
+		memset(&sc->ptna_dr, 0, sizeof(sc->ptna_dr));
 		netmap_detach(sc->ifp);
 
 		ifmedia_removeall(&sc->media);


More information about the svn-soc-all mailing list