|
@@ -304,9 +304,6 @@ static int ef4_poll(struct napi_struct *napi, int budget)
|
|
struct ef4_nic *efx = channel->efx;
|
|
struct ef4_nic *efx = channel->efx;
|
|
int spent;
|
|
int spent;
|
|
|
|
|
|
- if (!ef4_channel_lock_napi(channel))
|
|
|
|
- return budget;
|
|
|
|
-
|
|
|
|
netif_vdbg(efx, intr, efx->net_dev,
|
|
netif_vdbg(efx, intr, efx->net_dev,
|
|
"channel %d NAPI poll executing on CPU %d\n",
|
|
"channel %d NAPI poll executing on CPU %d\n",
|
|
channel->channel, raw_smp_processor_id());
|
|
channel->channel, raw_smp_processor_id());
|
|
@@ -331,7 +328,6 @@ static int ef4_poll(struct napi_struct *napi, int budget)
|
|
ef4_nic_eventq_read_ack(channel);
|
|
ef4_nic_eventq_read_ack(channel);
|
|
}
|
|
}
|
|
|
|
|
|
- ef4_channel_unlock_napi(channel);
|
|
|
|
return spent;
|
|
return spent;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -387,7 +383,6 @@ void ef4_start_eventq(struct ef4_channel *channel)
|
|
channel->enabled = true;
|
|
channel->enabled = true;
|
|
smp_wmb();
|
|
smp_wmb();
|
|
|
|
|
|
- ef4_channel_enable(channel);
|
|
|
|
napi_enable(&channel->napi_str);
|
|
napi_enable(&channel->napi_str);
|
|
ef4_nic_eventq_read_ack(channel);
|
|
ef4_nic_eventq_read_ack(channel);
|
|
}
|
|
}
|
|
@@ -399,8 +394,6 @@ void ef4_stop_eventq(struct ef4_channel *channel)
|
|
return;
|
|
return;
|
|
|
|
|
|
napi_disable(&channel->napi_str);
|
|
napi_disable(&channel->napi_str);
|
|
- while (!ef4_channel_disable(channel))
|
|
|
|
- usleep_range(1000, 20000);
|
|
|
|
channel->enabled = false;
|
|
channel->enabled = false;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2029,7 +2022,6 @@ static void ef4_init_napi_channel(struct ef4_channel *channel)
|
|
channel->napi_dev = efx->net_dev;
|
|
channel->napi_dev = efx->net_dev;
|
|
netif_napi_add(channel->napi_dev, &channel->napi_str,
|
|
netif_napi_add(channel->napi_dev, &channel->napi_str,
|
|
ef4_poll, napi_weight);
|
|
ef4_poll, napi_weight);
|
|
- ef4_channel_busy_poll_init(channel);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
static void ef4_init_napi(struct ef4_nic *efx)
|
|
static void ef4_init_napi(struct ef4_nic *efx)
|
|
@@ -2079,37 +2071,6 @@ static void ef4_netpoll(struct net_device *net_dev)
|
|
|
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
-#ifdef CONFIG_NET_RX_BUSY_POLL
|
|
|
|
-static int ef4_busy_poll(struct napi_struct *napi)
|
|
|
|
-{
|
|
|
|
- struct ef4_channel *channel =
|
|
|
|
- container_of(napi, struct ef4_channel, napi_str);
|
|
|
|
- struct ef4_nic *efx = channel->efx;
|
|
|
|
- int budget = 4;
|
|
|
|
- int old_rx_packets, rx_packets;
|
|
|
|
-
|
|
|
|
- if (!netif_running(efx->net_dev))
|
|
|
|
- return LL_FLUSH_FAILED;
|
|
|
|
-
|
|
|
|
- if (!ef4_channel_try_lock_poll(channel))
|
|
|
|
- return LL_FLUSH_BUSY;
|
|
|
|
-
|
|
|
|
- old_rx_packets = channel->rx_queue.rx_packets;
|
|
|
|
- ef4_process_channel(channel, budget);
|
|
|
|
-
|
|
|
|
- rx_packets = channel->rx_queue.rx_packets - old_rx_packets;
|
|
|
|
-
|
|
|
|
- /* There is no race condition with NAPI here.
|
|
|
|
- * NAPI will automatically be rescheduled if it yielded during busy
|
|
|
|
- * polling, because it was not able to take the lock and thus returned
|
|
|
|
- * the full budget.
|
|
|
|
- */
|
|
|
|
- ef4_channel_unlock_poll(channel);
|
|
|
|
-
|
|
|
|
- return rx_packets;
|
|
|
|
-}
|
|
|
|
-#endif
|
|
|
|
-
|
|
|
|
/**************************************************************************
|
|
/**************************************************************************
|
|
*
|
|
*
|
|
* Kernel net device interface
|
|
* Kernel net device interface
|
|
@@ -2289,9 +2250,6 @@ static const struct net_device_ops ef4_netdev_ops = {
|
|
.ndo_poll_controller = ef4_netpoll,
|
|
.ndo_poll_controller = ef4_netpoll,
|
|
#endif
|
|
#endif
|
|
.ndo_setup_tc = ef4_setup_tc,
|
|
.ndo_setup_tc = ef4_setup_tc,
|
|
-#ifdef CONFIG_NET_RX_BUSY_POLL
|
|
|
|
- .ndo_busy_poll = ef4_busy_poll,
|
|
|
|
-#endif
|
|
|
|
#ifdef CONFIG_RFS_ACCEL
|
|
#ifdef CONFIG_RFS_ACCEL
|
|
.ndo_rx_flow_steer = ef4_filter_rfs,
|
|
.ndo_rx_flow_steer = ef4_filter_rfs,
|
|
#endif
|
|
#endif
|