firewire: allocate broadcast channel in hardware

On OHCI 1.1 controllers, let the hardware allocate the broadcast channel
automatically.  This removes a theoretical race condition directly after
a bus reset where it could be possible to read the channel allocation
register with channel 31 still being unallocated.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
This commit is contained in:
Clemens Ladisch
2010-06-10 08:40:49 +02:00
parent 7e0e314f19
commit e91b2787d0
4 changed files with 26 additions and 12 deletions

View File

@@ -543,7 +543,8 @@ void fw_core_handle_bus_reset(struct fw_card *card, int node_id, int generation,
spin_lock_irqsave(&card->lock, flags);
card->broadcast_channel_allocated = false;
card->broadcast_channel_allocated = (card->driver->get_features(card) &
FEATURE_CHANNEL_31_ALLOCATED) != 0;
card->node_id = node_id;
/*
* Update node_id before generation to prevent anybody from using