Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
36a27968
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
36a27968
编写于
6月 26, 2013
作者:
J
James Bottomley
浏览文件
操作
浏览文件
下载
差异文件
Merge tag 'fcoe' into fixes
3.10 fixes
上级
222ab594
f4aaea6d
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
31 addition
and
25 deletion
+31
-25
MAINTAINERS
MAINTAINERS
+1
-1
drivers/scsi/fcoe/fcoe_ctlr.c
drivers/scsi/fcoe/fcoe_ctlr.c
+5
-10
drivers/scsi/libfc/fc_exch.c
drivers/scsi/libfc/fc_exch.c
+24
-13
drivers/scsi/libfc/fc_rport.c
drivers/scsi/libfc/fc_rport.c
+1
-1
未找到文件。
MAINTAINERS
浏览文件 @
36a27968
...
...
@@ -3220,7 +3220,7 @@ F: lib/fault-inject.c
FCOE SUBSYSTEM (libfc, libfcoe, fcoe)
M: Robert Love <robert.w.love@intel.com>
L: devel@open-fcoe.org
L:
fcoe-
devel@open-fcoe.org
W: www.Open-FCoE.org
S: Supported
F: drivers/scsi/libfc/
...
...
drivers/scsi/fcoe/fcoe_ctlr.c
浏览文件 @
36a27968
...
...
@@ -1548,9 +1548,6 @@ static struct fcoe_fcf *fcoe_ctlr_select(struct fcoe_ctlr *fip)
{
struct
fcoe_fcf
*
fcf
;
struct
fcoe_fcf
*
best
=
fip
->
sel_fcf
;
struct
fcoe_fcf
*
first
;
first
=
list_first_entry
(
&
fip
->
fcfs
,
struct
fcoe_fcf
,
list
);
list_for_each_entry
(
fcf
,
&
fip
->
fcfs
,
list
)
{
LIBFCOE_FIP_DBG
(
fip
,
"consider FCF fab %16.16llx "
...
...
@@ -1568,17 +1565,15 @@ static struct fcoe_fcf *fcoe_ctlr_select(struct fcoe_ctlr *fip)
""
:
"un"
);
continue
;
}
if
(
fcf
->
fabric_name
!=
first
->
fabric_name
||
fcf
->
vfid
!=
first
->
vfid
||
fcf
->
fc_map
!=
first
->
fc_map
)
{
if
(
!
best
||
fcf
->
pri
<
best
->
pri
||
best
->
flogi_sent
)
best
=
fcf
;
if
(
fcf
->
fabric_name
!=
best
->
fabric_name
||
fcf
->
vfid
!=
best
->
vfid
||
fcf
->
fc_map
!=
best
->
fc_map
)
{
LIBFCOE_FIP_DBG
(
fip
,
"Conflicting fabric, VFID, "
"or FC-MAP
\n
"
);
return
NULL
;
}
if
(
fcf
->
flogi_sent
)
continue
;
if
(
!
best
||
fcf
->
pri
<
best
->
pri
||
best
->
flogi_sent
)
best
=
fcf
;
}
fip
->
sel_fcf
=
best
;
if
(
best
)
{
...
...
drivers/scsi/libfc/fc_exch.c
浏览文件 @
36a27968
...
...
@@ -463,13 +463,7 @@ static void fc_exch_delete(struct fc_exch *ep)
fc_exch_release
(
ep
);
/* drop hold for exch in mp */
}
/**
* fc_seq_send() - Send a frame using existing sequence/exchange pair
* @lport: The local port that the exchange will be sent on
* @sp: The sequence to be sent
* @fp: The frame to be sent on the exchange
*/
static
int
fc_seq_send
(
struct
fc_lport
*
lport
,
struct
fc_seq
*
sp
,
static
int
fc_seq_send_locked
(
struct
fc_lport
*
lport
,
struct
fc_seq
*
sp
,
struct
fc_frame
*
fp
)
{
struct
fc_exch
*
ep
;
...
...
@@ -479,7 +473,7 @@ static int fc_seq_send(struct fc_lport *lport, struct fc_seq *sp,
u8
fh_type
=
fh
->
fh_type
;
ep
=
fc_seq_exch
(
sp
);
WARN_ON
(
(
ep
->
esb_stat
&
ESB_ST_SEQ_INIT
)
!=
ESB_ST_SEQ_INIT
);
WARN_ON
(
!
(
ep
->
esb_stat
&
ESB_ST_SEQ_INIT
)
);
f_ctl
=
ntoh24
(
fh
->
fh_f_ctl
);
fc_exch_setup_hdr
(
ep
,
fp
,
f_ctl
);
...
...
@@ -502,17 +496,34 @@ static int fc_seq_send(struct fc_lport *lport, struct fc_seq *sp,
error
=
lport
->
tt
.
frame_send
(
lport
,
fp
);
if
(
fh_type
==
FC_TYPE_BLS
)
return
error
;
goto
out
;
/*
* Update the exchange and sequence flags,
* assuming all frames for the sequence have been sent.
* We can only be called to send once for each sequence.
*/
spin_lock_bh
(
&
ep
->
ex_lock
);
ep
->
f_ctl
=
f_ctl
&
~
FC_FC_FIRST_SEQ
;
/* not first seq */
if
(
f_ctl
&
FC_FC_SEQ_INIT
)
ep
->
esb_stat
&=
~
ESB_ST_SEQ_INIT
;
out:
return
error
;
}
/**
* fc_seq_send() - Send a frame using existing sequence/exchange pair
* @lport: The local port that the exchange will be sent on
* @sp: The sequence to be sent
* @fp: The frame to be sent on the exchange
*/
static
int
fc_seq_send
(
struct
fc_lport
*
lport
,
struct
fc_seq
*
sp
,
struct
fc_frame
*
fp
)
{
struct
fc_exch
*
ep
;
int
error
;
ep
=
fc_seq_exch
(
sp
);
spin_lock_bh
(
&
ep
->
ex_lock
);
error
=
fc_seq_send_locked
(
lport
,
sp
,
fp
);
spin_unlock_bh
(
&
ep
->
ex_lock
);
return
error
;
}
...
...
@@ -629,7 +640,7 @@ static int fc_exch_abort_locked(struct fc_exch *ep,
if
(
fp
)
{
fc_fill_fc_hdr
(
fp
,
FC_RCTL_BA_ABTS
,
ep
->
did
,
ep
->
sid
,
FC_TYPE_BLS
,
FC_FC_END_SEQ
|
FC_FC_SEQ_INIT
,
0
);
error
=
fc_seq_send
(
ep
->
lp
,
sp
,
fp
);
error
=
fc_seq_send
_locked
(
ep
->
lp
,
sp
,
fp
);
}
else
error
=
-
ENOBUFS
;
return
error
;
...
...
@@ -1132,7 +1143,7 @@ static void fc_seq_send_last(struct fc_seq *sp, struct fc_frame *fp,
f_ctl
=
FC_FC_LAST_SEQ
|
FC_FC_END_SEQ
|
FC_FC_SEQ_INIT
;
f_ctl
|=
ep
->
f_ctl
;
fc_fill_fc_hdr
(
fp
,
rctl
,
ep
->
did
,
ep
->
sid
,
fh_type
,
f_ctl
,
0
);
fc_seq_send
(
ep
->
lp
,
sp
,
fp
);
fc_seq_send
_locked
(
ep
->
lp
,
sp
,
fp
);
}
/**
...
...
@@ -1307,8 +1318,8 @@ static void fc_exch_recv_abts(struct fc_exch *ep, struct fc_frame *rx_fp)
ap
->
ba_low_seq_cnt
=
htons
(
sp
->
cnt
);
}
sp
=
fc_seq_start_next_locked
(
sp
);
spin_unlock_bh
(
&
ep
->
ex_lock
);
fc_seq_send_last
(
sp
,
fp
,
FC_RCTL_BA_ACC
,
FC_TYPE_BLS
);
spin_unlock_bh
(
&
ep
->
ex_lock
);
fc_frame_free
(
rx_fp
);
return
;
...
...
drivers/scsi/libfc/fc_rport.c
浏览文件 @
36a27968
...
...
@@ -1962,7 +1962,7 @@ static int fc_rport_fcp_prli(struct fc_rport_priv *rdata, u32 spp_len,
rdata
->
flags
|=
FC_RP_FLAGS_RETRY
;
rdata
->
supported_classes
=
FC_COS_CLASS3
;
if
(
!
(
lport
->
service_params
&
FC
_RPORT_ROLE_FCP_INITIATOR
))
if
(
!
(
lport
->
service_params
&
FC
P_SPPF_INIT_FCN
))
return
0
;
spp
->
spp_flags
|=
rspp
->
spp_flags
&
FC_SPP_EST_IMG_PAIR
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录