提交 cda9046b 编写于 作者: M Mark McLoughlin

net: re-name vc->fd_read() to vc->receive()

VLANClientState's fd_read() handler doesn't read from file
descriptors, it adds a buffer to the client's receive queue.

Re-name the handlers to make things a little less confusing.
Signed-off-by: NMark McLoughlin <markmc@redhat.com>
上级 463af534
...@@ -409,7 +409,7 @@ static void do_transmit_packets(dp8393xState *s) ...@@ -409,7 +409,7 @@ static void do_transmit_packets(dp8393xState *s)
s->regs[SONIC_TCR] |= SONIC_TCR_CRSL; s->regs[SONIC_TCR] |= SONIC_TCR_CRSL;
if (s->vc->fd_can_read(s)) { if (s->vc->fd_can_read(s)) {
s->loopback_packet = 1; s->loopback_packet = 1;
s->vc->fd_read(s, s->tx_buffer, tx_len); s->vc->receive(s, s->tx_buffer, tx_len);
} }
} else { } else {
/* Transmit packet */ /* Transmit packet */
...@@ -725,7 +725,7 @@ static int receive_filter(dp8393xState *s, const uint8_t * buf, int size) ...@@ -725,7 +725,7 @@ static int receive_filter(dp8393xState *s, const uint8_t * buf, int size)
return -1; return -1;
} }
static void nic_receive(void *opaque, const uint8_t * buf, int size) static void nic_receive(void *opaque, const uint8_t * buf, size_t size)
{ {
uint16_t data[10]; uint16_t data[10];
dp8393xState *s = opaque; dp8393xState *s = opaque;
......
...@@ -600,7 +600,7 @@ e1000_can_receive(void *opaque) ...@@ -600,7 +600,7 @@ e1000_can_receive(void *opaque)
} }
static void static void
e1000_receive(void *opaque, const uint8_t *buf, int size) e1000_receive(void *opaque, const uint8_t *buf, size_t size)
{ {
E1000State *s = opaque; E1000State *s = opaque;
struct e1000_rx_desc desc; struct e1000_rx_desc desc;
...@@ -614,8 +614,8 @@ e1000_receive(void *opaque, const uint8_t *buf, int size) ...@@ -614,8 +614,8 @@ e1000_receive(void *opaque, const uint8_t *buf, int size)
return; return;
if (size > s->rxbuf_size) { if (size > s->rxbuf_size) {
DBGOUT(RX, "packet too large for buffers (%d > %d)\n", size, DBGOUT(RX, "packet too large for buffers (%lu > %d)\n",
s->rxbuf_size); (unsigned long)size, s->rxbuf_size);
return; return;
} }
......
...@@ -1441,7 +1441,7 @@ static int nic_can_receive(void *opaque) ...@@ -1441,7 +1441,7 @@ static int nic_can_receive(void *opaque)
//~ return !eepro100_buffer_full(s); //~ return !eepro100_buffer_full(s);
} }
static void nic_receive(void *opaque, const uint8_t * buf, int size) static void nic_receive(void *opaque, const uint8_t * buf, size_t size)
{ {
/* TODO: /* TODO:
* - Magic packets should set bit 30 in power management driver register. * - Magic packets should set bit 30 in power management driver register.
......
...@@ -501,7 +501,7 @@ static int eth_can_receive(void *opaque) ...@@ -501,7 +501,7 @@ static int eth_can_receive(void *opaque)
return 1; return 1;
} }
static void eth_receive(void *opaque, const uint8_t *buf, int size) static void eth_receive(void *opaque, const uint8_t *buf, size_t size)
{ {
unsigned char sa_bcast[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; unsigned char sa_bcast[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
struct fs_eth *eth = opaque; struct fs_eth *eth = opaque;
......
...@@ -353,7 +353,7 @@ static int mcf_fec_can_receive(void *opaque) ...@@ -353,7 +353,7 @@ static int mcf_fec_can_receive(void *opaque)
return s->rx_enabled; return s->rx_enabled;
} }
static void mcf_fec_receive(void *opaque, const uint8_t *buf, int size) static void mcf_fec_receive(void *opaque, const uint8_t *buf, size_t size)
{ {
mcf_fec_state *s = (mcf_fec_state *)opaque; mcf_fec_state *s = (mcf_fec_state *)opaque;
mcf_fec_bd bd; mcf_fec_bd bd;
......
...@@ -75,7 +75,7 @@ static int mipsnet_can_receive(void *opaque) ...@@ -75,7 +75,7 @@ static int mipsnet_can_receive(void *opaque)
return !mipsnet_buffer_full(s); return !mipsnet_buffer_full(s);
} }
static void mipsnet_receive(void *opaque, const uint8_t *buf, int size) static void mipsnet_receive(void *opaque, const uint8_t *buf, size_t size)
{ {
MIPSnetState *s = opaque; MIPSnetState *s = opaque;
......
...@@ -562,7 +562,7 @@ static int eth_can_receive(void *opaque) ...@@ -562,7 +562,7 @@ static int eth_can_receive(void *opaque)
return 1; return 1;
} }
static void eth_receive(void *opaque, const uint8_t *buf, int size) static void eth_receive(void *opaque, const uint8_t *buf, size_t size)
{ {
mv88w8618_eth_state *s = opaque; mv88w8618_eth_state *s = opaque;
uint32_t desc_addr; uint32_t desc_addr;
......
...@@ -224,7 +224,7 @@ static int ne2000_can_receive(void *opaque) ...@@ -224,7 +224,7 @@ static int ne2000_can_receive(void *opaque)
#define MIN_BUF_SIZE 60 #define MIN_BUF_SIZE 60
static void ne2000_receive(void *opaque, const uint8_t *buf, int size) static void ne2000_receive(void *opaque, const uint8_t *buf, size_t size)
{ {
NE2000State *s = opaque; NE2000State *s = opaque;
uint8_t *p; uint8_t *p;
......
...@@ -1076,7 +1076,7 @@ static int pcnet_can_receive(void *opaque) ...@@ -1076,7 +1076,7 @@ static int pcnet_can_receive(void *opaque)
#define MIN_BUF_SIZE 60 #define MIN_BUF_SIZE 60
static void pcnet_receive(void *opaque, const uint8_t *buf, int size) static void pcnet_receive(void *opaque, const uint8_t *buf, size_t size)
{ {
PCNetState *s = opaque; PCNetState *s = opaque;
int is_padr = 0, is_bcast = 0, is_ladr = 0; int is_padr = 0, is_bcast = 0, is_ladr = 0;
......
...@@ -258,16 +258,16 @@ void qdev_connect_gpio_out(DeviceState * dev, int n, qemu_irq pin) ...@@ -258,16 +258,16 @@ void qdev_connect_gpio_out(DeviceState * dev, int n, qemu_irq pin)
} }
VLANClientState *qdev_get_vlan_client(DeviceState *dev, VLANClientState *qdev_get_vlan_client(DeviceState *dev,
IOCanRWHandler *fd_can_read, NetCanReceive *can_receive,
IOReadHandler *fd_read, NetReceive *receive,
IOReadvHandler *fd_readv, NetReceiveIOV *receive_iov,
NetCleanup *cleanup, NetCleanup *cleanup,
void *opaque) void *opaque)
{ {
NICInfo *nd = dev->nd; NICInfo *nd = dev->nd;
assert(nd); assert(nd);
return qemu_new_vlan_client(nd->vlan, nd->model, nd->name, fd_can_read, return qemu_new_vlan_client(nd->vlan, nd->model, nd->name, can_receive,
fd_read, fd_readv, cleanup, opaque); receive, receive_iov, cleanup, opaque);
} }
......
...@@ -1158,7 +1158,7 @@ static void rtl8139_do_receive(void *opaque, const uint8_t *buf, int size, int d ...@@ -1158,7 +1158,7 @@ static void rtl8139_do_receive(void *opaque, const uint8_t *buf, int size, int d
} }
} }
static void rtl8139_receive(void *opaque, const uint8_t *buf, int size) static void rtl8139_receive(void *opaque, const uint8_t *buf, size_t size)
{ {
rtl8139_do_receive(opaque, buf, size, 1); rtl8139_do_receive(opaque, buf, size, 1);
} }
......
...@@ -602,7 +602,7 @@ static int smc91c111_can_receive(void *opaque) ...@@ -602,7 +602,7 @@ static int smc91c111_can_receive(void *opaque)
return 1; return 1;
} }
static void smc91c111_receive(void *opaque, const uint8_t *buf, int size) static void smc91c111_receive(void *opaque, const uint8_t *buf, size_t size)
{ {
smc91c111_state *s = (smc91c111_state *)opaque; smc91c111_state *s = (smc91c111_state *)opaque;
int status; int status;
......
...@@ -78,7 +78,7 @@ static void stellaris_enet_update(stellaris_enet_state *s) ...@@ -78,7 +78,7 @@ static void stellaris_enet_update(stellaris_enet_state *s)
} }
/* TODO: Implement MAC address filtering. */ /* TODO: Implement MAC address filtering. */
static void stellaris_enet_receive(void *opaque, const uint8_t *buf, int size) static void stellaris_enet_receive(void *opaque, const uint8_t *buf, size_t size)
{ {
stellaris_enet_state *s = (stellaris_enet_state *)opaque; stellaris_enet_state *s = (stellaris_enet_state *)opaque;
int n; int n;
......
...@@ -1369,7 +1369,7 @@ static int usb_net_handle_data(USBDevice *dev, USBPacket *p) ...@@ -1369,7 +1369,7 @@ static int usb_net_handle_data(USBDevice *dev, USBPacket *p)
return ret; return ret;
} }
static void usbnet_receive(void *opaque, const uint8_t *buf, int size) static void usbnet_receive(void *opaque, const uint8_t *buf, size_t size)
{ {
USBNetState *s = opaque; USBNetState *s = opaque;
struct rndis_packet_msg_type *msg; struct rndis_packet_msg_type *msg;
......
...@@ -361,7 +361,7 @@ static int receive_filter(VirtIONet *n, const uint8_t *buf, int size) ...@@ -361,7 +361,7 @@ static int receive_filter(VirtIONet *n, const uint8_t *buf, int size)
return 0; return 0;
} }
static void virtio_net_receive(void *opaque, const uint8_t *buf, int size) static void virtio_net_receive(void *opaque, const uint8_t *buf, size_t size)
{ {
VirtIONet *n = opaque; VirtIONet *n = opaque;
struct virtio_net_hdr_mrg_rxbuf *mhdr = NULL; struct virtio_net_hdr_mrg_rxbuf *mhdr = NULL;
......
...@@ -243,7 +243,7 @@ static int net_rx_ok(void *opaque) ...@@ -243,7 +243,7 @@ static int net_rx_ok(void *opaque)
return 1; return 1;
} }
static void net_rx_packet(void *opaque, const uint8_t *buf, int size) static void net_rx_packet(void *opaque, const uint8_t *buf, size_t size)
{ {
struct XenNetDev *netdev = opaque; struct XenNetDev *netdev = opaque;
netif_rx_request_t rxreq; netif_rx_request_t rxreq;
...@@ -262,8 +262,8 @@ static void net_rx_packet(void *opaque, const uint8_t *buf, int size) ...@@ -262,8 +262,8 @@ static void net_rx_packet(void *opaque, const uint8_t *buf, int size)
return; return;
} }
if (size > XC_PAGE_SIZE - NET_IP_ALIGN) { if (size > XC_PAGE_SIZE - NET_IP_ALIGN) {
xen_be_printf(&netdev->xendev, 0, "packet too big (%d > %ld)", xen_be_printf(&netdev->xendev, 0, "packet too big (%lu > %ld)",
size, XC_PAGE_SIZE - NET_IP_ALIGN); (unsigned long)size, XC_PAGE_SIZE - NET_IP_ALIGN);
return; return;
} }
......
...@@ -332,9 +332,9 @@ static char *assign_name(VLANClientState *vc1, const char *model) ...@@ -332,9 +332,9 @@ static char *assign_name(VLANClientState *vc1, const char *model)
VLANClientState *qemu_new_vlan_client(VLANState *vlan, VLANClientState *qemu_new_vlan_client(VLANState *vlan,
const char *model, const char *model,
const char *name, const char *name,
IOCanRWHandler *fd_can_read, NetCanReceive *can_receive,
IOReadHandler *fd_read, NetReceive *receive,
IOReadvHandler *fd_readv, NetReceiveIOV *receive_iov,
NetCleanup *cleanup, NetCleanup *cleanup,
void *opaque) void *opaque)
{ {
...@@ -345,9 +345,9 @@ VLANClientState *qemu_new_vlan_client(VLANState *vlan, ...@@ -345,9 +345,9 @@ VLANClientState *qemu_new_vlan_client(VLANState *vlan,
vc->name = strdup(name); vc->name = strdup(name);
else else
vc->name = assign_name(vc, model); vc->name = assign_name(vc, model);
vc->fd_can_read = fd_can_read; vc->can_receive = can_receive;
vc->fd_read = fd_read; vc->receive = receive;
vc->fd_readv = fd_readv; vc->receive_iov = receive_iov;
vc->cleanup = cleanup; vc->cleanup = cleanup;
vc->opaque = opaque; vc->opaque = opaque;
vc->vlan = vlan; vc->vlan = vlan;
...@@ -401,8 +401,8 @@ int qemu_can_send_packet(VLANClientState *sender) ...@@ -401,8 +401,8 @@ int qemu_can_send_packet(VLANClientState *sender)
continue; continue;
} }
/* no fd_can_read() handler, they can always receive */ /* no can_receive() handler, they can always receive */
if (!vc->fd_can_read || vc->fd_can_read(vc->opaque)) { if (!vc->can_receive || vc->can_receive(vc->opaque)) {
return 1; return 1;
} }
} }
...@@ -416,7 +416,7 @@ qemu_deliver_packet(VLANClientState *sender, const uint8_t *buf, int size) ...@@ -416,7 +416,7 @@ qemu_deliver_packet(VLANClientState *sender, const uint8_t *buf, int size)
for (vc = sender->vlan->first_client; vc != NULL; vc = vc->next) { for (vc = sender->vlan->first_client; vc != NULL; vc = vc->next) {
if (vc != sender && !vc->link_down) { if (vc != sender && !vc->link_down) {
vc->fd_read(vc->opaque, buf, size); vc->receive(vc->opaque, buf, size);
} }
} }
} }
...@@ -467,7 +467,7 @@ static ssize_t vc_sendv_compat(VLANClientState *vc, const struct iovec *iov, ...@@ -467,7 +467,7 @@ static ssize_t vc_sendv_compat(VLANClientState *vc, const struct iovec *iov,
offset += len; offset += len;
} }
vc->fd_read(vc->opaque, buffer, offset); vc->receive(vc->opaque, buffer, offset);
return offset; return offset;
} }
...@@ -519,9 +519,9 @@ ssize_t qemu_sendv_packet(VLANClientState *sender, const struct iovec *iov, ...@@ -519,9 +519,9 @@ ssize_t qemu_sendv_packet(VLANClientState *sender, const struct iovec *iov,
} }
if (vc->link_down) { if (vc->link_down) {
len = calc_iov_length(iov, iovcnt); len = calc_iov_length(iov, iovcnt);
} else if (vc->fd_readv) { } else if (vc->receive_iov) {
len = vc->fd_readv(vc->opaque, iov, iovcnt); len = vc->receive_iov(vc->opaque, iov, iovcnt);
} else if (vc->fd_read) { } else if (vc->receive) {
len = vc_sendv_compat(vc, iov, iovcnt); len = vc_sendv_compat(vc, iov, iovcnt);
} }
max_len = MAX(max_len, len); max_len = MAX(max_len, len);
...@@ -593,7 +593,7 @@ int slirp_is_inited(void) ...@@ -593,7 +593,7 @@ int slirp_is_inited(void)
return slirp_inited; return slirp_inited;
} }
static void slirp_receive(void *opaque, const uint8_t *buf, int size) static void slirp_receive(void *opaque, const uint8_t *buf, size_t size)
{ {
#ifdef DEBUG_SLIRP #ifdef DEBUG_SLIRP
printf("slirp input:\n"); printf("slirp input:\n");
...@@ -945,7 +945,7 @@ static ssize_t tap_receive_iov(void *opaque, const struct iovec *iov, ...@@ -945,7 +945,7 @@ static ssize_t tap_receive_iov(void *opaque, const struct iovec *iov,
return len; return len;
} }
static void tap_receive(void *opaque, const uint8_t *buf, int size) static void tap_receive(void *opaque, const uint8_t *buf, size_t size)
{ {
TAPState *s = opaque; TAPState *s = opaque;
int ret; int ret;
...@@ -1380,7 +1380,7 @@ typedef struct NetSocketListenState { ...@@ -1380,7 +1380,7 @@ typedef struct NetSocketListenState {
} NetSocketListenState; } NetSocketListenState;
/* XXX: we consider we can send the whole packet without blocking */ /* XXX: we consider we can send the whole packet without blocking */
static void net_socket_receive(void *opaque, const uint8_t *buf, int size) static void net_socket_receive(void *opaque, const uint8_t *buf, size_t size)
{ {
NetSocketState *s = opaque; NetSocketState *s = opaque;
uint32_t len; uint32_t len;
...@@ -1390,7 +1390,7 @@ static void net_socket_receive(void *opaque, const uint8_t *buf, int size) ...@@ -1390,7 +1390,7 @@ static void net_socket_receive(void *opaque, const uint8_t *buf, int size)
send_all(s->fd, buf, size); send_all(s->fd, buf, size);
} }
static void net_socket_receive_dgram(void *opaque, const uint8_t *buf, int size) static void net_socket_receive_dgram(void *opaque, const uint8_t *buf, size_t size)
{ {
NetSocketState *s = opaque; NetSocketState *s = opaque;
sendto(s->fd, buf, size, 0, sendto(s->fd, buf, size, 0,
...@@ -1831,7 +1831,7 @@ struct pcap_sf_pkthdr { ...@@ -1831,7 +1831,7 @@ struct pcap_sf_pkthdr {
uint32_t len; uint32_t len;
}; };
static void dump_receive(void *opaque, const uint8_t *buf, int size) static void dump_receive(void *opaque, const uint8_t *buf, size_t size)
{ {
DumpState *s = opaque; DumpState *s = opaque;
struct pcap_sf_pkthdr hdr; struct pcap_sf_pkthdr hdr;
......
...@@ -5,19 +5,20 @@ ...@@ -5,19 +5,20 @@
/* VLANs support */ /* VLANs support */
typedef ssize_t (IOReadvHandler)(void *, const struct iovec *, int);
typedef struct VLANClientState VLANClientState; typedef struct VLANClientState VLANClientState;
typedef int (NetCanReceive)(void *);
typedef void (NetReceive)(void *, const uint8_t *, size_t);
typedef ssize_t (NetReceiveIOV)(void *, const struct iovec *, int);
typedef void (NetCleanup) (VLANClientState *); typedef void (NetCleanup) (VLANClientState *);
typedef void (LinkStatusChanged)(VLANClientState *); typedef void (LinkStatusChanged)(VLANClientState *);
struct VLANClientState { struct VLANClientState {
IOReadHandler *fd_read; NetReceive *receive;
IOReadvHandler *fd_readv; NetReceiveIOV *receive_iov;
/* Packets may still be sent if this returns zero. It's used to /* Packets may still be sent if this returns zero. It's used to
rate-limit the slirp code. */ rate-limit the slirp code. */
IOCanRWHandler *fd_can_read; NetCanReceive *can_receive;
NetCleanup *cleanup; NetCleanup *cleanup;
LinkStatusChanged *link_status_changed; LinkStatusChanged *link_status_changed;
int link_down; int link_down;
...@@ -51,9 +52,9 @@ VLANState *qemu_find_vlan(int id); ...@@ -51,9 +52,9 @@ VLANState *qemu_find_vlan(int id);
VLANClientState *qemu_new_vlan_client(VLANState *vlan, VLANClientState *qemu_new_vlan_client(VLANState *vlan,
const char *model, const char *model,
const char *name, const char *name,
IOCanRWHandler *fd_can_read, NetCanReceive *can_receive,
IOReadHandler *fd_read, NetReceive *receive,
IOReadvHandler *fd_readv, NetReceiveIOV *receive_iov,
NetCleanup *cleanup, NetCleanup *cleanup,
void *opaque); void *opaque);
void qemu_del_vlan_client(VLANClientState *vc); void qemu_del_vlan_client(VLANClientState *vc);
...@@ -130,9 +131,9 @@ void net_host_device_remove(Monitor *mon, int vlan_id, const char *device); ...@@ -130,9 +131,9 @@ void net_host_device_remove(Monitor *mon, int vlan_id, const char *device);
void qdev_get_macaddr(DeviceState *dev, uint8_t *macaddr); void qdev_get_macaddr(DeviceState *dev, uint8_t *macaddr);
VLANClientState *qdev_get_vlan_client(DeviceState *dev, VLANClientState *qdev_get_vlan_client(DeviceState *dev,
IOCanRWHandler *fd_can_read, NetCanReceive *can_receive,
IOReadHandler *fd_read, NetReceive *receive,
IOReadvHandler *fd_readv, NetReceiveIOV *receive_iov,
NetCleanup *cleanup, NetCleanup *cleanup,
void *opaque); void *opaque);
......
...@@ -131,7 +131,7 @@ static void qemu_announce_self_once(void *opaque) ...@@ -131,7 +131,7 @@ static void qemu_announce_self_once(void *opaque)
len = announce_self_create(buf, nd_table[i].macaddr); len = announce_self_create(buf, nd_table[i].macaddr);
vlan = nd_table[i].vlan; vlan = nd_table[i].vlan;
for(vc = vlan->first_client; vc != NULL; vc = vc->next) { for(vc = vlan->first_client; vc != NULL; vc = vc->next) {
vc->fd_read(vc->opaque, buf, len); vc->receive(vc->opaque, buf, len);
} }
} }
if (count--) { if (count--) {
......
...@@ -650,7 +650,7 @@ static void tap_cleanup(VLANClientState *vc) ...@@ -650,7 +650,7 @@ static void tap_cleanup(VLANClientState *vc)
qemu_free(s); qemu_free(s);
} }
static void tap_receive(void *opaque, const uint8_t *buf, int size) static void tap_receive(void *opaque, const uint8_t *buf, size_t size)
{ {
TAPState *s = opaque; TAPState *s = opaque;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册