Set non blocking on /dev/rdma_cm

Hans Petter Selasky hps at
Tue Aug 16 20:32:08 UTC 2016

On 08/16/16 22:23, Alex Bowden wrote:
> Hi all,
> I've modified rping to set O_NONBLOCKING on /dev/rdma_cm on the event channel (rdma_create_event_channel) which fails like this:
>   9997 rping    CALL  openat(AT_FDCWD,0x800a42708,0x100002<O_RDWR|O_CLOEXEC>,<unused>0)
>   9997 rping    NAMI  "/dev/rdma_cm"
>   9997 rping    RET   openat 3
>   ..snip..
>   9997 rping    CALL  fcntl(0x3,F_SETFL,0x6<O_RDWR|O_NONBLOCK>)
>   9997 rping    RET   fcntl -1 errno 25 Inappropriate ioctl for device
> Is this not supported for some reason? This is with the latest OFED v3.2 patches by Hans.

Hi Alex,

I'll check the code tomorrow.

Quick answer:
F_SETFL should be translated into FIONBIO and FASYNC ioctls in the 
FreeBSD kernel. Maybe there is a missing "case FIONBIO: return (0); /* 
success */" somewhere in the /dev/rdma_cm implementation, because the 
"fflags" handling is factored out, and only returning success on the 
IOCTL is required.


More information about the freebsd-infiniband mailing list