#define eql_is_slave(dev) ((dev->flags & IFF_SLAVE) == IFF_SLAVE)
#define eql_is_master(dev) ((dev->flags & IFF_MASTER) == IFF_MASTER)
-static void eql_kill_one_slave(slave_t *slave);
+static void eql_kill_one_slave(slave_queue_t *queue, slave_t *slave);
static void eql_timer(unsigned long param)
{
if (slave->bytes_queued < 0)
slave->bytes_queued = 0;
} else {
- eql_kill_one_slave(slave);
+ eql_kill_one_slave(&eql->queue, slave);
}
}
static void __init eql_setup(struct net_device *dev)
{
- equalizer_t *eql = dev->priv;
+ equalizer_t *eql = netdev_priv(dev);
SET_MODULE_OWNER(dev);
init_timer(&eql->timer);
- eql->timer.data = (unsigned long) dev->priv;
+ eql->timer.data = (unsigned long) eql;
eql->timer.expires = jiffies + EQL_DEFAULT_RESCHED_IVAL;
eql->timer.function = eql_timer;
static int eql_open(struct net_device *dev)
{
- equalizer_t *eql = dev->priv;
+ equalizer_t *eql = netdev_priv(dev);
/* XXX We should force this off automatically for the user. */
printk(KERN_INFO "%s: remember to turn off Van-Jacobson compression on "
return 0;
}
-static void eql_kill_one_slave(slave_t *slave)
+static void eql_kill_one_slave(slave_queue_t *queue, slave_t *slave)
{
list_del(&slave->list);
+ queue->num_slaves--;
slave->dev->flags &= ~IFF_SLAVE;
dev_put(slave->dev);
kfree(slave);
list_for_each_safe(this, tmp, head) {
slave_t *s = list_entry(this, slave_t, list);
- eql_kill_one_slave(s);
- queue->num_slaves--;
+ eql_kill_one_slave(queue, s);
}
spin_unlock_bh(&queue->lock);
static int eql_close(struct net_device *dev)
{
- equalizer_t *eql = dev->priv;
+ equalizer_t *eql = netdev_priv(dev);
/*
* The timer has to be stopped first before we start hacking away
}
} else {
/* We found a dead slave, kill it. */
- eql_kill_one_slave(slave);
+ eql_kill_one_slave(queue, slave);
}
}
return best_slave;
static int eql_slave_xmit(struct sk_buff *skb, struct net_device *dev)
{
- equalizer_t *eql = dev->priv;
+ equalizer_t *eql = netdev_priv(dev);
slave_t *slave;
spin_lock(&eql->queue.lock);
static struct net_device_stats * eql_get_stats(struct net_device *dev)
{
- equalizer_t *eql = dev->priv;
+ equalizer_t *eql = netdev_priv(dev);
return &eql->stats;
}
static inline int eql_is_full(slave_queue_t *queue)
{
- equalizer_t *eql = queue->master_dev->priv;
+ equalizer_t *eql = netdev_priv(queue->master_dev);
if (queue->num_slaves >= eql->max_slaves)
return 1;
static int __eql_insert_slave(slave_queue_t *queue, slave_t *slave)
{
if (!eql_is_full(queue)) {
- slave_t *duplicate_slave = 0;
+ slave_t *duplicate_slave = NULL;
duplicate_slave = __eql_find_slave_dev(queue, slave->dev);
if (duplicate_slave != 0)
- eql_kill_one_slave(duplicate_slave);
+ eql_kill_one_slave(queue, duplicate_slave);
list_add(&slave->list, &queue->all_slaves);
queue->num_slaves++;
if (!eql_is_master(slave_dev) &&
!eql_is_slave(slave_dev)) {
slave_t *s = kmalloc(sizeof(*s), GFP_KERNEL);
- equalizer_t *eql = master_dev->priv;
+ equalizer_t *eql = netdev_priv(master_dev);
int ret;
if (!s) {
static int eql_emancipate(struct net_device *master_dev, slaving_request_t __user *srqp)
{
- equalizer_t *eql = master_dev->priv;
+ equalizer_t *eql = netdev_priv(master_dev);
struct net_device *slave_dev;
slaving_request_t srq;
int ret;
slave_dev);
if (slave) {
- eql_kill_one_slave(slave);
+ eql_kill_one_slave(&eql->queue, slave);
ret = 0;
}
}
static int eql_g_slave_cfg(struct net_device *dev, slave_config_t __user *scp)
{
- equalizer_t *eql = dev->priv;
+ equalizer_t *eql = netdev_priv(dev);
slave_t *slave;
struct net_device *slave_dev;
slave_config_t sc;
return -ENODEV;
ret = -EINVAL;
- if (!slave_dev)
- return ret;
spin_lock_bh(&eql->queue.lock);
if (eql_is_slave(slave_dev)) {
return -ENODEV;
ret = -EINVAL;
- if (!slave_dev)
- return ret;
- eql = dev->priv;
+ eql = netdev_priv(dev);
spin_lock_bh(&eql->queue.lock);
if (eql_is_slave(slave_dev)) {
slave = __eql_find_slave_dev(&eql->queue, slave_dev);
master_config_t mc;
if (eql_is_master(dev)) {
- eql = dev->priv;
+ eql = netdev_priv(dev);
mc.max_slaves = eql->max_slaves;
mc.min_slaves = eql->min_slaves;
if (copy_to_user(mcp, &mc, sizeof (master_config_t)))
return -EFAULT;
if (eql_is_master(dev)) {
- eql = dev->priv;
+ eql = netdev_priv(dev);
eql->max_slaves = mc.max_slaves;
eql->min_slaves = mc.min_slaves;
return 0;