Lines Matching +full:s390 +full:- +full:ccw
2 * Virtio-net driver for the s390-ccw firmware
20 #include "s390-ccw.h"
22 #include "s390-time.h"
50 VRing *rxvq = &vdev->vrings[VQ_RX]; in virtio_net_init()
56 vdev->guest_features[0] = VIRTIO_NET_F_MAC_BIT; in virtio_net_init()
59 if (!(vdev->guest_features[0] & VIRTIO_NET_F_MAC_BIT)) { in virtio_net_init()
60 puts("virtio-net device does not support the MAC address feature"); in virtio_net_init()
61 return -1; in virtio_net_init()
64 memcpy(mac_addr, vdev->config.net.mac, ETH_ALEN); in virtio_net_init()
81 VRing *txvq = &vdev->vrings[VQ_TX]; in send()
83 /* Set up header - we do not use anything special, so simply clear it */ in send()
91 if (drain_irqs(txvq->schid)) { in send()
93 return -1; in send()
102 VRing *rxvq = &vdev->vrings[VQ_RX]; in recv()
106 if (rx_last_idx == rxvq->used->idx) { in recv()
110 len = rxvq->used->ring[rx_last_idx % rxvq->num].len - sizeof(VirtioNetHdr); in recv()
112 puts("virtio-net: Receive buffer too small"); in recv()
115 id = rxvq->used->ring[rx_last_idx % rxvq->num].id % rxvq->num; in recv()
116 pkt = (uint8_t *)(rxvq->desc[id].addr + sizeof(VirtioNetHdr)); in recv()
120 printf("\nbuf %p: len=%i\n", (void *)rxvq->desc[id].addr, len); in recv()
134 rxvq->avail->ring[rxvq->avail->idx % rxvq->num] = id; in recv()
135 rxvq->avail->idx = rxvq->avail->idx + 1; in recv()