|
@@ -589,6 +589,23 @@ static int ehea_poll(struct net_device *dev, int *budget)
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+#ifdef CONFIG_NET_POLL_CONTROLLER
|
|
|
+static void ehea_netpoll(struct net_device *dev)
|
|
|
+{
|
|
|
+ struct ehea_port *port = netdev_priv(dev);
|
|
|
+
|
|
|
+ netif_rx_schedule(port->port_res[0].d_netdev);
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+static int ehea_poll_firstqueue(struct net_device *dev, int *budget)
|
|
|
+{
|
|
|
+ struct ehea_port *port = netdev_priv(dev);
|
|
|
+ struct net_device *d_dev = port->port_res[0].d_netdev;
|
|
|
+
|
|
|
+ return ehea_poll(d_dev, budget);
|
|
|
+}
|
|
|
+
|
|
|
static irqreturn_t ehea_recv_irq_handler(int irq, void *param)
|
|
|
{
|
|
|
struct ehea_port_res *pr = param;
|
|
@@ -2626,7 +2643,10 @@ struct ehea_port *ehea_setup_single_port(struct ehea_adapter *adapter,
|
|
|
memcpy(dev->dev_addr, &port->mac_addr, ETH_ALEN);
|
|
|
|
|
|
dev->open = ehea_open;
|
|
|
- dev->poll = ehea_poll;
|
|
|
+ dev->poll = ehea_poll_firstqueue;
|
|
|
+#ifdef CONFIG_NET_POLL_CONTROLLER
|
|
|
+ dev->poll_controller = ehea_netpoll;
|
|
|
+#endif
|
|
|
dev->weight = 64;
|
|
|
dev->stop = ehea_stop;
|
|
|
dev->hard_start_xmit = ehea_start_xmit;
|