Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
1e3474d1
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看板
提交
1e3474d1
编写于
10月 23, 2012
作者:
R
Roland Dreier
浏览文件
操作
浏览文件
下载
差异文件
Merge branches 'cxgb4' and 'mlx4' into for-next
上级
32c631f9
41929ed2
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
55 addition
and
67 deletion
+55
-67
drivers/infiniband/hw/mlx4/alias_GUID.c
drivers/infiniband/hw/mlx4/alias_GUID.c
+1
-1
drivers/infiniband/hw/mlx4/mad.c
drivers/infiniband/hw/mlx4/mad.c
+40
-45
drivers/infiniband/hw/mlx4/mcg.c
drivers/infiniband/hw/mlx4/mcg.c
+10
-8
drivers/net/ethernet/mellanox/mlx4/eq.c
drivers/net/ethernet/mellanox/mlx4/eq.c
+0
-6
drivers/net/ethernet/mellanox/mlx4/main.c
drivers/net/ethernet/mellanox/mlx4/main.c
+4
-1
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
+0
-6
未找到文件。
drivers/infiniband/hw/mlx4/alias_GUID.c
浏览文件 @
1e3474d1
...
...
@@ -107,7 +107,7 @@ static __be64 get_cached_alias_guid(struct mlx4_ib_dev *dev, int port, int index
{
if
(
index
>=
NUM_ALIAS_GUID_PER_PORT
)
{
pr_err
(
"%s: ERROR: asked for index:%d
\n
"
,
__func__
,
index
);
return
(
__force
__be64
)
((
u64
)
0xFFFFFFFFFFFFFFFFUL
)
;
return
(
__force
__be64
)
-
1
;
}
return
*
(
__be64
*
)
&
dev
->
sriov
.
demux
[
port
-
1
].
guid_cache
[
index
];
}
...
...
drivers/infiniband/hw/mlx4/mad.c
浏览文件 @
1e3474d1
...
...
@@ -409,38 +409,45 @@ int mlx4_ib_find_real_gid(struct ib_device *ibdev, u8 port, __be64 guid)
}
static
int
get_pkey_phys_indices
(
struct
mlx4_ib_dev
*
ibdev
,
u8
port
,
u8
ph_pkey_ix
,
u8
*
full_pk_ix
,
u8
*
partial_pk_ix
,
int
*
is_full_member
)
static
int
find_slave_port_pkey_ix
(
struct
mlx4_ib_dev
*
dev
,
int
slave
,
u8
port
,
u16
pkey
,
u16
*
ix
)
{
u16
search_pkey
;
int
fm
;
int
err
=
0
;
u16
pk
;
int
i
,
ret
;
u8
unassigned_pkey_ix
,
pkey_ix
,
partial_ix
=
0xFF
;
u16
slot_pkey
;
err
=
ib_get_cached_pkey
(
&
ibdev
->
ib_dev
,
port
,
ph_pkey_ix
,
&
search_pkey
);
if
(
err
)
return
err
;
if
(
slave
==
mlx4_master_func_num
(
dev
->
dev
))
return
ib_find_cached_pkey
(
&
dev
->
ib_dev
,
port
,
pkey
,
ix
);
fm
=
(
search_pkey
&
0x8000
)
?
1
:
0
;
if
(
fm
)
{
*
full_pk_ix
=
ph_pkey_ix
;
search_pkey
&=
0x7FFF
;
}
else
{
*
partial_pk_ix
=
ph_pkey_ix
;
search_pkey
|=
0x8000
;
}
unassigned_pkey_ix
=
dev
->
dev
->
phys_caps
.
pkey_phys_table_len
[
port
]
-
1
;
if
(
ib_find_exact_cached_pkey
(
&
ibdev
->
ib_dev
,
port
,
search_pkey
,
&
pk
))
pk
=
0xFFFF
;
for
(
i
=
0
;
i
<
dev
->
dev
->
caps
.
pkey_table_len
[
port
];
i
++
)
{
if
(
dev
->
pkeys
.
virt2phys_pkey
[
slave
][
port
-
1
][
i
]
==
unassigned_pkey_ix
)
continue
;
if
(
fm
)
*
partial_pk_ix
=
(
pk
&
0xFF
);
else
*
full_pk_ix
=
(
pk
&
0xFF
);
pkey_ix
=
dev
->
pkeys
.
virt2phys_pkey
[
slave
][
port
-
1
][
i
];
*
is_full_member
=
fm
;
return
err
;
ret
=
ib_get_cached_pkey
(
&
dev
->
ib_dev
,
port
,
pkey_ix
,
&
slot_pkey
);
if
(
ret
)
continue
;
if
((
slot_pkey
&
0x7FFF
)
==
(
pkey
&
0x7FFF
))
{
if
(
slot_pkey
&
0x8000
)
{
*
ix
=
(
u16
)
pkey_ix
;
return
0
;
}
else
{
/* take first partial pkey index found */
if
(
partial_ix
==
0xFF
)
partial_ix
=
pkey_ix
;
}
}
}
if
(
partial_ix
<
0xFF
)
{
*
ix
=
(
u16
)
partial_ix
;
return
0
;
}
return
-
EINVAL
;
}
int
mlx4_ib_send_to_slave
(
struct
mlx4_ib_dev
*
dev
,
int
slave
,
u8
port
,
...
...
@@ -458,10 +465,8 @@ int mlx4_ib_send_to_slave(struct mlx4_ib_dev *dev, int slave, u8 port,
unsigned
tun_tx_ix
=
0
;
int
dqpn
;
int
ret
=
0
;
int
i
;
int
is_full_member
=
0
;
u16
tun_pkey_ix
;
u
8
ph_pkey_ix
,
full_pk_ix
=
0
,
partial_pk_ix
=
0
;
u
16
cached_pkey
;
if
(
dest_qpt
>
IB_QPT_GSI
)
return
-
EINVAL
;
...
...
@@ -481,27 +486,17 @@ int mlx4_ib_send_to_slave(struct mlx4_ib_dev *dev, int slave, u8 port,
else
tun_qp
=
&
tun_ctx
->
qp
[
1
];
/* compute pkey index for slave */
/* get physical pkey -- virtualized Dom0 pkey to phys*/
/* compute P_Key index to put in tunnel header for slave */
if
(
dest_qpt
)
{
ph_pkey_ix
=
dev
->
pkeys
.
virt2phys_pkey
[
mlx4_master_func_num
(
dev
->
dev
)][
port
-
1
][
wc
->
pkey_index
];
/* now, translate this to the slave pkey index */
ret
=
get_pkey_phys_indices
(
dev
,
port
,
ph_pkey_ix
,
&
full_pk_ix
,
&
partial_pk_ix
,
&
is_full_member
);
u16
pkey_ix
;
ret
=
ib_get_cached_pkey
(
&
dev
->
ib_dev
,
port
,
wc
->
pkey_index
,
&
cached_pkey
);
if
(
ret
)
return
-
EINVAL
;
for
(
i
=
0
;
i
<
dev
->
dev
->
caps
.
pkey_table_len
[
port
];
i
++
)
{
if
((
dev
->
pkeys
.
virt2phys_pkey
[
slave
][
port
-
1
][
i
]
==
full_pk_ix
)
||
(
is_full_member
&&
(
dev
->
pkeys
.
virt2phys_pkey
[
slave
][
port
-
1
][
i
]
==
partial_pk_ix
)))
break
;
}
if
(
i
==
dev
->
dev
->
caps
.
pkey_table_len
[
port
])
ret
=
find_slave_port_pkey_ix
(
dev
,
slave
,
port
,
cached_pkey
,
&
pkey_ix
);
if
(
ret
)
return
-
EINVAL
;
tun_pkey_ix
=
i
;
tun_pkey_ix
=
pkey_ix
;
}
else
tun_pkey_ix
=
dev
->
pkeys
.
virt2phys_pkey
[
slave
][
port
-
1
][
0
];
...
...
drivers/infiniband/hw/mlx4/mcg.c
浏览文件 @
1e3474d1
...
...
@@ -233,7 +233,8 @@ static int send_mad_to_slave(int slave, struct mlx4_ib_demux_ctx *ctx,
ib_query_ah
(
dev
->
sm_ah
[
ctx
->
port
-
1
],
&
ah_attr
);
wc
.
pkey_index
=
0
;
if
(
ib_find_cached_pkey
(
&
dev
->
ib_dev
,
ctx
->
port
,
IB_DEFAULT_PKEY_FULL
,
&
wc
.
pkey_index
))
return
-
EINVAL
;
wc
.
sl
=
0
;
wc
.
dlid_path_bits
=
0
;
wc
.
port_num
=
ctx
->
port
;
...
...
@@ -1074,10 +1075,6 @@ static void _mlx4_ib_mcg_port_cleanup(struct mlx4_ib_demux_ctx *ctx, int destroy
unsigned
long
end
;
int
count
;
if
(
ctx
->
flushing
)
return
;
ctx
->
flushing
=
1
;
for
(
i
=
0
;
i
<
MAX_VFS
;
++
i
)
clean_vf_mcast
(
ctx
,
i
);
...
...
@@ -1107,9 +1104,6 @@ static void _mlx4_ib_mcg_port_cleanup(struct mlx4_ib_demux_ctx *ctx, int destroy
force_clean_group
(
group
);
}
mutex_unlock
(
&
ctx
->
mcg_table_lock
);
if
(
!
destroy_wq
)
ctx
->
flushing
=
0
;
}
struct
clean_work
{
...
...
@@ -1123,6 +1117,7 @@ static void mcg_clean_task(struct work_struct *work)
struct
clean_work
*
cw
=
container_of
(
work
,
struct
clean_work
,
work
);
_mlx4_ib_mcg_port_cleanup
(
cw
->
ctx
,
cw
->
destroy_wq
);
cw
->
ctx
->
flushing
=
0
;
kfree
(
cw
);
}
...
...
@@ -1130,13 +1125,20 @@ void mlx4_ib_mcg_port_cleanup(struct mlx4_ib_demux_ctx *ctx, int destroy_wq)
{
struct
clean_work
*
work
;
if
(
ctx
->
flushing
)
return
;
ctx
->
flushing
=
1
;
if
(
destroy_wq
)
{
_mlx4_ib_mcg_port_cleanup
(
ctx
,
destroy_wq
);
ctx
->
flushing
=
0
;
return
;
}
work
=
kmalloc
(
sizeof
*
work
,
GFP_KERNEL
);
if
(
!
work
)
{
ctx
->
flushing
=
0
;
mcg_warn
(
"failed allocating work for cleanup
\n
"
);
return
;
}
...
...
drivers/net/ethernet/mellanox/mlx4/eq.c
浏览文件 @
1e3474d1
...
...
@@ -329,9 +329,6 @@ int set_and_calc_slave_port_state(struct mlx4_dev *dev, int slave,
ctx
=
&
priv
->
mfunc
.
master
.
slave_state
[
slave
];
spin_lock_irqsave
(
&
ctx
->
lock
,
flags
);
mlx4_dbg
(
dev
,
"%s: slave: %d, current state: %d new event :%d
\n
"
,
__func__
,
slave
,
cur_state
,
event
);
switch
(
cur_state
)
{
case
SLAVE_PORT_DOWN
:
if
(
MLX4_PORT_STATE_DEV_EVENT_PORT_UP
==
event
)
...
...
@@ -366,9 +363,6 @@ int set_and_calc_slave_port_state(struct mlx4_dev *dev, int slave,
goto
out
;
}
ret
=
mlx4_get_slave_port_state
(
dev
,
slave
,
port
);
mlx4_dbg
(
dev
,
"%s: slave: %d, current state: %d new event"
" :%d gen_event: %d
\n
"
,
__func__
,
slave
,
cur_state
,
event
,
*
gen_event
);
out:
spin_unlock_irqrestore
(
&
ctx
->
lock
,
flags
);
...
...
drivers/net/ethernet/mellanox/mlx4/main.c
浏览文件 @
1e3474d1
...
...
@@ -1405,7 +1405,10 @@ static int mlx4_init_hca(struct mlx4_dev *dev)
unmap_bf_area
(
dev
);
err_close:
mlx4_close_hca
(
dev
);
if
(
mlx4_is_slave
(
dev
))
mlx4_slave_exit
(
dev
);
else
mlx4_CLOSE_HCA
(
dev
,
0
);
err_free_icm:
if
(
!
mlx4_is_slave
(
dev
))
...
...
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
浏览文件 @
1e3474d1
...
...
@@ -330,9 +330,6 @@ static void update_pkey_index(struct mlx4_dev *dev, int slave,
new_index
=
priv
->
virt2phys_pkey
[
slave
][
port
-
1
][
orig_index
];
*
(
u8
*
)(
inbox
->
buf
+
35
)
=
new_index
;
mlx4_dbg
(
dev
,
"port = %d, orig pkey index = %d, "
"new pkey index = %d
\n
"
,
port
,
orig_index
,
new_index
);
}
static
void
update_gid
(
struct
mlx4_dev
*
dev
,
struct
mlx4_cmd_mailbox
*
inbox
,
...
...
@@ -351,9 +348,6 @@ static void update_gid(struct mlx4_dev *dev, struct mlx4_cmd_mailbox *inbox,
if
(
optpar
&
MLX4_QP_OPTPAR_ALT_ADDR_PATH
)
qp_ctx
->
alt_path
.
mgid_index
=
slave
&
0x7F
;
}
mlx4_dbg
(
dev
,
"slave %d, new gid index: 0x%x "
,
slave
,
qp_ctx
->
pri_path
.
mgid_index
);
}
static
int
mpt_mask
(
struct
mlx4_dev
*
dev
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录