[SCSI] fcoe: reduces lock cost when adding a new skb to fcoe_pending_queue
authorVasu Dev <vasu.dev@intel.com>
Wed, 6 May 2009 17:52:34 +0000 (10:52 -0700)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Mon, 8 Jun 2009 18:29:13 +0000 (13:29 -0500)
commit4bb6b5153313269b4b328f4f5ddc558c45c50713
treea75bdbf690d9f91b7486db40515b61302a44e12b
parent30121d14f503dac056ee7f68d99eb5d548899b59
[SCSI] fcoe: reduces lock cost when adding a new skb to fcoe_pending_queue

Currently fcoe_pending_queue.lock held twice for every new skb
adding to this queue when already least one pkt is pending in this
queue and that is not uncommon once skb pkts starts getting queued
here upon fcoe_start_io => dev_queue_xmit failure.

This patch moves most fcoe_pending_queue logic to fcoe_check_wait_queue
function, this new logic grabs fcoe_pending_queue.lock only once to
add a new skb instead twice as used to be.

I think after this patch call flow around fcoe_check_wait_queue
calling in fcoe_xmit is bit simplified with modified
fcoe_check_wait_queue function taking care of adding and
removing pending skb in one function.

Signed-off-by: Vasu Dev <vasu.dev@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/fcoe/fcoe.c