pcnet: Drop pcnet_can_receive
pcnet_receive already checks the conditions and drop packets if false.
Due to the new semantics since 6e99c63
("net/socket: Drop
net_socket_can_send"), having .can_receive returning 0 requires us to
explicitly flush the queued packets when the conditions are becoming
true, but queuing the packets when guest driver is not ready doesn't
make much sense.
Signed-off-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Jason Wang <jasowang@redhat.com>
Message-id: 1436955553-22791-3-git-send-email-famz@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
8c8c460c5f
commit
b0ba0b9b6b
@ -94,7 +94,6 @@ static const MemoryRegionOps lance_mem_ops = {
|
||||
static NetClientInfo net_lance_info = {
|
||||
.type = NET_CLIENT_OPTIONS_KIND_NIC,
|
||||
.size = sizeof(NICState),
|
||||
.can_receive = pcnet_can_receive,
|
||||
.receive = pcnet_receive,
|
||||
.link_status_changed = pcnet_set_link_status,
|
||||
};
|
||||
|
@ -273,7 +273,6 @@ static void pci_pcnet_uninit(PCIDevice *dev)
|
||||
static NetClientInfo net_pci_pcnet_info = {
|
||||
.type = NET_CLIENT_OPTIONS_KIND_NIC,
|
||||
.size = sizeof(NICState),
|
||||
.can_receive = pcnet_can_receive,
|
||||
.receive = pcnet_receive,
|
||||
.link_status_changed = pcnet_set_link_status,
|
||||
};
|
||||
|
@ -995,15 +995,6 @@ static int pcnet_tdte_poll(PCNetState *s)
|
||||
return !!(CSR_CXST(s) & 0x8000);
|
||||
}
|
||||
|
||||
int pcnet_can_receive(NetClientState *nc)
|
||||
{
|
||||
PCNetState *s = qemu_get_nic_opaque(nc);
|
||||
if (CSR_STOP(s) || CSR_SPND(s))
|
||||
return 0;
|
||||
|
||||
return sizeof(s->buffer)-16;
|
||||
}
|
||||
|
||||
#define MIN_BUF_SIZE 60
|
||||
|
||||
ssize_t pcnet_receive(NetClientState *nc, const uint8_t *buf, size_t size_)
|
||||
|
@ -60,7 +60,6 @@ uint32_t pcnet_ioport_readw(void *opaque, uint32_t addr);
|
||||
void pcnet_ioport_writel(void *opaque, uint32_t addr, uint32_t val);
|
||||
uint32_t pcnet_ioport_readl(void *opaque, uint32_t addr);
|
||||
uint32_t pcnet_bcr_readw(PCNetState *s, uint32_t rap);
|
||||
int pcnet_can_receive(NetClientState *nc);
|
||||
ssize_t pcnet_receive(NetClientState *nc, const uint8_t *buf, size_t size_);
|
||||
void pcnet_set_link_status(NetClientState *nc);
|
||||
void pcnet_common_init(DeviceState *dev, PCNetState *s, NetClientInfo *info);
|
||||
|
Loading…
Reference in New Issue
Block a user