Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
20952cdd
Commit
20952cdd
authored
Jun 06, 2012
by
Roland Dreier
Browse files
Options
Browse Files
Download
Plain Diff
Merge branches 'cxgb4', 'mlx4' and 'ocrdma' into for-linus
parents
71b43fd5
fc2d0044
7ad5e449
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
35 additions
and
41 deletions
+35
-41
drivers/infiniband/hw/mlx4/main.c
drivers/infiniband/hw/mlx4/main.c
+8
-13
drivers/infiniband/hw/mlx4/mlx4_ib.h
drivers/infiniband/hw/mlx4/mlx4_ib.h
+8
-0
drivers/infiniband/hw/mlx4/qp.c
drivers/infiniband/hw/mlx4/qp.c
+15
-6
drivers/infiniband/hw/ocrdma/ocrdma.h
drivers/infiniband/hw/ocrdma/ocrdma.h
+0
-1
drivers/infiniband/hw/ocrdma/ocrdma_abi.h
drivers/infiniband/hw/ocrdma/ocrdma_abi.h
+1
-4
drivers/infiniband/hw/ocrdma/ocrdma_hw.c
drivers/infiniband/hw/ocrdma/ocrdma_hw.c
+1
-8
drivers/infiniband/hw/ocrdma/ocrdma_main.c
drivers/infiniband/hw/ocrdma/ocrdma_main.c
+0
-1
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
+0
-5
drivers/infiniband/hw/ocrdma/ocrdma_verbs.h
drivers/infiniband/hw/ocrdma/ocrdma_verbs.h
+0
-1
drivers/net/ethernet/mellanox/mlx4/port.c
drivers/net/ethernet/mellanox/mlx4/port.c
+2
-2
No files found.
drivers/infiniband/hw/mlx4/main.c
View file @
20952cdd
...
@@ -140,7 +140,7 @@ static int mlx4_ib_query_device(struct ib_device *ibdev,
...
@@ -140,7 +140,7 @@ static int mlx4_ib_query_device(struct ib_device *ibdev,
props
->
max_mr_size
=
~
0ull
;
props
->
max_mr_size
=
~
0ull
;
props
->
page_size_cap
=
dev
->
dev
->
caps
.
page_size_cap
;
props
->
page_size_cap
=
dev
->
dev
->
caps
.
page_size_cap
;
props
->
max_qp
=
dev
->
dev
->
caps
.
num_qps
-
dev
->
dev
->
caps
.
reserved_qps
;
props
->
max_qp
=
dev
->
dev
->
caps
.
num_qps
-
dev
->
dev
->
caps
.
reserved_qps
;
props
->
max_qp_wr
=
dev
->
dev
->
caps
.
max_wqes
;
props
->
max_qp_wr
=
dev
->
dev
->
caps
.
max_wqes
-
MLX4_IB_SQ_MAX_SPARE
;
props
->
max_sge
=
min
(
dev
->
dev
->
caps
.
max_sq_sg
,
props
->
max_sge
=
min
(
dev
->
dev
->
caps
.
max_sq_sg
,
dev
->
dev
->
caps
.
max_rq_sg
);
dev
->
dev
->
caps
.
max_rq_sg
);
props
->
max_cq
=
dev
->
dev
->
caps
.
num_cqs
-
dev
->
dev
->
caps
.
reserved_cqs
;
props
->
max_cq
=
dev
->
dev
->
caps
.
num_cqs
-
dev
->
dev
->
caps
.
reserved_cqs
;
...
@@ -1084,12 +1084,9 @@ static void mlx4_ib_alloc_eqs(struct mlx4_dev *dev, struct mlx4_ib_dev *ibdev)
...
@@ -1084,12 +1084,9 @@ static void mlx4_ib_alloc_eqs(struct mlx4_dev *dev, struct mlx4_ib_dev *ibdev)
int
total_eqs
=
0
;
int
total_eqs
=
0
;
int
i
,
j
,
eq
;
int
i
,
j
,
eq
;
/* Init eq table */
/* Legacy mode or comp_pool is not large enough */
ibdev
->
eq_table
=
NULL
;
if
(
dev
->
caps
.
comp_pool
==
0
||
ibdev
->
eq_added
=
0
;
dev
->
caps
.
num_ports
>
dev
->
caps
.
comp_pool
)
/* Legacy mode? */
if
(
dev
->
caps
.
comp_pool
==
0
)
return
;
return
;
eq_per_port
=
rounddown_pow_of_two
(
dev
->
caps
.
comp_pool
/
eq_per_port
=
rounddown_pow_of_two
(
dev
->
caps
.
comp_pool
/
...
@@ -1135,7 +1132,10 @@ static void mlx4_ib_alloc_eqs(struct mlx4_dev *dev, struct mlx4_ib_dev *ibdev)
...
@@ -1135,7 +1132,10 @@ static void mlx4_ib_alloc_eqs(struct mlx4_dev *dev, struct mlx4_ib_dev *ibdev)
static
void
mlx4_ib_free_eqs
(
struct
mlx4_dev
*
dev
,
struct
mlx4_ib_dev
*
ibdev
)
static
void
mlx4_ib_free_eqs
(
struct
mlx4_dev
*
dev
,
struct
mlx4_ib_dev
*
ibdev
)
{
{
int
i
;
int
i
;
int
total_eqs
;
/* no additional eqs were added */
if
(
!
ibdev
->
eq_table
)
return
;
/* Reset the advertised EQ number */
/* Reset the advertised EQ number */
ibdev
->
ib_dev
.
num_comp_vectors
=
dev
->
caps
.
num_comp_vectors
;
ibdev
->
ib_dev
.
num_comp_vectors
=
dev
->
caps
.
num_comp_vectors
;
...
@@ -1148,12 +1148,7 @@ static void mlx4_ib_free_eqs(struct mlx4_dev *dev, struct mlx4_ib_dev *ibdev)
...
@@ -1148,12 +1148,7 @@ static void mlx4_ib_free_eqs(struct mlx4_dev *dev, struct mlx4_ib_dev *ibdev)
mlx4_release_eq
(
dev
,
ibdev
->
eq_table
[
i
]);
mlx4_release_eq
(
dev
,
ibdev
->
eq_table
[
i
]);
}
}
total_eqs
=
dev
->
caps
.
num_comp_vectors
+
ibdev
->
eq_added
;
memset
(
ibdev
->
eq_table
,
0
,
total_eqs
*
sizeof
(
int
));
kfree
(
ibdev
->
eq_table
);
kfree
(
ibdev
->
eq_table
);
ibdev
->
eq_table
=
NULL
;
ibdev
->
eq_added
=
0
;
}
}
static
void
*
mlx4_ib_add
(
struct
mlx4_dev
*
dev
)
static
void
*
mlx4_ib_add
(
struct
mlx4_dev
*
dev
)
...
...
drivers/infiniband/hw/mlx4/mlx4_ib.h
View file @
20952cdd
...
@@ -44,6 +44,14 @@
...
@@ -44,6 +44,14 @@
#include <linux/mlx4/device.h>
#include <linux/mlx4/device.h>
#include <linux/mlx4/doorbell.h>
#include <linux/mlx4/doorbell.h>
enum
{
MLX4_IB_SQ_MIN_WQE_SHIFT
=
6
,
MLX4_IB_MAX_HEADROOM
=
2048
};
#define MLX4_IB_SQ_HEADROOM(shift) ((MLX4_IB_MAX_HEADROOM >> (shift)) + 1)
#define MLX4_IB_SQ_MAX_SPARE (MLX4_IB_SQ_HEADROOM(MLX4_IB_SQ_MIN_WQE_SHIFT))
struct
mlx4_ib_ucontext
{
struct
mlx4_ib_ucontext
{
struct
ib_ucontext
ibucontext
;
struct
ib_ucontext
ibucontext
;
struct
mlx4_uar
uar
;
struct
mlx4_uar
uar
;
...
...
drivers/infiniband/hw/mlx4/qp.c
View file @
20952cdd
...
@@ -310,8 +310,8 @@ static int set_rq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap,
...
@@ -310,8 +310,8 @@ static int set_rq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap,
int
is_user
,
int
has_rq
,
struct
mlx4_ib_qp
*
qp
)
int
is_user
,
int
has_rq
,
struct
mlx4_ib_qp
*
qp
)
{
{
/* Sanity check RQ size before proceeding */
/* Sanity check RQ size before proceeding */
if
(
cap
->
max_recv_wr
>
dev
->
dev
->
caps
.
max_wqes
||
if
(
cap
->
max_recv_wr
>
dev
->
dev
->
caps
.
max_wqes
-
MLX4_IB_SQ_MAX_SPARE
||
cap
->
max_recv_sge
>
dev
->
dev
->
caps
.
max_rq_sg
)
cap
->
max_recv_sge
>
min
(
dev
->
dev
->
caps
.
max_sq_sg
,
dev
->
dev
->
caps
.
max_rq_sg
)
)
return
-
EINVAL
;
return
-
EINVAL
;
if
(
!
has_rq
)
{
if
(
!
has_rq
)
{
...
@@ -329,8 +329,17 @@ static int set_rq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap,
...
@@ -329,8 +329,17 @@ static int set_rq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap,
qp
->
rq
.
wqe_shift
=
ilog2
(
qp
->
rq
.
max_gs
*
sizeof
(
struct
mlx4_wqe_data_seg
));
qp
->
rq
.
wqe_shift
=
ilog2
(
qp
->
rq
.
max_gs
*
sizeof
(
struct
mlx4_wqe_data_seg
));
}
}
/* leave userspace return values as they were, so as not to break ABI */
if
(
is_user
)
{
cap
->
max_recv_wr
=
qp
->
rq
.
max_post
=
qp
->
rq
.
wqe_cnt
;
cap
->
max_recv_wr
=
qp
->
rq
.
max_post
=
qp
->
rq
.
wqe_cnt
;
cap
->
max_recv_sge
=
qp
->
rq
.
max_gs
;
cap
->
max_recv_sge
=
qp
->
rq
.
max_gs
;
}
else
{
cap
->
max_recv_wr
=
qp
->
rq
.
max_post
=
min
(
dev
->
dev
->
caps
.
max_wqes
-
MLX4_IB_SQ_MAX_SPARE
,
qp
->
rq
.
wqe_cnt
);
cap
->
max_recv_sge
=
min
(
qp
->
rq
.
max_gs
,
min
(
dev
->
dev
->
caps
.
max_sq_sg
,
dev
->
dev
->
caps
.
max_rq_sg
));
}
return
0
;
return
0
;
}
}
...
@@ -341,8 +350,8 @@ static int set_kernel_sq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap,
...
@@ -341,8 +350,8 @@ static int set_kernel_sq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap,
int
s
;
int
s
;
/* Sanity check SQ size before proceeding */
/* Sanity check SQ size before proceeding */
if
(
cap
->
max_send_wr
>
dev
->
dev
->
caps
.
max_wqes
||
if
(
cap
->
max_send_wr
>
(
dev
->
dev
->
caps
.
max_wqes
-
MLX4_IB_SQ_MAX_SPARE
)
||
cap
->
max_send_sge
>
dev
->
dev
->
caps
.
max_sq_sg
||
cap
->
max_send_sge
>
min
(
dev
->
dev
->
caps
.
max_sq_sg
,
dev
->
dev
->
caps
.
max_rq_sg
)
||
cap
->
max_inline_data
+
send_wqe_overhead
(
type
,
qp
->
flags
)
+
cap
->
max_inline_data
+
send_wqe_overhead
(
type
,
qp
->
flags
)
+
sizeof
(
struct
mlx4_wqe_inline_seg
)
>
dev
->
dev
->
caps
.
max_sq_desc_sz
)
sizeof
(
struct
mlx4_wqe_inline_seg
)
>
dev
->
dev
->
caps
.
max_sq_desc_sz
)
return
-
EINVAL
;
return
-
EINVAL
;
...
...
drivers/infiniband/hw/ocrdma/ocrdma.h
View file @
20952cdd
...
@@ -231,7 +231,6 @@ struct ocrdma_qp_hwq_info {
...
@@ -231,7 +231,6 @@ struct ocrdma_qp_hwq_info {
u32
entry_size
;
u32
entry_size
;
u32
max_cnt
;
u32
max_cnt
;
u32
max_wqe_idx
;
u32
max_wqe_idx
;
u32
free_delta
;
u16
dbid
;
/* qid, where to ring the doorbell. */
u16
dbid
;
/* qid, where to ring the doorbell. */
u32
len
;
u32
len
;
dma_addr_t
pa
;
dma_addr_t
pa
;
...
...
drivers/infiniband/hw/ocrdma/ocrdma_abi.h
View file @
20952cdd
...
@@ -101,8 +101,6 @@ struct ocrdma_create_qp_uresp {
...
@@ -101,8 +101,6 @@ struct ocrdma_create_qp_uresp {
u32
rsvd1
;
u32
rsvd1
;
u32
num_wqe_allocated
;
u32
num_wqe_allocated
;
u32
num_rqe_allocated
;
u32
num_rqe_allocated
;
u32
free_wqe_delta
;
u32
free_rqe_delta
;
u32
db_sq_offset
;
u32
db_sq_offset
;
u32
db_rq_offset
;
u32
db_rq_offset
;
u32
db_shift
;
u32
db_shift
;
...
@@ -126,8 +124,7 @@ struct ocrdma_create_srq_uresp {
...
@@ -126,8 +124,7 @@ struct ocrdma_create_srq_uresp {
u32
db_rq_offset
;
u32
db_rq_offset
;
u32
db_shift
;
u32
db_shift
;
u32
free_rqe_delta
;
u64
rsvd2
;
u32
rsvd2
;
u64
rsvd3
;
u64
rsvd3
;
}
__packed
;
}
__packed
;
...
...
drivers/infiniband/hw/ocrdma/ocrdma_hw.c
View file @
20952cdd
...
@@ -732,7 +732,7 @@ static void ocrdma_dispatch_ibevent(struct ocrdma_dev *dev,
...
@@ -732,7 +732,7 @@ static void ocrdma_dispatch_ibevent(struct ocrdma_dev *dev,
break
;
break
;
case
OCRDMA_SRQ_LIMIT_EVENT
:
case
OCRDMA_SRQ_LIMIT_EVENT
:
ib_evt
.
element
.
srq
=
&
qp
->
srq
->
ibsrq
;
ib_evt
.
element
.
srq
=
&
qp
->
srq
->
ibsrq
;
ib_evt
.
event
=
IB_EVENT_
QP_LAST_WQE
_REACHED
;
ib_evt
.
event
=
IB_EVENT_
SRQ_LIMIT
_REACHED
;
srq_event
=
1
;
srq_event
=
1
;
qp_event
=
0
;
qp_event
=
0
;
break
;
break
;
...
@@ -1990,19 +1990,12 @@ static void ocrdma_get_create_qp_rsp(struct ocrdma_create_qp_rsp *rsp,
...
@@ -1990,19 +1990,12 @@ static void ocrdma_get_create_qp_rsp(struct ocrdma_create_qp_rsp *rsp,
max_wqe_allocated
=
1
<<
max_wqe_allocated
;
max_wqe_allocated
=
1
<<
max_wqe_allocated
;
max_rqe_allocated
=
1
<<
((
u16
)
rsp
->
max_wqe_rqe
);
max_rqe_allocated
=
1
<<
((
u16
)
rsp
->
max_wqe_rqe
);
if
(
qp
->
dev
->
nic_info
.
dev_family
==
OCRDMA_GEN2_FAMILY
)
{
qp
->
sq
.
free_delta
=
0
;
qp
->
rq
.
free_delta
=
1
;
}
else
qp
->
sq
.
free_delta
=
1
;
qp
->
sq
.
max_cnt
=
max_wqe_allocated
;
qp
->
sq
.
max_cnt
=
max_wqe_allocated
;
qp
->
sq
.
max_wqe_idx
=
max_wqe_allocated
-
1
;
qp
->
sq
.
max_wqe_idx
=
max_wqe_allocated
-
1
;
if
(
!
attrs
->
srq
)
{
if
(
!
attrs
->
srq
)
{
qp
->
rq
.
max_cnt
=
max_rqe_allocated
;
qp
->
rq
.
max_cnt
=
max_rqe_allocated
;
qp
->
rq
.
max_wqe_idx
=
max_rqe_allocated
-
1
;
qp
->
rq
.
max_wqe_idx
=
max_rqe_allocated
-
1
;
qp
->
rq
.
free_delta
=
1
;
}
}
}
}
...
...
drivers/infiniband/hw/ocrdma/ocrdma_main.c
View file @
20952cdd
...
@@ -26,7 +26,6 @@
...
@@ -26,7 +26,6 @@
*******************************************************************/
*******************************************************************/
#include <linux/module.h>
#include <linux/module.h>
#include <linux/version.h>
#include <linux/idr.h>
#include <linux/idr.h>
#include <rdma/ib_verbs.h>
#include <rdma/ib_verbs.h>
#include <rdma/ib_user_verbs.h>
#include <rdma/ib_user_verbs.h>
...
...
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
View file @
20952cdd
...
@@ -940,8 +940,6 @@ static int ocrdma_copy_qp_uresp(struct ocrdma_qp *qp,
...
@@ -940,8 +940,6 @@ static int ocrdma_copy_qp_uresp(struct ocrdma_qp *qp,
uresp
.
db_rq_offset
=
OCRDMA_DB_RQ_OFFSET
;
uresp
.
db_rq_offset
=
OCRDMA_DB_RQ_OFFSET
;
uresp
.
db_shift
=
16
;
uresp
.
db_shift
=
16
;
}
}
uresp
.
free_wqe_delta
=
qp
->
sq
.
free_delta
;
uresp
.
free_rqe_delta
=
qp
->
rq
.
free_delta
;
if
(
qp
->
dpp_enabled
)
{
if
(
qp
->
dpp_enabled
)
{
uresp
.
dpp_credit
=
dpp_credit_lmt
;
uresp
.
dpp_credit
=
dpp_credit_lmt
;
...
@@ -1307,8 +1305,6 @@ static int ocrdma_hwq_free_cnt(struct ocrdma_qp_hwq_info *q)
...
@@ -1307,8 +1305,6 @@ static int ocrdma_hwq_free_cnt(struct ocrdma_qp_hwq_info *q)
free_cnt
=
(
q
->
max_cnt
-
q
->
head
)
+
q
->
tail
;
free_cnt
=
(
q
->
max_cnt
-
q
->
head
)
+
q
->
tail
;
else
else
free_cnt
=
q
->
tail
-
q
->
head
;
free_cnt
=
q
->
tail
-
q
->
head
;
if
(
q
->
free_delta
)
free_cnt
-=
q
->
free_delta
;
return
free_cnt
;
return
free_cnt
;
}
}
...
@@ -1501,7 +1497,6 @@ static int ocrdma_copy_srq_uresp(struct ocrdma_srq *srq, struct ib_udata *udata)
...
@@ -1501,7 +1497,6 @@ static int ocrdma_copy_srq_uresp(struct ocrdma_srq *srq, struct ib_udata *udata)
(
srq
->
pd
->
id
*
srq
->
dev
->
nic_info
.
db_page_size
);
(
srq
->
pd
->
id
*
srq
->
dev
->
nic_info
.
db_page_size
);
uresp
.
db_page_size
=
srq
->
dev
->
nic_info
.
db_page_size
;
uresp
.
db_page_size
=
srq
->
dev
->
nic_info
.
db_page_size
;
uresp
.
num_rqe_allocated
=
srq
->
rq
.
max_cnt
;
uresp
.
num_rqe_allocated
=
srq
->
rq
.
max_cnt
;
uresp
.
free_rqe_delta
=
1
;
if
(
srq
->
dev
->
nic_info
.
dev_family
==
OCRDMA_GEN2_FAMILY
)
{
if
(
srq
->
dev
->
nic_info
.
dev_family
==
OCRDMA_GEN2_FAMILY
)
{
uresp
.
db_rq_offset
=
OCRDMA_DB_GEN2_RQ1_OFFSET
;
uresp
.
db_rq_offset
=
OCRDMA_DB_GEN2_RQ1_OFFSET
;
uresp
.
db_shift
=
24
;
uresp
.
db_shift
=
24
;
...
...
drivers/infiniband/hw/ocrdma/ocrdma_verbs.h
View file @
20952cdd
...
@@ -28,7 +28,6 @@
...
@@ -28,7 +28,6 @@
#ifndef __OCRDMA_VERBS_H__
#ifndef __OCRDMA_VERBS_H__
#define __OCRDMA_VERBS_H__
#define __OCRDMA_VERBS_H__
#include <linux/version.h>
int
ocrdma_post_send
(
struct
ib_qp
*
,
struct
ib_send_wr
*
,
int
ocrdma_post_send
(
struct
ib_qp
*
,
struct
ib_send_wr
*
,
struct
ib_send_wr
**
bad_wr
);
struct
ib_send_wr
**
bad_wr
);
int
ocrdma_post_recv
(
struct
ib_qp
*
,
struct
ib_recv_wr
*
,
int
ocrdma_post_recv
(
struct
ib_qp
*
,
struct
ib_recv_wr
*
,
...
...
drivers/net/ethernet/mellanox/mlx4/port.c
View file @
20952cdd
...
@@ -697,10 +697,10 @@ static int mlx4_common_set_port(struct mlx4_dev *dev, int slave, u32 in_mod,
...
@@ -697,10 +697,10 @@ static int mlx4_common_set_port(struct mlx4_dev *dev, int slave, u32 in_mod,
if
(
slave
!=
dev
->
caps
.
function
)
if
(
slave
!=
dev
->
caps
.
function
)
memset
(
inbox
->
buf
,
0
,
256
);
memset
(
inbox
->
buf
,
0
,
256
);
if
(
dev
->
flags
&
MLX4_FLAG_OLD_PORT_CMDS
)
{
if
(
dev
->
flags
&
MLX4_FLAG_OLD_PORT_CMDS
)
{
*
(
u8
*
)
inbox
->
buf
=
!!
reset_qkey_viols
<<
6
;
*
(
u8
*
)
inbox
->
buf
|
=
!!
reset_qkey_viols
<<
6
;
((
__be32
*
)
inbox
->
buf
)[
2
]
=
agg_cap_mask
;
((
__be32
*
)
inbox
->
buf
)[
2
]
=
agg_cap_mask
;
}
else
{
}
else
{
((
u8
*
)
inbox
->
buf
)[
3
]
=
!!
reset_qkey_viols
;
((
u8
*
)
inbox
->
buf
)[
3
]
|
=
!!
reset_qkey_viols
;
((
__be32
*
)
inbox
->
buf
)[
1
]
=
agg_cap_mask
;
((
__be32
*
)
inbox
->
buf
)[
1
]
=
agg_cap_mask
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment