diff options
-rw-r--r-- | net/sched/sch_teql.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/net/sched/sch_teql.c b/net/sched/sch_teql.c index cfc8e7caba62..ec697cebb63b 100644 --- a/net/sched/sch_teql.c +++ b/net/sched/sch_teql.c | |||
@@ -289,9 +289,9 @@ restart: | |||
289 | 289 | ||
290 | do { | 290 | do { |
291 | struct net_device *slave = qdisc_dev(q); | 291 | struct net_device *slave = qdisc_dev(q); |
292 | struct netdev_queue *slave_txq; | 292 | struct netdev_queue *slave_txq = netdev_get_tx_queue(slave, 0); |
293 | const struct net_device_ops *slave_ops = slave->netdev_ops; | ||
293 | 294 | ||
294 | slave_txq = netdev_get_tx_queue(slave, 0); | ||
295 | if (slave_txq->qdisc_sleeping != q) | 295 | if (slave_txq->qdisc_sleeping != q) |
296 | continue; | 296 | continue; |
297 | if (__netif_subqueue_stopped(slave, subq) || | 297 | if (__netif_subqueue_stopped(slave, subq) || |
@@ -305,7 +305,7 @@ restart: | |||
305 | if (__netif_tx_trylock(slave_txq)) { | 305 | if (__netif_tx_trylock(slave_txq)) { |
306 | if (!netif_tx_queue_stopped(slave_txq) && | 306 | if (!netif_tx_queue_stopped(slave_txq) && |
307 | !netif_tx_queue_frozen(slave_txq) && | 307 | !netif_tx_queue_frozen(slave_txq) && |
308 | slave->hard_start_xmit(skb, slave) == 0) { | 308 | slave_ops->ndo_start_xmit(skb, slave) == 0) { |
309 | __netif_tx_unlock(slave_txq); | 309 | __netif_tx_unlock(slave_txq); |
310 | master->slaves = NEXT_SLAVE(q); | 310 | master->slaves = NEXT_SLAVE(q); |
311 | netif_wake_queue(dev); | 311 | netif_wake_queue(dev); |
@@ -420,6 +420,14 @@ static int teql_master_mtu(struct net_device *dev, int new_mtu) | |||
420 | return 0; | 420 | return 0; |
421 | } | 421 | } |
422 | 422 | ||
423 | static const struct net_device_ops teql_netdev_ops = { | ||
424 | .ndo_open = teql_master_open, | ||
425 | .ndo_stop = teql_master_close, | ||
426 | .ndo_start_xmit = teql_master_xmit, | ||
427 | .ndo_get_stats = teql_master_stats, | ||
428 | .ndo_change_mtu = teql_master_mtu, | ||
429 | }; | ||
430 | |||
423 | static __init void teql_master_setup(struct net_device *dev) | 431 | static __init void teql_master_setup(struct net_device *dev) |
424 | { | 432 | { |
425 | struct teql_master *master = netdev_priv(dev); | 433 | struct teql_master *master = netdev_priv(dev); |
@@ -436,11 +444,7 @@ static __init void teql_master_setup(struct net_device *dev) | |||
436 | ops->destroy = teql_destroy; | 444 | ops->destroy = teql_destroy; |
437 | ops->owner = THIS_MODULE; | 445 | ops->owner = THIS_MODULE; |
438 | 446 | ||
439 | dev->open = teql_master_open; | 447 | dev->netdev_ops = &teql_netdev_ops; |
440 | dev->hard_start_xmit = teql_master_xmit; | ||
441 | dev->stop = teql_master_close; | ||
442 | dev->get_stats = teql_master_stats; | ||
443 | dev->change_mtu = teql_master_mtu; | ||
444 | dev->type = ARPHRD_VOID; | 448 | dev->type = ARPHRD_VOID; |
445 | dev->mtu = 1500; | 449 | dev->mtu = 1500; |
446 | dev->tx_queue_len = 100; | 450 | dev->tx_queue_len = 100; |