diff options
author | Florian Westphal <fw@strlen.de> | 2016-04-24 15:38:14 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-04-26 15:53:05 -0400 |
commit | f0cdf76c103ffa34ca5ac87dcdef7edffc722cbf (patch) | |
tree | 893afe6a3b448bfeb0dd36cae35a6ce844230852 /net | |
parent | a6086a893718db07ef9e7af5624ec27cb376ef0a (diff) |
net: remove NETDEV_TX_LOCKED support
No more users in the tree, remove NETDEV_TX_LOCKED support.
Adds another hole in softnet_stats struct, but better than keeping
the unused collision counter around.
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/core/net-procfs.c | 3 | ||||
-rw-r--r-- | net/core/pktgen.c | 1 | ||||
-rw-r--r-- | net/sched/sch_generic.c | 32 |
3 files changed, 2 insertions, 34 deletions
diff --git a/net/core/net-procfs.c b/net/core/net-procfs.c index 2bf83299600a..14d09345f00d 100644 --- a/net/core/net-procfs.c +++ b/net/core/net-procfs.c | |||
@@ -162,7 +162,8 @@ static int softnet_seq_show(struct seq_file *seq, void *v) | |||
162 | "%08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x\n", | 162 | "%08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x\n", |
163 | sd->processed, sd->dropped, sd->time_squeeze, 0, | 163 | sd->processed, sd->dropped, sd->time_squeeze, 0, |
164 | 0, 0, 0, 0, /* was fastroute */ | 164 | 0, 0, 0, 0, /* was fastroute */ |
165 | sd->cpu_collision, sd->received_rps, flow_limit_count); | 165 | 0, /* was cpu_collision */ |
166 | sd->received_rps, flow_limit_count); | ||
166 | return 0; | 167 | return 0; |
167 | } | 168 | } |
168 | 169 | ||
diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 20999aa596dd..8604ae245960 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c | |||
@@ -3472,7 +3472,6 @@ xmit_more: | |||
3472 | pkt_dev->odevname, ret); | 3472 | pkt_dev->odevname, ret); |
3473 | pkt_dev->errors++; | 3473 | pkt_dev->errors++; |
3474 | /* fallthru */ | 3474 | /* fallthru */ |
3475 | case NETDEV_TX_LOCKED: | ||
3476 | case NETDEV_TX_BUSY: | 3475 | case NETDEV_TX_BUSY: |
3477 | /* Retry it next time */ | 3476 | /* Retry it next time */ |
3478 | atomic_dec(&(pkt_dev->skb->users)); | 3477 | atomic_dec(&(pkt_dev->skb->users)); |
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index 80742edea96f..9c7756237904 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c | |||
@@ -108,35 +108,6 @@ static struct sk_buff *dequeue_skb(struct Qdisc *q, bool *validate, | |||
108 | return skb; | 108 | return skb; |
109 | } | 109 | } |
110 | 110 | ||
111 | static inline int handle_dev_cpu_collision(struct sk_buff *skb, | ||
112 | struct netdev_queue *dev_queue, | ||
113 | struct Qdisc *q) | ||
114 | { | ||
115 | int ret; | ||
116 | |||
117 | if (unlikely(dev_queue->xmit_lock_owner == smp_processor_id())) { | ||
118 | /* | ||
119 | * Same CPU holding the lock. It may be a transient | ||
120 | * configuration error, when hard_start_xmit() recurses. We | ||
121 | * detect it by checking xmit owner and drop the packet when | ||
122 | * deadloop is detected. Return OK to try the next skb. | ||
123 | */ | ||
124 | kfree_skb_list(skb); | ||
125 | net_warn_ratelimited("Dead loop on netdevice %s, fix it urgently!\n", | ||
126 | dev_queue->dev->name); | ||
127 | ret = qdisc_qlen(q); | ||
128 | } else { | ||
129 | /* | ||
130 | * Another cpu is holding lock, requeue & delay xmits for | ||
131 | * some time. | ||
132 | */ | ||
133 | __this_cpu_inc(softnet_data.cpu_collision); | ||
134 | ret = dev_requeue_skb(skb, q); | ||
135 | } | ||
136 | |||
137 | return ret; | ||
138 | } | ||
139 | |||
140 | /* | 111 | /* |
141 | * Transmit possibly several skbs, and handle the return status as | 112 | * Transmit possibly several skbs, and handle the return status as |
142 | * required. Holding the __QDISC___STATE_RUNNING bit guarantees that | 113 | * required. Holding the __QDISC___STATE_RUNNING bit guarantees that |
@@ -174,9 +145,6 @@ int sch_direct_xmit(struct sk_buff *skb, struct Qdisc *q, | |||
174 | if (dev_xmit_complete(ret)) { | 145 | if (dev_xmit_complete(ret)) { |
175 | /* Driver sent out skb successfully or skb was consumed */ | 146 | /* Driver sent out skb successfully or skb was consumed */ |
176 | ret = qdisc_qlen(q); | 147 | ret = qdisc_qlen(q); |
177 | } else if (ret == NETDEV_TX_LOCKED) { | ||
178 | /* Driver try lock failed */ | ||
179 | ret = handle_dev_cpu_collision(skb, txq, q); | ||
180 | } else { | 148 | } else { |
181 | /* Driver returned NETDEV_TX_BUSY - requeue skb */ | 149 | /* Driver returned NETDEV_TX_BUSY - requeue skb */ |
182 | if (unlikely(ret != NETDEV_TX_BUSY)) | 150 | if (unlikely(ret != NETDEV_TX_BUSY)) |