Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
fc81a069
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
fc81a069
编写于
10月 21, 2015
作者:
D
Doug Ledford
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'k.o/for-4.3-v1' into k.o/for-4.4
Pick up the late fixes from the 4.3 cycle so we have them in our next branch.
上级
070b3997
0ca81a28
变更
48
显示空白变更内容
内联
并排
Showing
48 changed file
with
596 addition
and
274 deletion
+596
-274
drivers/infiniband/core/cache.c
drivers/infiniband/core/cache.c
+1
-1
drivers/infiniband/core/cm.c
drivers/infiniband/core/cm.c
+9
-1
drivers/infiniband/core/cma.c
drivers/infiniband/core/cma.c
+43
-17
drivers/infiniband/core/roce_gid_mgmt.c
drivers/infiniband/core/roce_gid_mgmt.c
+27
-8
drivers/infiniband/core/ucma.c
drivers/infiniband/core/ucma.c
+6
-1
drivers/infiniband/hw/mlx5/main.c
drivers/infiniband/hw/mlx5/main.c
+1
-66
drivers/infiniband/hw/mlx5/mlx5_ib.h
drivers/infiniband/hw/mlx5/mlx5_ib.h
+0
-2
drivers/infiniband/hw/mlx5/qp.c
drivers/infiniband/hw/mlx5/qp.c
+1
-3
drivers/infiniband/hw/usnic/usnic.h
drivers/infiniband/hw/usnic/usnic.h
+18
-3
drivers/infiniband/hw/usnic/usnic_abi.h
drivers/infiniband/hw/usnic/usnic_abi.h
+18
-3
drivers/infiniband/hw/usnic/usnic_common_pkt_hdr.h
drivers/infiniband/hw/usnic/usnic_common_pkt_hdr.h
+18
-3
drivers/infiniband/hw/usnic/usnic_common_util.h
drivers/infiniband/hw/usnic/usnic_common_util.h
+18
-3
drivers/infiniband/hw/usnic/usnic_debugfs.c
drivers/infiniband/hw/usnic/usnic_debugfs.c
+18
-3
drivers/infiniband/hw/usnic/usnic_debugfs.h
drivers/infiniband/hw/usnic/usnic_debugfs.h
+18
-3
drivers/infiniband/hw/usnic/usnic_fwd.c
drivers/infiniband/hw/usnic/usnic_fwd.c
+18
-3
drivers/infiniband/hw/usnic/usnic_fwd.h
drivers/infiniband/hw/usnic/usnic_fwd.h
+18
-3
drivers/infiniband/hw/usnic/usnic_ib.h
drivers/infiniband/hw/usnic/usnic_ib.h
+18
-3
drivers/infiniband/hw/usnic/usnic_ib_main.c
drivers/infiniband/hw/usnic/usnic_ib_main.c
+18
-3
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
+18
-3
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.h
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.h
+18
-3
drivers/infiniband/hw/usnic/usnic_ib_sysfs.c
drivers/infiniband/hw/usnic/usnic_ib_sysfs.c
+18
-3
drivers/infiniband/hw/usnic/usnic_ib_sysfs.h
drivers/infiniband/hw/usnic/usnic_ib_sysfs.h
+18
-3
drivers/infiniband/hw/usnic/usnic_ib_verbs.c
drivers/infiniband/hw/usnic/usnic_ib_verbs.c
+18
-3
drivers/infiniband/hw/usnic/usnic_ib_verbs.h
drivers/infiniband/hw/usnic/usnic_ib_verbs.h
+18
-3
drivers/infiniband/hw/usnic/usnic_log.h
drivers/infiniband/hw/usnic/usnic_log.h
+18
-3
drivers/infiniband/hw/usnic/usnic_transport.c
drivers/infiniband/hw/usnic/usnic_transport.c
+18
-3
drivers/infiniband/hw/usnic/usnic_transport.h
drivers/infiniband/hw/usnic/usnic_transport.h
+18
-3
drivers/infiniband/hw/usnic/usnic_uiom.c
drivers/infiniband/hw/usnic/usnic_uiom.c
+1
-1
drivers/infiniband/hw/usnic/usnic_uiom.h
drivers/infiniband/hw/usnic/usnic_uiom.h
+18
-3
drivers/infiniband/hw/usnic/usnic_uiom_interval_tree.c
drivers/infiniband/hw/usnic/usnic_uiom_interval_tree.c
+18
-3
drivers/infiniband/hw/usnic/usnic_uiom_interval_tree.h
drivers/infiniband/hw/usnic/usnic_uiom_interval_tree.h
+18
-3
drivers/infiniband/hw/usnic/usnic_vnic.c
drivers/infiniband/hw/usnic/usnic_vnic.c
+18
-3
drivers/infiniband/hw/usnic/usnic_vnic.h
drivers/infiniband/hw/usnic/usnic_vnic.h
+18
-3
drivers/infiniband/ulp/ipoib/ipoib.h
drivers/infiniband/ulp/ipoib/ipoib.h
+4
-1
drivers/infiniband/ulp/ipoib/ipoib_main.c
drivers/infiniband/ulp/ipoib/ipoib_main.c
+20
-0
drivers/infiniband/ulp/ipoib/ipoib_multicast.c
drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+15
-13
drivers/infiniband/ulp/iser/iscsi_iser.c
drivers/infiniband/ulp/iser/iscsi_iser.c
+5
-0
drivers/infiniband/ulp/iser/iscsi_iser.h
drivers/infiniband/ulp/iser/iscsi_iser.h
+1
-0
drivers/infiniband/ulp/iser/iser_memory.c
drivers/infiniband/ulp/iser/iser_memory.c
+12
-6
drivers/infiniband/ulp/iser/iser_verbs.c
drivers/infiniband/ulp/iser/iser_verbs.c
+13
-8
drivers/net/ethernet/mellanox/mlx5/core/fw.c
drivers/net/ethernet/mellanox/mlx5/core/fw.c
+0
-22
include/linux/mlx5/device.h
include/linux/mlx5/device.h
+0
-11
include/linux/mlx5/driver.h
include/linux/mlx5/driver.h
+0
-1
net/sunrpc/xprtrdma/fmr_ops.c
net/sunrpc/xprtrdma/fmr_ops.c
+0
-19
net/sunrpc/xprtrdma/frwr_ops.c
net/sunrpc/xprtrdma/frwr_ops.c
+0
-5
net/sunrpc/xprtrdma/physical_ops.c
net/sunrpc/xprtrdma/physical_ops.c
+1
-9
net/sunrpc/xprtrdma/verbs.c
net/sunrpc/xprtrdma/verbs.c
+4
-6
net/sunrpc/xprtrdma/xprt_rdma.h
net/sunrpc/xprtrdma/xprt_rdma.h
+0
-1
未找到文件。
drivers/infiniband/core/cache.c
浏览文件 @
fc81a069
...
...
@@ -508,12 +508,12 @@ void ib_cache_gid_set_default_gid(struct ib_device *ib_dev, u8 port,
memset
(
&
gid_attr
,
0
,
sizeof
(
gid_attr
));
gid_attr
.
ndev
=
ndev
;
mutex_lock
(
&
table
->
lock
);
ix
=
find_gid
(
table
,
NULL
,
NULL
,
true
,
GID_ATTR_FIND_MASK_DEFAULT
);
/* Coudn't find default GID location */
WARN_ON
(
ix
<
0
);
mutex_lock
(
&
table
->
lock
);
if
(
!
__ib_cache_gid_get
(
ib_dev
,
port
,
ix
,
&
current_gid
,
&
current_gid_attr
)
&&
mode
==
IB_CACHE_GID_DEFAULT_MODE_SET
&&
...
...
drivers/infiniband/core/cm.c
浏览文件 @
fc81a069
...
...
@@ -835,6 +835,11 @@ static void cm_destroy_id(struct ib_cm_id *cm_id, int err)
case
IB_CM_SIDR_REQ_RCVD
:
spin_unlock_irq
(
&
cm_id_priv
->
lock
);
cm_reject_sidr_req
(
cm_id_priv
,
IB_SIDR_REJECT
);
spin_lock_irq
(
&
cm
.
lock
);
if
(
!
RB_EMPTY_NODE
(
&
cm_id_priv
->
sidr_id_node
))
rb_erase
(
&
cm_id_priv
->
sidr_id_node
,
&
cm
.
remote_sidr_table
);
spin_unlock_irq
(
&
cm
.
lock
);
break
;
case
IB_CM_REQ_SENT
:
case
IB_CM_MRA_REQ_RCVD
:
...
...
@@ -3172,7 +3177,10 @@ int ib_send_cm_sidr_rep(struct ib_cm_id *cm_id,
spin_unlock_irqrestore
(
&
cm_id_priv
->
lock
,
flags
);
spin_lock_irqsave
(
&
cm
.
lock
,
flags
);
if
(
!
RB_EMPTY_NODE
(
&
cm_id_priv
->
sidr_id_node
))
{
rb_erase
(
&
cm_id_priv
->
sidr_id_node
,
&
cm
.
remote_sidr_table
);
RB_CLEAR_NODE
(
&
cm_id_priv
->
sidr_id_node
);
}
spin_unlock_irqrestore
(
&
cm
.
lock
,
flags
);
return
0
;
...
...
drivers/infiniband/core/cma.c
浏览文件 @
fc81a069
...
...
@@ -1067,14 +1067,14 @@ static int cma_save_req_info(const struct ib_cm_event *ib_event,
sizeof
(
req
->
local_gid
));
req
->
has_gid
=
true
;
req
->
service_id
=
req_param
->
primary_path
->
service_id
;
req
->
pkey
=
req_param
->
bth_pkey
;
req
->
pkey
=
be16_to_cpu
(
req_param
->
primary_path
->
pkey
)
;
break
;
case
IB_CM_SIDR_REQ_RECEIVED
:
req
->
device
=
sidr_param
->
listen_id
->
device
;
req
->
port
=
sidr_param
->
port
;
req
->
has_gid
=
false
;
req
->
service_id
=
sidr_param
->
service_id
;
req
->
pkey
=
sidr_param
->
bth_
pkey
;
req
->
pkey
=
sidr_param
->
pkey
;
break
;
default:
return
-
EINVAL
;
...
...
@@ -1232,14 +1232,32 @@ static bool cma_match_private_data(struct rdma_id_private *id_priv,
return
true
;
}
static
bool
cma_protocol_roce_dev_port
(
struct
ib_device
*
device
,
int
port_num
)
{
enum
rdma_link_layer
ll
=
rdma_port_get_link_layer
(
device
,
port_num
);
enum
rdma_transport_type
transport
=
rdma_node_get_transport
(
device
->
node_type
);
return
ll
==
IB_LINK_LAYER_ETHERNET
&&
transport
==
RDMA_TRANSPORT_IB
;
}
static
bool
cma_protocol_roce
(
const
struct
rdma_cm_id
*
id
)
{
struct
ib_device
*
device
=
id
->
device
;
const
int
port_num
=
id
->
port_num
?:
rdma_start_port
(
device
);
return
cma_protocol_roce_dev_port
(
device
,
port_num
);
}
static
bool
cma_match_net_dev
(
const
struct
rdma_id_private
*
id_priv
,
const
struct
net_device
*
net_dev
)
{
const
struct
rdma_addr
*
addr
=
&
id_priv
->
id
.
route
.
addr
;
if
(
!
net_dev
)
/* This request is an AF_IB request */
return
addr
->
src_addr
.
ss_family
==
AF_IB
;
/* This request is an AF_IB request or a RoCE request */
return
addr
->
src_addr
.
ss_family
==
AF_IB
||
cma_protocol_roce
(
&
id_priv
->
id
);
return
!
addr
->
dev_addr
.
bound_dev_if
||
(
net_eq
(
dev_net
(
net_dev
),
&
init_net
)
&&
...
...
@@ -1294,6 +1312,10 @@ static struct rdma_id_private *cma_id_from_event(struct ib_cm_id *cm_id,
if
(
PTR_ERR
(
*
net_dev
)
==
-
EAFNOSUPPORT
)
{
/* Assuming the protocol is AF_IB */
*
net_dev
=
NULL
;
}
else
if
(
cma_protocol_roce_dev_port
(
req
.
device
,
req
.
port
))
{
/* TODO find the net dev matching the request parameters
* through the RoCE GID table */
*
net_dev
=
NULL
;
}
else
{
return
ERR_CAST
(
*
net_dev
);
}
...
...
@@ -1302,7 +1324,7 @@ static struct rdma_id_private *cma_id_from_event(struct ib_cm_id *cm_id,
bind_list
=
cma_ps_find
(
rdma_ps_from_service_id
(
req
.
service_id
),
cma_port_from_service_id
(
req
.
service_id
));
id_priv
=
cma_find_listener
(
bind_list
,
cm_id
,
ib_event
,
&
req
,
*
net_dev
);
if
(
IS_ERR
(
id_priv
))
{
if
(
IS_ERR
(
id_priv
)
&&
*
net_dev
)
{
dev_put
(
*
net_dev
);
*
net_dev
=
NULL
;
}
...
...
@@ -1593,11 +1615,16 @@ static struct rdma_id_private *cma_new_conn_id(struct rdma_cm_id *listen_id,
if
(
ret
)
goto
err
;
}
else
{
/* An AF_IB connection */
WARN_ON_ONCE
(
ss_family
!=
AF_IB
);
cma_translate_ib
((
struct
sockaddr_ib
*
)
cma_src_addr
(
id_priv
),
&
rt
->
addr
.
dev_addr
);
if
(
!
cma_protocol_roce
(
listen_id
)
&&
cma_any_addr
(
cma_src_addr
(
id_priv
)))
{
rt
->
addr
.
dev_addr
.
dev_type
=
ARPHRD_INFINIBAND
;
rdma_addr_set_sgid
(
&
rt
->
addr
.
dev_addr
,
&
rt
->
path_rec
[
0
].
sgid
);
ib_addr_set_pkey
(
&
rt
->
addr
.
dev_addr
,
be16_to_cpu
(
rt
->
path_rec
[
0
].
pkey
));
}
else
if
(
!
cma_any_addr
(
cma_src_addr
(
id_priv
)))
{
ret
=
cma_translate_addr
(
cma_src_addr
(
id_priv
),
&
rt
->
addr
.
dev_addr
);
if
(
ret
)
goto
err
;
}
}
rdma_addr_set_dgid
(
&
rt
->
addr
.
dev_addr
,
&
rt
->
path_rec
[
0
].
dgid
);
...
...
@@ -1635,13 +1662,12 @@ static struct rdma_id_private *cma_new_udp_id(struct rdma_cm_id *listen_id,
if
(
ret
)
goto
err
;
}
else
{
/* An AF_IB connection */
WARN_ON_ONCE
(
ss_family
!=
AF_IB
);
if
(
!
cma_any_addr
(
cma_src_addr
(
id_priv
)))
cma_translate_ib
((
struct
sockaddr_ib
*
)
cma_src_addr
(
id_priv
),
if
(
!
cma_any_addr
(
cma_src_addr
(
id_priv
)))
{
ret
=
cma_translate_addr
(
cma_src_addr
(
id_priv
),
&
id
->
route
.
addr
.
dev_addr
);
if
(
ret
)
goto
err
;
}
}
id_priv
->
state
=
RDMA_CM_CONNECT
;
...
...
drivers/infiniband/core/roce_gid_mgmt.c
浏览文件 @
fc81a069
...
...
@@ -250,25 +250,44 @@ static void enum_netdev_ipv4_ips(struct ib_device *ib_dev,
u8
port
,
struct
net_device
*
ndev
)
{
struct
in_device
*
in_dev
;
struct
sin_list
{
struct
list_head
list
;
struct
sockaddr_in
ip
;
};
struct
sin_list
*
sin_iter
;
struct
sin_list
*
sin_temp
;
LIST_HEAD
(
sin_list
);
if
(
ndev
->
reg_state
>=
NETREG_UNREGISTERING
)
return
;
in_dev
=
in_dev_get
(
ndev
);
if
(
!
in_dev
)
rcu_read_lock
();
in_dev
=
__in_dev_get_rcu
(
ndev
);
if
(
!
in_dev
)
{
rcu_read_unlock
();
return
;
}
for_ifa
(
in_dev
)
{
struct
s
ockaddr_in
ip
;
struct
s
in_list
*
entry
=
kzalloc
(
sizeof
(
*
entry
),
GFP_ATOMIC
)
;
ip
.
sin_family
=
AF_INET
;
ip
.
sin_addr
.
s_addr
=
ifa
->
ifa_address
;
update_gid_ip
(
GID_ADD
,
ib_dev
,
port
,
ndev
,
(
struct
sockaddr
*
)
&
ip
);
if
(
!
entry
)
{
pr_warn
(
"roce_gid_mgmt: couldn't allocate entry for IPv4 update
\n
"
);
continue
;
}
entry
->
ip
.
sin_family
=
AF_INET
;
entry
->
ip
.
sin_addr
.
s_addr
=
ifa
->
ifa_address
;
list_add_tail
(
&
entry
->
list
,
&
sin_list
);
}
endfor_ifa
(
in_dev
);
rcu_read_unlock
();
in_dev_put
(
in_dev
);
list_for_each_entry_safe
(
sin_iter
,
sin_temp
,
&
sin_list
,
list
)
{
update_gid_ip
(
GID_ADD
,
ib_dev
,
port
,
ndev
,
(
struct
sockaddr
*
)
&
sin_iter
->
ip
);
list_del
(
&
sin_iter
->
list
);
kfree
(
sin_iter
);
}
}
static
void
enum_netdev_ipv6_ips
(
struct
ib_device
*
ib_dev
,
...
...
drivers/infiniband/core/ucma.c
浏览文件 @
fc81a069
...
...
@@ -1624,11 +1624,16 @@ static int ucma_open(struct inode *inode, struct file *filp)
if
(
!
file
)
return
-
ENOMEM
;
file
->
close_wq
=
create_singlethread_workqueue
(
"ucma_close_id"
);
if
(
!
file
->
close_wq
)
{
kfree
(
file
);
return
-
ENOMEM
;
}
INIT_LIST_HEAD
(
&
file
->
event_list
);
INIT_LIST_HEAD
(
&
file
->
ctx_list
);
init_waitqueue_head
(
&
file
->
poll_wait
);
mutex_init
(
&
file
->
mut
);
file
->
close_wq
=
create_singlethread_workqueue
(
"ucma_close_id"
);
filp
->
private_data
=
file
;
file
->
filp
=
filp
;
...
...
drivers/infiniband/hw/mlx5/main.c
浏览文件 @
fc81a069
...
...
@@ -245,7 +245,6 @@ static int mlx5_ib_query_device(struct ib_device *ibdev,
props
->
device_cap_flags
|=
IB_DEVICE_BAD_QKEY_CNTR
;
if
(
MLX5_CAP_GEN
(
mdev
,
apm
))
props
->
device_cap_flags
|=
IB_DEVICE_AUTO_PATH_MIG
;
props
->
device_cap_flags
|=
IB_DEVICE_LOCAL_DMA_LKEY
;
if
(
MLX5_CAP_GEN
(
mdev
,
xrc
))
props
->
device_cap_flags
|=
IB_DEVICE_XRC
;
props
->
device_cap_flags
|=
IB_DEVICE_MEM_MGT_EXTENSIONS
;
...
...
@@ -795,53 +794,6 @@ static int mlx5_ib_mmap(struct ib_ucontext *ibcontext, struct vm_area_struct *vm
return
0
;
}
static
int
alloc_pa_mkey
(
struct
mlx5_ib_dev
*
dev
,
u32
*
key
,
u32
pdn
)
{
struct
mlx5_create_mkey_mbox_in
*
in
;
struct
mlx5_mkey_seg
*
seg
;
struct
mlx5_core_mr
mr
;
int
err
;
in
=
kzalloc
(
sizeof
(
*
in
),
GFP_KERNEL
);
if
(
!
in
)
return
-
ENOMEM
;
seg
=
&
in
->
seg
;
seg
->
flags
=
MLX5_PERM_LOCAL_READ
|
MLX5_ACCESS_MODE_PA
;
seg
->
flags_pd
=
cpu_to_be32
(
pdn
|
MLX5_MKEY_LEN64
);
seg
->
qpn_mkey7_0
=
cpu_to_be32
(
0xffffff
<<
8
);
seg
->
start_addr
=
0
;
err
=
mlx5_core_create_mkey
(
dev
->
mdev
,
&
mr
,
in
,
sizeof
(
*
in
),
NULL
,
NULL
,
NULL
);
if
(
err
)
{
mlx5_ib_warn
(
dev
,
"failed to create mkey, %d
\n
"
,
err
);
goto
err_in
;
}
kfree
(
in
);
*
key
=
mr
.
key
;
return
0
;
err_in:
kfree
(
in
);
return
err
;
}
static
void
free_pa_mkey
(
struct
mlx5_ib_dev
*
dev
,
u32
key
)
{
struct
mlx5_core_mr
mr
;
int
err
;
memset
(
&
mr
,
0
,
sizeof
(
mr
));
mr
.
key
=
key
;
err
=
mlx5_core_destroy_mkey
(
dev
->
mdev
,
&
mr
);
if
(
err
)
mlx5_ib_warn
(
dev
,
"failed to destroy mkey 0x%x
\n
"
,
key
);
}
static
struct
ib_pd
*
mlx5_ib_alloc_pd
(
struct
ib_device
*
ibdev
,
struct
ib_ucontext
*
context
,
struct
ib_udata
*
udata
)
...
...
@@ -867,13 +819,6 @@ static struct ib_pd *mlx5_ib_alloc_pd(struct ib_device *ibdev,
kfree
(
pd
);
return
ERR_PTR
(
-
EFAULT
);
}
}
else
{
err
=
alloc_pa_mkey
(
to_mdev
(
ibdev
),
&
pd
->
pa_lkey
,
pd
->
pdn
);
if
(
err
)
{
mlx5_core_dealloc_pd
(
to_mdev
(
ibdev
)
->
mdev
,
pd
->
pdn
);
kfree
(
pd
);
return
ERR_PTR
(
err
);
}
}
return
&
pd
->
ibpd
;
...
...
@@ -884,9 +829,6 @@ static int mlx5_ib_dealloc_pd(struct ib_pd *pd)
struct
mlx5_ib_dev
*
mdev
=
to_mdev
(
pd
->
device
);
struct
mlx5_ib_pd
*
mpd
=
to_mpd
(
pd
);
if
(
!
pd
->
uobject
)
free_pa_mkey
(
mdev
,
mpd
->
pa_lkey
);
mlx5_core_dealloc_pd
(
mdev
->
mdev
,
mpd
->
pdn
);
kfree
(
mpd
);
...
...
@@ -1245,18 +1187,10 @@ static int create_dev_resources(struct mlx5_ib_resources *devr)
struct
ib_srq_init_attr
attr
;
struct
mlx5_ib_dev
*
dev
;
struct
ib_cq_init_attr
cq_attr
=
{.
cqe
=
1
};
u32
rsvd_lkey
;
int
ret
=
0
;
dev
=
container_of
(
devr
,
struct
mlx5_ib_dev
,
devr
);
ret
=
mlx5_core_query_special_context
(
dev
->
mdev
,
&
rsvd_lkey
);
if
(
ret
)
{
pr_err
(
"Failed to query special context %d
\n
"
,
ret
);
return
ret
;
}
dev
->
ib_dev
.
local_dma_lkey
=
rsvd_lkey
;
devr
->
p0
=
mlx5_ib_alloc_pd
(
&
dev
->
ib_dev
,
NULL
,
NULL
);
if
(
IS_ERR
(
devr
->
p0
))
{
ret
=
PTR_ERR
(
devr
->
p0
);
...
...
@@ -1418,6 +1352,7 @@ static void *mlx5_ib_add(struct mlx5_core_dev *mdev)
strlcpy
(
dev
->
ib_dev
.
name
,
"mlx5_%d"
,
IB_DEVICE_NAME_MAX
);
dev
->
ib_dev
.
owner
=
THIS_MODULE
;
dev
->
ib_dev
.
node_type
=
RDMA_NODE_IB_CA
;
dev
->
ib_dev
.
local_dma_lkey
=
0
/* not supported for now */
;
dev
->
num_ports
=
MLX5_CAP_GEN
(
mdev
,
num_ports
);
dev
->
ib_dev
.
phys_port_cnt
=
dev
->
num_ports
;
dev
->
ib_dev
.
num_comp_vectors
=
...
...
drivers/infiniband/hw/mlx5/mlx5_ib.h
浏览文件 @
fc81a069
...
...
@@ -103,7 +103,6 @@ static inline struct mlx5_ib_ucontext *to_mucontext(struct ib_ucontext *ibuconte
struct
mlx5_ib_pd
{
struct
ib_pd
ibpd
;
u32
pdn
;
u32
pa_lkey
;
};
/* Use macros here so that don't have to duplicate
...
...
@@ -213,7 +212,6 @@ struct mlx5_ib_qp {
int
uuarn
;
int
create_type
;
u32
pa_lkey
;
/* Store signature errors */
bool
signature_en
;
...
...
drivers/infiniband/hw/mlx5/qp.c
浏览文件 @
fc81a069
...
...
@@ -925,8 +925,6 @@ static int create_qp_common(struct mlx5_ib_dev *dev, struct ib_pd *pd,
err
=
create_kernel_qp
(
dev
,
init_attr
,
qp
,
&
in
,
&
inlen
);
if
(
err
)
mlx5_ib_dbg
(
dev
,
"err %d
\n
"
,
err
);
else
qp
->
pa_lkey
=
to_mpd
(
pd
)
->
pa_lkey
;
}
if
(
err
)
...
...
@@ -2045,7 +2043,7 @@ static void set_frwr_pages(struct mlx5_wqe_data_seg *dseg,
mfrpl
->
mapped_page_list
[
i
]
=
cpu_to_be64
(
page_list
[
i
]
|
perm
);
dseg
->
addr
=
cpu_to_be64
(
mfrpl
->
map
);
dseg
->
byte_count
=
cpu_to_be32
(
ALIGN
(
sizeof
(
u64
)
*
wr
->
wr
.
fast_reg
.
page_list_len
,
64
));
dseg
->
lkey
=
cpu_to_be32
(
pd
->
p
a_lkey
);
dseg
->
lkey
=
cpu_to_be32
(
pd
->
ibpd
.
local_dm
a_lkey
);
}
static
__be32
send_ieth
(
struct
ib_send_wr
*
wr
)
...
...
drivers/infiniband/hw/usnic/usnic.h
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_abi.h
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_common_pkt_hdr.h
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_common_util.h
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_debugfs.c
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_debugfs.h
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_fwd.c
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_fwd.h
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_ib.h
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_ib_main.c
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.h
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_ib_sysfs.c
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_ib_sysfs.h
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_ib_verbs.c
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_ib_verbs.h
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_log.h
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_transport.c
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_transport.h
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_uiom.c
浏览文件 @
fc81a069
...
...
@@ -7,7 +7,7 @@
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
*
OpenIB.org
BSD license below:
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
...
...
drivers/infiniband/hw/usnic/usnic_uiom.h
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_uiom_interval_tree.c
浏览文件 @
fc81a069
/*
* Copyright (c) 2014, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_uiom_interval_tree.h
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_vnic.c
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_vnic.h
浏览文件 @
fc81a069
/*
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
* This program is free software; you may redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This software is available to you under a choice of one of two
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* BSD license below:
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the following
* disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/ulp/ipoib/ipoib.h
浏览文件 @
fc81a069
...
...
@@ -80,7 +80,7 @@ enum {
IPOIB_NUM_WC
=
4
,
IPOIB_MAX_PATH_REC_QUEUE
=
3
,
IPOIB_MAX_MCAST_QUEUE
=
3
,
IPOIB_MAX_MCAST_QUEUE
=
64
,
IPOIB_FLAG_OPER_UP
=
0
,
IPOIB_FLAG_INITIALIZED
=
1
,
...
...
@@ -495,6 +495,7 @@ void ipoib_dev_cleanup(struct net_device *dev);
void
ipoib_mcast_join_task
(
struct
work_struct
*
work
);
void
ipoib_mcast_carrier_on_task
(
struct
work_struct
*
work
);
void
ipoib_mcast_send
(
struct
net_device
*
dev
,
u8
*
daddr
,
struct
sk_buff
*
skb
);
void
ipoib_mcast_free
(
struct
ipoib_mcast
*
mc
);
void
ipoib_mcast_restart_task
(
struct
work_struct
*
work
);
int
ipoib_mcast_start_thread
(
struct
net_device
*
dev
);
...
...
@@ -548,6 +549,8 @@ void ipoib_path_iter_read(struct ipoib_path_iter *iter,
int
ipoib_mcast_attach
(
struct
net_device
*
dev
,
u16
mlid
,
union
ib_gid
*
mgid
,
int
set_qkey
);
int
ipoib_mcast_leave
(
struct
net_device
*
dev
,
struct
ipoib_mcast
*
mcast
);
struct
ipoib_mcast
*
__ipoib_mcast_find
(
struct
net_device
*
dev
,
void
*
mgid
);
int
ipoib_init_qp
(
struct
net_device
*
dev
);
int
ipoib_transport_dev_init
(
struct
net_device
*
dev
,
struct
ib_device
*
ca
);
...
...
drivers/infiniband/ulp/ipoib/ipoib_main.c
浏览文件 @
fc81a069
...
...
@@ -1149,6 +1149,9 @@ static void __ipoib_reap_neigh(struct ipoib_dev_priv *priv)
unsigned
long
dt
;
unsigned
long
flags
;
int
i
;
LIST_HEAD
(
remove_list
);
struct
ipoib_mcast
*
mcast
,
*
tmcast
;
struct
net_device
*
dev
=
priv
->
dev
;
if
(
test_bit
(
IPOIB_STOP_NEIGH_GC
,
&
priv
->
flags
))
return
;
...
...
@@ -1176,6 +1179,19 @@ static void __ipoib_reap_neigh(struct ipoib_dev_priv *priv)
lockdep_is_held
(
&
priv
->
lock
)))
!=
NULL
)
{
/* was the neigh idle for two GC periods */
if
(
time_after
(
neigh_obsolete
,
neigh
->
alive
))
{
u8
*
mgid
=
neigh
->
daddr
+
4
;
/* Is this multicast ? */
if
(
*
mgid
==
0xff
)
{
mcast
=
__ipoib_mcast_find
(
dev
,
mgid
);
if
(
mcast
&&
test_bit
(
IPOIB_MCAST_FLAG_SENDONLY
,
&
mcast
->
flags
))
{
list_del
(
&
mcast
->
list
);
rb_erase
(
&
mcast
->
rb_node
,
&
priv
->
multicast_tree
);
list_add_tail
(
&
mcast
->
list
,
&
remove_list
);
}
}
rcu_assign_pointer
(
*
np
,
rcu_dereference_protected
(
neigh
->
hnext
,
lockdep_is_held
(
&
priv
->
lock
)));
...
...
@@ -1191,6 +1207,10 @@ static void __ipoib_reap_neigh(struct ipoib_dev_priv *priv)
out_unlock:
spin_unlock_irqrestore
(
&
priv
->
lock
,
flags
);
list_for_each_entry_safe
(
mcast
,
tmcast
,
&
remove_list
,
list
)
{
ipoib_mcast_leave
(
dev
,
mcast
);
ipoib_mcast_free
(
mcast
);
}
}
static
void
ipoib_reap_neigh
(
struct
work_struct
*
work
)
...
...
drivers/infiniband/ulp/ipoib/ipoib_multicast.c
浏览文件 @
fc81a069
...
...
@@ -106,7 +106,7 @@ static void __ipoib_mcast_schedule_join_thread(struct ipoib_dev_priv *priv,
queue_delayed_work
(
priv
->
wq
,
&
priv
->
mcast_task
,
0
);
}
static
void
ipoib_mcast_free
(
struct
ipoib_mcast
*
mcast
)
void
ipoib_mcast_free
(
struct
ipoib_mcast
*
mcast
)
{
struct
net_device
*
dev
=
mcast
->
dev
;
int
tx_dropped
=
0
;
...
...
@@ -153,7 +153,7 @@ static struct ipoib_mcast *ipoib_mcast_alloc(struct net_device *dev,
return
mcast
;
}
st
atic
st
ruct
ipoib_mcast
*
__ipoib_mcast_find
(
struct
net_device
*
dev
,
void
*
mgid
)
struct
ipoib_mcast
*
__ipoib_mcast_find
(
struct
net_device
*
dev
,
void
*
mgid
)
{
struct
ipoib_dev_priv
*
priv
=
netdev_priv
(
dev
);
struct
rb_node
*
n
=
priv
->
multicast_tree
.
rb_node
;
...
...
@@ -508,17 +508,19 @@ static void ipoib_mcast_join(struct net_device *dev, struct ipoib_mcast *mcast)
rec
.
hop_limit
=
priv
->
broadcast
->
mcmember
.
hop_limit
;
/*
* Historically Linux IPoIB has never properly supported SEND
* ONLY join. It emulated it by not providing all the required
* attributes, which is enough to prevent group creation and
* detect if there are full members or not. A major problem
* with supporting SEND ONLY is detecting when the group is
* auto-destroyed as IPoIB will cache the MLID..
* Send-only IB Multicast joins do not work at the core
* IB layer yet, so we can't use them here. However,
* we are emulating an Ethernet multicast send, which
* does not require a multicast subscription and will
* still send properly. The most appropriate thing to
* do is to create the group if it doesn't exist as that
* most closely emulates the behavior, from a user space
* application perspecitive, of Ethernet multicast
* operation. For now, we do a full join, maybe later
* when the core IB layers support send only joins we
* will use them.
*/
#if 1
if
(
test_bit
(
IPOIB_MCAST_FLAG_SENDONLY
,
&
mcast
->
flags
))
comp_mask
&=
~
IB_SA_MCMEMBER_REC_TRAFFIC_CLASS
;
#else
#if 0
if (test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags))
rec.join_state = 4;
#endif
...
...
@@ -675,7 +677,7 @@ int ipoib_mcast_stop_thread(struct net_device *dev)
return
0
;
}
static
int
ipoib_mcast_leave
(
struct
net_device
*
dev
,
struct
ipoib_mcast
*
mcast
)
int
ipoib_mcast_leave
(
struct
net_device
*
dev
,
struct
ipoib_mcast
*
mcast
)
{
struct
ipoib_dev_priv
*
priv
=
netdev_priv
(
dev
);
int
ret
=
0
;
...
...
drivers/infiniband/ulp/iser/iscsi_iser.c
浏览文件 @
fc81a069
...
...
@@ -97,6 +97,11 @@ unsigned int iser_max_sectors = ISER_DEF_MAX_SECTORS;
module_param_named
(
max_sectors
,
iser_max_sectors
,
uint
,
S_IRUGO
|
S_IWUSR
);
MODULE_PARM_DESC
(
max_sectors
,
"Max number of sectors in a single scsi command (default:1024"
);
bool
iser_always_reg
=
true
;
module_param_named
(
always_register
,
iser_always_reg
,
bool
,
S_IRUGO
);
MODULE_PARM_DESC
(
always_register
,
"Always register memory, even for continuous memory regions (default:true)"
);
bool
iser_pi_enable
=
false
;
module_param_named
(
pi_enable
,
iser_pi_enable
,
bool
,
S_IRUGO
);
MODULE_PARM_DESC
(
pi_enable
,
"Enable T10-PI offload support (default:disabled)"
);
...
...
drivers/infiniband/ulp/iser/iscsi_iser.h
浏览文件 @
fc81a069
...
...
@@ -611,6 +611,7 @@ extern int iser_debug_level;
extern
bool
iser_pi_enable
;
extern
int
iser_pi_guard
;
extern
unsigned
int
iser_max_sectors
;
extern
bool
iser_always_reg
;
int
iser_assign_reg_ops
(
struct
iser_device
*
device
);
...
...
drivers/infiniband/ulp/iser/iser_memory.c
浏览文件 @
fc81a069
...
...
@@ -803,11 +803,12 @@ static int
iser_reg_prot_sg
(
struct
iscsi_iser_task
*
task
,
struct
iser_data_buf
*
mem
,
struct
iser_fr_desc
*
desc
,
bool
use_dma_key
,
struct
iser_mem_reg
*
reg
)
{
struct
iser_device
*
device
=
task
->
iser_conn
->
ib_conn
.
device
;
if
(
mem
->
dma_nents
==
1
)
if
(
use_dma_key
)
return
iser_reg_dma
(
device
,
mem
,
reg
);
return
device
->
reg_ops
->
reg_mem
(
task
,
mem
,
&
desc
->
pi_ctx
->
rsc
,
reg
);
...
...
@@ -817,11 +818,12 @@ static int
iser_reg_data_sg
(
struct
iscsi_iser_task
*
task
,
struct
iser_data_buf
*
mem
,
struct
iser_fr_desc
*
desc
,
bool
use_dma_key
,
struct
iser_mem_reg
*
reg
)
{
struct
iser_device
*
device
=
task
->
iser_conn
->
ib_conn
.
device
;
if
(
mem
->
dma_nents
==
1
)
if
(
use_dma_key
)
return
iser_reg_dma
(
device
,
mem
,
reg
);
return
device
->
reg_ops
->
reg_mem
(
task
,
mem
,
&
desc
->
rsc
,
reg
);
...
...
@@ -836,14 +838,17 @@ int iser_reg_rdma_mem(struct iscsi_iser_task *task,
struct
iser_mem_reg
*
reg
=
&
task
->
rdma_reg
[
dir
];
struct
iser_mem_reg
*
data_reg
;
struct
iser_fr_desc
*
desc
=
NULL
;
bool
use_dma_key
;
int
err
;
err
=
iser_handle_unaligned_buf
(
task
,
mem
,
dir
);
if
(
unlikely
(
err
))
return
err
;
if
(
mem
->
dma_nents
!=
1
||
scsi_get_prot_op
(
task
->
sc
)
!=
SCSI_PROT_NORMAL
)
{
use_dma_key
=
(
mem
->
dma_nents
==
1
&&
!
iser_always_reg
&&
scsi_get_prot_op
(
task
->
sc
)
==
SCSI_PROT_NORMAL
);
if
(
!
use_dma_key
)
{
desc
=
device
->
reg_ops
->
reg_desc_get
(
ib_conn
);
reg
->
mem_h
=
desc
;
}
...
...
@@ -853,7 +858,7 @@ int iser_reg_rdma_mem(struct iscsi_iser_task *task,
else
data_reg
=
&
task
->
desc
.
data_reg
;
err
=
iser_reg_data_sg
(
task
,
mem
,
desc
,
data_reg
);
err
=
iser_reg_data_sg
(
task
,
mem
,
desc
,
use_dma_key
,
data_reg
);
if
(
unlikely
(
err
))
goto
err_reg
;
...
...
@@ -866,7 +871,8 @@ int iser_reg_rdma_mem(struct iscsi_iser_task *task,
if
(
unlikely
(
err
))
goto
err_reg
;
err
=
iser_reg_prot_sg
(
task
,
mem
,
desc
,
prot_reg
);
err
=
iser_reg_prot_sg
(
task
,
mem
,
desc
,
use_dma_key
,
prot_reg
);
if
(
unlikely
(
err
))
goto
err_reg
;
}
...
...
drivers/infiniband/ulp/iser/iser_verbs.c
浏览文件 @
fc81a069
...
...
@@ -133,11 +133,15 @@ static int iser_create_device_ib_res(struct iser_device *device)
(
unsigned
long
)
comp
);
}
device
->
mr
=
ib_get_dma_mr
(
device
->
pd
,
IB_ACCESS_LOCAL_WRITE
|
if
(
!
iser_always_reg
)
{
int
access
=
IB_ACCESS_LOCAL_WRITE
|
IB_ACCESS_REMOTE_WRITE
|
IB_ACCESS_REMOTE_READ
);
IB_ACCESS_REMOTE_READ
;
device
->
mr
=
ib_get_dma_mr
(
device
->
pd
,
access
);
if
(
IS_ERR
(
device
->
mr
))
goto
dma_mr_err
;
}
INIT_IB_EVENT_HANDLER
(
&
device
->
event_handler
,
device
->
ib_device
,
iser_event_handler
);
...
...
@@ -147,6 +151,7 @@ static int iser_create_device_ib_res(struct iser_device *device)
return
0
;
handler_err:
if
(
device
->
mr
)
ib_dereg_mr
(
device
->
mr
);
dma_mr_err:
for
(
i
=
0
;
i
<
device
->
comps_used
;
i
++
)
...
...
@@ -173,7 +178,6 @@ static int iser_create_device_ib_res(struct iser_device *device)
static
void
iser_free_device_ib_res
(
struct
iser_device
*
device
)
{
int
i
;
BUG_ON
(
device
->
mr
==
NULL
);
for
(
i
=
0
;
i
<
device
->
comps_used
;
i
++
)
{
struct
iser_comp
*
comp
=
&
device
->
comps
[
i
];
...
...
@@ -184,6 +188,7 @@ static void iser_free_device_ib_res(struct iser_device *device)
}
(
void
)
ib_unregister_event_handler
(
&
device
->
event_handler
);
if
(
device
->
mr
)
(
void
)
ib_dereg_mr
(
device
->
mr
);
ib_dealloc_pd
(
device
->
pd
);
...
...
drivers/net/ethernet/mellanox/mlx5/core/fw.c
浏览文件 @
fc81a069
...
...
@@ -200,25 +200,3 @@ int mlx5_cmd_teardown_hca(struct mlx5_core_dev *dev)
return
err
;
}
int
mlx5_core_query_special_context
(
struct
mlx5_core_dev
*
dev
,
u32
*
rsvd_lkey
)
{
struct
mlx5_cmd_query_special_contexts_mbox_in
in
;
struct
mlx5_cmd_query_special_contexts_mbox_out
out
;
int
err
;
memset
(
&
in
,
0
,
sizeof
(
in
));
memset
(
&
out
,
0
,
sizeof
(
out
));
in
.
hdr
.
opcode
=
cpu_to_be16
(
MLX5_CMD_OP_QUERY_SPECIAL_CONTEXTS
);
err
=
mlx5_cmd_exec
(
dev
,
&
in
,
sizeof
(
in
),
&
out
,
sizeof
(
out
));
if
(
err
)
return
err
;
if
(
out
.
hdr
.
status
)
err
=
mlx5_cmd_status_to_err
(
&
out
.
hdr
);
*
rsvd_lkey
=
be32_to_cpu
(
out
.
resd_lkey
);
return
err
;
}
EXPORT_SYMBOL
(
mlx5_core_query_special_context
);
include/linux/mlx5/device.h
浏览文件 @
fc81a069
...
...
@@ -402,17 +402,6 @@ struct mlx5_cmd_teardown_hca_mbox_out {
u8
rsvd
[
8
];
};
struct
mlx5_cmd_query_special_contexts_mbox_in
{
struct
mlx5_inbox_hdr
hdr
;
u8
rsvd
[
8
];
};
struct
mlx5_cmd_query_special_contexts_mbox_out
{
struct
mlx5_outbox_hdr
hdr
;
__be32
dump_fill_mkey
;
__be32
resd_lkey
;
};
struct
mlx5_cmd_layout
{
u8
type
;
u8
rsvd0
[
3
];
...
...
include/linux/mlx5/driver.h
浏览文件 @
fc81a069
...
...
@@ -845,7 +845,6 @@ void *mlx5_get_protocol_dev(struct mlx5_core_dev *mdev, int protocol);
int
mlx5_register_interface
(
struct
mlx5_interface
*
intf
);
void
mlx5_unregister_interface
(
struct
mlx5_interface
*
intf
);
int
mlx5_core_query_vendor_id
(
struct
mlx5_core_dev
*
mdev
,
u32
*
vendor_id
);
int
mlx5_core_query_special_context
(
struct
mlx5_core_dev
*
dev
,
u32
*
rsvd_lkey
);
struct
mlx5_profile
{
u64
mask
;
...
...
net/sunrpc/xprtrdma/fmr_ops.c
浏览文件 @
fc81a069
...
...
@@ -39,25 +39,6 @@ static int
fmr_op_open
(
struct
rpcrdma_ia
*
ia
,
struct
rpcrdma_ep
*
ep
,
struct
rpcrdma_create_data_internal
*
cdata
)
{
struct
ib_device_attr
*
devattr
=
&
ia
->
ri_devattr
;
struct
ib_mr
*
mr
;
/* Obtain an lkey to use for the regbufs, which are
* protected from remote access.
*/
if
(
devattr
->
device_cap_flags
&
IB_DEVICE_LOCAL_DMA_LKEY
)
{
ia
->
ri_dma_lkey
=
ia
->
ri_device
->
local_dma_lkey
;
}
else
{
mr
=
ib_get_dma_mr
(
ia
->
ri_pd
,
IB_ACCESS_LOCAL_WRITE
);
if
(
IS_ERR
(
mr
))
{
pr_err
(
"%s: ib_get_dma_mr for failed with %lX
\n
"
,
__func__
,
PTR_ERR
(
mr
));
return
-
ENOMEM
;
}
ia
->
ri_dma_lkey
=
ia
->
ri_dma_mr
->
lkey
;
ia
->
ri_dma_mr
=
mr
;
}
return
0
;
}
...
...
net/sunrpc/xprtrdma/frwr_ops.c
浏览文件 @
fc81a069
...
...
@@ -189,11 +189,6 @@ frwr_op_open(struct rpcrdma_ia *ia, struct rpcrdma_ep *ep,
struct
ib_device_attr
*
devattr
=
&
ia
->
ri_devattr
;
int
depth
,
delta
;
/* Obtain an lkey to use for the regbufs, which are
* protected from remote access.
*/
ia
->
ri_dma_lkey
=
ia
->
ri_device
->
local_dma_lkey
;
ia
->
ri_max_frmr_depth
=
min_t
(
unsigned
int
,
RPCRDMA_MAX_DATA_SEGS
,
devattr
->
max_fast_reg_page_list_len
);
...
...
net/sunrpc/xprtrdma/physical_ops.c
浏览文件 @
fc81a069
...
...
@@ -23,7 +23,6 @@ static int
physical_op_open
(
struct
rpcrdma_ia
*
ia
,
struct
rpcrdma_ep
*
ep
,
struct
rpcrdma_create_data_internal
*
cdata
)
{
struct
ib_device_attr
*
devattr
=
&
ia
->
ri_devattr
;
struct
ib_mr
*
mr
;
/* Obtain an rkey to use for RPC data payloads.
...
...
@@ -37,15 +36,8 @@ physical_op_open(struct rpcrdma_ia *ia, struct rpcrdma_ep *ep,
__func__
,
PTR_ERR
(
mr
));
return
-
ENOMEM
;
}
ia
->
ri_dma_mr
=
mr
;
/* Obtain an lkey to use for regbufs.
*/
if
(
devattr
->
device_cap_flags
&
IB_DEVICE_LOCAL_DMA_LKEY
)
ia
->
ri_dma_lkey
=
ia
->
ri_device
->
local_dma_lkey
;
else
ia
->
ri_dma_lkey
=
ia
->
ri_dma_mr
->
lkey
;
ia
->
ri_dma_mr
=
mr
;
return
0
;
}
...
...
net/sunrpc/xprtrdma/verbs.c
浏览文件 @
fc81a069
...
...
@@ -543,10 +543,7 @@ rpcrdma_ia_open(struct rpcrdma_xprt *xprt, struct sockaddr *addr, int memreg)
}
if
(
memreg
==
RPCRDMA_FRMR
)
{
/* Requires both frmr reg and local dma lkey */
if
(((
devattr
->
device_cap_flags
&
(
IB_DEVICE_MEM_MGT_EXTENSIONS
|
IB_DEVICE_LOCAL_DMA_LKEY
))
!=
(
IB_DEVICE_MEM_MGT_EXTENSIONS
|
IB_DEVICE_LOCAL_DMA_LKEY
))
||
if
(
!
(
devattr
->
device_cap_flags
&
IB_DEVICE_MEM_MGT_EXTENSIONS
)
||
(
devattr
->
max_fast_reg_page_list_len
==
0
))
{
dprintk
(
"RPC: %s: FRMR registration "
"not supported by HCA
\n
"
,
__func__
);
...
...
@@ -557,6 +554,7 @@ rpcrdma_ia_open(struct rpcrdma_xprt *xprt, struct sockaddr *addr, int memreg)
if
(
!
ia
->
ri_device
->
alloc_fmr
)
{
dprintk
(
"RPC: %s: MTHCAFMR registration "
"not supported by HCA
\n
"
,
__func__
);
rc
=
-
EINVAL
;
goto
out3
;
}
}
...
...
@@ -1252,7 +1250,7 @@ rpcrdma_alloc_regbuf(struct rpcrdma_ia *ia, size_t size, gfp_t flags)
goto
out_free
;
iov
->
length
=
size
;
iov
->
lkey
=
ia
->
ri_dma_lkey
;
iov
->
lkey
=
ia
->
ri_
pd
->
local_
dma_lkey
;
rb
->
rg_size
=
size
;
rb
->
rg_owner
=
NULL
;
return
rb
;
...
...
net/sunrpc/xprtrdma/xprt_rdma.h
浏览文件 @
fc81a069
...
...
@@ -65,7 +65,6 @@ struct rpcrdma_ia {
struct
rdma_cm_id
*
ri_id
;
struct
ib_pd
*
ri_pd
;
struct
ib_mr
*
ri_dma_mr
;
u32
ri_dma_lkey
;
struct
completion
ri_done
;
int
ri_async_rc
;
unsigned
int
ri_max_frmr_depth
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录