Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/pci Name virtqueue index



details:   https://anonhg.NetBSD.org/src/rev/963deaf211f4
branches:  trunk
changeset: 341267:963deaf211f4
user:      ozaki-r <ozaki-r%NetBSD.org@localhost>
date:      Thu Oct 29 02:09:02 2015 +0000

description:
Name virtqueue index

diffstat:

 sys/dev/pci/if_vioif.c |  57 ++++++++++++++++++++++++++-----------------------
 1 files changed, 30 insertions(+), 27 deletions(-)

diffs (201 lines):

diff -r 7368dc813243 -r 963deaf211f4 sys/dev/pci/if_vioif.c
--- a/sys/dev/pci/if_vioif.c    Thu Oct 29 01:56:12 2015 +0000
+++ b/sys/dev/pci/if_vioif.c    Thu Oct 29 02:09:02 2015 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: if_vioif.c,v 1.18 2015/10/27 15:56:21 christos Exp $   */
+/*     $NetBSD: if_vioif.c,v 1.19 2015/10/29 02:09:02 ozaki-r Exp $    */
 
 /*
  * Copyright (c) 2010 Minoura Makoto.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_vioif.c,v 1.18 2015/10/27 15:56:21 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_vioif.c,v 1.19 2015/10/29 02:09:02 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_net_mpsafe.h"
@@ -181,6 +181,9 @@
 
        struct virtio_softc     *sc_virtio;
        struct virtqueue        sc_vq[3];
+#define VQ_RX  0
+#define VQ_TX  1
+#define VQ_CTRL        2
 
        uint8_t                 sc_mac[ETHER_ADDR_LEN];
        struct ethercom         sc_ethercom;
@@ -318,8 +321,8 @@
        intptr_t p;
        int rxqsize, txqsize;
 
-       rxqsize = vsc->sc_vqs[0].vq_num;
-       txqsize = vsc->sc_vqs[1].vq_num;
+       rxqsize = vsc->sc_vqs[VQ_RX].vq_num;
+       txqsize = vsc->sc_vqs[VQ_TX].vq_num;
 
        allocsize = sizeof(struct virtio_net_hdr) * rxqsize;
        allocsize += sizeof(struct virtio_net_hdr) * txqsize;
@@ -597,33 +600,33 @@
        /*
         * Allocating a virtqueue for Rx
         */
-       r = virtio_alloc_vq(vsc, &sc->sc_vq[0], 0,
+       r = virtio_alloc_vq(vsc, &sc->sc_vq[VQ_RX], 0,
            MCLBYTES+sizeof(struct virtio_net_hdr), 2, "rx");
        if (r != 0)
                goto err;
        vsc->sc_nvqs = 1;
-       sc->sc_vq[0].vq_done = vioif_rx_vq_done;
+       sc->sc_vq[VQ_RX].vq_done = vioif_rx_vq_done;
 
        /*
         * Allocating a virtqueue for Tx
         */
-       r = virtio_alloc_vq(vsc, &sc->sc_vq[1], 1,
+       r = virtio_alloc_vq(vsc, &sc->sc_vq[VQ_TX], 1,
            (sizeof(struct virtio_net_hdr) + (ETHER_MAX_LEN - ETHER_HDR_LEN)),
            VIRTIO_NET_TX_MAXNSEGS + 1, "tx");
        if (r != 0)
                goto err;
        vsc->sc_nvqs = 2;
-       sc->sc_vq[1].vq_done = vioif_tx_vq_done;
+       sc->sc_vq[VQ_TX].vq_done = vioif_tx_vq_done;
 
-       virtio_start_vq_intr(vsc, &sc->sc_vq[0]);
-       virtio_stop_vq_intr(vsc, &sc->sc_vq[1]); /* not urgent; do it later */
+       virtio_start_vq_intr(vsc, &sc->sc_vq[VQ_RX]);
+       virtio_stop_vq_intr(vsc, &sc->sc_vq[VQ_TX]); /* not urgent; do it later */
 
        if ((features & VIRTIO_NET_F_CTRL_VQ) &&
            (features & VIRTIO_NET_F_CTRL_RX)) {
                /*
                 * Allocating a virtqueue for control channel
                 */
-               r = virtio_alloc_vq(vsc, &sc->sc_vq[2], 2,
+               r = virtio_alloc_vq(vsc, &sc->sc_vq[VQ_CTRL], 2,
                    NBPG, 1, "control");
                if (r != 0) {
                        aprint_error_dev(self, "failed to allocate "
@@ -631,11 +634,11 @@
                        goto skip;
                }
 
-               sc->sc_vq[2].vq_done = vioif_ctrl_vq_done;
+               sc->sc_vq[VQ_CTRL].vq_done = vioif_ctrl_vq_done;
                cv_init(&sc->sc_ctrl_wait, "ctrl_vq");
                mutex_init(&sc->sc_ctrl_wait_lock, MUTEX_DEFAULT, IPL_NET);
                sc->sc_ctrl_inuse = FREE;
-               virtio_start_vq_intr(vsc, &sc->sc_vq[2]);
+               virtio_start_vq_intr(vsc, &sc->sc_vq[VQ_CTRL]);
                vsc->sc_nvqs = 3;
        }
 skip:
@@ -678,17 +681,17 @@
                mutex_obj_free(sc->sc_rx_lock);
 
        if (vsc->sc_nvqs == 3) {
-               virtio_free_vq(vsc, &sc->sc_vq[2]);
+               virtio_free_vq(vsc, &sc->sc_vq[VQ_CTRL]);
                cv_destroy(&sc->sc_ctrl_wait);
                mutex_destroy(&sc->sc_ctrl_wait_lock);
                vsc->sc_nvqs = 2;
        }
        if (vsc->sc_nvqs == 2) {
-               virtio_free_vq(vsc, &sc->sc_vq[1]);
+               virtio_free_vq(vsc, &sc->sc_vq[VQ_TX]);
                vsc->sc_nvqs = 1;
        }
        if (vsc->sc_nvqs == 1) {
-               virtio_free_vq(vsc, &sc->sc_vq[0]);
+               virtio_free_vq(vsc, &sc->sc_vq[VQ_RX]);
                vsc->sc_nvqs = 0;
        }
        vsc->sc_child = (void*)1;
@@ -767,10 +770,10 @@
 
        virtio_reinit_start(vsc);
        virtio_negotiate_features(vsc, vsc->sc_features);
-       virtio_start_vq_intr(vsc, &sc->sc_vq[0]);
-       virtio_stop_vq_intr(vsc, &sc->sc_vq[1]);
+       virtio_start_vq_intr(vsc, &sc->sc_vq[VQ_RX]);
+       virtio_stop_vq_intr(vsc, &sc->sc_vq[VQ_TX]);
        if (vsc->sc_nvqs >= 3)
-               virtio_start_vq_intr(vsc, &sc->sc_vq[2]);
+               virtio_start_vq_intr(vsc, &sc->sc_vq[VQ_CTRL]);
        virtio_reinit_end(vsc);
        vioif_updown(sc, false);
 }
@@ -780,7 +783,7 @@
 {
        struct vioif_softc *sc = ifp->if_softc;
        struct virtio_softc *vsc = sc->sc_virtio;
-       struct virtqueue *vq = &sc->sc_vq[1]; /* tx vq */
+       struct virtqueue *vq = &sc->sc_vq[VQ_TX];
        struct mbuf *m;
        int queued = 0, retry = 0;
 
@@ -892,7 +895,7 @@
        struct vioif_softc *sc = ifp->if_softc;
 
        if (ifp->if_flags & IFF_RUNNING)
-               vioif_tx_vq_done(&sc->sc_vq[1]);
+               vioif_tx_vq_done(&sc->sc_vq[VQ_TX]);
 }
 
 
@@ -951,7 +954,7 @@
 {
        struct virtio_softc *vsc = sc->sc_virtio;
        int i, r, ndone = 0;
-       struct virtqueue *vq = &sc->sc_vq[0]; /* rx vq */
+       struct virtqueue *vq = &sc->sc_vq[VQ_RX];
 
        KASSERT(VIOIF_RX_LOCKED(sc));
 
@@ -1013,7 +1016,7 @@
 vioif_rx_deq_locked(struct vioif_softc *sc)
 {
        struct virtio_softc *vsc = sc->sc_virtio;
-       struct virtqueue *vq = &sc->sc_vq[0];
+       struct virtqueue *vq = &sc->sc_vq[VQ_RX];
        struct ifnet *ifp = &sc->sc_ethercom.ec_if;
        struct mbuf *m;
        int r = 0;
@@ -1094,7 +1097,7 @@
 static void
 vioif_rx_drain(struct vioif_softc *sc)
 {
-       struct virtqueue *vq = &sc->sc_vq[0];
+       struct virtqueue *vq = &sc->sc_vq[VQ_RX];
        int i;
 
        for (i = 0; i < vq->vq_num; i++) {
@@ -1171,7 +1174,7 @@
 vioif_tx_drain(struct vioif_softc *sc)
 {
        struct virtio_softc *vsc = sc->sc_virtio;
-       struct virtqueue *vq = &sc->sc_vq[1];
+       struct virtqueue *vq = &sc->sc_vq[VQ_TX];
        int i;
 
        KASSERT(sc->sc_stopping);
@@ -1193,7 +1196,7 @@
 vioif_ctrl_rx(struct vioif_softc *sc, int cmd, bool onoff)
 {
        struct virtio_softc *vsc = sc->sc_virtio;
-       struct virtqueue *vq = &sc->sc_vq[2];
+       struct virtqueue *vq = &sc->sc_vq[VQ_CTRL];
        int r, slot;
 
        if (vsc->sc_nvqs < 3)
@@ -1289,7 +1292,7 @@
 {
        /* filter already set in sc_ctrl_mac_tbl */
        struct virtio_softc *vsc = sc->sc_virtio;
-       struct virtqueue *vq = &sc->sc_vq[2];
+       struct virtqueue *vq = &sc->sc_vq[VQ_CTRL];
        int r, slot;
 
        if (vsc->sc_nvqs < 3)



Home | Main Index | Thread Index | Old Index