Commit 3e021d40b7548b2eeec62a082411c0745a5c635f

Authored by Mark McLoughlin
1 parent 4f1c942b

net: return status from qemu_deliver_packet()

Will allow qemu_send_packet() handle queue full condition.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Showing 1 changed file with 17 additions and 3 deletions
... ... @@ -409,16 +409,30 @@ int qemu_can_send_packet(VLANClientState *sender)
409 409 return 0;
410 410 }
411 411  
412   -static void
  412 +static int
413 413 qemu_deliver_packet(VLANClientState *sender, const uint8_t *buf, int size)
414 414 {
415 415 VLANClientState *vc;
  416 + int ret = -1;
416 417  
417 418 for (vc = sender->vlan->first_client; vc != NULL; vc = vc->next) {
418   - if (vc != sender && !vc->link_down) {
419   - vc->receive(vc, buf, size);
  419 + ssize_t len;
  420 +
  421 + if (vc == sender) {
  422 + continue;
  423 + }
  424 +
  425 + if (vc->link_down) {
  426 + ret = size;
  427 + continue;
420 428 }
  429 +
  430 + len = vc->receive(vc, buf, size);
  431 +
  432 + ret = (ret >= 0) ? ret : len;
421 433 }
  434 +
  435 + return ret;
422 436 }
423 437  
424 438 void qemu_send_packet(VLANClientState *vc, const uint8_t *buf, int size)
... ...