From: Sergei Shtylyov <sergei.shtylyov@xxxxxxxxxxxxxxxxxx> Date: Tue, 02 Jun 2015 23:44:10 +0300 > + /* Received network control queue */ > + if (ris0 & RIS0_FRF1) { > + ravb_write(ndev, ~RIS0_FRF1, RIS0); > + /* Timestamp of network control packets that is based > + * on IEEE802.1AS, is used time synchronization of PTP. > + * It should not be handled by NAPI scheduling, because > + * it needs to be received as soon as possible. > + */ > + ravb_rx(ndev, NULL, RAVB_NC); > + result = IRQ_HANDLED; > + } Nobody else makes this distinction, all packets should be processed via your NAPI path. When I see people conditionally invoking netif_rx() vs. netif_receive_skb() in their packet receive routine, like conditional locking, it's a big red flag. Furthermore, you should pass the NAPI context into ravb_rx() and use it so that you can invoke napi_gro_receive() on all of the packets and therefore support GRO. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html