Lines Matching +full:len +full:- +full:or +full:- +full:define
2 * Virtio-net driver for the s390-ccw firmware
6 * This code is free software; you can redistribute it and/or modify it
8 * Free Software Foundation; either version 2 of the License, or (at your
20 #include "s390-ccw.h"
22 #include "s390-time.h"
26 #define DEBUG_VIRTIO_NET 0
29 #define VIRTIO_NET_F_MAC_BIT (1 << 5)
31 #define VQ_RX 0 /* Receive queue */
32 #define VQ_TX 1 /* Transmit queue */
41 /*uint16_t num_buffers;*/ /* Only with VIRTIO_NET_F_MRG_RXBUF or VIRTIO1 */
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()
77 int send(int fd, const void *buf, int len, int flags) in send() argument
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()
87 vring_send_buf(txvq, (void *)buf, len, VRING_HIDDEN_IS_CHAIN); in send()
91 if (drain_irqs(txvq->schid)) { in send()
93 return -1; in send()
96 return len; in send()
102 VRing *rxvq = &vdev->vrings[VQ_RX]; in recv()
103 int len, id; in recv() local
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()
111 if (len > maxlen) { in recv()
112 puts("virtio-net: Receive buffer too small"); in recv()
113 len = maxlen; 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()
131 memcpy(buf, pkt, 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()
141 return len; in recv()