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,
...
@@ -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
));
memset
(
&
gid_attr
,
0
,
sizeof
(
gid_attr
));
gid_attr
.
ndev
=
ndev
;
gid_attr
.
ndev
=
ndev
;
mutex_lock
(
&
table
->
lock
);
ix
=
find_gid
(
table
,
NULL
,
NULL
,
true
,
GID_ATTR_FIND_MASK_DEFAULT
);
ix
=
find_gid
(
table
,
NULL
,
NULL
,
true
,
GID_ATTR_FIND_MASK_DEFAULT
);
/* Coudn't find default GID location */
/* Coudn't find default GID location */
WARN_ON
(
ix
<
0
);
WARN_ON
(
ix
<
0
);
mutex_lock
(
&
table
->
lock
);
if
(
!
__ib_cache_gid_get
(
ib_dev
,
port
,
ix
,
if
(
!
__ib_cache_gid_get
(
ib_dev
,
port
,
ix
,
&
current_gid
,
&
current_gid_attr
)
&&
&
current_gid
,
&
current_gid_attr
)
&&
mode
==
IB_CACHE_GID_DEFAULT_MODE_SET
&&
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)
...
@@ -835,6 +835,11 @@ static void cm_destroy_id(struct ib_cm_id *cm_id, int err)
case
IB_CM_SIDR_REQ_RCVD
:
case
IB_CM_SIDR_REQ_RCVD
:
spin_unlock_irq
(
&
cm_id_priv
->
lock
);
spin_unlock_irq
(
&
cm_id_priv
->
lock
);
cm_reject_sidr_req
(
cm_id_priv
,
IB_SIDR_REJECT
);
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
;
break
;
case
IB_CM_REQ_SENT
:
case
IB_CM_REQ_SENT
:
case
IB_CM_MRA_REQ_RCVD
:
case
IB_CM_MRA_REQ_RCVD
:
...
@@ -3172,7 +3177,10 @@ int ib_send_cm_sidr_rep(struct ib_cm_id *cm_id,
...
@@ -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_unlock_irqrestore
(
&
cm_id_priv
->
lock
,
flags
);
spin_lock_irqsave
(
&
cm
.
lock
,
flags
);
spin_lock_irqsave
(
&
cm
.
lock
,
flags
);
rb_erase
(
&
cm_id_priv
->
sidr_id_node
,
&
cm
.
remote_sidr_table
);
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
);
spin_unlock_irqrestore
(
&
cm
.
lock
,
flags
);
return
0
;
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,
...
@@ -1067,14 +1067,14 @@ static int cma_save_req_info(const struct ib_cm_event *ib_event,
sizeof
(
req
->
local_gid
));
sizeof
(
req
->
local_gid
));
req
->
has_gid
=
true
;
req
->
has_gid
=
true
;
req
->
service_id
=
req_param
->
primary_path
->
service_id
;
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
;
break
;
case
IB_CM_SIDR_REQ_RECEIVED
:
case
IB_CM_SIDR_REQ_RECEIVED
:
req
->
device
=
sidr_param
->
listen_id
->
device
;
req
->
device
=
sidr_param
->
listen_id
->
device
;
req
->
port
=
sidr_param
->
port
;
req
->
port
=
sidr_param
->
port
;
req
->
has_gid
=
false
;
req
->
has_gid
=
false
;
req
->
service_id
=
sidr_param
->
service_id
;
req
->
service_id
=
sidr_param
->
service_id
;
req
->
pkey
=
sidr_param
->
bth_
pkey
;
req
->
pkey
=
sidr_param
->
pkey
;
break
;
break
;
default:
default:
return
-
EINVAL
;
return
-
EINVAL
;
...
@@ -1232,14 +1232,32 @@ static bool cma_match_private_data(struct rdma_id_private *id_priv,
...
@@ -1232,14 +1232,32 @@ static bool cma_match_private_data(struct rdma_id_private *id_priv,
return
true
;
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
,
static
bool
cma_match_net_dev
(
const
struct
rdma_id_private
*
id_priv
,
const
struct
net_device
*
net_dev
)
const
struct
net_device
*
net_dev
)
{
{
const
struct
rdma_addr
*
addr
=
&
id_priv
->
id
.
route
.
addr
;
const
struct
rdma_addr
*
addr
=
&
id_priv
->
id
.
route
.
addr
;
if
(
!
net_dev
)
if
(
!
net_dev
)
/* This request is an AF_IB request */
/* This request is an AF_IB request or a RoCE request */
return
addr
->
src_addr
.
ss_family
==
AF_IB
;
return
addr
->
src_addr
.
ss_family
==
AF_IB
||
cma_protocol_roce
(
&
id_priv
->
id
);
return
!
addr
->
dev_addr
.
bound_dev_if
||
return
!
addr
->
dev_addr
.
bound_dev_if
||
(
net_eq
(
dev_net
(
net_dev
),
&
init_net
)
&&
(
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,
...
@@ -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
)
{
if
(
PTR_ERR
(
*
net_dev
)
==
-
EAFNOSUPPORT
)
{
/* Assuming the protocol is AF_IB */
/* Assuming the protocol is AF_IB */
*
net_dev
=
NULL
;
*
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
{
}
else
{
return
ERR_CAST
(
*
net_dev
);
return
ERR_CAST
(
*
net_dev
);
}
}
...
@@ -1302,7 +1324,7 @@ static struct rdma_id_private *cma_id_from_event(struct ib_cm_id *cm_id,
...
@@ -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
),
bind_list
=
cma_ps_find
(
rdma_ps_from_service_id
(
req
.
service_id
),
cma_port_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
);
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
);
dev_put
(
*
net_dev
);
*
net_dev
=
NULL
;
*
net_dev
=
NULL
;
}
}
...
@@ -1593,11 +1615,16 @@ static struct rdma_id_private *cma_new_conn_id(struct rdma_cm_id *listen_id,
...
@@ -1593,11 +1615,16 @@ static struct rdma_id_private *cma_new_conn_id(struct rdma_cm_id *listen_id,
if
(
ret
)
if
(
ret
)
goto
err
;
goto
err
;
}
else
{
}
else
{
/* An AF_IB connection */
if
(
!
cma_protocol_roce
(
listen_id
)
&&
WARN_ON_ONCE
(
ss_family
!=
AF_IB
);
cma_any_addr
(
cma_src_addr
(
id_priv
)))
{
rt
->
addr
.
dev_addr
.
dev_type
=
ARPHRD_INFINIBAND
;
cma_translate_ib
((
struct
sockaddr_ib
*
)
cma_src_addr
(
id_priv
),
rdma_addr_set_sgid
(
&
rt
->
addr
.
dev_addr
,
&
rt
->
path_rec
[
0
].
sgid
);
&
rt
->
addr
.
dev_addr
);
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
);
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,
...
@@ -1635,13 +1662,12 @@ static struct rdma_id_private *cma_new_udp_id(struct rdma_cm_id *listen_id,
if
(
ret
)
if
(
ret
)
goto
err
;
goto
err
;
}
else
{
}
else
{
/* An AF_IB connection */
if
(
!
cma_any_addr
(
cma_src_addr
(
id_priv
)))
{
WARN_ON_ONCE
(
ss_family
!=
AF_IB
);
ret
=
cma_translate_addr
(
cma_src_addr
(
id_priv
),
&
id
->
route
.
addr
.
dev_addr
);
if
(
!
cma_any_addr
(
cma_src_addr
(
id_priv
)))
if
(
ret
)
cma_translate_ib
((
struct
sockaddr_ib
*
)
goto
err
;
cma_src_addr
(
id_priv
),
}
&
id
->
route
.
addr
.
dev_addr
);
}
}
id_priv
->
state
=
RDMA_CM_CONNECT
;
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,
...
@@ -250,25 +250,44 @@ static void enum_netdev_ipv4_ips(struct ib_device *ib_dev,
u8
port
,
struct
net_device
*
ndev
)
u8
port
,
struct
net_device
*
ndev
)
{
{
struct
in_device
*
in_dev
;
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
)
if
(
ndev
->
reg_state
>=
NETREG_UNREGISTERING
)
return
;
return
;
in_dev
=
in_dev_get
(
ndev
);
rcu_read_lock
();
if
(
!
in_dev
)
in_dev
=
__in_dev_get_rcu
(
ndev
);
if
(
!
in_dev
)
{
rcu_read_unlock
();
return
;
return
;
}
for_ifa
(
in_dev
)
{
for_ifa
(
in_dev
)
{
struct
s
ockaddr_in
ip
;
struct
s
in_list
*
entry
=
kzalloc
(
sizeof
(
*
entry
),
GFP_ATOMIC
)
;
ip
.
sin_family
=
AF_INET
;
if
(
!
entry
)
{
ip
.
sin_addr
.
s_addr
=
ifa
->
ifa_address
;
pr_warn
(
"roce_gid_mgmt: couldn't allocate entry for IPv4 update
\n
"
);
update_gid_ip
(
GID_ADD
,
ib_dev
,
port
,
ndev
,
continue
;
(
struct
sockaddr
*
)
&
ip
);
}
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
);
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
,
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)
...
@@ -1624,11 +1624,16 @@ static int ucma_open(struct inode *inode, struct file *filp)
if
(
!
file
)
if
(
!
file
)
return
-
ENOMEM
;
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
->
event_list
);
INIT_LIST_HEAD
(
&
file
->
ctx_list
);
INIT_LIST_HEAD
(
&
file
->
ctx_list
);
init_waitqueue_head
(
&
file
->
poll_wait
);
init_waitqueue_head
(
&
file
->
poll_wait
);
mutex_init
(
&
file
->
mut
);
mutex_init
(
&
file
->
mut
);
file
->
close_wq
=
create_singlethread_workqueue
(
"ucma_close_id"
);
filp
->
private_data
=
file
;
filp
->
private_data
=
file
;
file
->
filp
=
filp
;
file
->
filp
=
filp
;
...
...
drivers/infiniband/hw/mlx5/main.c
浏览文件 @
fc81a069
...
@@ -245,7 +245,6 @@ static int mlx5_ib_query_device(struct ib_device *ibdev,
...
@@ -245,7 +245,6 @@ static int mlx5_ib_query_device(struct ib_device *ibdev,
props
->
device_cap_flags
|=
IB_DEVICE_BAD_QKEY_CNTR
;
props
->
device_cap_flags
|=
IB_DEVICE_BAD_QKEY_CNTR
;
if
(
MLX5_CAP_GEN
(
mdev
,
apm
))
if
(
MLX5_CAP_GEN
(
mdev
,
apm
))
props
->
device_cap_flags
|=
IB_DEVICE_AUTO_PATH_MIG
;
props
->
device_cap_flags
|=
IB_DEVICE_AUTO_PATH_MIG
;
props
->
device_cap_flags
|=
IB_DEVICE_LOCAL_DMA_LKEY
;
if
(
MLX5_CAP_GEN
(
mdev
,
xrc
))
if
(
MLX5_CAP_GEN
(
mdev
,
xrc
))
props
->
device_cap_flags
|=
IB_DEVICE_XRC
;
props
->
device_cap_flags
|=
IB_DEVICE_XRC
;
props
->
device_cap_flags
|=
IB_DEVICE_MEM_MGT_EXTENSIONS
;
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
...
@@ -795,53 +794,6 @@ static int mlx5_ib_mmap(struct ib_ucontext *ibcontext, struct vm_area_struct *vm
return
0
;
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
,
static
struct
ib_pd
*
mlx5_ib_alloc_pd
(
struct
ib_device
*
ibdev
,
struct
ib_ucontext
*
context
,
struct
ib_ucontext
*
context
,
struct
ib_udata
*
udata
)
struct
ib_udata
*
udata
)
...
@@ -867,13 +819,6 @@ static struct ib_pd *mlx5_ib_alloc_pd(struct ib_device *ibdev,
...
@@ -867,13 +819,6 @@ static struct ib_pd *mlx5_ib_alloc_pd(struct ib_device *ibdev,
kfree
(
pd
);
kfree
(
pd
);
return
ERR_PTR
(
-
EFAULT
);
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
;
return
&
pd
->
ibpd
;
...
@@ -884,9 +829,6 @@ static int mlx5_ib_dealloc_pd(struct ib_pd *pd)
...
@@ -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_dev
*
mdev
=
to_mdev
(
pd
->
device
);
struct
mlx5_ib_pd
*
mpd
=
to_mpd
(
pd
);
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
);
mlx5_core_dealloc_pd
(
mdev
->
mdev
,
mpd
->
pdn
);
kfree
(
mpd
);
kfree
(
mpd
);
...
@@ -1245,18 +1187,10 @@ static int create_dev_resources(struct mlx5_ib_resources *devr)
...
@@ -1245,18 +1187,10 @@ static int create_dev_resources(struct mlx5_ib_resources *devr)
struct
ib_srq_init_attr
attr
;
struct
ib_srq_init_attr
attr
;
struct
mlx5_ib_dev
*
dev
;
struct
mlx5_ib_dev
*
dev
;
struct
ib_cq_init_attr
cq_attr
=
{.
cqe
=
1
};
struct
ib_cq_init_attr
cq_attr
=
{.
cqe
=
1
};
u32
rsvd_lkey
;
int
ret
=
0
;
int
ret
=
0
;
dev
=
container_of
(
devr
,
struct
mlx5_ib_dev
,
devr
);
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
);
devr
->
p0
=
mlx5_ib_alloc_pd
(
&
dev
->
ib_dev
,
NULL
,
NULL
);
if
(
IS_ERR
(
devr
->
p0
))
{
if
(
IS_ERR
(
devr
->
p0
))
{
ret
=
PTR_ERR
(
devr
->
p0
);
ret
=
PTR_ERR
(
devr
->
p0
);
...
@@ -1418,6 +1352,7 @@ static void *mlx5_ib_add(struct mlx5_core_dev *mdev)
...
@@ -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
);
strlcpy
(
dev
->
ib_dev
.
name
,
"mlx5_%d"
,
IB_DEVICE_NAME_MAX
);
dev
->
ib_dev
.
owner
=
THIS_MODULE
;
dev
->
ib_dev
.
owner
=
THIS_MODULE
;
dev
->
ib_dev
.
node_type
=
RDMA_NODE_IB_CA
;
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
->
num_ports
=
MLX5_CAP_GEN
(
mdev
,
num_ports
);
dev
->
ib_dev
.
phys_port_cnt
=
dev
->
num_ports
;
dev
->
ib_dev
.
phys_port_cnt
=
dev
->
num_ports
;
dev
->
ib_dev
.
num_comp_vectors
=
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
...
@@ -103,7 +103,6 @@ static inline struct mlx5_ib_ucontext *to_mucontext(struct ib_ucontext *ibuconte
struct
mlx5_ib_pd
{
struct
mlx5_ib_pd
{
struct
ib_pd
ibpd
;
struct
ib_pd
ibpd
;
u32
pdn
;
u32
pdn
;
u32
pa_lkey
;
};
};
/* Use macros here so that don't have to duplicate
/* Use macros here so that don't have to duplicate
...
@@ -213,7 +212,6 @@ struct mlx5_ib_qp {
...
@@ -213,7 +212,6 @@ struct mlx5_ib_qp {
int
uuarn
;
int
uuarn
;
int
create_type
;
int
create_type
;
u32
pa_lkey
;
/* Store signature errors */
/* Store signature errors */
bool
signature_en
;
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,
...
@@ -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
);
err
=
create_kernel_qp
(
dev
,
init_attr
,
qp
,
&
in
,
&
inlen
);
if
(
err
)
if
(
err
)
mlx5_ib_dbg
(
dev
,
"err %d
\n
"
,
err
);
mlx5_ib_dbg
(
dev
,
"err %d
\n
"
,
err
);
else
qp
->
pa_lkey
=
to_mpd
(
pd
)
->
pa_lkey
;
}
}
if
(
err
)
if
(
err
)
...
@@ -2045,7 +2043,7 @@ static void set_frwr_pages(struct mlx5_wqe_data_seg *dseg,
...
@@ -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
);
mfrpl
->
mapped_page_list
[
i
]
=
cpu_to_be64
(
page_list
[
i
]
|
perm
);
dseg
->
addr
=
cpu_to_be64
(
mfrpl
->
map
);
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
->
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
)
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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/hw/usnic/usnic_uiom.c
浏览文件 @
fc81a069
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
* licenses. You may choose to be licensed under the terms of the GNU
* licenses. You may choose to be licensed under the terms of the GNU
* General Public License (GPL) Version 2, available from the file
* General Public License (GPL) Version 2, available from the file
* COPYING in the main directory of this source tree, or the
* 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
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2014, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* 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.
* Copyright (c) 2013, Cisco Systems, Inc. All rights reserved.
*
*
* This program is free software; you may redistribute it and/or modify
* This software is available to you under a choice of one of two
* it under the terms of the GNU General Public License as published by
* licenses. You may choose to be licensed under the terms of the GNU
* the Free Software Foundation; version 2 of the License.
* 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,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
...
...
drivers/infiniband/ulp/ipoib/ipoib.h
浏览文件 @
fc81a069
...
@@ -80,7 +80,7 @@ enum {
...
@@ -80,7 +80,7 @@ enum {
IPOIB_NUM_WC
=
4
,
IPOIB_NUM_WC
=
4
,
IPOIB_MAX_PATH_REC_QUEUE
=
3
,
IPOIB_MAX_PATH_REC_QUEUE
=
3
,
IPOIB_MAX_MCAST_QUEUE
=
3
,
IPOIB_MAX_MCAST_QUEUE
=
64
,
IPOIB_FLAG_OPER_UP
=
0
,
IPOIB_FLAG_OPER_UP
=
0
,
IPOIB_FLAG_INITIALIZED
=
1
,
IPOIB_FLAG_INITIALIZED
=
1
,
...
@@ -495,6 +495,7 @@ void ipoib_dev_cleanup(struct net_device *dev);
...
@@ -495,6 +495,7 @@ void ipoib_dev_cleanup(struct net_device *dev);
void
ipoib_mcast_join_task
(
struct
work_struct
*
work
);
void
ipoib_mcast_join_task
(
struct
work_struct
*
work
);
void
ipoib_mcast_carrier_on_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_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
);
void
ipoib_mcast_restart_task
(
struct
work_struct
*
work
);
int
ipoib_mcast_start_thread
(
struct
net_device
*
dev
);
int
ipoib_mcast_start_thread
(
struct
net_device
*
dev
);
...
@@ -548,6 +549,8 @@ void ipoib_path_iter_read(struct ipoib_path_iter *iter,
...
@@ -548,6 +549,8 @@ void ipoib_path_iter_read(struct ipoib_path_iter *iter,
int
ipoib_mcast_attach
(
struct
net_device
*
dev
,
u16
mlid
,
int
ipoib_mcast_attach
(
struct
net_device
*
dev
,
u16
mlid
,
union
ib_gid
*
mgid
,
int
set_qkey
);
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_init_qp
(
struct
net_device
*
dev
);
int
ipoib_transport_dev_init
(
struct
net_device
*
dev
,
struct
ib_device
*
ca
);
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)
...
@@ -1149,6 +1149,9 @@ static void __ipoib_reap_neigh(struct ipoib_dev_priv *priv)
unsigned
long
dt
;
unsigned
long
dt
;
unsigned
long
flags
;
unsigned
long
flags
;
int
i
;
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
))
if
(
test_bit
(
IPOIB_STOP_NEIGH_GC
,
&
priv
->
flags
))
return
;
return
;
...
@@ -1176,6 +1179,19 @@ static void __ipoib_reap_neigh(struct ipoib_dev_priv *priv)
...
@@ -1176,6 +1179,19 @@ static void __ipoib_reap_neigh(struct ipoib_dev_priv *priv)
lockdep_is_held
(
&
priv
->
lock
)))
!=
NULL
)
{
lockdep_is_held
(
&
priv
->
lock
)))
!=
NULL
)
{
/* was the neigh idle for two GC periods */
/* was the neigh idle for two GC periods */
if
(
time_after
(
neigh_obsolete
,
neigh
->
alive
))
{
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_assign_pointer
(
*
np
,
rcu_dereference_protected
(
neigh
->
hnext
,
rcu_dereference_protected
(
neigh
->
hnext
,
lockdep_is_held
(
&
priv
->
lock
)));
lockdep_is_held
(
&
priv
->
lock
)));
...
@@ -1191,6 +1207,10 @@ static void __ipoib_reap_neigh(struct ipoib_dev_priv *priv)
...
@@ -1191,6 +1207,10 @@ static void __ipoib_reap_neigh(struct ipoib_dev_priv *priv)
out_unlock:
out_unlock:
spin_unlock_irqrestore
(
&
priv
->
lock
,
flags
);
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
)
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,
...
@@ -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
);
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
;
struct
net_device
*
dev
=
mcast
->
dev
;
int
tx_dropped
=
0
;
int
tx_dropped
=
0
;
...
@@ -153,7 +153,7 @@ static struct ipoib_mcast *ipoib_mcast_alloc(struct net_device *dev,
...
@@ -153,7 +153,7 @@ static struct ipoib_mcast *ipoib_mcast_alloc(struct net_device *dev,
return
mcast
;
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
ipoib_dev_priv
*
priv
=
netdev_priv
(
dev
);
struct
rb_node
*
n
=
priv
->
multicast_tree
.
rb_node
;
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)
...
@@ -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
;
rec
.
hop_limit
=
priv
->
broadcast
->
mcmember
.
hop_limit
;
/*
/*
* Historically Linux IPoIB has never properly supported SEND
* Send-only IB Multicast joins do not work at the core
* ONLY join. It emulated it by not providing all the required
* IB layer yet, so we can't use them here. However,
* attributes, which is enough to prevent group creation and
* we are emulating an Ethernet multicast send, which
* detect if there are full members or not. A major problem
* does not require a multicast subscription and will
* with supporting SEND ONLY is detecting when the group is
* still send properly. The most appropriate thing to
* auto-destroyed as IPoIB will cache the MLID..
* 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 0
if
(
test_bit
(
IPOIB_MCAST_FLAG_SENDONLY
,
&
mcast
->
flags
))
comp_mask
&=
~
IB_SA_MCMEMBER_REC_TRAFFIC_CLASS
;
#else
if (test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags))
if (test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags))
rec.join_state = 4;
rec.join_state = 4;
#endif
#endif
...
@@ -675,7 +677,7 @@ int ipoib_mcast_stop_thread(struct net_device *dev)
...
@@ -675,7 +677,7 @@ int ipoib_mcast_stop_thread(struct net_device *dev)
return
0
;
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
);
struct
ipoib_dev_priv
*
priv
=
netdev_priv
(
dev
);
int
ret
=
0
;
int
ret
=
0
;
...
...
drivers/infiniband/ulp/iser/iscsi_iser.c
浏览文件 @
fc81a069
...
@@ -97,6 +97,11 @@ unsigned int iser_max_sectors = ISER_DEF_MAX_SECTORS;
...
@@ -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_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"
);
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
;
bool
iser_pi_enable
=
false
;
module_param_named
(
pi_enable
,
iser_pi_enable
,
bool
,
S_IRUGO
);
module_param_named
(
pi_enable
,
iser_pi_enable
,
bool
,
S_IRUGO
);
MODULE_PARM_DESC
(
pi_enable
,
"Enable T10-PI offload support (default:disabled)"
);
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;
...
@@ -611,6 +611,7 @@ extern int iser_debug_level;
extern
bool
iser_pi_enable
;
extern
bool
iser_pi_enable
;
extern
int
iser_pi_guard
;
extern
int
iser_pi_guard
;
extern
unsigned
int
iser_max_sectors
;
extern
unsigned
int
iser_max_sectors
;
extern
bool
iser_always_reg
;
int
iser_assign_reg_ops
(
struct
iser_device
*
device
);
int
iser_assign_reg_ops
(
struct
iser_device
*
device
);
...
...
drivers/infiniband/ulp/iser/iser_memory.c
浏览文件 @
fc81a069
...
@@ -803,11 +803,12 @@ static int
...
@@ -803,11 +803,12 @@ static int
iser_reg_prot_sg
(
struct
iscsi_iser_task
*
task
,
iser_reg_prot_sg
(
struct
iscsi_iser_task
*
task
,
struct
iser_data_buf
*
mem
,
struct
iser_data_buf
*
mem
,
struct
iser_fr_desc
*
desc
,
struct
iser_fr_desc
*
desc
,
bool
use_dma_key
,
struct
iser_mem_reg
*
reg
)
struct
iser_mem_reg
*
reg
)
{
{
struct
iser_device
*
device
=
task
->
iser_conn
->
ib_conn
.
device
;
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
iser_reg_dma
(
device
,
mem
,
reg
);
return
device
->
reg_ops
->
reg_mem
(
task
,
mem
,
&
desc
->
pi_ctx
->
rsc
,
reg
);
return
device
->
reg_ops
->
reg_mem
(
task
,
mem
,
&
desc
->
pi_ctx
->
rsc
,
reg
);
...
@@ -817,11 +818,12 @@ static int
...
@@ -817,11 +818,12 @@ static int
iser_reg_data_sg
(
struct
iscsi_iser_task
*
task
,
iser_reg_data_sg
(
struct
iscsi_iser_task
*
task
,
struct
iser_data_buf
*
mem
,
struct
iser_data_buf
*
mem
,
struct
iser_fr_desc
*
desc
,
struct
iser_fr_desc
*
desc
,
bool
use_dma_key
,
struct
iser_mem_reg
*
reg
)
struct
iser_mem_reg
*
reg
)
{
{
struct
iser_device
*
device
=
task
->
iser_conn
->
ib_conn
.
device
;
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
iser_reg_dma
(
device
,
mem
,
reg
);
return
device
->
reg_ops
->
reg_mem
(
task
,
mem
,
&
desc
->
rsc
,
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,
...
@@ -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
*
reg
=
&
task
->
rdma_reg
[
dir
];
struct
iser_mem_reg
*
data_reg
;
struct
iser_mem_reg
*
data_reg
;
struct
iser_fr_desc
*
desc
=
NULL
;
struct
iser_fr_desc
*
desc
=
NULL
;
bool
use_dma_key
;
int
err
;
int
err
;
err
=
iser_handle_unaligned_buf
(
task
,
mem
,
dir
);
err
=
iser_handle_unaligned_buf
(
task
,
mem
,
dir
);
if
(
unlikely
(
err
))
if
(
unlikely
(
err
))
return
err
;
return
err
;
if
(
mem
->
dma_nents
!=
1
||
use_dma_key
=
(
mem
->
dma_nents
==
1
&&
!
iser_always_reg
&&
scsi_get_prot_op
(
task
->
sc
)
!=
SCSI_PROT_NORMAL
)
{
scsi_get_prot_op
(
task
->
sc
)
==
SCSI_PROT_NORMAL
);
if
(
!
use_dma_key
)
{
desc
=
device
->
reg_ops
->
reg_desc_get
(
ib_conn
);
desc
=
device
->
reg_ops
->
reg_desc_get
(
ib_conn
);
reg
->
mem_h
=
desc
;
reg
->
mem_h
=
desc
;
}
}
...
@@ -853,7 +858,7 @@ int iser_reg_rdma_mem(struct iscsi_iser_task *task,
...
@@ -853,7 +858,7 @@ int iser_reg_rdma_mem(struct iscsi_iser_task *task,
else
else
data_reg
=
&
task
->
desc
.
data_reg
;
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
))
if
(
unlikely
(
err
))
goto
err_reg
;
goto
err_reg
;
...
@@ -866,7 +871,8 @@ int iser_reg_rdma_mem(struct iscsi_iser_task *task,
...
@@ -866,7 +871,8 @@ int iser_reg_rdma_mem(struct iscsi_iser_task *task,
if
(
unlikely
(
err
))
if
(
unlikely
(
err
))
goto
err_reg
;
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
))
if
(
unlikely
(
err
))
goto
err_reg
;
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)
...
@@ -133,11 +133,15 @@ static int iser_create_device_ib_res(struct iser_device *device)
(
unsigned
long
)
comp
);
(
unsigned
long
)
comp
);
}
}
device
->
mr
=
ib_get_dma_mr
(
device
->
pd
,
IB_ACCESS_LOCAL_WRITE
|
if
(
!
iser_always_reg
)
{
IB_ACCESS_REMOTE_WRITE
|
int
access
=
IB_ACCESS_LOCAL_WRITE
|
IB_ACCESS_REMOTE_READ
);
IB_ACCESS_REMOTE_WRITE
|
if
(
IS_ERR
(
device
->
mr
))
IB_ACCESS_REMOTE_READ
;
goto
dma_mr_err
;
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
,
INIT_IB_EVENT_HANDLER
(
&
device
->
event_handler
,
device
->
ib_device
,
iser_event_handler
);
iser_event_handler
);
...
@@ -147,7 +151,8 @@ static int iser_create_device_ib_res(struct iser_device *device)
...
@@ -147,7 +151,8 @@ static int iser_create_device_ib_res(struct iser_device *device)
return
0
;
return
0
;
handler_err:
handler_err:
ib_dereg_mr
(
device
->
mr
);
if
(
device
->
mr
)
ib_dereg_mr
(
device
->
mr
);
dma_mr_err:
dma_mr_err:
for
(
i
=
0
;
i
<
device
->
comps_used
;
i
++
)
for
(
i
=
0
;
i
<
device
->
comps_used
;
i
++
)
tasklet_kill
(
&
device
->
comps
[
i
].
tasklet
);
tasklet_kill
(
&
device
->
comps
[
i
].
tasklet
);
...
@@ -173,7 +178,6 @@ static int iser_create_device_ib_res(struct iser_device *device)
...
@@ -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
)
static
void
iser_free_device_ib_res
(
struct
iser_device
*
device
)
{
{
int
i
;
int
i
;
BUG_ON
(
device
->
mr
==
NULL
);
for
(
i
=
0
;
i
<
device
->
comps_used
;
i
++
)
{
for
(
i
=
0
;
i
<
device
->
comps_used
;
i
++
)
{
struct
iser_comp
*
comp
=
&
device
->
comps
[
i
];
struct
iser_comp
*
comp
=
&
device
->
comps
[
i
];
...
@@ -184,7 +188,8 @@ static void iser_free_device_ib_res(struct iser_device *device)
...
@@ -184,7 +188,8 @@ static void iser_free_device_ib_res(struct iser_device *device)
}
}
(
void
)
ib_unregister_event_handler
(
&
device
->
event_handler
);
(
void
)
ib_unregister_event_handler
(
&
device
->
event_handler
);
(
void
)
ib_dereg_mr
(
device
->
mr
);
if
(
device
->
mr
)
(
void
)
ib_dereg_mr
(
device
->
mr
);
ib_dealloc_pd
(
device
->
pd
);
ib_dealloc_pd
(
device
->
pd
);
kfree
(
device
->
comps
);
kfree
(
device
->
comps
);
...
...
drivers/net/ethernet/mellanox/mlx5/core/fw.c
浏览文件 @
fc81a069
...
@@ -200,25 +200,3 @@ int mlx5_cmd_teardown_hca(struct mlx5_core_dev *dev)
...
@@ -200,25 +200,3 @@ int mlx5_cmd_teardown_hca(struct mlx5_core_dev *dev)
return
err
;
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 {
...
@@ -402,17 +402,6 @@ struct mlx5_cmd_teardown_hca_mbox_out {
u8
rsvd
[
8
];
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
{
struct
mlx5_cmd_layout
{
u8
type
;
u8
type
;
u8
rsvd0
[
3
];
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);
...
@@ -845,7 +845,6 @@ void *mlx5_get_protocol_dev(struct mlx5_core_dev *mdev, int protocol);
int
mlx5_register_interface
(
struct
mlx5_interface
*
intf
);
int
mlx5_register_interface
(
struct
mlx5_interface
*
intf
);
void
mlx5_unregister_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_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
{
struct
mlx5_profile
{
u64
mask
;
u64
mask
;
...
...
net/sunrpc/xprtrdma/fmr_ops.c
浏览文件 @
fc81a069
...
@@ -39,25 +39,6 @@ static int
...
@@ -39,25 +39,6 @@ static int
fmr_op_open
(
struct
rpcrdma_ia
*
ia
,
struct
rpcrdma_ep
*
ep
,
fmr_op_open
(
struct
rpcrdma_ia
*
ia
,
struct
rpcrdma_ep
*
ep
,
struct
rpcrdma_create_data_internal
*
cdata
)
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
;
return
0
;
}
}
...
...
net/sunrpc/xprtrdma/frwr_ops.c
浏览文件 @
fc81a069
...
@@ -189,11 +189,6 @@ frwr_op_open(struct rpcrdma_ia *ia, struct rpcrdma_ep *ep,
...
@@ -189,11 +189,6 @@ frwr_op_open(struct rpcrdma_ia *ia, struct rpcrdma_ep *ep,
struct
ib_device_attr
*
devattr
=
&
ia
->
ri_devattr
;
struct
ib_device_attr
*
devattr
=
&
ia
->
ri_devattr
;
int
depth
,
delta
;
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
=
ia
->
ri_max_frmr_depth
=
min_t
(
unsigned
int
,
RPCRDMA_MAX_DATA_SEGS
,
min_t
(
unsigned
int
,
RPCRDMA_MAX_DATA_SEGS
,
devattr
->
max_fast_reg_page_list_len
);
devattr
->
max_fast_reg_page_list_len
);
...
...
net/sunrpc/xprtrdma/physical_ops.c
浏览文件 @
fc81a069
...
@@ -23,7 +23,6 @@ static int
...
@@ -23,7 +23,6 @@ static int
physical_op_open
(
struct
rpcrdma_ia
*
ia
,
struct
rpcrdma_ep
*
ep
,
physical_op_open
(
struct
rpcrdma_ia
*
ia
,
struct
rpcrdma_ep
*
ep
,
struct
rpcrdma_create_data_internal
*
cdata
)
struct
rpcrdma_create_data_internal
*
cdata
)
{
{
struct
ib_device_attr
*
devattr
=
&
ia
->
ri_devattr
;
struct
ib_mr
*
mr
;
struct
ib_mr
*
mr
;
/* Obtain an rkey to use for RPC data payloads.
/* Obtain an rkey to use for RPC data payloads.
...
@@ -37,15 +36,8 @@ physical_op_open(struct rpcrdma_ia *ia, struct rpcrdma_ep *ep,
...
@@ -37,15 +36,8 @@ physical_op_open(struct rpcrdma_ia *ia, struct rpcrdma_ep *ep,
__func__
,
PTR_ERR
(
mr
));
__func__
,
PTR_ERR
(
mr
));
return
-
ENOMEM
;
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
;
return
0
;
}
}
...
...
net/sunrpc/xprtrdma/verbs.c
浏览文件 @
fc81a069
...
@@ -543,11 +543,8 @@ rpcrdma_ia_open(struct rpcrdma_xprt *xprt, struct sockaddr *addr, int memreg)
...
@@ -543,11 +543,8 @@ rpcrdma_ia_open(struct rpcrdma_xprt *xprt, struct sockaddr *addr, int memreg)
}
}
if
(
memreg
==
RPCRDMA_FRMR
)
{
if
(
memreg
==
RPCRDMA_FRMR
)
{
/* Requires both frmr reg and local dma lkey */
if
(
!
(
devattr
->
device_cap_flags
&
IB_DEVICE_MEM_MGT_EXTENSIONS
)
||
if
(((
devattr
->
device_cap_flags
&
(
devattr
->
max_fast_reg_page_list_len
==
0
))
{
(
IB_DEVICE_MEM_MGT_EXTENSIONS
|
IB_DEVICE_LOCAL_DMA_LKEY
))
!=
(
IB_DEVICE_MEM_MGT_EXTENSIONS
|
IB_DEVICE_LOCAL_DMA_LKEY
))
||
(
devattr
->
max_fast_reg_page_list_len
==
0
))
{
dprintk
(
"RPC: %s: FRMR registration "
dprintk
(
"RPC: %s: FRMR registration "
"not supported by HCA
\n
"
,
__func__
);
"not supported by HCA
\n
"
,
__func__
);
memreg
=
RPCRDMA_MTHCAFMR
;
memreg
=
RPCRDMA_MTHCAFMR
;
...
@@ -557,6 +554,7 @@ rpcrdma_ia_open(struct rpcrdma_xprt *xprt, struct sockaddr *addr, int memreg)
...
@@ -557,6 +554,7 @@ rpcrdma_ia_open(struct rpcrdma_xprt *xprt, struct sockaddr *addr, int memreg)
if
(
!
ia
->
ri_device
->
alloc_fmr
)
{
if
(
!
ia
->
ri_device
->
alloc_fmr
)
{
dprintk
(
"RPC: %s: MTHCAFMR registration "
dprintk
(
"RPC: %s: MTHCAFMR registration "
"not supported by HCA
\n
"
,
__func__
);
"not supported by HCA
\n
"
,
__func__
);
rc
=
-
EINVAL
;
goto
out3
;
goto
out3
;
}
}
}
}
...
@@ -1252,7 +1250,7 @@ rpcrdma_alloc_regbuf(struct rpcrdma_ia *ia, size_t size, gfp_t flags)
...
@@ -1252,7 +1250,7 @@ rpcrdma_alloc_regbuf(struct rpcrdma_ia *ia, size_t size, gfp_t flags)
goto
out_free
;
goto
out_free
;
iov
->
length
=
size
;
iov
->
length
=
size
;
iov
->
lkey
=
ia
->
ri_dma_lkey
;
iov
->
lkey
=
ia
->
ri_
pd
->
local_
dma_lkey
;
rb
->
rg_size
=
size
;
rb
->
rg_size
=
size
;
rb
->
rg_owner
=
NULL
;
rb
->
rg_owner
=
NULL
;
return
rb
;
return
rb
;
...
...
net/sunrpc/xprtrdma/xprt_rdma.h
浏览文件 @
fc81a069
...
@@ -65,7 +65,6 @@ struct rpcrdma_ia {
...
@@ -65,7 +65,6 @@ struct rpcrdma_ia {
struct
rdma_cm_id
*
ri_id
;
struct
rdma_cm_id
*
ri_id
;
struct
ib_pd
*
ri_pd
;
struct
ib_pd
*
ri_pd
;
struct
ib_mr
*
ri_dma_mr
;
struct
ib_mr
*
ri_dma_mr
;
u32
ri_dma_lkey
;
struct
completion
ri_done
;
struct
completion
ri_done
;
int
ri_async_rc
;
int
ri_async_rc
;
unsigned
int
ri_max_frmr_depth
;
unsigned
int
ri_max_frmr_depth
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录