net: merge qemu_deliver_packet and qemu_deliver_packet_iov
qemu_deliver_packet_iov already have the compat delivery, we can drop qemu_deliver_packet. Signed-off-by: Yang Hongyang <yanghy@cn.fujitsu.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
e64c770d1f
commit
fefe2a78ab
@ -152,11 +152,6 @@ void qemu_check_nic_model(NICInfo *nd, const char *model);
|
||||
int qemu_find_nic_model(NICInfo *nd, const char * const *models,
|
||||
const char *default_model);
|
||||
|
||||
ssize_t qemu_deliver_packet(NetClientState *sender,
|
||||
unsigned flags,
|
||||
const uint8_t *data,
|
||||
size_t size,
|
||||
void *opaque);
|
||||
ssize_t qemu_deliver_packet_iov(NetClientState *sender,
|
||||
unsigned flags,
|
||||
const struct iovec *iov,
|
||||
|
51
net/net.c
51
net/net.c
@ -599,36 +599,6 @@ static ssize_t filter_receive(NetClientState *nc,
|
||||
return filter_receive_iov(nc, direction, sender, flags, &iov, 1, sent_cb);
|
||||
}
|
||||
|
||||
ssize_t qemu_deliver_packet(NetClientState *sender,
|
||||
unsigned flags,
|
||||
const uint8_t *data,
|
||||
size_t size,
|
||||
void *opaque)
|
||||
{
|
||||
NetClientState *nc = opaque;
|
||||
ssize_t ret;
|
||||
|
||||
if (nc->link_down) {
|
||||
return size;
|
||||
}
|
||||
|
||||
if (nc->receive_disabled) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (flags & QEMU_NET_PACKET_FLAG_RAW && nc->info->receive_raw) {
|
||||
ret = nc->info->receive_raw(nc, data, size);
|
||||
} else {
|
||||
ret = nc->info->receive(nc, data, size);
|
||||
}
|
||||
|
||||
if (ret == 0) {
|
||||
nc->receive_disabled = 1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void qemu_purge_queued_packets(NetClientState *nc)
|
||||
{
|
||||
if (!nc->peer) {
|
||||
@ -719,14 +689,25 @@ ssize_t qemu_send_packet_raw(NetClientState *nc, const uint8_t *buf, int size)
|
||||
}
|
||||
|
||||
static ssize_t nc_sendv_compat(NetClientState *nc, const struct iovec *iov,
|
||||
int iovcnt)
|
||||
int iovcnt, unsigned flags)
|
||||
{
|
||||
uint8_t buffer[NET_BUFSIZE];
|
||||
uint8_t buf[NET_BUFSIZE];
|
||||
uint8_t *buffer;
|
||||
size_t offset;
|
||||
|
||||
offset = iov_to_buf(iov, iovcnt, 0, buffer, sizeof(buffer));
|
||||
if (iovcnt == 1) {
|
||||
buffer = iov[0].iov_base;
|
||||
offset = iov[0].iov_len;
|
||||
} else {
|
||||
buffer = buf;
|
||||
offset = iov_to_buf(iov, iovcnt, 0, buffer, sizeof(buffer));
|
||||
}
|
||||
|
||||
return nc->info->receive(nc, buffer, offset);
|
||||
if (flags & QEMU_NET_PACKET_FLAG_RAW && nc->info->receive_raw) {
|
||||
return nc->info->receive_raw(nc, buffer, offset);
|
||||
} else {
|
||||
return nc->info->receive(nc, buffer, offset);
|
||||
}
|
||||
}
|
||||
|
||||
ssize_t qemu_deliver_packet_iov(NetClientState *sender,
|
||||
@ -749,7 +730,7 @@ ssize_t qemu_deliver_packet_iov(NetClientState *sender,
|
||||
if (nc->info->receive_iov) {
|
||||
ret = nc->info->receive_iov(nc, iov, iovcnt);
|
||||
} else {
|
||||
ret = nc_sendv_compat(nc, iov, iovcnt);
|
||||
ret = nc_sendv_compat(nc, iov, iovcnt, flags);
|
||||
}
|
||||
|
||||
if (ret == 0) {
|
||||
|
@ -152,9 +152,13 @@ static ssize_t qemu_net_queue_deliver(NetQueue *queue,
|
||||
size_t size)
|
||||
{
|
||||
ssize_t ret = -1;
|
||||
struct iovec iov = {
|
||||
.iov_base = (void *)data,
|
||||
.iov_len = size
|
||||
};
|
||||
|
||||
queue->delivering = 1;
|
||||
ret = qemu_deliver_packet(sender, flags, data, size, queue->opaque);
|
||||
ret = qemu_deliver_packet_iov(sender, flags, &iov, 1, queue->opaque);
|
||||
queue->delivering = 0;
|
||||
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user