50bool rpu::Core::setRxBufferCount(uint32_t count) {
52 socklen_t rwin_size = 4;
55 uint32_t size = count * per;
57 setsockopt(fd_, SOL_SOCKET, SO_RCVBUF,
reinterpret_cast<char*
>(&size),
sizeof(size));
58 getsockopt(fd_, SOL_SOCKET, SO_RCVBUF, &rwin, &rwin_size);
61 udpLog_->critical(
"----------------------------------------------------------");
62 udpLog_->critical(
"Error setting rx buffer size.");
63 udpLog_->critical(
"Wanted %" PRIu32
" (%" PRIu32
" * %" PRIu32
") Got %" PRIu32, size, count, per, rwin);
64 udpLog_->critical(
"sysctl -w net.core.rmem_max=size to increase in kernel");
65 udpLog_->critical(
"----------------------------------------------------------");
72void rpu::Core::setTimeout(uint32_t timeout) {
73 div_t divResult = div(timeout, 1000000);
74 timeout_.tv_sec = divResult.quot;
75 timeout_.tv_usec = divResult.rem;
78void rpu::Core::setup_python() {
80 bp::class_<rpu::Core, rpu::CorePtr, boost::noncopyable>(
"Core", bp::no_init)
81 .def(
"maxPayload", &rpu::Core::maxPayload)
82 .def(
"setRxBufferCount", &rpu::Core::setRxBufferCount)
83 .def(
"setTimeout", &rpu::Core::setTimeout);