Skip to content

Commit

Permalink
firewire net: Allocate address handler before registering net_device.
Browse files Browse the repository at this point in the history
Allocate FIFO address before registering net_device.
This is preparation to change the pseudo hardware address format
for firewire devices to include the offset of the FIFO for receipt
of unicast datagrams, instead of mangling ARP/NDP messages in the
driver layer.

Signed-off-by: YOSHIFUJI Hideaki <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
yoshfuji authored and davem330 committed Mar 26, 2013
1 parent 021b97e commit 382c4b4
Showing 1 changed file with 10 additions and 12 deletions.
22 changes: 10 additions & 12 deletions drivers/firewire/net.c
Original file line number Diff line number Diff line change
Expand Up @@ -1286,13 +1286,9 @@ static int fwnet_open(struct net_device *net)
struct fwnet_device *dev = netdev_priv(net);
int ret;

ret = fwnet_fifo_start(dev);
if (ret)
return ret;

ret = fwnet_broadcast_start(dev);
if (ret)
goto out;
return ret;

netif_start_queue(net);

Expand All @@ -1301,9 +1297,6 @@ static int fwnet_open(struct net_device *net)
spin_unlock_irq(&dev->lock);

return 0;
out:
fwnet_fifo_stop(dev);
return ret;
}

/* ifdown */
Expand All @@ -1312,9 +1305,7 @@ static int fwnet_stop(struct net_device *net)
struct fwnet_device *dev = netdev_priv(net);

netif_stop_queue(net);

fwnet_broadcast_stop(dev);
fwnet_fifo_stop(dev);

return 0;
}
Expand Down Expand Up @@ -1593,6 +1584,11 @@ static int fwnet_probe(struct device *_dev)
dev->card = card;
dev->netdev = net;

ret = fwnet_fifo_start(dev);
if (ret < 0)
goto out;
dev->local_fifo = dev->handler.offset;

/*
* Use the RFC 2734 default 1500 octets or the maximum payload
* as initial MTU
Expand All @@ -1616,10 +1612,10 @@ static int fwnet_probe(struct device *_dev)
if (ret && allocated_netdev) {
unregister_netdev(net);
list_del(&dev->dev_link);
}
out:
if (ret && allocated_netdev)
fwnet_fifo_stop(dev);
free_netdev(net);
}

mutex_unlock(&fwnet_device_mutex);

Expand Down Expand Up @@ -1660,6 +1656,8 @@ static int fwnet_remove(struct device *_dev)
if (list_empty(&dev->peer_list)) {
unregister_netdev(net);

fwnet_fifo_stop(dev);

for (i = 0; dev->queued_datagrams && i < 5; i++)
ssleep(1);
WARN_ON(dev->queued_datagrams);
Expand Down

0 comments on commit 382c4b4

Please sign in to comment.