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, tools, and much more.