libertas: Set command sequence number later to ensure consistency
authorDaniel Drake <dsd@laptop.org>
Thu, 26 May 2011 20:31:08 +0000 (21:31 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 31 May 2011 18:47:23 +0000 (14:47 -0400)
commit71005be40a7fc95edda3cc462361ce0243e4f5fa
treed2787b9d02c8a77cffa1028e079856b7fbae50cd
parent11ad2f52826ac6d58d6780d3d8a3e098c88d9142
libertas: Set command sequence number later to ensure consistency

Before this patch, the command sequence number is being set before
lbs_queue_cmd() adds the command to the queue. However, lbs_queue_cmd()
sometimes forces commands to queue-jump (e.g. CMD_802_11_WAKEUP_CONFIRM).
It currently does this without considering that sequence numbers might need
adjusting to keep things running in order.

Fix this by setting the sequence number at a later stage, just before
we're actually submitting the command to the hardware. Also fixes a
possible race where seqnum was being modified outside of the driver
lock.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/libertas/cmd.c