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

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content