ioctl(FIONREAD) failed to return correct length in SRIOV environment for IPv6

Solution In Progress - Updated -

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 a socket(AF_INET6, SOCK_RAW, IPPROTO_SCTP); and enters that socket into a select() read set, then when FD_ISSET() fires, checks the data to be received with ioctl(FIONREAD) then receives the data with recvfrom(). However, with RHEL 6.8 or 6.9, the ioctl() 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 ixgbevf driver
  • IPv6 raw socket
  • Socket polling with select() or poll() or epoll()
  • ioctl(FIONREAD) or ioctl(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.

Current Customers and Partners

Log in for full access

Log In
Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.