public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: Robert Love <robert.w.love@intel.com>
To: James.Bottomley@HansenPartnership.com, linux-scsi@vger.kernel.org
Cc: Joe Eykholt <jeykholt@cisco.com>, Robert Love <robert.w.love@intel.com>
Subject: [PATCH 04/24] libfcoe: fip: allow FIP receive to be called from IRQ.
Date: Fri, 18 Sep 2009 15:49:09 -0700	[thread overview]
Message-ID: <20090918224909.5928.4220.stgit@localhost.localdomain> (raw)
In-Reply-To: <20090918224847.5928.52092.stgit@localhost.localdomain>

From: Joe Eykholt <jeykholt@cisco.com>

FIP's fcoe_ctlr_recv() function was previously only called from
the soft IRQ in FCoE.  It's not performance critical and is more
convenient for some drivers to call it from the IRQ level.  Just
Change to use skb_queue()/dequeue() which uses spinlock_irqsave
instead of separate locking with _bh locks.

Signed-off-by: Joe Eykholt <jeykholt@cisco.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
---

 drivers/scsi/fcoe/libfcoe.c |   17 ++++-------------
 1 files changed, 4 insertions(+), 13 deletions(-)

diff --git a/drivers/scsi/fcoe/libfcoe.c b/drivers/scsi/fcoe/libfcoe.c
index 6c5c0d6..6480dcf 100644
--- a/drivers/scsi/fcoe/libfcoe.c
+++ b/drivers/scsi/fcoe/libfcoe.c
@@ -157,9 +157,7 @@ static void fcoe_ctlr_reset_fcfs(struct fcoe_ctlr *fip)
 void fcoe_ctlr_destroy(struct fcoe_ctlr *fip)
 {
 	cancel_work_sync(&fip->recv_work);
-	spin_lock_bh(&fip->fip_recv_list.lock);
-	__skb_queue_purge(&fip->fip_recv_list);
-	spin_unlock_bh(&fip->fip_recv_list.lock);
+	skb_queue_purge(&fip->fip_recv_list);
 
 	spin_lock_bh(&fip->lock);
 	fip->state = FIP_ST_DISABLED;
@@ -1006,13 +1004,11 @@ static void fcoe_ctlr_recv_clr_vlink(struct fcoe_ctlr *fip,
  * @fip: The FCoE controller that received the packet
  * @skb: The received FIP packet
  *
- * This is called from NET_RX_SOFTIRQ.
+ * This may be called from either NET_RX_SOFTIRQ or IRQ.
  */
 void fcoe_ctlr_recv(struct fcoe_ctlr *fip, struct sk_buff *skb)
 {
-	spin_lock_bh(&fip->fip_recv_list.lock);
-	__skb_queue_tail(&fip->fip_recv_list, skb);
-	spin_unlock_bh(&fip->fip_recv_list.lock);
+	skb_queue_tail(&fip->fip_recv_list, skb);
 	schedule_work(&fip->recv_work);
 }
 EXPORT_SYMBOL(fcoe_ctlr_recv);
@@ -1252,13 +1248,8 @@ static void fcoe_ctlr_recv_work(struct work_struct *recv_work)
 	struct sk_buff *skb;
 
 	fip = container_of(recv_work, struct fcoe_ctlr, recv_work);
-	spin_lock_bh(&fip->fip_recv_list.lock);
-	while ((skb = __skb_dequeue(&fip->fip_recv_list))) {
-		spin_unlock_bh(&fip->fip_recv_list.lock);
+	while ((skb = skb_dequeue(&fip->fip_recv_list)))
 		fcoe_ctlr_recv_handler(fip, skb);
-		spin_lock_bh(&fip->fip_recv_list.lock);
-	}
-	spin_unlock_bh(&fip->fip_recv_list.lock);
 }
 
 /**


  parent reply	other threads:[~2009-09-18 22:49 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-18 22:48 [PATCH 00/24] libfc, libfcoe, fcoe and fnic updates for 2.6.32 Robert Love
2009-09-18 22:48 ` [PATCH 01/24] libfc: lport: fix minor documentation errors Robert Love
2009-09-18 22:48 ` [PATCH 02/24] libfcoe: Allow FIP to be disabled by the driver Robert Love
2009-09-18 22:49 ` [PATCH 03/24] libfcoe: fip: use SCSI host number to identify debug messages Robert Love
2009-09-18 22:49 ` Robert Love [this message]
2009-09-18 22:49 ` [PATCH 05/24] libfcoe: FIP should report link to libfc whether selected or not Robert Love
2009-09-18 22:49 ` [PATCH 06/24] libfc: don't WARN_ON in lport_timeout for RESET state Robert Love
2009-09-18 22:49 ` [PATCH 07/24] libfcoe: don't send ELS in FIP mode if no FCF selected Robert Love
2009-09-18 22:49 ` [PATCH 08/24] fcoe: remove extra function decalrations Robert Love
2009-09-18 22:49 ` [PATCH 09/24] libfc: removes initializing fc_cpu_order and fc_cpu_mask per lport Robert Love
2009-09-18 22:49 ` [PATCH 10/24] libfc: adds missing exch release for accepted RRQ Robert Love
2009-09-18 22:49 ` [PATCH 11/24] libfc: removes unused disc_work and ex_list Robert Love
2009-09-18 22:50 ` [PATCH 12/24] fcoe: Use NETIF_F_FCOE_MTU flag to set up max frame size (lport->mfs) Robert Love
2009-09-18 22:50 ` [PATCH 13/24] fcoe: Call ndo_fcoe_enable/disable to turn FCoE feature on/off in LLD Robert Love
2009-09-18 22:50 ` [PATCH 14/24] fcoe: initialize return value in fcoe_destroy Robert Love
2009-09-18 22:50 ` [PATCH 15/24] fcoe: add check to fail gracefully in bonding mode Robert Love
2009-09-18 22:50 ` [PATCH 16/24] libfc: fix RNN_ID smashing skb payload Robert Love
2009-09-18 22:50 ` [PATCH 17/24] libfc: fix symbolic name registrations smashing skb data Robert Love
2009-09-18 22:50 ` [PATCH 18/24] libfc: fix fc_els_resp_type to correct display of CT responses Robert Love
2009-09-18 22:50 ` [PATCH 19/24] libfc: add set_fid function to libfc template Robert Love
2009-09-18 22:50 ` [PATCH 20/24] libfc: add host number to lport link up/down messages Robert Love
2009-09-18 22:50 ` [PATCH 21/24] libfcoe: fcoe: simplify receive FLOGI response Robert Love
2009-09-18 22:50 ` [PATCH 22/24] fnic: Add FIP support to the fnic driver Robert Love
2009-09-18 22:51 ` [PATCH 23/24] libfc: register FC4 features with the FC switch Robert Love
2009-09-18 22:51 ` [PATCH 24/24] MAINTAINERS: Update for libfc, libfcoe, fcoe Robert Love

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090918224909.5928.4220.stgit@localhost.localdomain \
    --to=robert.w.love@intel.com \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=jeykholt@cisco.com \
    --cc=linux-scsi@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox