114 lines
3.5 KiB
Diff
114 lines
3.5 KiB
Diff
From 123b09bb43cd35bb64a91c8695a71df65d1e0f78 Mon Sep 17 00:00:00 2001
|
|
From: Thomas Gleixner <tglx@linutronix.de>
|
|
Date: Sat, 12 Nov 2011 14:00:48 +0100
|
|
Subject: [230/256] scsi-fcoe-rt-aware.patch
|
|
|
|
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|
---
|
|
drivers/scsi/fcoe/fcoe.c | 16 ++++++++--------
|
|
drivers/scsi/fcoe/fcoe_ctlr.c | 4 ++--
|
|
drivers/scsi/libfc/fc_exch.c | 4 ++--
|
|
3 files changed, 12 insertions(+), 12 deletions(-)
|
|
|
|
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
|
|
index 335e851..7f791b9 100644
|
|
--- a/drivers/scsi/fcoe/fcoe.c
|
|
+++ b/drivers/scsi/fcoe/fcoe.c
|
|
@@ -1222,7 +1222,7 @@ static void fcoe_percpu_thread_destroy(unsigned int cpu)
|
|
struct sk_buff *skb;
|
|
#ifdef CONFIG_SMP
|
|
struct fcoe_percpu_s *p0;
|
|
- unsigned targ_cpu = get_cpu();
|
|
+ unsigned targ_cpu = get_cpu_light();
|
|
#endif /* CONFIG_SMP */
|
|
|
|
FCOE_DBG("Destroying receive thread for CPU %d\n", cpu);
|
|
@@ -1278,7 +1278,7 @@ static void fcoe_percpu_thread_destroy(unsigned int cpu)
|
|
kfree_skb(skb);
|
|
spin_unlock_bh(&p->fcoe_rx_list.lock);
|
|
}
|
|
- put_cpu();
|
|
+ put_cpu_light();
|
|
#else
|
|
/*
|
|
* This a non-SMP scenario where the singular Rx thread is
|
|
@@ -1494,11 +1494,11 @@ err2:
|
|
static int fcoe_alloc_paged_crc_eof(struct sk_buff *skb, int tlen)
|
|
{
|
|
struct fcoe_percpu_s *fps;
|
|
- int rc;
|
|
+ int rc, cpu = get_cpu_light();
|
|
|
|
- fps = &get_cpu_var(fcoe_percpu);
|
|
+ fps = &per_cpu(fcoe_percpu, cpu);
|
|
rc = fcoe_get_paged_crc_eof(skb, tlen, fps);
|
|
- put_cpu_var(fcoe_percpu);
|
|
+ put_cpu_light();
|
|
|
|
return rc;
|
|
}
|
|
@@ -1738,7 +1738,7 @@ static void fcoe_recv_frame(struct sk_buff *skb)
|
|
*/
|
|
hp = (struct fcoe_hdr *) skb_network_header(skb);
|
|
|
|
- stats = per_cpu_ptr(lport->dev_stats, get_cpu());
|
|
+ stats = per_cpu_ptr(lport->dev_stats, get_cpu_light());
|
|
if (unlikely(FC_FCOE_DECAPS_VER(hp) != FC_FCOE_VER)) {
|
|
if (stats->ErrorFrames < 5)
|
|
printk(KERN_WARNING "fcoe: FCoE version "
|
|
@@ -1770,13 +1770,13 @@ static void fcoe_recv_frame(struct sk_buff *skb)
|
|
goto drop;
|
|
|
|
if (!fcoe_filter_frames(lport, fp)) {
|
|
- put_cpu();
|
|
+ put_cpu_light();
|
|
fc_exch_recv(lport, fp);
|
|
return;
|
|
}
|
|
drop:
|
|
stats->ErrorFrames++;
|
|
- put_cpu();
|
|
+ put_cpu_light();
|
|
kfree_skb(skb);
|
|
}
|
|
|
|
diff --git a/drivers/scsi/fcoe/fcoe_ctlr.c b/drivers/scsi/fcoe/fcoe_ctlr.c
|
|
index 249a106..753fcb9 100644
|
|
--- a/drivers/scsi/fcoe/fcoe_ctlr.c
|
|
+++ b/drivers/scsi/fcoe/fcoe_ctlr.c
|
|
@@ -719,7 +719,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip)
|
|
unsigned long sel_time = 0;
|
|
struct fcoe_dev_stats *stats;
|
|
|
|
- stats = per_cpu_ptr(fip->lp->dev_stats, get_cpu());
|
|
+ stats = per_cpu_ptr(fip->lp->dev_stats, get_cpu_light());
|
|
|
|
list_for_each_entry_safe(fcf, next, &fip->fcfs, list) {
|
|
deadline = fcf->time + fcf->fka_period + fcf->fka_period / 2;
|
|
@@ -752,7 +752,7 @@ static unsigned long fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip)
|
|
sel_time = fcf->time;
|
|
}
|
|
}
|
|
- put_cpu();
|
|
+ put_cpu_light();
|
|
if (sel_time && !fip->sel_fcf && !fip->sel_time) {
|
|
sel_time += msecs_to_jiffies(FCOE_CTLR_START_DELAY);
|
|
fip->sel_time = sel_time;
|
|
diff --git a/drivers/scsi/libfc/fc_exch.c b/drivers/scsi/libfc/fc_exch.c
|
|
index aceffad..fb4e6ce 100644
|
|
--- a/drivers/scsi/libfc/fc_exch.c
|
|
+++ b/drivers/scsi/libfc/fc_exch.c
|
|
@@ -724,10 +724,10 @@ static struct fc_exch *fc_exch_em_alloc(struct fc_lport *lport,
|
|
}
|
|
memset(ep, 0, sizeof(*ep));
|
|
|
|
- cpu = get_cpu();
|
|
+ cpu = get_cpu_light();
|
|
pool = per_cpu_ptr(mp->pool, cpu);
|
|
spin_lock_bh(&pool->lock);
|
|
- put_cpu();
|
|
+ put_cpu_light();
|
|
|
|
/* peek cache of free slot */
|
|
if (pool->left != FC_XID_UNKNOWN) {
|