summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2008-07-08 23:11:25 -0700
committerDavid S. Miller <davem@davemloft.net>2008-07-08 23:11:25 -0700
commit86d804e10a37cd86f16bf72386c37e843a98a74b (patch)
tree04483a937f11c752aea998298a27fc79e6851b2d /net
parent970565bbad0c7b98db0d14131a69e5a0f4445d49 (diff)
downloadblackbird-op-linux-86d804e10a37cd86f16bf72386c37e843a98a74b.tar.gz
blackbird-op-linux-86d804e10a37cd86f16bf72386c37e843a98a74b.zip
netdev: Make netif_schedule() routines work with netdev_queue objects.
Only plain netif_schedule() remains taking a net_device, mostly as a compatability item while we transition the rest of these interfaces. Everything else calls netif_schedule_queue() or __netif_schedule(), both of which take a netdev_queue pointer. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/core/dev.c9
-rw-r--r--net/mac80211/main.c4
-rw-r--r--net/sched/sch_api.c4
-rw-r--r--net/sched/sch_cbq.c2
-rw-r--r--net/sched/sch_generic.c10
5 files changed, 15 insertions, 14 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index d6b8d3c3e6ec..0dc888ad4217 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1320,12 +1320,13 @@ static void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev)
}
-void __netif_schedule(struct net_device *dev)
+void __netif_schedule(struct netdev_queue *txq)
{
+ struct net_device *dev = txq->dev;
+
if (!test_and_set_bit(__LINK_STATE_SCHED, &dev->state)) {
- struct netdev_queue *txq = &dev->tx_queue;
- unsigned long flags;
struct softnet_data *sd;
+ unsigned long flags;
local_irq_save(flags);
sd = &__get_cpu_var(softnet_data);
@@ -1932,7 +1933,7 @@ static void net_tx_action(struct softirq_action *h)
qdisc_run(dev);
spin_unlock(&txq->lock);
} else {
- netif_schedule(dev);
+ netif_schedule_queue(txq);
}
}
}
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index 2968baa66b91..1c4d3ba6b878 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -885,10 +885,10 @@ void ieee80211_stop_tx_ba_cb(struct ieee80211_hw *hw, u8 *ra, u8 tid)
spin_unlock_bh(&txq->lock);
/* we just requeued the all the frames that were in the removed
- * queue, and since we might miss a softirq we do netif_schedule.
+ * queue, and since we might miss a softirq we do netif_schedule_queue.
* ieee80211_wake_queue is not used here as this queue is not
* necessarily stopped */
- netif_schedule(local->mdev);
+ netif_schedule_queue(txq);
spin_lock_bh(&sta->lock);
*state = HT_AGG_STATE_IDLE;
sta->ampdu_mlme.addba_req_num[tid] = 0;
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
index e73bd68aa7ae..95873f8dd37c 100644
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -282,11 +282,11 @@ static enum hrtimer_restart qdisc_watchdog(struct hrtimer *timer)
{
struct qdisc_watchdog *wd = container_of(timer, struct qdisc_watchdog,
timer);
- struct net_device *dev = qdisc_dev(wd->qdisc);
+ struct netdev_queue *txq = wd->qdisc->dev_queue;
wd->qdisc->flags &= ~TCQ_F_THROTTLED;
smp_wmb();
- netif_schedule(dev);
+ netif_schedule_queue(txq);
return HRTIMER_NORESTART;
}
diff --git a/net/sched/sch_cbq.c b/net/sched/sch_cbq.c
index 99ce3da2b0a4..4efc836cbf38 100644
--- a/net/sched/sch_cbq.c
+++ b/net/sched/sch_cbq.c
@@ -650,7 +650,7 @@ static enum hrtimer_restart cbq_undelay(struct hrtimer *timer)
}
sch->flags &= ~TCQ_F_THROTTLED;
- netif_schedule(qdisc_dev(sch));
+ netif_schedule_queue(sch->dev_queue);
return HRTIMER_NORESTART;
}
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index 8247a406a401..407dfdb142a4 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -62,7 +62,7 @@ static inline int qdisc_qlen(struct Qdisc *q)
return q->q.qlen;
}
-static inline int dev_requeue_skb(struct sk_buff *skb, struct net_device *dev,
+static inline int dev_requeue_skb(struct sk_buff *skb,
struct netdev_queue *dev_queue,
struct Qdisc *q)
{
@@ -71,7 +71,7 @@ static inline int dev_requeue_skb(struct sk_buff *skb, struct net_device *dev,
else
q->ops->requeue(skb, q);
- netif_schedule(dev);
+ netif_schedule_queue(dev_queue);
return 0;
}
@@ -114,7 +114,7 @@ static inline int handle_dev_cpu_collision(struct sk_buff *skb,
* some time.
*/
__get_cpu_var(netdev_rx_stat).cpu_collision++;
- ret = dev_requeue_skb(skb, dev, dev_queue, q);
+ ret = dev_requeue_skb(skb, dev_queue, q);
}
return ret;
@@ -179,7 +179,7 @@ static inline int qdisc_restart(struct net_device *dev)
printk(KERN_WARNING "BUG %s code %d qlen %d\n",
dev->name, ret, q->q.qlen);
- ret = dev_requeue_skb(skb, dev, txq, q);
+ ret = dev_requeue_skb(skb, txq, q);
break;
}
@@ -200,7 +200,7 @@ void __qdisc_run(struct net_device *dev)
* 2. we've been doing it for too long.
*/
if (need_resched() || jiffies != start_time) {
- netif_schedule(dev);
+ netif_schedule_queue(&dev->tx_queue);
break;
}
}
OpenPOWER on IntegriCloud