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
nexedi
linux
Commits
be4c9bad
Commit
be4c9bad
authored
May 05, 2010
by
Roland Dreier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MAINTAINERS: Add cxgb4 and iw_cxgb4 entries
Signed-off-by:
Roland Dreier
<
rolandd@cisco.com
>
parent
cfdda9d7
Changes
7
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
238 additions
and
164 deletions
+238
-164
MAINTAINERS
MAINTAINERS
+14
-0
drivers/infiniband/hw/cxgb4/cm.c
drivers/infiniband/hw/cxgb4/cm.c
+180
-136
drivers/infiniband/hw/cxgb4/ev.c
drivers/infiniband/hw/cxgb4/ev.c
+3
-3
drivers/infiniband/hw/cxgb4/iw_cxgb4.h
drivers/infiniband/hw/cxgb4/iw_cxgb4.h
+2
-0
drivers/infiniband/hw/cxgb4/provider.c
drivers/infiniband/hw/cxgb4/provider.c
+2
-2
drivers/infiniband/hw/cxgb4/qp.c
drivers/infiniband/hw/cxgb4/qp.c
+14
-14
drivers/infiniband/hw/cxgb4/t4.h
drivers/infiniband/hw/cxgb4/t4.h
+23
-9
No files found.
MAINTAINERS
View file @
be4c9bad
...
...
@@ -1719,6 +1719,20 @@ W: http://www.openfabrics.org
S: Supported
F: drivers/infiniband/hw/cxgb3/
CXGB4 ETHERNET DRIVER (CXGB4)
M: Dimitris Michailidis <dm@chelsio.com>
L: netdev@vger.kernel.org
W: http://www.chelsio.com
S: Supported
F: drivers/net/cxgb4/
CXGB4 IWARP RNIC DRIVER (IW_CXGB4)
M: Steve Wise <swise@chelsio.com>
L: linux-rdma@vger.kernel.org
W: http://www.openfabrics.org
S: Supported
F: drivers/infiniband/hw/cxgb4/
CYBERPRO FB DRIVER
M: Russell King <linux@arm.linux.org.uk>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
...
...
drivers/infiniband/hw/cxgb4/cm.c
View file @
be4c9bad
This diff is collapsed.
Click to expand it.
drivers/infiniband/hw/cxgb4/ev.c
View file @
be4c9bad
...
...
@@ -51,8 +51,8 @@ static void post_qp_event(struct c4iw_dev *dev, struct c4iw_cq *chp,
return
;
}
printk
(
KERN_ERR
"%s -
AE qpid 0x%x opcode %d status 0x%x "
"type %d wrid.hi 0x%x wrid.lo 0x%x
\n
"
,
__func__
,
printk
(
KERN_ERR
MOD
"
AE qpid 0x%x opcode %d status 0x%x "
"type %d wrid.hi 0x%x wrid.lo 0x%x
\n
"
,
CQE_QPID
(
err_cqe
),
CQE_OPCODE
(
err_cqe
),
CQE_STATUS
(
err_cqe
),
CQE_TYPE
(
err_cqe
),
CQE_WRID_HI
(
err_cqe
),
CQE_WRID_LOW
(
err_cqe
));
...
...
@@ -60,7 +60,7 @@ static void post_qp_event(struct c4iw_dev *dev, struct c4iw_cq *chp,
if
(
qhp
->
attr
.
state
==
C4IW_QP_STATE_RTS
)
{
attrs
.
next_state
=
C4IW_QP_STATE_TERMINATE
;
c4iw_modify_qp
(
qhp
->
rhp
,
qhp
,
C4IW_QP_ATTR_NEXT_STATE
,
&
attrs
,
0
);
&
attrs
,
1
);
}
event
.
event
=
ib_event
;
...
...
drivers/infiniband/hw/cxgb4/iw_cxgb4.h
View file @
be4c9bad
...
...
@@ -597,6 +597,7 @@ struct c4iw_ep {
struct
c4iw_ep_common
com
;
struct
c4iw_ep
*
parent_ep
;
struct
timer_list
timer
;
struct
list_head
entry
;
unsigned
int
atid
;
u32
hwtid
;
u32
snd_seq
;
...
...
@@ -739,5 +740,6 @@ void c4iw_ev_dispatch(struct c4iw_dev *dev, struct t4_cqe *err_cqe);
extern
struct
cxgb4_client
t4c_client
;
extern
c4iw_handler_func
c4iw_handlers
[
NUM_CPL_CMDS
];
extern
int
c4iw_max_read_depth
;
#endif
drivers/infiniband/hw/cxgb4/provider.c
View file @
be4c9bad
...
...
@@ -267,8 +267,8 @@ static int c4iw_query_device(struct ib_device *ibdev,
props
->
max_qp_wr
=
T4_MAX_QP_DEPTH
;
props
->
max_sge
=
T4_MAX_RECV_SGE
;
props
->
max_sge_rd
=
1
;
props
->
max_qp_rd_atom
=
T4_MAX_READ_DEPTH
;
props
->
max_qp_init_rd_atom
=
T4_MAX_READ_DEPTH
;
props
->
max_qp_rd_atom
=
c4iw_max_read_depth
;
props
->
max_qp_init_rd_atom
=
c4iw_max_read_depth
;
props
->
max_cq
=
T4_MAX_NUM_CQ
;
props
->
max_cqe
=
T4_MAX_CQ_DEPTH
;
props
->
max_mr
=
c4iw_num_stags
(
&
dev
->
rdev
);
...
...
drivers/infiniband/hw/cxgb4/qp.c
View file @
be4c9bad
...
...
@@ -856,7 +856,8 @@ int c4iw_post_zb_read(struct c4iw_qp *qhp)
return
c4iw_ofld_send
(
&
qhp
->
rhp
->
rdev
,
skb
);
}
int
c4iw_post_terminate
(
struct
c4iw_qp
*
qhp
,
struct
t4_cqe
*
err_cqe
)
static
void
post_terminate
(
struct
c4iw_qp
*
qhp
,
struct
t4_cqe
*
err_cqe
,
gfp_t
gfp
)
{
struct
fw_ri_wr
*
wqe
;
struct
sk_buff
*
skb
;
...
...
@@ -865,9 +866,9 @@ int c4iw_post_terminate(struct c4iw_qp *qhp, struct t4_cqe *err_cqe)
PDBG
(
"%s qhp %p qid 0x%x tid %u
\n
"
,
__func__
,
qhp
,
qhp
->
wq
.
sq
.
qid
,
qhp
->
ep
->
hwtid
);
skb
=
alloc_skb
(
sizeof
*
wqe
,
GFP_KERNEL
|
__GFP_NOFAIL
);
skb
=
alloc_skb
(
sizeof
*
wqe
,
gfp
);
if
(
!
skb
)
return
-
ENOMEM
;
return
;
set_wr_txq
(
skb
,
CPL_PRIORITY_DATA
,
qhp
->
ep
->
txq_idx
);
wqe
=
(
struct
fw_ri_wr
*
)
__skb_put
(
skb
,
sizeof
(
*
wqe
));
...
...
@@ -881,7 +882,7 @@ int c4iw_post_terminate(struct c4iw_qp *qhp, struct t4_cqe *err_cqe)
wqe
->
u
.
terminate
.
immdlen
=
cpu_to_be32
(
sizeof
*
term
);
term
=
(
struct
terminate_message
*
)
wqe
->
u
.
terminate
.
termmsg
;
build_term_codes
(
err_cqe
,
&
term
->
layer_etype
,
&
term
->
ecode
);
return
c4iw_ofld_send
(
&
qhp
->
rhp
->
rdev
,
skb
);
c4iw_ofld_send
(
&
qhp
->
rhp
->
rdev
,
skb
);
}
/*
...
...
@@ -1130,14 +1131,14 @@ int c4iw_modify_qp(struct c4iw_dev *rhp, struct c4iw_qp *qhp,
if
(
mask
&
C4IW_QP_ATTR_ENABLE_RDMA_BIND
)
newattr
.
enable_bind
=
attrs
->
enable_bind
;
if
(
mask
&
C4IW_QP_ATTR_MAX_ORD
)
{
if
(
attrs
->
max_ord
>
T4_MAX_READ_DEPTH
)
{
if
(
attrs
->
max_ord
>
c4iw_max_read_depth
)
{
ret
=
-
EINVAL
;
goto
out
;
}
newattr
.
max_ord
=
attrs
->
max_ord
;
}
if
(
mask
&
C4IW_QP_ATTR_MAX_IRD
)
{
if
(
attrs
->
max_ird
>
T4_MAX_READ_DEPTH
)
{
if
(
attrs
->
max_ird
>
c4iw_max_read_depth
)
{
ret
=
-
EINVAL
;
goto
out
;
}
...
...
@@ -1215,12 +1216,10 @@ int c4iw_modify_qp(struct c4iw_dev *rhp, struct c4iw_qp *qhp,
qhp
->
attr
.
state
=
C4IW_QP_STATE_TERMINATE
;
if
(
qhp
->
ibqp
.
uobject
)
t4_set_wq_in_error
(
&
qhp
->
wq
);
if
(
!
internal
)
{
ep
=
qhp
->
ep
;
c4iw_get_ep
(
&
ep
->
com
);
terminate
=
1
;
disconnect
=
1
;
}
break
;
case
C4IW_QP_STATE_ERROR
:
qhp
->
attr
.
state
=
C4IW_QP_STATE_ERROR
;
...
...
@@ -1301,7 +1300,7 @@ int c4iw_modify_qp(struct c4iw_dev *rhp, struct c4iw_qp *qhp,
spin_unlock_irqrestore
(
&
qhp
->
lock
,
flag
);
if
(
terminate
)
c4iw_post_terminate
(
qhp
,
NUL
L
);
post_terminate
(
qhp
,
NULL
,
internal
?
GFP_ATOMIC
:
GFP_KERNE
L
);
/*
* If disconnect is 1, then we need to initiate a disconnect
...
...
@@ -1309,7 +1308,8 @@ int c4iw_modify_qp(struct c4iw_dev *rhp, struct c4iw_qp *qhp,
* an abnormal close (RTS/CLOSING->ERROR).
*/
if
(
disconnect
)
{
c4iw_ep_disconnect
(
ep
,
abort
,
GFP_KERNEL
);
c4iw_ep_disconnect
(
ep
,
abort
,
internal
?
GFP_ATOMIC
:
GFP_KERNEL
);
c4iw_put_ep
(
&
ep
->
com
);
}
...
...
drivers/infiniband/hw/cxgb4/t4.h
View file @
be4c9bad
...
...
@@ -36,7 +36,6 @@
#include "t4_msg.h"
#include "t4fw_ri_api.h"
#define T4_MAX_READ_DEPTH 16
#define T4_QID_BASE 1024
#define T4_MAX_QIDS 256
#define T4_MAX_NUM_QP (1<<16)
...
...
@@ -450,11 +449,25 @@ struct t4_cq {
static
inline
int
t4_arm_cq
(
struct
t4_cq
*
cq
,
int
se
)
{
u32
val
;
u16
inc
;
val
=
SEINTARM
(
se
)
|
CIDXINC
(
cq
->
cidx_inc
)
|
TIMERREG
(
6
)
|
do
{
/*
* inc must be less the both the max update value -and-
* the size of the CQ.
*/
inc
=
cq
->
cidx_inc
<=
CIDXINC_MASK
?
cq
->
cidx_inc
:
CIDXINC_MASK
;
inc
=
inc
<=
(
cq
->
size
-
1
)
?
inc
:
(
cq
->
size
-
1
);
if
(
inc
==
cq
->
cidx_inc
)
val
=
SEINTARM
(
se
)
|
CIDXINC
(
inc
)
|
TIMERREG
(
6
)
|
INGRESSQID
(
cq
->
cqid
);
else
val
=
SEINTARM
(
0
)
|
CIDXINC
(
inc
)
|
TIMERREG
(
7
)
|
INGRESSQID
(
cq
->
cqid
);
cq
->
cidx_inc
=
0
;
cq
->
cidx_inc
-=
inc
;
writel
(
val
,
cq
->
gts
);
}
while
(
cq
->
cidx_inc
);
return
0
;
}
...
...
@@ -489,11 +502,12 @@ static inline int t4_valid_cqe(struct t4_cq *cq, struct t4_cqe *cqe)
static
inline
int
t4_next_hw_cqe
(
struct
t4_cq
*
cq
,
struct
t4_cqe
**
cqe
)
{
int
ret
=
0
;
u64
bits_type_ts
=
be64_to_cpu
(
cq
->
queue
[
cq
->
cidx
].
bits_type_ts
);
if
(
t4_valid_cqe
(
cq
,
&
cq
->
queue
[
cq
->
cidx
])
)
{
if
(
G_CQE_GENBIT
(
bits_type_ts
)
==
cq
->
gen
)
{
*
cqe
=
&
cq
->
queue
[
cq
->
cidx
];
cq
->
timestamp
=
CQE_TS
(
*
cqe
);
}
else
if
(
CQE_TS
(
&
cq
->
queue
[
cq
->
cidx
]
)
>
cq
->
timestamp
)
cq
->
timestamp
=
G_CQE_TS
(
bits_type_ts
);
}
else
if
(
G_CQE_TS
(
bits_type_ts
)
>
cq
->
timestamp
)
ret
=
-
EOVERFLOW
;
else
ret
=
-
ENODATA
;
...
...
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