Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
ac8581d4
Commit
ac8581d4
authored
Jan 16, 2009
by
Roland Dreier
Browse files
Options
Browse Files
Download
Plain Diff
Merge branches 'ehca', 'ipoib' and 'mlx4' into for-linus
parents
ee96aae5
3c209620
0fd7e1d8
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
46 additions
and
28 deletions
+46
-28
drivers/infiniband/hw/mlx4/qp.c
drivers/infiniband/hw/mlx4/qp.c
+19
-9
drivers/infiniband/ulp/ipoib/ipoib_main.c
drivers/infiniband/ulp/ipoib/ipoib_main.c
+15
-12
drivers/infiniband/ulp/ipoib/ipoib_multicast.c
drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+1
-1
drivers/infiniband/ulp/ipoib/ipoib_vlan.c
drivers/infiniband/ulp/ipoib/ipoib_vlan.c
+8
-3
drivers/net/mlx4/profile.c
drivers/net/mlx4/profile.c
+3
-3
No files found.
drivers/infiniband/hw/mlx4/qp.c
View file @
ac8581d4
...
@@ -1462,7 +1462,8 @@ static void __set_data_seg(struct mlx4_wqe_data_seg *dseg, struct ib_sge *sg)
...
@@ -1462,7 +1462,8 @@ static void __set_data_seg(struct mlx4_wqe_data_seg *dseg, struct ib_sge *sg)
}
}
static
int
build_lso_seg
(
struct
mlx4_wqe_lso_seg
*
wqe
,
struct
ib_send_wr
*
wr
,
static
int
build_lso_seg
(
struct
mlx4_wqe_lso_seg
*
wqe
,
struct
ib_send_wr
*
wr
,
struct
mlx4_ib_qp
*
qp
,
unsigned
*
lso_seg_len
)
struct
mlx4_ib_qp
*
qp
,
unsigned
*
lso_seg_len
,
__be32
*
lso_hdr_sz
)
{
{
unsigned
halign
=
ALIGN
(
sizeof
*
wqe
+
wr
->
wr
.
ud
.
hlen
,
16
);
unsigned
halign
=
ALIGN
(
sizeof
*
wqe
+
wr
->
wr
.
ud
.
hlen
,
16
);
...
@@ -1479,12 +1480,8 @@ static int build_lso_seg(struct mlx4_wqe_lso_seg *wqe, struct ib_send_wr *wr,
...
@@ -1479,12 +1480,8 @@ static int build_lso_seg(struct mlx4_wqe_lso_seg *wqe, struct ib_send_wr *wr,
memcpy
(
wqe
->
header
,
wr
->
wr
.
ud
.
header
,
wr
->
wr
.
ud
.
hlen
);
memcpy
(
wqe
->
header
,
wr
->
wr
.
ud
.
header
,
wr
->
wr
.
ud
.
hlen
);
/* make sure LSO header is written before overwriting stamping */
*
lso_hdr_sz
=
cpu_to_be32
((
wr
->
wr
.
ud
.
mss
-
wr
->
wr
.
ud
.
hlen
)
<<
16
|
wmb
();
wr
->
wr
.
ud
.
hlen
);
wqe
->
mss_hdr_size
=
cpu_to_be32
((
wr
->
wr
.
ud
.
mss
-
wr
->
wr
.
ud
.
hlen
)
<<
16
|
wr
->
wr
.
ud
.
hlen
);
*
lso_seg_len
=
halign
;
*
lso_seg_len
=
halign
;
return
0
;
return
0
;
}
}
...
@@ -1518,6 +1515,9 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
...
@@ -1518,6 +1515,9 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
int
uninitialized_var
(
stamp
);
int
uninitialized_var
(
stamp
);
int
uninitialized_var
(
size
);
int
uninitialized_var
(
size
);
unsigned
uninitialized_var
(
seglen
);
unsigned
uninitialized_var
(
seglen
);
__be32
dummy
;
__be32
*
lso_wqe
;
__be32
uninitialized_var
(
lso_hdr_sz
);
int
i
;
int
i
;
spin_lock_irqsave
(
&
qp
->
sq
.
lock
,
flags
);
spin_lock_irqsave
(
&
qp
->
sq
.
lock
,
flags
);
...
@@ -1525,6 +1525,8 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
...
@@ -1525,6 +1525,8 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
ind
=
qp
->
sq_next_wqe
;
ind
=
qp
->
sq_next_wqe
;
for
(
nreq
=
0
;
wr
;
++
nreq
,
wr
=
wr
->
next
)
{
for
(
nreq
=
0
;
wr
;
++
nreq
,
wr
=
wr
->
next
)
{
lso_wqe
=
&
dummy
;
if
(
mlx4_wq_overflow
(
&
qp
->
sq
,
nreq
,
qp
->
ibqp
.
send_cq
))
{
if
(
mlx4_wq_overflow
(
&
qp
->
sq
,
nreq
,
qp
->
ibqp
.
send_cq
))
{
err
=
-
ENOMEM
;
err
=
-
ENOMEM
;
*
bad_wr
=
wr
;
*
bad_wr
=
wr
;
...
@@ -1606,11 +1608,12 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
...
@@ -1606,11 +1608,12 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
size
+=
sizeof
(
struct
mlx4_wqe_datagram_seg
)
/
16
;
size
+=
sizeof
(
struct
mlx4_wqe_datagram_seg
)
/
16
;
if
(
wr
->
opcode
==
IB_WR_LSO
)
{
if
(
wr
->
opcode
==
IB_WR_LSO
)
{
err
=
build_lso_seg
(
wqe
,
wr
,
qp
,
&
seglen
);
err
=
build_lso_seg
(
wqe
,
wr
,
qp
,
&
seglen
,
&
lso_hdr_sz
);
if
(
unlikely
(
err
))
{
if
(
unlikely
(
err
))
{
*
bad_wr
=
wr
;
*
bad_wr
=
wr
;
goto
out
;
goto
out
;
}
}
lso_wqe
=
(
__be32
*
)
wqe
;
wqe
+=
seglen
;
wqe
+=
seglen
;
size
+=
seglen
/
16
;
size
+=
seglen
/
16
;
}
}
...
@@ -1652,6 +1655,14 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
...
@@ -1652,6 +1655,14 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
for
(
i
=
wr
->
num_sge
-
1
;
i
>=
0
;
--
i
,
--
dseg
)
for
(
i
=
wr
->
num_sge
-
1
;
i
>=
0
;
--
i
,
--
dseg
)
set_data_seg
(
dseg
,
wr
->
sg_list
+
i
);
set_data_seg
(
dseg
,
wr
->
sg_list
+
i
);
/*
* Possibly overwrite stamping in cacheline with LSO
* segment only after making sure all data segments
* are written.
*/
wmb
();
*
lso_wqe
=
lso_hdr_sz
;
ctrl
->
fence_size
=
(
wr
->
send_flags
&
IB_SEND_FENCE
?
ctrl
->
fence_size
=
(
wr
->
send_flags
&
IB_SEND_FENCE
?
MLX4_WQE_CTRL_FENCE
:
0
)
|
size
;
MLX4_WQE_CTRL_FENCE
:
0
)
|
size
;
...
@@ -1686,7 +1697,6 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
...
@@ -1686,7 +1697,6 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
stamp_send_wqe
(
qp
,
stamp
,
size
*
16
);
stamp_send_wqe
(
qp
,
stamp
,
size
*
16
);
ind
=
pad_wraparound
(
qp
,
ind
);
ind
=
pad_wraparound
(
qp
,
ind
);
}
}
}
}
out:
out:
...
...
drivers/infiniband/ulp/ipoib/ipoib_main.c
View file @
ac8581d4
...
@@ -106,23 +106,17 @@ int ipoib_open(struct net_device *dev)
...
@@ -106,23 +106,17 @@ int ipoib_open(struct net_device *dev)
ipoib_dbg
(
priv
,
"bringing up interface
\n
"
);
ipoib_dbg
(
priv
,
"bringing up interface
\n
"
);
set_bit
(
IPOIB_FLAG_ADMIN_UP
,
&
priv
->
flags
);
if
(
!
test_and_set_bit
(
IPOIB_FLAG_ADMIN_UP
,
&
priv
->
flags
))
napi_enable
(
&
priv
->
napi
);
if
(
ipoib_pkey_dev_delay_open
(
dev
))
if
(
ipoib_pkey_dev_delay_open
(
dev
))
return
0
;
return
0
;
napi_enable
(
&
priv
->
napi
);
if
(
ipoib_ib_dev_open
(
dev
))
goto
err_disable
;
if
(
ipoib_ib_dev_open
(
dev
))
{
if
(
ipoib_ib_dev_up
(
dev
))
napi_disable
(
&
priv
->
napi
);
goto
err_stop
;
return
-
EINVAL
;
}
if
(
ipoib_ib_dev_up
(
dev
))
{
ipoib_ib_dev_stop
(
dev
,
1
);
napi_disable
(
&
priv
->
napi
);
return
-
EINVAL
;
}
if
(
!
test_bit
(
IPOIB_FLAG_SUBINTERFACE
,
&
priv
->
flags
))
{
if
(
!
test_bit
(
IPOIB_FLAG_SUBINTERFACE
,
&
priv
->
flags
))
{
struct
ipoib_dev_priv
*
cpriv
;
struct
ipoib_dev_priv
*
cpriv
;
...
@@ -144,6 +138,15 @@ int ipoib_open(struct net_device *dev)
...
@@ -144,6 +138,15 @@ int ipoib_open(struct net_device *dev)
netif_start_queue
(
dev
);
netif_start_queue
(
dev
);
return
0
;
return
0
;
err_stop:
ipoib_ib_dev_stop
(
dev
,
1
);
err_disable:
napi_disable
(
&
priv
->
napi
);
clear_bit
(
IPOIB_FLAG_ADMIN_UP
,
&
priv
->
flags
);
return
-
EINVAL
;
}
}
static
int
ipoib_stop
(
struct
net_device
*
dev
)
static
int
ipoib_stop
(
struct
net_device
*
dev
)
...
...
drivers/infiniband/ulp/ipoib/ipoib_multicast.c
View file @
ac8581d4
...
@@ -409,7 +409,7 @@ static int ipoib_mcast_join_complete(int status,
...
@@ -409,7 +409,7 @@ static int ipoib_mcast_join_complete(int status,
}
}
if
(
mcast
->
logcount
++
<
20
)
{
if
(
mcast
->
logcount
++
<
20
)
{
if
(
status
==
-
ETIMEDOUT
)
{
if
(
status
==
-
ETIMEDOUT
||
status
==
-
EAGAIN
)
{
ipoib_dbg_mcast
(
priv
,
"multicast join failed for %pI6, status %d
\n
"
,
ipoib_dbg_mcast
(
priv
,
"multicast join failed for %pI6, status %d
\n
"
,
mcast
->
mcmember
.
mgid
.
raw
,
status
);
mcast
->
mcmember
.
mgid
.
raw
,
status
);
}
else
{
}
else
{
...
...
drivers/infiniband/ulp/ipoib/ipoib_vlan.c
View file @
ac8581d4
...
@@ -61,6 +61,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
...
@@ -61,6 +61,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
ppriv
=
netdev_priv
(
pdev
);
ppriv
=
netdev_priv
(
pdev
);
rtnl_lock
();
mutex_lock
(
&
ppriv
->
vlan_mutex
);
mutex_lock
(
&
ppriv
->
vlan_mutex
);
/*
/*
...
@@ -111,7 +112,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
...
@@ -111,7 +112,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
goto
device_init_failed
;
goto
device_init_failed
;
}
}
result
=
register_netdev
(
priv
->
dev
);
result
=
register_netdev
ice
(
priv
->
dev
);
if
(
result
)
{
if
(
result
)
{
ipoib_warn
(
priv
,
"failed to initialize; error %i"
,
result
);
ipoib_warn
(
priv
,
"failed to initialize; error %i"
,
result
);
goto
register_failed
;
goto
register_failed
;
...
@@ -134,12 +135,13 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
...
@@ -134,12 +135,13 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
list_add_tail
(
&
priv
->
list
,
&
ppriv
->
child_intfs
);
list_add_tail
(
&
priv
->
list
,
&
ppriv
->
child_intfs
);
mutex_unlock
(
&
ppriv
->
vlan_mutex
);
mutex_unlock
(
&
ppriv
->
vlan_mutex
);
rtnl_unlock
();
return
0
;
return
0
;
sysfs_failed:
sysfs_failed:
ipoib_delete_debug_files
(
priv
->
dev
);
ipoib_delete_debug_files
(
priv
->
dev
);
unregister_netdev
(
priv
->
dev
);
unregister_netdev
ice
(
priv
->
dev
);
register_failed:
register_failed:
ipoib_dev_cleanup
(
priv
->
dev
);
ipoib_dev_cleanup
(
priv
->
dev
);
...
@@ -149,6 +151,7 @@ device_init_failed:
...
@@ -149,6 +151,7 @@ device_init_failed:
err:
err:
mutex_unlock
(
&
ppriv
->
vlan_mutex
);
mutex_unlock
(
&
ppriv
->
vlan_mutex
);
rtnl_unlock
();
return
result
;
return
result
;
}
}
...
@@ -162,10 +165,11 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
...
@@ -162,10 +165,11 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
ppriv
=
netdev_priv
(
pdev
);
ppriv
=
netdev_priv
(
pdev
);
rtnl_lock
();
mutex_lock
(
&
ppriv
->
vlan_mutex
);
mutex_lock
(
&
ppriv
->
vlan_mutex
);
list_for_each_entry_safe
(
priv
,
tpriv
,
&
ppriv
->
child_intfs
,
list
)
{
list_for_each_entry_safe
(
priv
,
tpriv
,
&
ppriv
->
child_intfs
,
list
)
{
if
(
priv
->
pkey
==
pkey
)
{
if
(
priv
->
pkey
==
pkey
)
{
unregister_netdev
(
priv
->
dev
);
unregister_netdev
ice
(
priv
->
dev
);
ipoib_dev_cleanup
(
priv
->
dev
);
ipoib_dev_cleanup
(
priv
->
dev
);
list_del
(
&
priv
->
list
);
list_del
(
&
priv
->
list
);
free_netdev
(
priv
->
dev
);
free_netdev
(
priv
->
dev
);
...
@@ -175,6 +179,7 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
...
@@ -175,6 +179,7 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
}
}
}
}
mutex_unlock
(
&
ppriv
->
vlan_mutex
);
mutex_unlock
(
&
ppriv
->
vlan_mutex
);
rtnl_unlock
();
return
ret
;
return
ret
;
}
}
drivers/net/mlx4/profile.c
View file @
ac8581d4
...
@@ -107,9 +107,9 @@ u64 mlx4_make_profile(struct mlx4_dev *dev,
...
@@ -107,9 +107,9 @@ u64 mlx4_make_profile(struct mlx4_dev *dev,
profile
[
MLX4_RES_AUXC
].
num
=
request
->
num_qp
;
profile
[
MLX4_RES_AUXC
].
num
=
request
->
num_qp
;
profile
[
MLX4_RES_SRQ
].
num
=
request
->
num_srq
;
profile
[
MLX4_RES_SRQ
].
num
=
request
->
num_srq
;
profile
[
MLX4_RES_CQ
].
num
=
request
->
num_cq
;
profile
[
MLX4_RES_CQ
].
num
=
request
->
num_cq
;
profile
[
MLX4_RES_EQ
].
num
=
min
(
dev_cap
->
max_eqs
,
profile
[
MLX4_RES_EQ
].
num
=
min
_t
(
unsigned
,
dev_cap
->
max_eqs
,
dev_cap
->
reserved_eqs
+
dev_cap
->
reserved_eqs
+
num_possible_cpus
()
+
1
);
num_possible_cpus
()
+
1
);
profile
[
MLX4_RES_DMPT
].
num
=
request
->
num_mpt
;
profile
[
MLX4_RES_DMPT
].
num
=
request
->
num_mpt
;
profile
[
MLX4_RES_CMPT
].
num
=
MLX4_NUM_CMPTS
;
profile
[
MLX4_RES_CMPT
].
num
=
MLX4_NUM_CMPTS
;
profile
[
MLX4_RES_MTT
].
num
=
request
->
num_mtt
;
profile
[
MLX4_RES_MTT
].
num
=
request
->
num_mtt
;
...
...
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