Hi Fam, Stefan, I'm running a test with rocker device using UDP sockets connections and I'm seeing the socket s->read_poll stay disabled if the device receives a packet when the device's can_receive returns false. Receive is stuck after that; nothing ever re-enables s->read_poll. I see the first packet queued on queue->packets and that's it. No more receives. If I modify the device to lie and always return can_receive=true, and drop the pkt in driver receive, then things work fine.
I think this patch broke can_receive semantics for net/socket.c: commit 6e99c631f116221d169ea53953d91b8aa74d297a Author: Fam Zheng <f...@redhat.com> Date: Thu Jun 4 14:45:16 2015 +0800 net/socket: Drop net_socket_can_send Anything jump out? (In the test, rocker device is enabling the netdev port once the guest OS driver signals to enable the port based on STP process running on the guest. The initial STP state is DISABLED, so the port is isolated from the network. As STP algo progresses, the port is opened up and the netdev is enabled for Rx traffic). -scott