aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2016-04-24 15:38:14 -0400
committerDavid S. Miller <davem@davemloft.net>2016-04-26 15:53:05 -0400
commitf0cdf76c103ffa34ca5ac87dcdef7edffc722cbf (patch)
tree893afe6a3b448bfeb0dd36cae35a6ce844230852 /net
parenta6086a893718db07ef9e7af5624ec27cb376ef0a (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.c3
-rw-r--r--net/core/pktgen.c1
-rw-r--r--net/sched/sch_generic.c32
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
111static 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))