socsvn commit: r307228 - soc2016/vincenzo/head/usr.sbin/bhyve

vincenzo at FreeBSD.org vincenzo at FreeBSD.org
Fri Aug 5 14:03:12 UTC 2016


Author: vincenzo
Date: Fri Aug  5 14:03:10 2016
New Revision: 307228
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=307228

Log:
   bhyve: ptnet: implement PTNET_IO_PTFEAT register write

Modified:
  soc2016/vincenzo/head/usr.sbin/bhyve/net_backends.h
  soc2016/vincenzo/head/usr.sbin/bhyve/pci_ptnetmap_netif.c

Modified: soc2016/vincenzo/head/usr.sbin/bhyve/net_backends.h
==============================================================================
--- soc2016/vincenzo/head/usr.sbin/bhyve/net_backends.h	Fri Aug  5 14:02:19 2016	(r307227)
+++ soc2016/vincenzo/head/usr.sbin/bhyve/net_backends.h	Fri Aug  5 14:03:10 2016	(r307228)
@@ -112,10 +112,12 @@
 	uint16_t num_rx_slots;
 };
 
+int ptn_memdev_attach(void *mem_ptr, uint32_t mem_size, uint16_t mem_id);
 int ptnetmap_get_netmap_if(struct ptnetmap_state *ptn,
 			   struct netmap_if_info *nif);
 struct ptnetmap_state * get_ptnetmap(struct net_backend *be);
-int ptn_memdev_attach(void *mem_ptr, uint32_t mem_size, uint16_t mem_id);
+uint32_t ptnetmap_ack_features(struct ptnetmap_state *ptn,
+			       uint32_t wanted_features);
 
 
 #include "pci_emul.h"

Modified: soc2016/vincenzo/head/usr.sbin/bhyve/pci_ptnetmap_netif.c
==============================================================================
--- soc2016/vincenzo/head/usr.sbin/bhyve/pci_ptnetmap_netif.c	Fri Aug  5 14:02:19 2016	(r307227)
+++ soc2016/vincenzo/head/usr.sbin/bhyve/pci_ptnetmap_netif.c	Fri Aug  5 14:03:10 2016	(r307228)
@@ -98,7 +98,7 @@
 	if (sc == NULL)
 		return 0;
 
-	offset = offset & PTNET_IO_MASK;
+	offset &= PTNET_IO_MASK;
 
 	if (baridx == PTNETMAP_IO_PCI_BAR && offset < PTNET_IO_END) {
 		switch (offset) {
@@ -127,10 +127,24 @@
 	      int baridx, uint64_t offset, int size, uint64_t value)
 {
 	struct ptnet_softc *sc = pi->pi_arg;
+	unsigned int index;
 
 	if (sc == NULL)
 		return;
 
+	offset &= PTNET_IO_MASK;
+	index = offset >> 2;
+
+	if (baridx == PTNETMAP_IO_PCI_BAR && offset < PTNET_IO_END) {
+		switch (offset) {
+		case PTNET_IO_PTFEAT:
+			value = ptnetmap_ack_features(sc->ptbe, value);
+			sc->ioregs[index] = value;
+			break;
+		}
+		return;
+	}
+
 	fprintf(stderr, "%s: Unexpected register write [bar %u, offset %lx "
 		"size %d value %lx]\n", __func__, baridx, offset, size, value);
 }
@@ -181,6 +195,7 @@
 	sc->be = netbe_init(devname, NULL, sc);
 	if (!sc->be) {
 		fprintf(stderr, "net backend initialization failed\n");
+		return -1;
 	}
 
 	free(devname);


More information about the svn-soc-all mailing list