From 47672ede5034df17bdc2f314f4e3b7afa8622bda Mon Sep 17 00:00:00 2001 From: Patrick Sisterhen Date: Wed, 29 Mar 2017 15:13:46 -0700 Subject: NI-RIO: FIFO management optimizations for PCIe performance Pre-acquiring as much buffer as possible When acquiring during a streaming operation, acquire a minimum amount (frame size) or the amount we know is acquire-able Adding docstrings to nirio_fifo Making const-qualifying consistent --- host/lib/transport/nirio/niriok_proxy_impl_v2.cpp | 14 +++++++------- host/lib/transport/nirio_zero_copy.cpp | 2 ++ 2 files changed, 9 insertions(+), 7 deletions(-) (limited to 'host/lib/transport') diff --git a/host/lib/transport/nirio/niriok_proxy_impl_v2.cpp b/host/lib/transport/nirio/niriok_proxy_impl_v2.cpp index f75de01e1..4e88b8a6e 100644 --- a/host/lib/transport/nirio/niriok_proxy_impl_v2.cpp +++ b/host/lib/transport/nirio/niriok_proxy_impl_v2.cpp @@ -759,14 +759,14 @@ namespace uhd { namespace niusrprio in.timeout = timeout; in.status = NiRio_Status_Success; - ioctl_status = + ioctl_status = nirio_driver_iface::rio_ioctl( - _device_handle, - IOCTL_TRANSPORT_FIFO_WAIT, - &in, - sizeof(in), - &out, - sizeof(out)); + _device_handle, + IOCTL_TRANSPORT_FIFO_WAIT, + &in, + sizeof(in), + &out, + sizeof(out)); if (nirio_status_fatal(ioctl_status)) return ioctl_status; data_pointer = reinterpret_cast(out.elements); diff --git a/host/lib/transport/nirio_zero_copy.cpp b/host/lib/transport/nirio_zero_copy.cpp index 8bec49a5f..9ed02a6dc 100644 --- a/host/lib/transport/nirio_zero_copy.cpp +++ b/host/lib/transport/nirio_zero_copy.cpp @@ -182,11 +182,13 @@ public: nirio_status_chain( _recv_fifo->initialize( (_xport_params.recv_frame_size*_xport_params.num_recv_frames)/sizeof(fifo_data_t), + _xport_params.recv_frame_size / sizeof(fifo_data_t), actual_depth, actual_size), status); nirio_status_chain( _send_fifo->initialize( (_xport_params.send_frame_size*_xport_params.num_send_frames)/sizeof(fifo_data_t), + _xport_params.send_frame_size / sizeof(fifo_data_t), actual_depth, actual_size), status); -- cgit v1.2.3