Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 May 2016 14:39:41 GMT
From:      vincenzo@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r304038 - soc2016/vincenzo/head/sys/dev/netmap
Message-ID:  <201605271439.u4REdfnN044703@socsvn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: vincenzo
Date: Fri May 27 14:39:41 2016
New Revision: 304038
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=304038

Log:
  ptnet: CSB allocation

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 May 27 12:02:12 2016	(r304037)
+++ soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c	Fri May 27 14:39:41 2016	(r304038)
@@ -47,6 +47,8 @@
 #include <machine/smp.h>
 
 #include <vm/uma.h>
+#include <vm/vm.h>
+#include <vm/pmap.h>
 
 #include <net/ethernet.h>
 #include <net/if.h>
@@ -209,13 +211,24 @@
 	num_tx_rings = bus_read_4(sc->iomem, PTNET_IO_NUM_TX_RINGS);
 	num_rx_rings = bus_read_4(sc->iomem, PTNET_IO_NUM_RX_RINGS);
 #endif
-	sc->csb = malloc(sizeof(struct ptnet_csb), M_DEVBUF, M_NOWAIT | M_ZERO);
+	/* Allocate CSB and carry out CSB allocation protocol (CSBBAH first,
+	 * then CSBBAL). */
+	sc->csb = malloc(sizeof(struct ptnet_csb), M_DEVBUF,
+			 M_NOWAIT | M_ZERO);
 	if (sc->csb == NULL) {
 		device_printf(dev, "Failed to allocate CSB\n");
 		err = ENOMEM;
 		goto err_path;
 	}
 
+	{
+		vm_paddr_t paddr = vtophys(sc->csb);
+
+		bus_write_4(sc->iomem, PTNET_IO_CSBBAH,
+			    (paddr >> 32) & 0xffffffff);
+		bus_write_4(sc->iomem, PTNET_IO_CSBBAL, paddr & 0xffffffff);
+	}
+
 	/* Setup Ethernet interface. */
 	sc->ifp = ifp = if_alloc(IFT_ETHER);
 	if (ifp == NULL) {
@@ -272,6 +285,8 @@
 	}
 
 	if (sc->csb) {
+		bus_write_4(sc->iomem, PTNET_IO_CSBBAH, 0);
+		bus_write_4(sc->iomem, PTNET_IO_CSBBAL, 0);
 		free(sc->csb, M_DEVBUF);
 		sc->csb = NULL;
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201605271439.u4REdfnN044703>