-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
issue: 3586273 Use XLIO_DEFERRED_CLOSE by default #136
base: vNext
Are you sure you want to change the base?
Commits on Jan 14, 2024
-
issue: 3514044 Introducing cq_mgr_regrq and cq_mgr_strq
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 1976934 - Browse repository at this point
Copy the full SHA 1976934View commit details -
issue: 3514044 Renaming cq_mgr_mlx5 to cq_mgr_regrq
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 1495ac4 - Browse repository at this point
Copy the full SHA 1495ac4View commit details -
issue: 3514044 Renaming cq_mgr_mlx5_strq to cq_mgr_strq
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for fb6022f - Browse repository at this point
Copy the full SHA fb6022fView commit details -
issue: 3514044 Moving cq_mgr_regrq tx methods to cq_mgr
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for f21880d - Browse repository at this point
Copy the full SHA f21880dView commit details -
issue: 3514044 Moving cq_mgr_regrq events to cq_mgr
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for ea4a4e6 - Browse repository at this point
Copy the full SHA ea4a4e6View commit details -
issue: 3514044 Moving cq_mgr_regrq add_qp_tx to cq_mgr
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 8f5999c - Browse repository at this point
Copy the full SHA 8f5999cView commit details -
issue: 3514044 Moving cq_mgr_regrq RX common to cq_mgr
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 16f67fc - Browse repository at this point
Copy the full SHA 16f67fcView commit details -
issue: 3514044 Moving Tx from cq_mgr to cq_mgr_tx
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 52d0cf5 - Browse repository at this point
Copy the full SHA 52d0cf5View commit details -
issue: 3514044 Rename cq_mgr to cq_mgr_rx
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 7eb4156 - Browse repository at this point
Copy the full SHA 7eb4156View commit details -
issue: 3514044 Remove qp_rec struct
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 553cc35 - Browse repository at this point
Copy the full SHA 553cc35View commit details -
issue: 3514044 Squash qp_mgr_eth to qp_mgr
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 797c40c - Browse repository at this point
Copy the full SHA 797c40cView commit details -
issue: 3514044 Remove DEFINED_DPCP from qp_mgr and styling fixes
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 5fb7681 - Browse repository at this point
Copy the full SHA 5fb7681View commit details -
issue: 3514044 Squash qp_mgr_eth_mlx5 to qp_mgr
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 3e1a3bf - Browse repository at this point
Copy the full SHA 3e1a3bfView commit details -
issue: 3514044 Squash qp_mgr_eth_mlx5_dpcp to qp_mgr
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 6dfaffc - Browse repository at this point
Copy the full SHA 6dfaffcView commit details -
issue: 3514044 Split qp_mgr to hw_queue_tx and hw_queue_rx
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for c890d0d - Browse repository at this point
Copy the full SHA c890d0dView commit details -
issue: 3514044 Squash rfs_rule_dpcp to rfs_rule
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 4bd1df4 - Browse repository at this point
Copy the full SHA 4bd1df4View commit details -
issue: 3514044 Removing m_attach_flow_data vector from rfs
At most a single element of this vector is always used. Once rfs constructor is complete there must be exactly one attach_flow_data element in case of ring_simple. For ring_tap this element remains null. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 01594f5 - Browse repository at this point
Copy the full SHA 01594f5View commit details -
issue: 3514044 Removing hqrx from attach_flow_data_t
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for d5bb9e4 - Browse repository at this point
Copy the full SHA d5bb9e4View commit details -
issue: 3514044 Removing ibv steering flows
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 70b1bb3 - Browse repository at this point
Copy the full SHA 70b1bb3View commit details -
issue: 3514044 Adding flow tag check through dpcp::adapter
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for bc3e728 - Browse repository at this point
Copy the full SHA bc3e728View commit details -
issue: 3514044 Require dpcp for configure and CI
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for ea7dfd0 - Browse repository at this point
Copy the full SHA ea7dfd0View commit details -
issue: 3514044 Rebasing changes on top 3.20.5 with coverity fixes
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for e2acc51 - Browse repository at this point
Copy the full SHA e2acc51View commit details -
issue 3514044 Fixing package test with mandatory dpcp
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 0e91471 - Browse repository at this point
Copy the full SHA 0e91471View commit details -
issue: 3514044 Updating min dpcp version to 1.1.43
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for d702e3c - Browse repository at this point
Copy the full SHA d702e3cView commit details -
issue: 3514044 Replacing .inl file with .h
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 67185ae - Browse repository at this point
Copy the full SHA 67185aeView commit details -
issue: 3514044 Removing option_strq
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 3ce76f7 - Browse repository at this point
Copy the full SHA 3ce76f7View commit details -
issue: 3514044 Removing unnecessary checks
Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 6cda7bf - Browse repository at this point
Copy the full SHA 6cda7bfView commit details
Commits on Jan 17, 2024
-
issue: 3745279 Fix artifact generation in CI
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for ecb0c8a - Browse repository at this point
Copy the full SHA ecb0c8aView commit details
Commits on Jan 18, 2024
-
issue: 3664594 Return ETIMEDOUT err for timed out socket
Set ETIMEDOUT errno and return -1 from recv in case a socket was timed out, instead of 0 return value and 0 errno. For instance, in case of TCP keep alive timeout. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for bf0b744 - Browse repository at this point
Copy the full SHA bf0b744View commit details
Commits on Jan 22, 2024
-
Issue: 3375239 - add email scan in packages
The idea is to scan all rpm/deb packages for personal emails we should not be releasing packages with such emails the scan is done on both the metadat info and the changelog of a specific package Issue: HPCINFRA-919 Signed-off-by: Daniel Pressler <danielpr@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 18f5d31 - Browse repository at this point
Copy the full SHA 18f5d31View commit details
Commits on Jan 25, 2024
-
issue: 3724170 Support building as a static library
- Enable LTO by default - Add support for PGO - Switch orig_os_api with direct syscalls Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for b7ac236 - Browse repository at this point
Copy the full SHA b7ac236View commit details -
issue: 3724170 disable LTO in Jenkins compiler tests
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 2e5c9c6 - Browse repository at this point
Copy the full SHA 2e5c9c6View commit details -
issue: 3704820 Fix strides in WQE for NGINX master
PRM allows minimum of 512 RX strides per WQE. Adjust minimum value for NGINX master process from 32 to 512. Using also minimum stride size allowed - 64 instead of 512. Signed-off-by: Iftah Levi <iftahl@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 5e8fca0 - Browse repository at this point
Copy the full SHA 5e8fca0View commit details -
issue: 3678579 Update last_unacked on ACK recv
If all unacked queue is acked - update last_unacked to null. Signed-off-by: Iftah Levi <iftahl@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for ff34156 - Browse repository at this point
Copy the full SHA ff34156View commit details -
issue: 3678579 Fix last_unsent on retransmission
In case of pcb->is_last_seg_dropped - we might end up with wrong pcb->last_unsent. Signed-off-by: Iftah Levi <iftahl@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 4ff44ec - Browse repository at this point
Copy the full SHA 4ff44ecView commit details -
issue: 3678579 Fix last_unacked in tcp_rexmit_rto
Update last_unacked to null after RTO. In this case we move all unacked queue to unsent. Signed-off-by: Iftah Levi <iftahl@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 2bf7224 - Browse repository at this point
Copy the full SHA 2bf7224View commit details -
issue: 3678579 Update last_unacked in tcp_rexmit
In tcp_rexmit we take the first segment from unacked and put it in unsent. In case its the only segment in unacked, we need to update last_unacked. Signed-off-by: Iftah Levi <iftahl@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 43fe6e5 - Browse repository at this point
Copy the full SHA 43fe6e5View commit details -
issue: 3678579 Remove iterating lists to find last
Remove iterating over unsent / unacked to find last in lists. Signed-off-by: Iftah Levi <iftahl@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 95845c3 - Browse repository at this point
Copy the full SHA 95845c3View commit details -
Checking for last_unsent and unsent for NULL is the same. Signed-off-by: Iftah Levi <iftahl@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 8a9d5b2 - Browse repository at this point
Copy the full SHA 8a9d5b2View commit details
Commits on Jan 30, 2024
-
issue: 3690535 Remove SO_XLIO_RING_USER_MEMORY
This is leftover from the Multi Packet RQ removal. In current code, this option doesn't have effect and only wastes 96 bytes per socket. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 07203a2 - Browse repository at this point
Copy the full SHA 07203a2View commit details -
issue: 3690535 Reduce ring_allocation_logic size
Remove multiple fields from the ring_allocation_logic class: - m_active is redundant. - m_type / m_owner are needed only for debug logs. 16 bytes per object is a high cost taking into account that ring migration is disabled by default. Also compact the structure. This patch saves 64 bytes per socket (sockinfo and dst_entry). Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for b12b93a - Browse repository at this point
Copy the full SHA b12b93aView commit details -
issue: 3690535 Improve condition of ring migration support
Ring migration is disabled in most scenarios, so improve is_logic_support_migration() - check whether migration is disabled first. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 8ec6c52 - Browse repository at this point
Copy the full SHA 8ec6c52View commit details -
issue: 3690535 Print ring allocation logic type in logs
Add to_str() which returns pointer to "this". Also, print the type in constructor, so each further debug message can be identified by the pointer. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 1e92b28 - Browse repository at this point
Copy the full SHA 1e92b28View commit details -
issue: 3690535 Remove unused fields in sockinfo_tcp
Fields m_n_pbufs_rcvd and m_n_pbufs_freed are unused. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 871ff34 - Browse repository at this point
Copy the full SHA 871ff34View commit details -
[CI] Coverity: add snapshot action
Jira task: HPCINFRA-1430 Signed-off-by: Viacheslav Login <vlogin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 46d4172 - Browse repository at this point
Copy the full SHA 46d4172View commit details
Commits on Feb 1, 2024
-
issue: 3668182 Add tcp_write_zc/tcp_prealloc_zc
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 70467eb - Browse repository at this point
Copy the full SHA 70467ebView commit details -
issue: 3668182 Connect tcp_write_zc to sockinfo_tcp::tcp_tx
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 4713505 - Browse repository at this point
Copy the full SHA 4713505View commit details -
issue: 3668182 Remove PBUF_DESC_MAP for send zerocopy
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 670058e - Browse repository at this point
Copy the full SHA 670058eView commit details -
issue: 3668182 Allow snd_buf drop below 0 in zero-copy path
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 9ebbfef - Browse repository at this point
Copy the full SHA 9ebbfefView commit details -
issue: 3668182 Add sockinfo_tcp::tcp_tx_express
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 249369d - Browse repository at this point
Copy the full SHA 249369dView commit details -
issue: 3668182 Use tcp_tx_express in TLS tx zerocopy
Add tcp_tx_express to tcp_sockinfo_ops_tls::tx. I was unable to perform any refactoring, since: - tx_arg is the method argument - tls_arg is initialized at the beginning of the method and used in the nested loops. - tls_record class needs constant reassurance whether it is zerocopy or not. - tls_record class needs constant reassurance whether it is TLS1.2 or TLS1.3 version. - The blocking, non-blocking, zerocopy, non-zerocopy, TLS1.2., and TLS1.2 parts are tightly-coupled and no clean separation is possible without rewriting the code. - Need to allow blocking on small sndbuf in TLS Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 3c63b73 - Browse repository at this point
Copy the full SHA 3c63b73View commit details -
issue: 3668182 Remove zerocopy flow from tcp_write
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for cf7ff57 - Browse repository at this point
Copy the full SHA cf7ff57View commit details -
issue: 3668182 Refactor sockinfo_tcp
- Refactor cannot_do_requested_partial_write - Extract static function is_invalid_iovec - Extract method is_connected_and_ready_to_send - Extract method tcp_tx_slow_path - Extract method tcp_tx_handle_errno_and_unlock - Extract method tcp_tx_handle_done_and_unlock - Extract method tcp_tx_handle_partial_send_and_unlock - Check ready-to-send socket in express path Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 94f8392 - Browse repository at this point
Copy the full SHA 94f8392View commit details -
issue: 3668182 Refactor LwIP + sockinfo_tcp + dst_entry_tcp
- Remove oversize from pbuf_prealloc_express - Extract tcp_tx_handle_sndbuf_unavailable method - Promote pbuf.len checks to u32_t - Combine express_mkey and mkey into mkey - Remove pbuf_clen Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for ff55e60 - Browse repository at this point
Copy the full SHA ff55e60View commit details -
issue: 3668182 Fix PR comments
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 1e4e730 - Browse repository at this point
Copy the full SHA 1e4e730View commit details -
issue: 3668182 Revert tcp_seg::bufs to pbuf_clen()
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 00db3d7 - Browse repository at this point
Copy the full SHA 00db3d7View commit details
Commits on Feb 6, 2024
-
issue: 3724170 Add missing ifdef __cplusplus
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 1bc79a7 - Browse repository at this point
Copy the full SHA 1bc79a7View commit details -
issue: 3724170 Remove references to os_api
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 181f582 - Browse repository at this point
Copy the full SHA 181f582View commit details -
issue: 3724170 Make xlio.h C standard compliant
Signed-off-by: Ben Walker <ben@nvidia.com> Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 72f513d - Browse repository at this point
Copy the full SHA 72f513dView commit details -
issue: 3724170 Disable the constructor/destructor in static build
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 65bbb00 - Browse repository at this point
Copy the full SHA 65bbb00View commit details -
issue: 3724170 Make socketxtreme API regular function declarations
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 24e427f - Browse repository at this point
Copy the full SHA 24e427fView commit details -
issue: 3724170 Fix compilation for static build
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 569a551 - Browse repository at this point
Copy the full SHA 569a551View commit details -
issue: 3724170 Disable the *_check functions for the static build
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 4534754 - Browse repository at this point
Copy the full SHA 4534754View commit details
Commits on Feb 7, 2024
-
issue: 3771283 Fix function pointer check
The deleted define returned always true because it the address of orig_os_api._func instead of checking it's value. Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 660afb5 - Browse repository at this point
Copy the full SHA 660afb5View commit details
Commits on Feb 12, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 0fe1ee1 - Browse repository at this point
Copy the full SHA 0fe1ee1View commit details
Commits on Feb 22, 2024
-
issue: 3786434 Remove C23 feature from public xlio_extra.h
Enum with underlying type is C++ or C23 feature. Move the enum definition to an internal header, because currently, it's unused in public API. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for ae058d1 - Browse repository at this point
Copy the full SHA ae058d1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2cdbc84 - Browse repository at this point
Copy the full SHA 2cdbc84View commit details
Commits on Feb 25, 2024
-
issue: 3792731 Fix -Walloc-size-larger-than warning
The false positive warning is generated during linking phase. Cast array size to 32bit type to suppress the warning. The warning appears in --enable-lto configuration likely due to inlined new[] operator and generated to the underlying malloc() call. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 9ef53fc - Browse repository at this point
Copy the full SHA 9ef53fcView commit details -
issue: 3514044 Fix null pointer dereference
Accessing completion event channel for dummy RQ, that was created automatically by ibv when we create QP. Signed-off-by: Iftah Levi <iftahl@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 077d5b2 - Browse repository at this point
Copy the full SHA 077d5b2View commit details
Commits on Feb 26, 2024
-
issue: 3795922 Remove pbuf_split_64k()
XLIO receives any incoming TCP payload in pbuf chains less than 64k. There is no point to do the splits on each receive. Sockinfo_tcp has no 64k limitation and this avoid extra operations. To clean the code and achieve possible minor performance improvement, remove pbuf_split_64k() and accept entire pbuf chain as is. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for e82e642 - Browse repository at this point
Copy the full SHA e82e642View commit details -
issue: 3795922 Remove refused_data in lwip
refused_data was used to keep TCP payload which couldn't be received by sockinfo_tcp object and retry receive operation later. Only a single receive operation could be postponed in such a way and all the subsequent failures led to packet drops. sockinfo_tcp::rx_lwip_cb() doesn't produce an error by itself. All the possible errors are propagated by L3_tcp_input(). And all the errors lead to connection reset. So, there is no point to keep refused_data in current implementation. Remove refused_data to clean the code and save extra cache line read in fast TCP timer. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 83fc3f5 - Browse repository at this point
Copy the full SHA 83fc3f5View commit details -
issue: 3781322 Fix for 100% CPU load
Split poll_sn to poll_sn_rx and poll_sn_tx. Required after splitting cq to cq_rx and cq_tx. Signed-off-by: Iftah Levi <iftahl@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 74c38c2 - Browse repository at this point
Copy the full SHA 74c38c2View commit details
Commits on Mar 10, 2024
-
issue: 3813802 Terminate process instead of 'throw' on panic
Panic level of logs terminate the process and don't return. Call std::terminate() to terminate the process unconditionally. Also, this fixes cppcheck warning that an exception is thrown without an object. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for cbdbfec - Browse repository at this point
Copy the full SHA cbdbfecView commit details -
issue: 3813802 Don't wrap xlio_raw_post_recv() with IF_VERBS_FAILURE
IF_VERBS_FAILURE if supposed to be used with ibverbs API as a workaround for inconsistent API. However, using it for an internal method make the code dirty. Replace 'throw' with 'throw_xlio_exception' to suppress a cppcheck warning. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 8b076f9 - Browse repository at this point
Copy the full SHA 8b076f9View commit details -
issue: 3813802 Avoid partial initialization of an event_data_t object
cppcheck generates a warning about uninitialized fields even if they're not used in fact. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for b2c8589 - Browse repository at this point
Copy the full SHA b2c8589View commit details -
issue: 3813802 Remove dst_entry::m_p_send_wqe
This field is used as a local variable in 3 places. Allocate a variable on stack in the respective places instead of keeping it per socket. This fixes cppcheck warning about lifecycles of local and non-local variables. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for fb1a8ea - Browse repository at this point
Copy the full SHA fb1a8eaView commit details -
issue: 3813802 Fix type overflow warning in time_converter_rtc
cppcheck complains about 'int' type overflow in 0x3 << 30. Fix this with explicit unsigned type. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 5a7881e - Browse repository at this point
Copy the full SHA 5a7881eView commit details -
issue: 3813802 Fix IP_FRAG_DEBUG=1 build
Debug code is disabled by default in ip_frag and has become broken. It assumes that mem_buf_desc_t::n_ref_count has a non atomic type. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for fa7aadd - Browse repository at this point
Copy the full SHA fa7aaddView commit details -
issue: 3813802 Include system headers in the right way
Use <> for the system headers. This suppresses "information" level warning of cppcheck. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 4b205fb - Browse repository at this point
Copy the full SHA 4b205fbView commit details -
issue: 3813802 Remove unneeded cppcheck suppressions
Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for eecf0a5 - Browse repository at this point
Copy the full SHA eecf0a5View commit details
Commits on Mar 11, 2024
-
issue: 3770816 Use override instead virtual
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 6803858 - Browse repository at this point
Copy the full SHA 6803858View commit details -
issue: 3770816 Use nullptr instead of NULL
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for a095c8b - Browse repository at this point
Copy the full SHA a095c8bView commit details -
issue: 3770816 Remove redundant void argument lists
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for b66af63 - Browse repository at this point
Copy the full SHA b66af63View commit details -
issue: 3770816 Replace empty destructor with default
Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for be5a307 - Browse repository at this point
Copy the full SHA be5a307View commit details -
issue: 3788369 Rename thread_local_event_handler
It's not thread_local specific anymore. This event handler will also be used within poll_group to provide TCP timers for the respective sockets. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for e5f3ead - Browse repository at this point
Copy the full SHA e5f3eadView commit details -
issue: 3788369 Fix subsequent xlio_get_socket_rings_fds() calls
After the 1st call to xlio_get_socket_rings_fds(), XLIO remembers the resulting array within the socket object. However, subsequent calls return the array immediately without setting number of elements in the array. As result, the function returns 0 rings by mistake. Always set the number of elements to resolve the issue. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 8561e11 - Browse repository at this point
Copy the full SHA 8561e11View commit details -
issue: 3788369 Return TX ring by xlio_get_socket_rings_fds()
xlio_get_socket_rings_fds() and xlio_get_socket_rings_num() return the TX ring now. This can be useful in case of TX ring != RX ring when extra API is used. Also don't remember resulting array and construct it on the fly. Usually, this API is called only once for a socket, so remembering the array is a waste of memory. Remove the check_rings() and hardcoded number of rings for SockeXtreme flow. Return actual rings to make more precise result. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for e583d42 - Browse repository at this point
Copy the full SHA e583d42View commit details -
issue: 3788369 Don't reset TCP connection twice
XLIO_TCP_ABORT_ON_CLOSE option forces XLIO to send RST instead of FIN handshake. In this case, XLIO reset each connection twice. Fix this and check only once whether connection needs to send RST in prepare_to_close(). Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 757e0a1 - Browse repository at this point
Copy the full SHA 757e0a1View commit details -
issue: 3788369 Don't hardcode TCP send buffer for TCP_NODELAY
Once TCP_NODELAY option is set, XLIO disables Nagle's algorithm and sets TCP send buffer to a hardcoded value. This applies to setsockopt() and XLIO_TCP_NODELAY configuration. Avoid changing the send buffer and continues using either SO_SNDBUF or XLIO_TCP_SEND_BUFFER_SIZE value. Also, remove duplicated send buffer size from sockinfo_tcp object which was used only by getsockopt(). Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 6215359 - Browse repository at this point
Copy the full SHA 6215359View commit details -
issue: 3788369 Disable MSG_ZEROCOPY tests in gtests
The tests fail to receive notifications via the error queue and disabled in CI as result. However, running the tests manually is inconvenient, because of the known failing test cases. Disable the failing tests in the code instead of CI script. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for a750ddc - Browse repository at this point
Copy the full SHA a750ddcView commit details -
issue: 3788369 Remove XLIO_ZC_TX_SIZE
XLIO_ZC_TX_SIZE limited zerocopy segment size to the specified 16bit value. By default, this was 32KB. However, pbuf len is not limited to 16bit anymore and TCP segment has TSO limitation instead. Remove the option and use TSO capability to limit zerocopy TCP segments. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 7a4f2da - Browse repository at this point
Copy the full SHA 7a4f2daView commit details -
issue: 3788369 Remove redundant max_send_sge field
tcp_pcb::max_send_sge is a copy of tcp_pcb::tso.max_send_sge, but reduced by 1. It was used in zerocopy POC implementation, because zerocopy segments were TSO segments with the TCP header in the 1st sge. Current implementation uses tcp_seg::l2_l3_tcphdr_zc[] to hold the header and doesn't require the reduced limit. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 9c38f68 - Browse repository at this point
Copy the full SHA 9c38f68View commit details -
issue: 3788369 Pass iovec to tcp_write_express()
tcp_write_express() is a zerocopy version of tcp_write() and not limited by the sndbuf or queue length. Therefore, it's unlikely to fail. However, it still can fail to allocate pbuf or TCP segment in theory. Move the loop over iovec from higher level methods to tcp_write_express(), so we keep consistent TCP state if the memory allocation error happens in the middle of a complex send operation. Additionally, improve tcp_write_express() robustness and don't allow to append data to last segment if it's a retransmit. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for cee8ca7 - Browse repository at this point
Copy the full SHA cee8ca7View commit details -
issue: 3788369 Don't poll RX while checking is_rst()
Condition is_connected_and_ready_to_send() does RX polling in case of TCP_CONN_CONNECTING state. The idea is to speedup the connected state, however, this has few drawbacks: - This is unlikely path, because there are mechanisms to async connect() to finish; - RX polling requires to be unlocked, so there is a race window between TX thread and concurrent RX which may change the state; - The RX polling doesn't guarantee that there is the last handshake packet in the RQ. Remove the polling, so checking for connected state is more lightweight and allowed under the socket lock. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 98e3ada - Browse repository at this point
Copy the full SHA 98e3adaView commit details -
issue: 3788369 Fix LwIP type length related to segment/pbuf size
Replace u16_t with u32_t to avoid type overflow. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for a42d50d - Browse repository at this point
Copy the full SHA a42d50dView commit details -
issue: 3788369 Fix Nagle's algorithm for negative snd_buf
pcb::snd_buf can become negative in some flows. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 75221e0 - Browse repository at this point
Copy the full SHA 75221e0View commit details -
issue: 3788369 Remove redundant snd_buf check in LwIP
Higher level logic checks for sndbuf, so no need to check it again in tcp_write(). Also account SYN/FIN segments in snd_buf. Previously, this code was disabled, because of the corner case when snd_buf is 0. But now it can become negative. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 140401b - Browse repository at this point
Copy the full SHA 140401bView commit details -
issue: 3788369 Remove pbuf_desc::map
This field was used to hold mapping_t pointer, but the mapping is a mem_desc object now. Remove the leftover. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 236d43f - Browse repository at this point
Copy the full SHA 236d43fView commit details -
issue: 3788369 Introduce XLIO socket API
This is performance oriented and event based API for TCP sockets. It introduces a polling group (xlio_poll_group_t) which is a collection of sockets (xlio_socket_t) and a serialization context. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 8779882 - Browse repository at this point
Copy the full SHA 8779882View commit details -
issue: 3788369 Remove lwip/init.[ch]
Remove stub initialization functions to clean the code. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 4abcf4f - Browse repository at this point
Copy the full SHA 4abcf4fView commit details -
issue: 3788369 Remove pbuf_custom wrapper structure
Structure pbuf_custom doesn't serve its original purpose anymore and contains a single field pbuf. Remove the structure and use pbuf directly. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for cdcc99c - Browse repository at this point
Copy the full SHA cdcc99cView commit details -
Configuration menu - View commit details
-
Copy full SHA for fea6e82 - Browse repository at this point
Copy the full SHA fea6e82View commit details
Commits on Mar 12, 2024
-
issue: HPCINFRA-1321 add Dockerfile for static tests
Signed-off-by: Viacheslav Login <vlogin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 1d23a9d - Browse repository at this point
Copy the full SHA 1d23a9dView commit details -
issue: HPCINFRA-1321 Switch cppcheck to a docker
Signed-off-by: Viacheslav Login <vlogin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 6e9a005 - Browse repository at this point
Copy the full SHA 6e9a005View commit details -
issue: HPCINFRA-1321 Switch csbuild to a docker
Signed-off-by: Viacheslav Login <vlogin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for bda508b - Browse repository at this point
Copy the full SHA bda508bView commit details -
issue: HPCINFRA-1321 Switch Tidy to a docker
Signed-off-by: Viacheslav Login <vlogin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for accbf7b - Browse repository at this point
Copy the full SHA accbf7bView commit details
Commits on Mar 18, 2024
-
issue: 3777348 Remove unused pipeinfo class
There is no path to create pipeinfo objects. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 9521056 - Browse repository at this point
Copy the full SHA 9521056View commit details -
issue: 3777348 Removing cleanable_obj from socket_fd_api
To simplify inheritance and make socket objects cache friendly, we avoid inheriting cleanable_obj which inserts only one boolean but trashes the sapce after vptr. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for e449276 - Browse repository at this point
Copy the full SHA e449276View commit details -
issue: 3777348 Removing unused pkt_sndr_source class
The class pkt_sndr_source is unused empty interface. This adds undesired vptr to inheriting classes and trashes the cache. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 4305473 - Browse repository at this point
Copy the full SHA 4305473View commit details -
issue: 3777348 Replacing pkt_rcvr_source class with sockinfo
The only consumer of pkt_rcvr_source is sockinfo hierarchy objects. Removing this abstraction allows cache friendly layout of sockinfo. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 29c6b63 - Browse repository at this point
Copy the full SHA 29c6b63View commit details -
issue: 3777348 Simplifying timers for TCP sockets
Removing inheritance of timer_handler from sockinfo_tcp allows o order fields in cache friendly manner. timer_hander add vptr ad related fields in an undesired location in the object layout. sockinfo_tcp is always handled by tcp_timer_collection which itslef is timer_handler. Thus, there is no real need in registering the socket itself into the internal thread. This removes complex code with handling groups inside timers registration which are used only for tcp_collection. For XLIO_TCP_CTL_THREAD=with_wakeup/no_wakeup we put the listen socket events to be handled as part of tcp_timer_collections instead of being registered directly on internal thread. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for a1cb209 - Browse repository at this point
Copy the full SHA a1cb209View commit details -
issue: 3777348 Moving wakeup_pipe to be a member of sockinfo
Having sockinfo inheriting from wakeup_pipe inserts wakeup_pipe members in an undesired location in term of cache utilization for data path. The same functionallity can be achieved by having the wakeup_pipe as a member. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 19441e4 - Browse repository at this point
Copy the full SHA 19441e4View commit details -
issue: 3777348 Replacing socket_fd_api access with sockinfo
Before merging socket_fd_api with sockinfo, replace all access through socket_fd_api with sockinfo. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 1aa581a - Browse repository at this point
Copy the full SHA 1aa581aView commit details -
issue: 3777348 Merging socket_fd_api with sockinfo
Removing redundant base from sockinfo allows to put data path members near the vptr for better cache utilization. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for fcbba6e - Browse repository at this point
Copy the full SHA fcbba6eView commit details -
issue: 3777348 Moving sockinfo inline impl outside the class
Having inline methods with long implementation outside the class makes the class definition more readable. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 0168f14 - Browse repository at this point
Copy the full SHA 0168f14View commit details -
issue: 3777348 sockinfo Reordering methods
Reordering sockinfo methods for more readable definition. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for d135aac - Browse repository at this point
Copy the full SHA d135aacView commit details
Commits on Mar 19, 2024
-
issue: 3777348 Moving sock stats outside the socket
Moving socket stats to be a global resource instead of inside of each socket. This reduces socket size by +500B and allows to disable stats for sockets or make few sockets to use stats. Socket stats are generally unneeded and limited in monitoring to 1024 anyway. In cases of 1K+ sockets these stats are overhead. This also allows to disable stats for sockets and improve cache misses. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for eca2eba - Browse repository at this point
Copy the full SHA eca2ebaView commit details -
issue: 3777348 Reordering sockinfo members
Reordering the sockinfo fields from random locations to group data path frequently accessed fields together. Placing frequently fields at the beggining of the object allows these members to be fetched with the cache line that fetches the vptr. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 38f8cd0 - Browse repository at this point
Copy the full SHA 38f8cd0View commit details -
issue: 3777348 Removing m_flow_tag_enabled check
The check for m_flow_tag_enabled is redundant as we already got flow-tag packet and know the socket. In worst case the flow_tag_id can be checked. Avoid unneeded memory access for critical data path. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 06a7917 - Browse repository at this point
Copy the full SHA 06a7917View commit details -
issue: 3777348 Remove support for SO_XLIO_FLOW_TAG
This support was added long ago. However, there are no more users for this option. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 1949822 - Browse repository at this point
Copy the full SHA 1949822View commit details -
issue: 3777348 Avoid process_timestamps checking on each packet
Checking if timestamps are needed per each packet consumes more cpu cycles than checking once and then running another loop is better for most cases when timestamps are not required. wq Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 28ded23 - Browse repository at this point
Copy the full SHA 28ded23View commit details -
issue: 3777348 Remove precached sysvars from sockinfo
Precaching constant sysvar inside socket enlarges the socket and requires more cache lines. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 0d975c0 - Browse repository at this point
Copy the full SHA 0d975c0View commit details -
issue: 3777348 Remove access to m_sock_wakeup_pipe for socketxtreme
Socketxtrme does not need to wakeup sockets by using m_sock_wakeup_pipe. This mechanism is used when a seperate thread sleeps on a blocking socket. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for cb0b278 - Browse repository at this point
Copy the full SHA cb0b278View commit details -
issue: 3777348 Avoid checking m_iomux_ready_fd_array for Socketxtrme
This mechanism is used for poll/select only. Socketxtrme has its own polling mechanism. Accesing and checking this member/method is cycles/cache overhead. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 08956f8 - Browse repository at this point
Copy the full SHA 08956f8View commit details -
issue: 3777348 Avoid unnecessary access to ring_allocation_tx members
Cache optimization for data path. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 6434e58 - Browse repository at this point
Copy the full SHA 6434e58View commit details -
issue: 3777348 Use thread_local dummy lock
It is enough to hold a thread_local dummy lock instead of allocating a seperate object for each socket. Dummy lock contains only empty methods. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 87a76ea - Browse repository at this point
Copy the full SHA 87a76eaView commit details -
issue: 3777348 Avoid copying src/dst addresses for TCP flow-tag DP
TCP 5T flow-tag data path always contains src/dst addresses in m_connected/m_bound memebers. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 1ff8f40 - Browse repository at this point
Copy the full SHA 1ff8f40View commit details -
issue: 3808935 Add nullptr checks before dereferencing
There is no bug, this fix is aimed at suppressing the optimizer errors. Signed-off-by: Alex Briskin <abriskin@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 7fb5963 - Browse repository at this point
Copy the full SHA 7fb5963View commit details -
issue: 3829626 Fix new TCP timers registration for reused sockets
A TCP time-wait used socket can call register_timer although it is already registered. This made the socket to be added more than once to the timers list. Adding a check to verify that the socket is not already in the list. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for af806d1 - Browse repository at this point
Copy the full SHA af806d1View commit details -
issue: 3829626 Fixing statistics init for reused sockets
A TCP reused socket calls socket_stats_init. However, the check inside socket_stats_init was for m_p_socket_stats which may point to sock_stats::t_dummy_stats and thus pass the condition and init the sockets as one that has stats. Further a pointer to dummy is returned to stats vector as regular stats object. Checking for m_has_stats instead of for m_p_socket_stats solves the issue. Since, m_has_stats initialized to true only if a real stats object is returned by sock_stats. This stats object will be held by the socket untill its destruction. A reused timewait socket that has stats will just reset its stats as part of socket_stats_init. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 3a98c90 - Browse repository at this point
Copy the full SHA 3a98c90View commit details
Commits on Mar 20, 2024
-
issue: 3788369 Replace XLIO_HUGEPAGE_LOG2 with XLIO_HUGEPAGE_SIZE
XLIO Socket API introduced memory callback which provides information about internal memory allocation for RX/TX buffers. The callback also notifies about hugepage size and guarantees hugepage boundary alignment if hugepages are used. This makes XLIO hugepage configuration is more critical to user if their logic depends on hugepage properties. XLIO_HUGEPAGE_LOG2 is not user friendly, so replace it with XLIO_HUGEPAGE_SIZE configuration which accepts user readable format of the hugepage size. For example, XLIO_HUGEPAGE_SIZE=2MB. XLIO checks whether the requested hugepage size is supported by the system. But this check is moved to hugepage_mgr constructor, because g_hugepage_mgr is not initialized during reading XLIO configuration. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 27931ce - Browse repository at this point
Copy the full SHA 27931ceView commit details -
issue: 3788369 Remove xlio_key prototypes
XLIO socket API doesn't support crypto offload on this stage. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for bf77b2c - Browse repository at this point
Copy the full SHA bf77b2cView commit details -
issue: 3788369 Move public types definitions to xlio_types.h
xlio.h and xlio_extra.h provides public API for different scenarios: explicit linkage and LD_PRELOAD respectively. Therefore, usually, it makes sense to use a single header. However, the headers have common types definitions. Move them to a separate xlio_types.h instead of including xlio_extra.h from xlio.h. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 0dcadd3 - Browse repository at this point
Copy the full SHA 0dcadd3View commit details -
issue: 3788369 Add external allocator to XLIO Socket API
Allow user to take responsibility for XLIO buffers allocation. This can be useful if RX buffers needs to be placed to a special memory for further handling. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 4df427c - Browse repository at this point
Copy the full SHA 4df427cView commit details -
issue: 3788369 Add XLIO Socket API to the xlio_api_t pointers
This allows to use XLIO Socket API with LD_PRELOAD approach via pointers. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for f959cff - Browse repository at this point
Copy the full SHA f959cffView commit details -
issue: 3777348 Adding lock_spin_simple for smaller space utilization"
While lock_spin requires 16 bytes, the lock_spin_simple requires 4 bytes. This allows squashing data path members into less cache lines. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 1baf574 - Browse repository at this point
Copy the full SHA 1baf574View commit details -
issue: 3777348 Adding template cached_obj_pool
Adding a class to act as a pool of different objects. Other objects that use this pool are introduced next. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 6ab22fa - Browse repository at this point
Copy the full SHA 6ab22faView commit details -
issue: 3777348 Socketxtreme completions ring pool
Introduce ring pool of ring_ec objects which are used for Socketxtreme completion. Using such a pool decreases significantly the number of ring_ec obejcts needed. This, in turn, improves cache utilization. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 347c362 - Browse repository at this point
Copy the full SHA 347c362View commit details -
issue: Fix big endian build and clean unused macros
Compiler defines __BYTE_ORDER__ and others, but XLIO uses wrong names in the macros. Preprocessor replaces undefined names with 0, so XLIO always builds little endian branch. Fix the byte order names and fail a build if __BYTE_ORDER__ is not defined. Otherwise, the build would be broken on a big endian system. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 4de688b - Browse repository at this point
Copy the full SHA 4de688bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 221ea72 - Browse repository at this point
Copy the full SHA 221ea72View commit details
Commits on Mar 31, 2024
-
issue: 3788369 Keep global collection of the polling groups
Keep a global collection to destroy remaining groups at exit. Usually, polling groups are pre-initialized in a small number (up to the number of CPU cores) and destroyed at exit. Therefore, the collection doesn't have to be efficient. Moreover, a group destruction is a heavy operation itself, therefore, optimizing the collection doesn't make sense. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for dcdcd64 - Browse repository at this point
Copy the full SHA dcdcd64View commit details -
issue: 3788369 Keep sockets list per polling group
Keep a sockets list per polling group to close the remaining sockets on a group destruction. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for dde0276 - Browse repository at this point
Copy the full SHA dde0276View commit details -
issue: 3788369 poll_group takes reference to ring
To avoid a race and extra destruction operations, take additional reference to each ring within a group. The race can happen if a socket destruction leads to its ring destruction, but user returns RX buffers after that. User may return buffers to a group regardless of socket lifecycle. In a scenario when user closes all the sockets in runtime, the respective ring would be destroyed and created with new socket again. This is expensive operation and the reference avoids the destruction. Current implementation keeps all the rings until net_device_val destructor. In the future, poll_group should release the reference and destroy the ring. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 8452e00 - Browse repository at this point
Copy the full SHA 8452e00View commit details -
issue: 3788369 Throw exception if netdev not found for a ring
Rings are created in context of a net_device_val. Therefore, the net_device_val object must be present for an existing ring. However, API allows to return NULL by the netdev lookup and coverity generates a warning because of that. Throw an exception to suppress the coverity warning. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 617759e - Browse repository at this point
Copy the full SHA 617759eView commit details -
issue: 3788369 Release native rings in the poll_group destructor
poll_group takes additional reference to each its ring. But it doesn't release it once the group is destroyed. This leads to two issues: 1. Extra resources are utilized if user destroys a polling group before the application terminates. 2. Polling is not possible for a destroyed group. Therefore, if there are not completed WQEs in the SQ, respective sockets won't report TX completions and cannot be fully terminated. The ring needs to be destroyed to flush all the completions. Release all the native rings explicitly in the poll_group destructor to resolve the above issues. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 25351d9 - Browse repository at this point
Copy the full SHA 25351d9View commit details -
issue: 3788369 Don't free buffer unconditionally in XLIO Socket API
When an RX packet event happens, XLIO passes the ownership to user. Further, user releases the buffer explicitly. However, XLIO frees the buffer unconditionally just after emitting the event. Fix this and free buffers only if user doesn't provides the RX event callback. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 0b3eb59 - Browse repository at this point
Copy the full SHA 0b3eb59View commit details -
issue: 3788369 Use reclaim_recv_buffers() in XLIO Socket API
reclaim_recv_single_buffer() accumulates buffers in a list. In the performance oriented API we want to reuse hot buffers immediately, so reclaim_recv_buffers() implementation is more suitable. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 69ca61f - Browse repository at this point
Copy the full SHA 69ca61fView commit details -
issue: 3788369 Pass proper hugepage_size to XLIO Socket API
The memory callback provides hugepage size of the underlying pages. Replace hardcoded 0 with real hugepage size. Keep the page size in xlio_allocator object. This field a relevant only the hugepage allocation method and 0 in all other cases. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 8ad2b35 - Browse repository at this point
Copy the full SHA 8ad2b35View commit details -
issue: 3788369 Poll local ring before XLIO socket destruction
XLIO Socket API must guarantee that the XLIO_SOCKET_EVENT_TERMINATED is not followed by any other events. Therefore, all the TX completion events must be completed by that moment. Do a polling iteration before calling socket destructor to increase the chance that all the relevant WQEs are completed. This mechanism needs to be improved in the future. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 7b8853d - Browse repository at this point
Copy the full SHA 7b8853dView commit details -
issue: 3788369 Re-read env params in xlio_init_ex()
xlio_init_ex() changes some default parameters. However, a global object can trigger safe_mce_sys() constructor at the start. Therefore, we need to re-read the environment variables again to guarantee that the changed parameters take place. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 64bf555 - Browse repository at this point
Copy the full SHA 64bf555View commit details -
issue: 3788369 Avoid POSIX connect() in xlio_socket_connect()
Avoid using connect() with sock fd interface, because fd_collection doesn't keep xlio_socket_t objects. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 4771bdd - Browse repository at this point
Copy the full SHA 4771bddView commit details -
issue: 3788369 Remove get_fd() from XLIO Socket API
xlio_socket_t objects aren't connected to the fd_collection anymore. Therefore, all the methods must be called from the sockinfo_tcp objects directly. Also, xlio_socket_fd() is not relevant anymore and can be removed. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for dfdbd8b - Browse repository at this point
Copy the full SHA dfdbd8bView commit details
Commits on Apr 1, 2024
-
issue: 3829626 Fix seg fault in TCP timers
Iterate over std::list of TCP sockets while erasing socket during iteration. Overcomed by increasing iterator before erase. Signed-off-by: Iftah Levi <iftahl@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 86fc67a - Browse repository at this point
Copy the full SHA 86fc67aView commit details
Commits on Apr 3, 2024
-
issue: 3818038 Remove BlueFlame doorbell method
rdma-core limits number of UARs per context to 16 by default. After creating 16 QPs, XLIO receives duplicates of blueflame registers for each subsequent QP. As results, blueflame doorbell method can write WQEs concurrently without serialization and this leads to a data corruption. BlueFlame can make impact on throughput, since copy to the blueflame register is expensive. It can improve latency in some low latency scenarios, however, XLIO targets high traffic/PPS rates. Removing blueflame method also slightly improves performance in some scenarios. BlueFlame can be returned back in the future to improve low-latency scenarios, however, it will need some rework to avoid the data corruption. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 65130bd - Browse repository at this point
Copy the full SHA 65130bdView commit details -
issue: 3818038 Remove likely() from the inline WQE branch
The inline WQE branch is not likely in most throughput scenarios. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 6f485a1 - Browse repository at this point
Copy the full SHA 6f485a1View commit details
Commits on Apr 4, 2024
-
issue: 3844385 Fix new TCP timers registration lock contention
Avoid calling register_socket_timer_event when a socket is already registered (TIME-WAIT). Although there is no functionality issue with that, it produces too high rate of posting events for internal-thread. This leads to lock contantion inside internal-thread and degraded performance of HTTP CPS. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for ea38dd7 - Browse repository at this point
Copy the full SHA ea38dd7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8e64060 - Browse repository at this point
Copy the full SHA 8e64060View commit details
Commits on Apr 8, 2024
-
issue: 3788164 Fix RX poll on TX option for UTLS
UTLS uses tcp_tx_express() for non blocking sockets. However, this TX method doesn't support XLIO_RX_POLL_ON_TX_TCP. Additional RX polling improves scenarios such as WEB servers. Insert RX polling into UTLS TX path to resolve performance degradation. Signed-off-by: Dmytro Podgornyi <dmytrop@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 9b7eec0 - Browse repository at this point
Copy the full SHA 9b7eec0View commit details -
issue: 3855390 Fixing adding TCP timer twice warning
In heavy CPS scenarios a socket may go to TIME-WAIT state and be reused before first TCP timer registration is performed by internal-thread. 1. Setting timer_registered=true while posting the event prevents the second attemp to try and post the event again. 2. Adding sanity check in add_new_timer that verifies that the socket is not already in the timer map. Signed-off-by: Alexander Grissik <agrissik@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 0678a45 - Browse repository at this point
Copy the full SHA 0678a45View commit details
Commits on Apr 9, 2024
-
issue: 3795997 Control TSO max payload size
Added new env parameter - XLIO_MAX_TSO_SIZE. It allows the user to control maximum size of TSO, instead of taking the maximum cap by HW. The default size is 256KB (maximum by current HW). Values higher than HW capabilities won't be taken into account. Signed-off-by: Iftah Levi <iftahl@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for db61660 - Browse repository at this point
Copy the full SHA db61660View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1e18c6a - Browse repository at this point
Copy the full SHA 1e18c6aView commit details
Commits on Apr 14, 2024
-
issue: 3586273 Use XLIO_DEFERRED_CLOSE by default
For incoming sockets - no change. For outgoing sockets - since outgoing sockets occupy a local port, we should release it on the socket destructor to prevent race from another socket to use the same port. This race might cause XLIO to hold 2 sockets with the same RFS object at the same time, and this is fatal (particularly for TCP). Signed-off-by: Iftah Levi <iftahl@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for 4b47570 - Browse repository at this point
Copy the full SHA 4b47570View commit details
Commits on Apr 17, 2024
-
issue: add 200ms sleep to gtest
For tests related to bind() Signed-off-by: Iftah Levi <iftahl@nvidia.com>
Configuration menu - View commit details
-
Copy full SHA for c0d0e34 - Browse repository at this point
Copy the full SHA c0d0e34View commit details