Skip to content
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

exanic_find_port_by_interface_name fails for X100 on RHEL8/9 #67

Closed
Alexxstud opened this issue Dec 13, 2022 · 4 comments
Closed

exanic_find_port_by_interface_name fails for X100 on RHEL8/9 #67

Alexxstud opened this issue Dec 13, 2022 · 4 comments

Comments

@Alexxstud
Copy link

Hello, if somebody is monitoring the issues here.

The problem:
When the application runs with exasock and an accelerated TCP socket calls connect() it passes through exa_socket_update_interfaces then to exanic_ip_acquire, correctly determines the interface from the dst IP, but fails to map the network interface to ExaNIC port. More specifically, the problem is with libexanic - exanic_find_port_by_interface_name fails to provide device:port for the interface
despite this interface surely belongs to ExaNIC card and exanic-config lists it correctly. In other words, the mapping of
ports to the network interfaces in exanic_t if_index is 100% correct, but the reverse mapping of the interface to the port fails due to
ioctl(fd, EXAIOCGIFINFO, &ifr) call returning -1 (ioctl there actually seems to be the OS one with some wrappers). This problem arises on two different machines each with the same ExaNIC X100 card and under both RHEL8 and RHEL9 OS. The version
of exanic-software under consideration is the lastest: release 2.7.3, 13 Oct. 2022.

Calling bind() to INADDR_ANY or to the interface IP doesn't help. Is there any subtlety with exasock? Or some specific function must be called after a socket creation and before connect()? The application uses usual AF_INET sockets, exasock is called as a wrapper as written in the documentation.

@sudeep30m
Copy link

I'm facing the exact same issue on Rocky 9.1 OS. I'm using ExaNIC X25 card with version 2.7.3 and with the latest firmware (firmware date is 20220210). @Alexxstud Please reply if you were able to resolve this issue

@Alexxstud
Copy link
Author

Alexxstud commented Feb 6, 2023

Hello, @sudeep30m The only solution I have found so far is to go through the library calls, edit exanic_find_port_by_interface_name function and reinstall the driver.

@kumarsameer
Copy link

@Alexxstud what to edit in the exanic_find_port_by_interface_name function ?

@danfruehauf
Copy link

See attached fix, gets the job done for me - the ioctl is now handled and the device is probed correctly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants