Module Name: src
Committed By: palle
Date: Mon Mar 15 18:44:05 UTC 2021
Modified Files:
src/sys/arch/sparc64/dev: vnet.c
Log Message:
sun4v: vnet - cleanup of debug code (no functional changes)
To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/sparc64/dev/vnet.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/sparc64/dev/vnet.c
diff -u src/sys/arch/sparc64/dev/vnet.c:1.4 src/sys/arch/sparc64/dev/vnet.c:1.5
--- src/sys/arch/sparc64/dev/vnet.c:1.4 Sat Mar 13 20:21:37 2021
+++ src/sys/arch/sparc64/dev/vnet.c Mon Mar 15 18:44:04 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: vnet.c,v 1.4 2021/03/13 20:21:37 palle Exp $ */
+/* $NetBSD: vnet.c,v 1.5 2021/03/15 18:44:04 palle Exp $ */
/* $OpenBSD: vnet.c,v 1.62 2020/07/10 13:26:36 patrick Exp $ */
/*
* Copyright (c) 2009, 2015 Mark Kettenis
@@ -16,14 +16,10 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-#if 0
-FIXME openbsd
-#include "bpfilter.h"
-#endif
-
#include <sys/kmem.h>
#include <sys/param.h>
#include <sys/atomic.h>
+#include <sys/callout.h>
#include <sys/device.h>
#include <sys/malloc.h>
#include <sys/pool.h>
@@ -31,12 +27,6 @@ FIXME openbsd
#include <sys/socket.h>
#include <sys/sockio.h>
#include <sys/systm.h>
-#if 0
-FIXME openbsd
-#include <sys/timeout.h>
-#else
-#include <sys/callout.h>
-#endif
#include <machine/autoconf.h>
#include <machine/hypervisor.h>
@@ -58,9 +48,6 @@ FIXME openbsd
#include <sparc64/dev/ldcvar.h>
#include <sparc64/dev/viovar.h>
-#if 1
-#define VNET_DEBUG
-#endif
#ifdef VNET_DEBUG
#define DPRINTF(x) printf x
#else
@@ -137,12 +124,7 @@ void vnet_dring_free(bus_dma_tag_t, stru
struct vnet_soft_desc {
int vsd_map_idx;
-#if 0
-FIXME openbsd
- caddr_t vsd_buf;
-#else
unsigned char *vsd_buf;
-#endif
};
struct vnet_softc {
@@ -171,12 +153,7 @@ struct vnet_softc {
#define VIO_ACK_RDX 0x0400
#define VIO_RCV_RDX 0x0800
-#if 0
-FIXME openbsd
- struct timeout sc_handshake_to;
-#else
struct callout sc_handshake_co;
-#endif
uint8_t sc_xfer_mode;
@@ -284,19 +261,6 @@ vnet_attach(struct device *parent, struc
hv_ldc_tx_qconf(ca->ca_id, 0, 0);
hv_ldc_rx_qconf(ca->ca_id, 0, 0);
-#if 0
-FIXME openbsd
- sc->sc_tx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_tx_ino,
- IPL_NET, BUS_INTR_ESTABLISH_MPSAFE, vnet_tx_intr,
- sc, sc->sc_dv.dv_xname);
- sc->sc_rx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_rx_ino,
- IPL_NET, BUS_INTR_ESTABLISH_MPSAFE, vnet_rx_intr,
- sc, sc->sc_dv.dv_xname);
- if (sc->sc_tx_ih == NULL || sc->sc_rx_ih == NULL) {
- printf(", can't establish interrupt\n");
- return;
- }
-#else
sc->sc_tx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_tx_ino,
IPL_NET, vnet_tx_intr, sc);
sc->sc_rx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_rx_ino,
@@ -305,7 +269,6 @@ FIXME openbsd
printf(", can't establish interrupts\n");
return;
}
-#endif
lc = &sc->sc_lc;
lc->lc_id = ca->ca_id;
@@ -314,28 +277,10 @@ FIXME openbsd
lc->lc_start = vnet_ldc_start;
lc->lc_rx_data = vio_rx_data;
-#if 0
-FIXME openbsd
- timeout_set(&sc->sc_handshake_to, vnet_handshake, sc);
-#else
callout_init(&sc->sc_handshake_co, 0);
-/* netbsd callout do silmilar function...*/
-#endif
- sc->sc_peer_state = VIO_DP_STOPPED;
-#if OPENBSD_BUSDMA
- lc->lc_txq = ldc_queue_alloc(sc->sc_dmatag, VNET_TX_ENTRIES);
- if (lc->lc_txq == NULL) {
- printf(", can't allocate tx queue\n");
- return;
- }
+ sc->sc_peer_state = VIO_DP_STOPPED;
- lc->lc_rxq = ldc_queue_alloc(sc->sc_dmatag, VNET_RX_ENTRIES);
- if (lc->lc_rxq == NULL) {
- printf(", can't allocate rx queue\n");
- goto free_txqueue;
- }
-#else
lc->lc_txq = ldc_queue_alloc(VNET_TX_ENTRIES);
if (lc->lc_txq == NULL) {
printf(", can't allocate tx queue\n");
@@ -347,7 +292,6 @@ FIXME openbsd
printf(", can't allocate rx queue\n");
goto free_txqueue;
}
-#endif
if (OF_getprop(ca->ca_node, "local-mac-address",
sc->sc_macaddr, ETHER_ADDR_LEN) > 0) {
@@ -360,63 +304,35 @@ FIXME openbsd
/*
* Each interface gets its own pool.
*/
-#if 0
-FIXME openbsd
- pool_init(&sc->sc_pool, 2048, 0, IPL_NET, 0, sc->sc_dv.dv_xname, NULL);
-#else
pool_init(&sc->sc_pool, 2048, 0, 0, 0, sc->sc_dv.dv_xname, NULL, IPL_NET);
-#endif
ifp = &sc->sc_ethercom.ec_if;
ifp->if_softc = sc;
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
-#if 0
- ifp->if_link_state = LINK_STATE_DOWN;
-#endif
ifp->if_init = vnet_init;
ifp->if_ioctl = vnet_ioctl;
ifp->if_start = vnet_start;
ifp->if_stop = vnet_stop;
ifp->if_watchdog = vnet_watchdog;
strlcpy(ifp->if_xname, device_xname(self), IFNAMSIZ);
-#if 0
-FIXME openbsd
- ifq_set_maxlen(&ifp->if_snd, 31); /* XXX */
-#else
- IFQ_SET_MAXLEN(&ifp->if_snd, 31); /* XXX */
-#endif
+ IFQ_SET_MAXLEN(&ifp->if_snd, 31); /* XXX */
ifmedia_init(&sc->sc_media, 0, vnet_media_change, vnet_media_status);
ifmedia_add(&sc->sc_media, IFM_ETHER | IFM_AUTO, 0, NULL);
ifmedia_set(&sc->sc_media, IFM_ETHER | IFM_AUTO);
-#if 0
- int error = if_initialize(ifp);
- if (error != 0) {
- printf(", if_initialize() failed\n");
- return;
- }
- ether_ifattach(ifp, sc->sc_macaddr);
- if_register(ifp);
-#else
if_attach(ifp);
ether_ifattach(ifp, sc->sc_macaddr);
-#endif
+
printf("\n");
return;
free_txqueue:
-#if OPENBSD_BUSDMA
- ldc_queue_free(sc->sc_dmatag, lc->lc_txq);
-#else
ldc_queue_free(lc->lc_txq);
-#endif
}
int
vnet_tx_intr(void *arg)
{
- DPRINTF(("%s: entry\n", __func__));
-
struct vnet_softc *sc = arg;
struct ldc_conn *lc = &sc->sc_lc;
uint64_t tx_head, tx_tail, tx_state;
@@ -437,17 +353,12 @@ vnet_tx_intr(void *arg)
lc->lc_tx_state = tx_state;
}
- DPRINTF(("%s: exit\n", __func__));
return (1);
}
int
vnet_rx_intr(void *arg)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
-
struct vnet_softc *sc = arg;
struct ldc_conn *lc = &sc->sc_lc;
uint64_t rx_head, rx_tail, rx_state;
@@ -463,16 +374,8 @@ vnet_rx_intr(void *arg)
printf("hv_ldc_rx_get_state %d\n", err);
return (0);
}
-#if 0
- DPRINTF(("%s: rx_state %" PRId64 " head %" PRId64 " tail %" PRId64 "\n",
- __func__, rx_state, rx_head, rx_tail));
-#endif
if (rx_state != lc->lc_rx_state) {
-#if 0
- DPRINTF(("%s: rx_state %" PRId64 " != lc__rx_state %" PRId64 "\n",
- __func__, rx_state, lc->lc_rx_state));
-#endif
switch (rx_state) {
case LDC_CHANNEL_DOWN:
lc->lc_tx_seqid = 0;
@@ -488,31 +391,15 @@ vnet_rx_intr(void *arg)
printf("%s: hv_ldc_rx_set_qhead %d\n", __func__, err);
break;
case LDC_CHANNEL_UP:
-#if 0
- DPRINTF(("%s: Rx link up\n", __func__));
-#endif
-#if 0
-FIXME openbsd
- timeout_add_msec(&sc->sc_handshake_to, 500);
-#else
callout_reset(&sc->sc_handshake_co, hz / 2, vnet_handshake, sc);
-#endif
break;
case LDC_CHANNEL_RESET:
DPRINTF(("%s: Rx link reset\n", __func__));
lc->lc_tx_seqid = 0;
lc->lc_state = 0;
lc->lc_reset(lc);
-#if 0
-FIXME openbsd
- timeout_add_msec(&sc->sc_handshake_to, 500);
-#else
callout_reset(&sc->sc_handshake_co, hz / 2, vnet_handshake, sc);
-#endif
if (rx_head == rx_tail) {
-#if 0
- DPRINTF(("%s: rx_head == rx_head\n", __func__));
-#endif
break;
}
/* Discard and ack pending I/O. */
@@ -527,16 +414,8 @@ FIXME openbsd
break;
}
lc->lc_rx_state = rx_state;
-#if 0
- DPRINTF(("%s: setting rx_state %" PRId64 " = lc__rx_state %" PRId64 "\n",
- __func__, rx_state, lc->lc_rx_state));
-#endif
return (1);
} else {
-#if 0
- DPRINTF(("%s: rx_state %" PRId64 " == lc__rx_state %" PRId64 "\n",
- __func__, rx_state, lc->lc_rx_state));
-#endif
}
if (rx_head == rx_tail)
@@ -545,27 +424,14 @@ FIXME openbsd
return (0);
}
lp = (struct ldc_pkt *)(uintptr_t)(lc->lc_rxq->lq_va + rx_head);
-#if 0
- DPRINTF(("%s: lp->type %" PRId8 "\n", __func__, lp->type));
- DPRINTF(("%s: lp->stype %" PRId8 "\n", __func__, lp->stype));
- DPRINTF(("%s: lp->ctrl %" PRId8 "\n", __func__, lp->ctrl));
- DPRINTF(("%s: lp->env %" PRId8 "\n", __func__, lp->env));
- DPRINTF(("%s: lp->seqid %" PRId32 "\n", __func__, lp->seqid));
- DPRINTF(("%s: lp->major %" PRId16 "\n", __func__, lp->major));
- DPRINTF(("%s: lp->minor %" PRId16 "\n", __func__, lp->minor));
-#endif
switch (lp->type) {
case LDC_CTRL:
-#if 0
DPRINTF(("%s: LDC_CTRL\n", __func__));
-#endif
ldc_rx_ctrl(lc, lp);
break;
case LDC_DATA:
-#if 0
DPRINTF(("%s: LDC_DATA\n", __func__));
-#endif
ldc_rx_data(lc, lp);
break;
@@ -585,17 +451,12 @@ FIXME openbsd
err = hv_ldc_rx_set_qhead(lc->lc_id, rx_head);
if (err != H_EOK)
printf("%s: hv_ldc_rx_set_qhead %d\n", __func__, err);
-#if 0
- DPRINTF(("%s: exit\n", __func__));
-#endif
return (1);
}
void
vnet_handshake(void *arg)
{
- DPRINTF(("%s: entry\n", __func__));
-
struct vnet_softc *sc = arg;
ldc_send_vers(&sc->sc_lc);
@@ -604,10 +465,6 @@ vnet_handshake(void *arg)
void
vio_rx_data(struct ldc_conn *lc, struct ldc_pkt *lp)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
-
struct vio_msg *vm = (struct vio_msg *)lp;
switch (vm->type) {
@@ -638,9 +495,6 @@ vio_rx_data(struct ldc_conn *lc, struct
void
vnet_rx_vio_ctrl(struct vnet_softc *sc, struct vio_msg *vm)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
struct vio_msg_tag *tag = (struct vio_msg_tag *)&vm->type;
switch (tag->stype_env) {
@@ -662,9 +516,6 @@ vnet_rx_vio_ctrl(struct vnet_softc *sc,
default:
printf("%s: CTRL/0x%02x/0x%04x FIXME\n",
__func__, tag->stype, tag->stype_env);
-#if 0
- Debugger();
-#endif
break;
}
}
@@ -672,16 +523,11 @@ vnet_rx_vio_ctrl(struct vnet_softc *sc,
void
vnet_rx_vio_ver_info(struct vnet_softc *sc, struct vio_msg_tag *tag)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
struct vio_ver_info *vi = (struct vio_ver_info *)tag;
switch (vi->tag.stype) {
case VIO_SUBTYPE_INFO:
-#if 0
DPRINTF(("CTRL/INFO/VER_INFO\n"));
-#endif
/* Make sure we're talking to a virtual network device. */
if (vi->dev_class != VDEV_NETWORK &&
@@ -712,9 +558,7 @@ vnet_rx_vio_ver_info(struct vnet_softc *
break;
case VIO_SUBTYPE_ACK:
-#if 0
DPRINTF(("CTRL/ACK/VER_INFO\n"));
-#endif
if (!ISSET(sc->sc_vio_state, VIO_SND_VER_INFO)) {
ldc_reset(&sc->sc_lc);
break;
@@ -735,21 +579,12 @@ vnet_rx_vio_ver_info(struct vnet_softc *
void
vnet_rx_vio_attr_info(struct vnet_softc *sc, struct vio_msg_tag *tag)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
struct vnet_attr_info *ai = (struct vnet_attr_info *)tag;
switch (ai->tag.stype) {
case VIO_SUBTYPE_INFO:
-#if 0
DPRINTF(("CTRL/INFO/ATTR_INFO\n"));
-#endif
sc->sc_xfer_mode = ai->xfer_mode;
-#if 0
- DPRINTF(("sc_xfer_mode %d\n", sc->sc_xfer_mode));
-#endif
-
ai->tag.stype = VIO_SUBTYPE_ACK;
ai->tag.sid = sc->sc_local_sid;
vnet_sendmsg(sc, ai, sizeof(*ai));
@@ -757,9 +592,7 @@ vnet_rx_vio_attr_info(struct vnet_softc
break;
case VIO_SUBTYPE_ACK:
-#if 0
DPRINTF(("CTRL/ACK/ATTR_INFO\n"));
-#endif
if (!ISSET(sc->sc_vio_state, VIO_SND_ATTR_INFO)) {
ldc_reset(&sc->sc_lc);
break;
@@ -784,17 +617,11 @@ vnet_rx_vio_attr_info(struct vnet_softc
void
vnet_rx_vio_dring_reg(struct vnet_softc *sc, struct vio_msg_tag *tag)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
struct vio_dring_reg *dr = (struct vio_dring_reg *)tag;
switch (dr->tag.stype) {
case VIO_SUBTYPE_INFO:
-#if 0
DPRINTF(("CTRL/INFO/DRING_REG\n"));
-#endif
-
sc->sc_peer_dring_nentries = dr->num_descriptors;
sc->sc_peer_desc_size = dr->descriptor_size;
sc->sc_peer_dring_cookie = dr->cookie[0];
@@ -806,9 +633,7 @@ vnet_rx_vio_dring_reg(struct vnet_softc
break;
case VIO_SUBTYPE_ACK:
-#if 0
DPRINTF(("CTRL/ACK/DRING_REG\n"));
-#endif
if (!ISSET(sc->sc_vio_state, VIO_SND_DRING_REG)) {
ldc_reset(&sc->sc_lc);
break;
@@ -833,22 +658,11 @@ vnet_rx_vio_dring_reg(struct vnet_softc
void
vnet_rx_vio_rdx(struct vnet_softc *sc, struct vio_msg_tag *tag)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
-#if 0
-FIXME openbsd
- struct ifnet *ifp = &sc->sc_ac.ac_if;
-#else
struct ifnet *ifp = &sc->sc_ethercom.ec_if;
-#endif
switch(tag->stype) {
case VIO_SUBTYPE_INFO:
-#if 0
DPRINTF(("CTRL/INFO/RDX\n"));
-#endif
-
tag->stype = VIO_SUBTYPE_ACK;
tag->sid = sc->sc_local_sid;
vnet_sendmsg(sc, tag, sizeof(*tag));
@@ -856,9 +670,7 @@ FIXME openbsd
break;
case VIO_SUBTYPE_ACK:
-#if 0
DPRINTF(("CTRL/ACK/RDX\n"));
-#endif
if (!ISSET(sc->sc_vio_state, VIO_SND_RDX)) {
ldc_reset(&sc->sc_lc);
break;
@@ -879,53 +691,28 @@ FIXME openbsd
/* Configure multicast now that we can. */
vnet_setmulti(sc, 1);
-#if 0
-FIXME openbsd
- KERNEL_LOCK();
-#else
- KERNEL_LOCK(1, curlwp);
-#endif
-#if 0
-FIXME openbsd
- ifq_clr_oactive(&ifp->if_snd);
-#else
- ifp->if_flags &= ~IFF_OACTIVE;
-#endif
+ KERNEL_LOCK(1, curlwp);
+ ifp->if_flags &= ~IFF_OACTIVE;
vnet_start(ifp);
-#if 0
-FIXME openbsd
- KERNEL_UNLOCK();
-#else
- KERNEL_UNLOCK_ONE(curlwp);
-#endif
+ KERNEL_UNLOCK_ONE(curlwp);
}
}
void
vnet_rx_vio_mcast_info(struct vnet_softc *sc, struct vio_msg_tag *tag)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
-
switch(tag->stype) {
case VIO_SUBTYPE_INFO:
-#if 0
DPRINTF(("CTRL/INFO/MCAST_INFO\n"));
-#endif
break;
case VIO_SUBTYPE_ACK:
-#if 0
DPRINTF(("CTRL/ACK/MCAST_INFO\n"));
-#endif
break;
case VIO_SUBTYPE_NACK:
-#if 0
DPRINTF(("CTRL/NACK/MCAST_INFO\n"));
-#endif
break;
default:
@@ -938,9 +725,6 @@ vnet_rx_vio_mcast_info(struct vnet_softc
void
vnet_rx_vio_data(struct vnet_softc *sc, struct vio_msg *vm)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
struct vio_msg_tag *tag = (struct vio_msg_tag *)&vm->type;
if (!ISSET(sc->sc_vio_state, VIO_RCV_RDX) ||
@@ -969,21 +753,10 @@ void
vnet_rx_vio_desc_data(struct vnet_softc *sc, struct vio_msg_tag *tag)
{
- DPRINTF(("%s: entry\n", __func__));
-
struct vnet_desc_msg *dm = (struct vnet_desc_msg *)tag;
struct ldc_conn *lc = &sc->sc_lc;
struct ldc_map *map = sc->sc_lm;
-#if 0
-FIXME openbsd
- struct ifnet *ifp = &sc->sc_ac.ac_if;
-#else
struct ifnet *ifp = &sc->sc_ethercom.ec_if;
-#endif
-#if 0
-FIXME openbsd
- struct mbuf_list ml = MBUF_LIST_INITIALIZER();
-#endif
struct mbuf *m;
unsigned char *buf;
paddr_t pa;
@@ -995,23 +768,13 @@ FIXME openbsd
case VIO_SUBTYPE_INFO:
buf = pool_get(&sc->sc_pool, PR_NOWAIT|PR_ZERO);
if (buf == NULL) {
-#if 0
-FIXME openbsd
- ifp->if_ierrors++;
-#else
if_statinc(ifp, if_ierrors);
-#endif
goto skip;
}
nbytes = roundup(dm->nbytes, 8);
if (dm->nbytes > (ETHER_MAX_LEN - ETHER_CRC_LEN)) {
-#if 0
-FIXME openbsd
- ifp->if_ierrors++;
-#else
if_statinc(ifp, if_ierrors);
-#endif
goto skip;
}
@@ -1020,41 +783,20 @@ FIXME openbsd
dm->cookie[0].addr, pa, nbytes, &nbytes);
if (err != H_EOK) {
pool_put(&sc->sc_pool, buf);
-#if 0
-FIXME openbsd
- ifp->if_ierrors++;
-#else
if_statinc(ifp, if_ierrors);
-#endif
goto skip;
}
/* Stupid OBP doesn't align properly. */
-#if 0
-FIXME openbsd
- m = m_devget(buf, dm->nbytes, ETHER_ALIGN);
-#else
m = m_devget(buf, dm->nbytes, 0, ifp);
-#endif
pool_put(&sc->sc_pool, buf);
if (m == NULL) {
-#if 0
-FIXME openbsd
- ifp->if_ierrors++;
-#else
if_statinc(ifp, if_ierrors);
-#endif
goto skip;
}
/* Pass it on. */
-#if 0
-FIXME openbsd
- ml_enqueue(&ml, m);
- if_input(ifp, &ml);
-#else
- if_percpuq_enqueue(ifp->if_percpuq, m);
-#endif
+ if_percpuq_enqueue(ifp->if_percpuq, m);
skip:
dm->tag.stype = VIO_SUBTYPE_ACK;
dm->tag.sid = sc->sc_local_sid;
@@ -1072,12 +814,7 @@ FIXME openbsd
cons = sc->sc_tx_cons & (sc->sc_vd->vd_nentries - 1);
map->lm_slot[sc->sc_vsd[cons].vsd_map_idx].entry = 0;
-#if 0
-FIXME openbsd
- atomic_dec_int(&map->lm_count);
-#else
- map->lm_count--;
-#endif
+ atomic_dec_32(&map->lm_count);
pool_put(&sc->sc_pool, sc->sc_vsd[cons].vsd_buf);
sc->sc_vsd[cons].vsd_buf = NULL;
@@ -1098,21 +835,10 @@ FIXME openbsd
void
vnet_rx_vio_dring_data(struct vnet_softc *sc, struct vio_msg_tag *tag)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
-
struct vio_dring_msg *dm = (struct vio_dring_msg *)tag;
struct ldc_conn *lc = &sc->sc_lc;
-#if 0
-FIXME openbsd
- struct ifnet *ifp = &sc->sc_ac.ac_if;
-#else
struct ifnet *ifp = &sc->sc_ethercom.ec_if;
-#endif
-#if 1
struct mbuf *m = NULL;
-#endif
paddr_t pa;
psize_t nbytes;
int err;
@@ -1120,17 +846,11 @@ FIXME openbsd
switch(tag->stype) {
case VIO_SUBTYPE_INFO:
{
-#if 0
DPRINTF(("%s: VIO_SUBTYPE_INFO\n", __func__));
-#endif
struct vnet_desc desc;
uint64_t cookie;
paddr_t desc_pa;
int idx, ack_end_idx = -1;
-#if 0
-FIXME openbsd
- struct mbuf_list ml = MBUF_LIST_INITIALIZER();
-#endif
idx = dm->start_idx;
for (;;) {
@@ -1149,69 +869,22 @@ FIXME openbsd
break;
if (desc.nbytes > (ETHER_MAX_LEN - ETHER_CRC_LEN)) {
-#if 0
-FIXME openbsd
- ifp->if_ierrors++;
-#else
if_statinc(ifp, if_ierrors);
-#endif
goto skip;
}
-#if 0
-FIXME openbsd
- m = MCLGETI(NULL, M_DONTWAIT, NULL, desc.nbytes);
- if (!m)
- break;
-#else
-#if 1
-#if 0
- DPRINTF(("%s: before MGETHDR\n", __func__));
-#endif
+
MGETHDR(m, M_DONTWAIT, MT_DATA);
-#if 0
- DPRINTF(("%s: after MGETHDR\n", __func__));
-#endif
if (m == NULL) {
DPRINTF(("%s: MGETHDR failed\n", __func__));
if_statinc(ifp, if_ierrors);
goto skip;
}
-#if 0
- DPRINTF(("%s: before MCLGET\n", __func__));
-#endif
MCLGET(m, M_DONTWAIT);
if ((m->m_flags & M_EXT) == 0)
break;
-#if 0
- DPRINTF(("%s: after MCLGET\n", __func__));
-#endif
-#endif
-#endif
-#if 1
m->m_len = m->m_pkthdr.len = desc.nbytes;
-#endif
nbytes = roundup(desc.nbytes + VNET_ETHER_ALIGN, 8);
-#if 0
- DPRINTF(("%s: RX frame size %" PRId16 "\n",
- __func__, (int)nbytes));
- uint8_t buf[ETHER_MAX_LEN];
- pmap_extract(pmap_kernel(), (vaddr_t)buf, &pa);
- err = hv_ldc_copy(lc->lc_id, LDC_COPY_IN,
- desc.cookie[0].addr, pa, nbytes, &nbytes);
- if (err != H_EOK) {
- //m_freem(m);
- goto skip;
- }
- for (int i = 0; i < desc.nbytes; i++) {
- if (i % 16 == 0) {
- DPRINTF(("\n"));
- }
- DPRINTF(("%02x ", buf[i]));
- }
- DPRINTF(("\n"));
- DPRINTF(("\n"));
-#endif
-#if 1
+
pmap_extract(pmap_kernel(), (vaddr_t)m->m_data, &pa);
err = hv_ldc_copy(lc->lc_id, LDC_COPY_IN,
desc.cookie[0].addr, pa, nbytes, &nbytes);
@@ -1222,19 +895,7 @@ FIXME openbsd
m->m_data += VNET_ETHER_ALIGN;
m_set_rcvif(m, ifp);
-#if 0
-FIXME openbsd
- ml_enqueue(&ml, m);
-#else
-#if 0
- DPRINTF(("%s: before if_percpuq_enqueue\n", __func__));
-#endif
if_percpuq_enqueue(ifp->if_percpuq, m);
-#if 0
- DPRINTF(("%s: after if_percpuq_enqueue\n", __func__));
-#endif
-#endif
-#endif
skip:
desc.hdr.dstate = VIO_DESC_DONE;
@@ -1248,12 +909,6 @@ FIXME openbsd
if (++idx == sc->sc_peer_dring_nentries)
idx = 0;
}
-#if 0
-FIXME openbd
- if_input(ifp, &ml);
-#else
-// FIXME??? printf("vnet_rx_vio_dring_data() ignoring if_input - FIXME\n");
-#endif
if (ack_end_idx == -1) {
dm->tag.stype = VIO_SUBTYPE_NACK;
@@ -1269,9 +924,7 @@ FIXME openbd
case VIO_SUBTYPE_ACK:
{
-#if 0
DPRINTF(("%s: VIO_SUBTYPE_ACK\n", __func__));
-#endif
struct ldc_map *map = sc->sc_lm;
u_int cons, count;
@@ -1280,12 +933,7 @@ FIXME openbd
cons = sc->sc_tx_cons & (sc->sc_vd->vd_nentries - 1);
while (sc->sc_vd->vd_desc[cons].hdr.dstate == VIO_DESC_DONE) {
map->lm_slot[sc->sc_vsd[cons].vsd_map_idx].entry = 0;
-#if 0
-FIXME openbsd
- atomic_dec_int(&map->lm_count);
-#else
- map->lm_count--;
-#endif
+ atomic_dec_32(&map->lm_count);
pool_put(&sc->sc_pool, sc->sc_vsd[cons].vsd_buf);
sc->sc_vsd[cons].vsd_buf = NULL;
@@ -1299,29 +947,14 @@ FIXME openbsd
if (count > 0 && sc->sc_peer_state != VIO_DP_ACTIVE)
vnet_send_dring_data(sc, cons);
-#if 0
-FIXME openbsd
- KERNEL_LOCK();
-#else
KERNEL_LOCK(1, curlwp);
-#endif
if (count < (sc->sc_vd->vd_nentries - 1))
-#if 0
-FIXME openbsd
- ifq_clr_oactive(&ifp->if_snd);
-#else
ifp->if_flags &= ~IFF_OACTIVE;
-#endif
if (count == 0)
ifp->if_timer = 0;
vnet_start(ifp);
-#if 0
-FIXME openbsd
- KERNEL_UNLOCK();
-#else
KERNEL_UNLOCK_ONE(curlwp);
-#endif
break;
}
@@ -1340,16 +973,10 @@ void
vnet_ldc_reset(struct ldc_conn *lc)
{
- DPRINTF(("%s: entry\n", __func__));
-
struct vnet_softc *sc = lc->lc_sc;
int i;
-#if 0
-FIXME openbsd
- timeout_del(&sc->sc_handshake_to);
-#else
+
callout_stop(&sc->sc_handshake_co);
-#endif
sc->sc_tx_prod = sc->sc_tx_cons = 0;
sc->sc_peer_state = VIO_DP_STOPPED;
sc->sc_vio_state = 0;
@@ -1372,26 +999,14 @@ FIXME openbsd
void
vnet_ldc_start(struct ldc_conn *lc)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
-
struct vnet_softc *sc = lc->lc_sc;
-#if 0
-FIXME openbsd
- timeout_del(&sc->sc_handshake_to);
-#else
callout_stop(&sc->sc_handshake_co);
-#endif
vnet_send_ver_info(sc, VNET_MAJOR, VNET_MINOR);
}
void
vnet_sendmsg(struct vnet_softc *sc, void *msg, size_t len)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
struct ldc_conn *lc = &sc->sc_lc;
int err;
@@ -1403,9 +1018,6 @@ vnet_sendmsg(struct vnet_softc *sc, void
void
vnet_send_ver_info(struct vnet_softc *sc, uint16_t major, uint16_t minor)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
struct vio_ver_info vi;
bzero(&vi, sizeof(vi));
@@ -1424,9 +1036,6 @@ vnet_send_ver_info(struct vnet_softc *sc
void
vnet_send_attr_info(struct vnet_softc *sc)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
struct vnet_attr_info ai;
int i;
@@ -1444,12 +1053,6 @@ vnet_send_attr_info(struct vnet_softc *s
ai.addr |= sc->sc_macaddr[i];
}
ai.mtu = ETHER_MAX_LEN - ETHER_CRC_LEN;
-#if 0
- DPRINTF(("%s: ai.addr %" PRIx64 "\n",
- __func__, ai.addr));
- DPRINTF(("%s: ai.mtu %" PRId64 "\n",
- __func__, ai.mtu));
-#endif
vnet_sendmsg(sc, &ai, sizeof(ai));
sc->sc_vio_state |= VIO_SND_ATTR_INFO;
@@ -1458,10 +1061,6 @@ vnet_send_attr_info(struct vnet_softc *s
void
vnet_send_dring_reg(struct vnet_softc *sc)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
-
struct vio_dring_reg dr;
bzero(&dr, sizeof(dr));
@@ -1484,9 +1083,6 @@ vnet_send_dring_reg(struct vnet_softc *s
void
vio_send_rdx(struct vnet_softc *sc)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
struct vio_msg_tag tag;
tag.type = VIO_TYPE_CTRL;
@@ -1501,9 +1097,6 @@ vio_send_rdx(struct vnet_softc *sc)
void
vnet_send_dring_data(struct vnet_softc *sc, uint32_t start_idx)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
struct vio_dring_msg dm;
u_int peer_state;
@@ -1519,25 +1112,15 @@ vnet_send_dring_data(struct vnet_softc *
dm.tag.stype_env = VIO_DRING_DATA;
dm.tag.sid = sc->sc_local_sid;
dm.seq_no = sc->sc_seq_no++;
-#if 0
- DPRINTF(("%s: dm.seq_no %" PRId64 "\n",
- __func__, dm.seq_no));
-#endif
dm.dring_ident = sc->sc_dring_ident;
dm.start_idx = start_idx;
dm.end_idx = -1;
vnet_sendmsg(sc, &dm, sizeof(dm));
-#if 0
- DPRINTF(("%s: exit\n", __func__));
-#endif
}
void
vnet_start(struct ifnet *ifp)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
struct vnet_softc *sc = ifp->if_softc;
struct ldc_conn *lc = &sc->sc_lc;
struct ldc_map *map = sc->sc_lm;
@@ -1547,11 +1130,6 @@ vnet_start(struct ifnet *ifp)
uint64_t tx_head, tx_tail, tx_state;
u_int start, prod, count;
int err;
-#if 0
-FIXME openbsd
- if (!(ifp->if_flags & IFF_RUNNING) || ifq_is_oactive(&ifp->if_snd))
- return;
-#else
if (!(ifp->if_flags & IFF_RUNNING))
{
DPRINTF(("%s: not in RUNNING state\n", __func__));
@@ -1562,23 +1140,13 @@ FIXME openbsd
DPRINTF(("%s: already active\n", __func__));
return;
}
-#endif
-#if 0
-FIXME openbsd
- if (ifq_empty(&ifp->if_snd))
-#else
if (IFQ_IS_EMPTY(&ifp->if_snd))
-#endif
{
-#if 0
DPRINTF(("%s: queue is empty\n", __func__));
-#endif
return;
} else {
-#if 0
DPRINTF(("%s: queue size %d\n", __func__, ifp->if_snd.ifq_len));
-#endif
}
/*
@@ -1588,9 +1156,7 @@ FIXME openbsd
if (!ISSET(sc->sc_vio_state, VIO_RCV_RDX) ||
!ISSET(sc->sc_vio_state, VIO_ACK_RDX))
{
-#if 0
DPRINTF(("%s: vio connection not established yet\n", __func__));
-#endif
return;
}
@@ -1606,12 +1172,7 @@ FIXME openbsd
tx_tail += sizeof(struct ldc_pkt);
tx_tail &= ((lc->lc_txq->lq_nentries * sizeof(struct ldc_pkt)) - 1);
if (tx_tail == tx_head) {
-#if 0
-FIXME openbsd
- ifq_set_oactive(&ifp->if_snd);
-#else
ifp->if_flags |= IFF_OACTIVE;
-#endif
{
DPRINTF(("%s: tail equals head\n", __func__));
return;
@@ -1627,75 +1188,27 @@ FIXME openbsd
start = prod = sc->sc_tx_prod & (sc->sc_vd->vd_nentries - 1);
while (sc->sc_vd->vd_desc[prod].hdr.dstate == VIO_DESC_FREE) {
count = sc->sc_tx_prod - sc->sc_tx_cons;
-#if 0
- DPRINTF(("%s: count %d\n", __func__, count));
-#endif
if (count >= (sc->sc_vd->vd_nentries - 1) ||
map->lm_count >= map->lm_nentries) {
DPRINTF(("%s: count issue\n", __func__));
-#if 0
-FIXME openbsd
- ifq_set_oactive(&ifp->if_snd);
-#else
ifp->if_flags |= IFF_OACTIVE;
-#endif
break;
}
buf = pool_get(&sc->sc_pool, PR_NOWAIT|PR_ZERO);
if (buf == NULL) {
DPRINTF(("%s: buff is NULL\n", __func__));
-#if 0
-FIXME openbsd
- ifq_set_oactive(&ifp->if_snd);
-#else
ifp->if_flags |= IFF_OACTIVE;
-#endif
break;
}
-#if 0
-FIXME openbsd
- m = ifq_dequeue(&ifp->if_snd);
-#else
IFQ_DEQUEUE(&ifp->if_snd, m);
-#endif
if (m == NULL) {
-#if 0
- DPRINTF(("%s: m is NULL\n", __func__));
-#endif
pool_put(&sc->sc_pool, buf);
break;
- } else {
-#if 0
- DPRINTF(("%s: m is not NULL\n", __func__));
-#endif
}
-#if 1
m_copydata(m, 0, m->m_pkthdr.len, buf + VNET_ETHER_ALIGN);
-#if 0
- DPRINTF(("%s: TX frame size %" PRId16 "\n",
- __func__, m->m_pkthdr.len));
- for (int i = 0; i < m->m_pkthdr.len; i++) {
- if (i % 16 == 0) {
- DPRINTF(("\n"));
- }
- DPRINTF(("%02x ", buf[VNET_ETHER_ALIGN+i]));
- }
- DPRINTF(("\n"));
-#endif
-#else
- m_copydata(m, 0, m->m_pkthdr.len, buf);
- DPRINTF(("%s: TX frame size %" PRId16 "\n",
- __func__, m->m_pkthdr.len));
- for (int i = 0; i < m->m_pkthdr.len; i++) {
- if (i % 16 == 0) {
- DPRINTF(("\n"));
- }
- DPRINTF(("%02x ", buf[i]));
- }
- DPRINTF(("\n"));
-#endif
+
#if NBPFILTER > 0
/*
* If BPF is listening on this interface, let it see the
@@ -1717,18 +1230,8 @@ FIXME openbsd
}
map->lm_slot[map->lm_next].entry = (pa & LDC_MTE_RA_MASK);
map->lm_slot[map->lm_next].entry |= LDC_MTE_CPR;
-#if 0
-FIXME openbsd
- atomic_inc_int(&map->lm_count);
-#else
- map->lm_count++;
-#endif
-#if 0
-FIXME openbsd
- sc->sc_vd->vd_desc[prod].nbytes = max(m->m_pkthdr.len, 60);
-#else
+ atomic_inc_32(&map->lm_count);
sc->sc_vd->vd_desc[prod].nbytes = MAX(m->m_pkthdr.len, 60);
-#endif
sc->sc_vd->vd_desc[prod].ncookies = 1;
sc->sc_vd->vd_desc[prod].cookie[0].addr =
map->lm_next << PAGE_SHIFT | (pa & PAGE_MASK);
@@ -1748,26 +1251,15 @@ FIXME openbsd
membar_producer();
if (start != prod && sc->sc_peer_state != VIO_DP_ACTIVE) {
-#if 0
- DPRINTF(("%s: before vnet_send_dring_data()\n", __func__));
-#endif
vnet_send_dring_data(sc, start);
ifp->if_timer = 5;
- } else {
- DPRINTF(("%s: no vnet_send_dring_data()\n", __func__));
}
-#if 0
- DPRINTF(("%s: exit\n", __func__));
-#endif
}
void
vnet_start_desc(struct ifnet *ifp)
{
-
- DPRINTF(("%s: entry\n", __func__));
-
struct vnet_softc *sc = ifp->if_softc;
struct ldc_map *map = sc->sc_lm;
struct vnet_desc_msg dm;
@@ -1780,32 +1272,17 @@ vnet_start_desc(struct ifnet *ifp)
count = sc->sc_tx_prod - sc->sc_tx_cons;
if (count >= (sc->sc_vd->vd_nentries - 1) ||
map->lm_count >= map->lm_nentries) {
-#if 0
-FIXME openbsd
- ifq_set_oactive(&ifp->if_snd);
-#else
ifp->if_flags |= IFF_OACTIVE;
-#endif
return;
}
buf = pool_get(&sc->sc_pool, PR_NOWAIT|PR_ZERO);
if (buf == NULL) {
-#if 0
-FIXME openbsd
- ifq_set_oactive(&ifp->if_snd);
-#else
ifp->if_flags |= IFF_OACTIVE;
-#endif
return;
}
-#if 0
-FIXME openbsd
- m = ifq_dequeue(&ifp->if_snd);
-#else
IFQ_DEQUEUE(&ifp->if_snd, m);
-#endif
if (m == NULL) {
pool_put(&sc->sc_pool, buf);
@@ -1831,12 +1308,7 @@ FIXME openbsd
}
map->lm_slot[map->lm_next].entry = (pa & LDC_MTE_RA_MASK);
map->lm_slot[map->lm_next].entry |= LDC_MTE_CPR;
-#if 0
-FIXME openbsd
- atomic_inc_int(&map->lm_count);
-#else
- map->lm_count++;
-#endif
+ atomic_inc_32(&map->lm_count);
prod = sc->sc_tx_prod & (sc->sc_vd->vd_nentries - 1);
sc->sc_vsd[prod].vsd_map_idx = map->lm_next;
@@ -1849,12 +1321,7 @@ FIXME openbsd
dm.tag.sid = sc->sc_local_sid;
dm.seq_no = sc->sc_seq_no++;
dm.desc_handle = sc->sc_tx_prod;
-#if 0
-FIXME openbsd
- dm.nbytes = max(m->m_pkthdr.len, 60);
-#else
dm.nbytes = MAX(m->m_pkthdr.len, 60);
-#endif
dm.ncookies = 1;
dm.cookie[0].addr =
map->lm_next << PAGE_SHIFT | (pa & PAGE_MASK);
@@ -1871,9 +1338,6 @@ FIXME openbsd
int
vnet_ioctl(struct ifnet *ifp, u_long cmd, void* data)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
struct vnet_softc *sc = ifp->if_softc;
struct ifreq *ifr = (struct ifreq *)data;
int s, error = 0;
@@ -1926,8 +1390,6 @@ void
vnet_watchdog(struct ifnet *ifp)
{
- DPRINTF(("%s: entry\n", __func__));
-
struct vnet_softc *sc = ifp->if_softc;
printf("%s: watchdog timeout\n", sc->sc_dv.dv_xname);
@@ -1936,28 +1398,15 @@ vnet_watchdog(struct ifnet *ifp)
int
vnet_media_change(struct ifnet *ifp)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
-
return (0);
}
void
vnet_media_status(struct ifnet *ifp, struct ifmediareq *imr)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
-
imr->ifm_active = IFM_ETHER | IFM_AUTO;
imr->ifm_status = IFM_AVALID;
-#if 0
-FIXME openbsd
- if (LINK_STATE_IS_UP(ifp->if_link_state) &&
-#else
if (ifp->if_link_state == LINK_STATE_UP &&
-#endif
ifp->if_flags & IFF_UP)
imr->ifm_status |= IFM_ACTIVE;
}
@@ -1965,55 +1414,22 @@ FIXME openbsd
void
vnet_link_state(struct vnet_softc *sc)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
-
-#if 0
-FIXME openbsd
- struct ifnet *ifp = &sc->sc_ac.ac_if;
-#else
struct ifnet *ifp = &sc->sc_ethercom.ec_if;
-#endif
int link_state = LINK_STATE_DOWN;
-#if 0
-FIXME openbsd
- KERNEL_LOCK();
-#else
KERNEL_LOCK(1, curlwp);
-#endif
if (ISSET(sc->sc_vio_state, VIO_RCV_RDX) &&
ISSET(sc->sc_vio_state, VIO_ACK_RDX))
-#if 0
-FIXME openbsd
- link_state = LINK_STATE_FULL_DUPLEX;
-#else
link_state = LINK_STATE_UP;
-#endif
if (ifp->if_link_state != link_state) {
-#if 0
-FIXME openbsd
- ifp->if_link_state = link_state;
- if_link_state_change(ifp);
-#else
if_link_state_change(ifp, link_state);
-#endif
}
-#if 0
-FIXME openbsd
- KERNEL_UNLOCK();
-#else
KERNEL_UNLOCK_ONE(curlwp);
-#endif
}
void
vnet_setmulti(struct vnet_softc *sc, int set)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
struct ethercom *ec = &sc->sc_ethercom;
struct ether_multi *enm;
struct ether_multistep step;
@@ -2030,12 +1446,7 @@ vnet_setmulti(struct vnet_softc *sc, int
mi.tag.stype_env = VNET_MCAST_INFO;
mi.tag.sid = sc->sc_local_sid;
mi.set = set ? 1 : 0;
-#if 0
-FIXME openbsd
- KERNEL_LOCK();
-#else
KERNEL_LOCK(1, curlwp);
-#endif
ETHER_FIRST_MULTI(step, ec, enm);
while (enm != NULL) {
/* XXX What about multicast ranges? */
@@ -2055,45 +1466,27 @@ FIXME openbsd
mi.count = count;
vnet_sendmsg(sc, &mi, sizeof(mi));
}
-#if 0
-FIXME openbsd
- KERNEL_UNLOCK();
-#else
KERNEL_UNLOCK_ONE(curlwp);
-#endif
}
int
vnet_init(struct ifnet *ifp)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
-
struct vnet_softc *sc = ifp->if_softc;
struct ldc_conn *lc = &sc->sc_lc;
int err;
vaddr_t va;
paddr_t pa;
-#if OPENBSD_BUSDMA
- sc->sc_lm = ldc_map_alloc(sc->sc_dmatag, 2048);
-#else
sc->sc_lm = ldc_map_alloc(2048);
-#endif
if (sc->sc_lm == NULL)
return ENOMEM;
-#if OPENBSD_BUSDMA
- err = hv_ldc_set_map_table(lc->lc_id,
- sc->sc_lm->lm_map->dm_segs[0].ds_addr, sc->sc_lm->lm_nentries);
-#else
va = (vaddr_t)sc->sc_lm->lm_slot;
pa = 0;
if (pmap_extract(pmap_kernel(), va, &pa) == FALSE)
panic("pmap_extract failed %lx\n", va);
err = hv_ldc_set_map_table(lc->lc_id, pa, 2048);
-#endif
if (err != H_EOK) {
printf("hv_ldc_set_map_table %d\n", err);
return EINVAL;
@@ -2107,15 +1500,11 @@ vnet_init(struct ifnet *ifp)
if (sc->sc_vsd == NULL)
return ENOMEM;
-#if OPENBSD_BUSDMA
- sc->sc_lm->lm_slot[0].entry = sc->sc_vd->vd_map->dm_segs[0].ds_addr;
-#else
va = (vaddr_t)sc->sc_vd->vd_desc;
pa = 0;
if (pmap_extract(pmap_kernel(), va, &pa) == FALSE)
panic("pmap_extract failed %lx\n", va);
sc->sc_lm->lm_slot[0].entry = pa;
-#endif
sc->sc_lm->lm_slot[0].entry &= LDC_MTE_RA_MASK;
sc->sc_lm->lm_slot[0].entry |= LDC_MTE_CPR | LDC_MTE_CPW;
sc->sc_lm->lm_next = 1;
@@ -2125,12 +1514,7 @@ vnet_init(struct ifnet *ifp)
pa = 0;
if (pmap_extract(pmap_kernel(), va, &pa) == FALSE)
panic("pmap_extract failed %lx\n", va);
-#if OPENBSD_BUSDMA
- err = hv_ldc_tx_qconf(lc->lc_id,
- lc->lc_txq->lq_map->dm_segs[0].ds_addr, lc->lc_txq->lq_nentries);
-#else
err = hv_ldc_tx_qconf(lc->lc_id, pa, lc->lc_txq->lq_nentries);
-#endif
if (err != H_EOK)
printf("hv_ldc_tx_qconf %d\n", err);
@@ -2139,12 +1523,7 @@ vnet_init(struct ifnet *ifp)
if (pmap_extract(pmap_kernel(), va, &pa) == FALSE)
panic("pmap_extract failed %lx\n", va);
-#if OPENBSD_BUSDMA
- err = hv_ldc_rx_qconf(lc->lc_id,
- lc->lc_rxq->lq_map->dm_segs[0].ds_addr, lc->lc_rxq->lq_nentries);
-#else
err = hv_ldc_rx_qconf(lc->lc_id, pa, lc->lc_rxq->lq_nentries);
-#endif
if (err != H_EOK)
printf("hv_ldc_rx_qconf %d\n", err);
@@ -2155,9 +1534,6 @@ vnet_init(struct ifnet *ifp)
ifp->if_flags |= IFF_RUNNING;
-#if 0
- DPRINTF(("%s: exit\n", __func__));
-#endif
return 0;
}
@@ -2165,33 +1541,22 @@ void
vnet_stop(struct ifnet *ifp, int disable)
{
-
- DPRINTF(("%s: entry\n", __func__));
-
struct vnet_softc *sc = ifp->if_softc;
struct ldc_conn *lc = &sc->sc_lc;
- /* FIXME */
- printf("vnet_stop() disable %d\n", disable);
-
ifp->if_flags &= ~IFF_RUNNING;
-#if 0
-FIXME openbsd
- ifq_clr_oactive(&ifp->if_snd);
-#else
ifp->if_flags &= ~IFF_OACTIVE;
-#endif
ifp->if_timer = 0;
cbus_intr_setenabled(sc->sc_bustag, sc->sc_tx_ino, INTR_DISABLED);
cbus_intr_setenabled(sc->sc_bustag, sc->sc_rx_ino, INTR_DISABLED);
#if 0
-FIXME openbsd
+openbsd XXX
intr_barrier(sc->sc_tx_ih);
intr_barrier(sc->sc_rx_ih);
#else
- printf("vnet_stop() intr_barrier() FIXME\n");
+ printf("vnet_stop() intr_barrier() not available\n");
#endif
hv_ldc_tx_qconf(lc->lc_id, 0, 0);
@@ -2201,36 +1566,20 @@ FIXME openbsd
lc->lc_tx_state = lc->lc_rx_state = LDC_CHANNEL_DOWN;
vnet_ldc_reset(lc);
-#if 0
-FIXME openbsd
- free(sc->sc_vsd, M_DEVBUF, VNET_NUM_SOFT_DESC * sizeof(*sc->sc_vsd));
-#else
free(sc->sc_vsd, M_DEVBUF);
-#endif
vnet_dring_free(sc->sc_dmatag, sc->sc_vd);
hv_ldc_set_map_table(lc->lc_id, 0, 0);
-#if OPENBSD_BUSDMA
- ldc_map_free(sc->sc_dmatag, sc->sc_lm);
-#else
ldc_map_free(sc->sc_lm);
-#endif
}
struct vnet_dring *
vnet_dring_alloc(bus_dma_tag_t t, int nentries)
{
-#if 0
- DPRINTF(("%s: entry\n", __func__));
-#endif
-
struct vnet_dring *vd;
bus_size_t size;
vaddr_t va;
-#if OPENBSD_BUSDMA
- int nsegs;
-#endif
int i;
vd = kmem_zalloc(sizeof(struct vnet_dring), KM_SLEEP);
@@ -2239,25 +1588,7 @@ vnet_dring_alloc(bus_dma_tag_t t, int ne
size = roundup(nentries * sizeof(struct vnet_desc), PAGE_SIZE);
-#if OPENBSD_BUSDMA
- if (bus_dmamap_create(t, size, 1, size, 0,
- BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW, &vd->vd_map) != 0)
- return (NULL);
-
- if (bus_dmamem_alloc(t, size, PAGE_SIZE, 0, &vd->vd_seg, 1,
- &nsegs, BUS_DMA_NOWAIT) != 0)
- goto destroy;
-
- if (bus_dmamem_map(t, &vd->vd_seg, 1, size, &va,
- BUS_DMA_NOWAIT) != 0)
- goto free;
-
- if (bus_dmamap_load(t, vd->vd_map, va, size, NULL,
- BUS_DMA_NOWAIT) != 0)
- goto unmap;
-#else
va = (vaddr_t)kmem_zalloc(size, KM_SLEEP);
-#endif
vd->vd_desc = (struct vnet_desc *)va;
vd->vd_nentries = nentries;
bzero(vd->vd_desc, nentries * sizeof(struct vnet_desc));
@@ -2265,14 +1596,6 @@ vnet_dring_alloc(bus_dma_tag_t t, int ne
vd->vd_desc[i].hdr.dstate = VIO_DESC_FREE;
return (vd);
-#if OPENBSD_BUSDMA
-unmap:
- bus_dmamem_unmap(t, va, size);
-free:
- bus_dmamem_free(t, &vd->vd_seg, 1);
-destroy:
- bus_dmamap_destroy(t, vd->vd_map);
-#endif
return (NULL);
}
@@ -2280,21 +1603,12 @@ void
vnet_dring_free(bus_dma_tag_t t, struct vnet_dring *vd)
{
- DPRINTF(("%s: entry\n", __func__));
-
bus_size_t size;
size = vd->vd_nentries * sizeof(struct vnet_desc);
size = roundup(size, PAGE_SIZE);
-#if OPENBSD_BUSDMA
- bus_dmamap_unload(t, vd->vd_map);
- bus_dmamem_unmap(t, (caddr_t)vd->vd_desc, size);
- bus_dmamem_free(t, &vd->vd_seg, 1);
- bus_dmamap_destroy(t, vd->vd_map);
-#else
kmem_free(vd->vd_desc, size);
-#endif
kmem_free(vd, size);
}