[haiku-commits] haiku: hrev51352 - src/add-ons/kernel/drivers/network/virtio

  • From: philippe.houdoin@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 7 Aug 2017 18:12:45 +0200 (CEST)

hrev51352 adds 1 changeset to branch 'master'
old head: a911a53fa69ab612c195e32df93f7d29441d2ffc
new head: 9854a9d3d6a7e2d6fea1ad97d57eabfab28a6675
overview: 
http://cgit.haiku-os.org/haiku/log/?qt=range&q=9854a9d3d6a7+%5Ea911a53fa69a

----------------------------------------------------------------------------

9854a9d3d6a7: virtio_net: set/get actual frame size
  works OK under VirtualBox now, but no robustness and performance
  tests were made yet.

                           [ Philippe Houdoin <philippe.houdoin@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev51352
Commit:      9854a9d3d6a7e2d6fea1ad97d57eabfab28a6675
URL:         http://cgit.haiku-os.org/haiku/commit/?id=9854a9d3d6a7
Author:      Philippe Houdoin <philippe.houdoin@xxxxxxxxx>
Date:        Mon Aug  7 18:08:00 2017 UTC

----------------------------------------------------------------------------

1 file changed, 6 insertions(+), 4 deletions(-)
src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp | 10 ++++++----

----------------------------------------------------------------------------

diff --git a/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp 
b/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp
index 06e37f0..98c901c 100644
--- a/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp
+++ b/src/add-ons/kernel/drivers/network/virtio/virtio_net.cpp
@@ -299,14 +299,14 @@ virtio_net_read(void* cookie, off_t pos, void* buffer, 
size_t* _length)
        }
 
        // wait for reception
-       status = acquire_sem_etc(info->rx_done, 1, B_RELATIVE_TIMEOUT, 10000);
+       status = acquire_sem(info->rx_done);
        if (status != B_OK) {
                ERROR("acquire_sem(rx_done) failed (%s)\n", strerror(status));
                return status;
        }
 
-       *_length = MIN(MAX_FRAME_SIZE, *_length);
-       memcpy(buffer, &info->rx_buffer, *_length);
+       *_length = MIN(entries[1].size, *_length);
+       user_memcpy(buffer, &info->rx_buffer, *_length);
        return B_OK;
 }
 
@@ -334,10 +334,12 @@ virtio_net_write(void* cookie, off_t pos, const void* 
buffer,
 
        physical_entry entries[2];
        entries[0] = info->hdr_entry;
+       entries[0].size = sizeof(virtio_net_hdr);
        entries[1] = info->tx_entry;
+       entries[1].size = MIN(MAX_FRAME_SIZE, *_length);
 
        memset(&info->hdr, 0, sizeof(info->hdr));
-       memcpy(&info->tx_buffer, buffer, MIN(MAX_FRAME_SIZE, *_length));
+       user_memcpy(&info->tx_buffer, buffer, MIN(MAX_FRAME_SIZE, *_length));
 
        // queue the virtio_net_hdr + buffer data
        status_t status = info->virtio->queue_request_v(info->tx_queues[0],


Other related posts:

  • » [haiku-commits] haiku: hrev51352 - src/add-ons/kernel/drivers/network/virtio - philippe . houdoin