diff options
author | YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> | 2013-03-07 20:42:38 -0500 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2013-03-13 11:11:11 -0400 |
commit | b9a8871ac2aab0cc87190f1ab870785b32cc24aa (patch) | |
tree | b2ed2fedeb6969c7af2a20dedcc7986ff7fc8a0a /drivers/firewire | |
parent | 9d39c90abc6766f875d2855a1a73c43b6ffa09c0 (diff) |
firewire net: Setup broadcast and local fifo independently.
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/firewire')
-rw-r--r-- | drivers/firewire/net.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/firewire/net.c b/drivers/firewire/net.c index 96f6ee5bffd4..fbd07ebd3f5f 100644 --- a/drivers/firewire/net.c +++ b/drivers/firewire/net.c | |||
@@ -1156,10 +1156,6 @@ static int fwnet_broadcast_start(struct fwnet_device *dev) | |||
1156 | unsigned long offset; | 1156 | unsigned long offset; |
1157 | unsigned u; | 1157 | unsigned u; |
1158 | 1158 | ||
1159 | retval = fwnet_fifo_start(dev); | ||
1160 | if (retval < 0) | ||
1161 | goto failed_initial; | ||
1162 | |||
1163 | max_receive = 1U << (dev->card->max_receive + 1); | 1159 | max_receive = 1U << (dev->card->max_receive + 1); |
1164 | num_packets = (FWNET_ISO_PAGE_COUNT * PAGE_SIZE) / max_receive; | 1160 | num_packets = (FWNET_ISO_PAGE_COUNT * PAGE_SIZE) / max_receive; |
1165 | 1161 | ||
@@ -1240,8 +1236,6 @@ static int fwnet_broadcast_start(struct fwnet_device *dev) | |||
1240 | fw_iso_context_destroy(context); | 1236 | fw_iso_context_destroy(context); |
1241 | dev->broadcast_rcv_context = NULL; | 1237 | dev->broadcast_rcv_context = NULL; |
1242 | failed_context_create: | 1238 | failed_context_create: |
1243 | fwnet_fifo_stop(dev); | ||
1244 | failed_initial: | ||
1245 | 1239 | ||
1246 | return retval; | 1240 | return retval; |
1247 | } | 1241 | } |
@@ -1260,10 +1254,14 @@ static int fwnet_open(struct net_device *net) | |||
1260 | struct fwnet_device *dev = netdev_priv(net); | 1254 | struct fwnet_device *dev = netdev_priv(net); |
1261 | int ret; | 1255 | int ret; |
1262 | 1256 | ||
1257 | ret = fwnet_fifo_start(dev); | ||
1258 | if (ret) | ||
1259 | return ret; | ||
1260 | |||
1263 | if (dev->broadcast_state == FWNET_BROADCAST_ERROR) { | 1261 | if (dev->broadcast_state == FWNET_BROADCAST_ERROR) { |
1264 | ret = fwnet_broadcast_start(dev); | 1262 | ret = fwnet_broadcast_start(dev); |
1265 | if (ret) | 1263 | if (ret) |
1266 | return ret; | 1264 | goto out; |
1267 | } | 1265 | } |
1268 | netif_start_queue(net); | 1266 | netif_start_queue(net); |
1269 | 1267 | ||
@@ -1272,6 +1270,9 @@ static int fwnet_open(struct net_device *net) | |||
1272 | spin_unlock_irq(&dev->lock); | 1270 | spin_unlock_irq(&dev->lock); |
1273 | 1271 | ||
1274 | return 0; | 1272 | return 0; |
1273 | out: | ||
1274 | fwnet_fifo_stop(dev); | ||
1275 | return ret; | ||
1275 | } | 1276 | } |
1276 | 1277 | ||
1277 | /* ifdown */ | 1278 | /* ifdown */ |