ioctl(FIONREAD) failed to return correct length in SRIOV environment for IPv6
Issue
- ioctl(FIONREAD) failed to return correct length in SRIOV environment for IPv6
- An application runs in a VM with Intel 82599 SR-IOV VF (
ixgbevf). This application opens asocket(AF_INET6, SOCK_RAW, IPPROTO_SCTP);and enters that socket into aselect()read set, then whenFD_ISSET()fires, checks the data to be received withioctl(FIONREAD)then receives the data withrecvfrom(). However, with RHEL 6.8 or 6.9, theioctl()returns zero bytes ready forever.
Environment
- Red Hat Enterprise Linux 6.8 (
2.6.32-642.3.1) and 6.9 (2.6.32-696) - KVM guest
- SR-IOV Virtual Function using Intel
ixgbevfdriver - IPv6 raw socket
- Socket polling with
select()orpoll()orepoll() ioctl(FIONREAD)orioctl(SIOCINQ)to check bytes available on notified socket
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
