|
@@ -198,7 +198,7 @@ static struct notifier_block *netdev_chain;
|
|
|
* Device drivers call our routines to queue packets here. We empty the
|
|
|
* queue in the local softnet handler.
|
|
|
*/
|
|
|
-DEFINE_PER_CPU(struct softnet_data, softnet_data) = { 0, };
|
|
|
+DEFINE_PER_CPU(struct softnet_data, softnet_data) = { NULL };
|
|
|
|
|
|
#ifdef CONFIG_SYSFS
|
|
|
extern int netdev_sysfs_init(void);
|
|
@@ -1372,7 +1372,6 @@ DEFINE_PER_CPU(struct netif_rx_stats, netdev_rx_stat) = { 0, };
|
|
|
|
|
|
int netif_rx(struct sk_buff *skb)
|
|
|
{
|
|
|
- int this_cpu;
|
|
|
struct softnet_data *queue;
|
|
|
unsigned long flags;
|
|
|
|
|
@@ -1388,15 +1387,11 @@ int netif_rx(struct sk_buff *skb)
|
|
|
* short when CPU is congested, but is still operating.
|
|
|
*/
|
|
|
local_irq_save(flags);
|
|
|
- this_cpu = smp_processor_id();
|
|
|
queue = &__get_cpu_var(softnet_data);
|
|
|
|
|
|
__get_cpu_var(netdev_rx_stat).total++;
|
|
|
if (queue->input_pkt_queue.qlen <= netdev_max_backlog) {
|
|
|
if (queue->input_pkt_queue.qlen) {
|
|
|
- if (queue->throttle)
|
|
|
- goto drop;
|
|
|
-
|
|
|
enqueue:
|
|
|
dev_hold(skb->dev);
|
|
|
__skb_queue_tail(&queue->input_pkt_queue, skb);
|
|
@@ -1404,19 +1399,10 @@ enqueue:
|
|
|
return NET_RX_SUCCESS;
|
|
|
}
|
|
|
|
|
|
- if (queue->throttle)
|
|
|
- queue->throttle = 0;
|
|
|
-
|
|
|
netif_rx_schedule(&queue->backlog_dev);
|
|
|
goto enqueue;
|
|
|
}
|
|
|
|
|
|
- if (!queue->throttle) {
|
|
|
- queue->throttle = 1;
|
|
|
- __get_cpu_var(netdev_rx_stat).throttled++;
|
|
|
- }
|
|
|
-
|
|
|
-drop:
|
|
|
__get_cpu_var(netdev_rx_stat).dropped++;
|
|
|
local_irq_restore(flags);
|
|
|
|
|
@@ -1701,8 +1687,6 @@ job_done:
|
|
|
smp_mb__before_clear_bit();
|
|
|
netif_poll_enable(backlog_dev);
|
|
|
|
|
|
- if (queue->throttle)
|
|
|
- queue->throttle = 0;
|
|
|
local_irq_enable();
|
|
|
return 0;
|
|
|
}
|
|
@@ -1976,7 +1960,7 @@ static int softnet_seq_show(struct seq_file *seq, void *v)
|
|
|
struct netif_rx_stats *s = v;
|
|
|
|
|
|
seq_printf(seq, "%08x %08x %08x %08x %08x %08x %08x %08x %08x\n",
|
|
|
- s->total, s->dropped, s->time_squeeze, s->throttled,
|
|
|
+ s->total, s->dropped, s->time_squeeze, 0,
|
|
|
0, 0, 0, 0, /* was fastroute */
|
|
|
s->cpu_collision );
|
|
|
return 0;
|
|
@@ -3220,7 +3204,6 @@ static int __init net_dev_init(void)
|
|
|
|
|
|
queue = &per_cpu(softnet_data, i);
|
|
|
skb_queue_head_init(&queue->input_pkt_queue);
|
|
|
- queue->throttle = 0;
|
|
|
queue->completion_queue = NULL;
|
|
|
INIT_LIST_HEAD(&queue->poll_list);
|
|
|
set_bit(__LINK_STATE_START, &queue->backlog_dev.state);
|