I am modifying a network driver and would like the ability to send packets up to user space and back down to driver. I have been reading a bit about message queues, but it appears read() and write() aren't available for network drivers. Is that correct? What would be the best way to to do this with a network driver?
Ideally, I would like to pass pointers to buffers containing the packets across the user/kernel space boundary. The buffers would already be mapped to user space at init time.
I have considered netlink sockets, but heard they weren't reliable and also it seems like it would be nicer if read()/write() were available.
I am also investigating how I could allocate/map an SKB pool at init time so that I wouldn't have to map buffers on the fly. Perhaps I'll post more questions about that part later so as not to bloat the scope of this post.