Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
dfd8d581
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
dfd8d581
编写于
11月 21, 2013
作者:
L
Laurence Evans
提交者:
Ben Hutchings
12月 12, 2013
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
sfc: Tidy up PTP synchronization code
Signed-off-by:
N
Ben Hutchings
<
bhutchings@solarflare.com
>
上级
94cd60d0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
24 addition
and
20 deletion
+24
-20
drivers/net/ethernet/sfc/ptp.c
drivers/net/ethernet/sfc/ptp.c
+24
-20
未找到文件。
drivers/net/ethernet/sfc/ptp.c
浏览文件 @
dfd8d581
...
...
@@ -435,7 +435,6 @@ efx_ptp_process_times(struct efx_nic *efx, MCDI_DECLARE_STRUCT_PTR(synch_buf),
MCDI_VAR_ARRAY_LEN
(
response_length
,
PTP_OUT_SYNCHRONIZE_TIMESET
);
unsigned
i
;
unsigned
total
;
unsigned
ngood
=
0
;
unsigned
last_good
=
0
;
struct
efx_ptp_data
*
ptp
=
efx
->
ptp_data
;
...
...
@@ -446,33 +445,38 @@ efx_ptp_process_times(struct efx_nic *efx, MCDI_DECLARE_STRUCT_PTR(synch_buf),
if
(
number_readings
==
0
)
return
-
EAGAIN
;
/* Read the set of results and increment stats for any results that
* appera to be erroneous.
/* Read the set of results and find the last good host-MC
* synchronization result. The MC times when it finishes reading the
* host time so the corrected window time should be fairly constant
* for a given platform.
*/
for
(
i
=
0
;
i
<
number_readings
;
i
++
)
{
s32
window
,
corrected
;
efx_ptp_read_timeset
(
MCDI_ARRAY_STRUCT_PTR
(
synch_buf
,
PTP_OUT_SYNCHRONIZE_TIMESET
,
i
),
&
ptp
->
timeset
[
i
]);
}
/* Find the last good host-MC synchronization result. The MC times
* when it finishes reading the host time so the corrected window time
* should be fairly constant for a given platform.
*/
total
=
0
;
for
(
i
=
0
;
i
<
number_readings
;
i
++
)
if
(
ptp
->
timeset
[
i
].
window
>
ptp
->
timeset
[
i
].
waitns
)
{
unsigned
win
;
win
=
ptp
->
timeset
[
i
].
window
-
ptp
->
timeset
[
i
].
waitns
;
if
(
win
>=
MIN_SYNCHRONISATION_NS
&&
win
<
MAX_SYNCHRONISATION_NS
)
{
total
+=
ptp
->
timeset
[
i
].
window
;
ngood
++
;
last_good
=
i
;
}
window
=
ptp
->
timeset
[
i
].
window
;
corrected
=
window
-
ptp
->
timeset
[
i
].
waitns
;
/* We expect the uncorrected synchronization window to be at
* least as large as the interval between host start and end
* times. If it is smaller than this then this is mostly likely
* to be a consequence of the host's time being adjusted.
* Check that the corrected sync window is in a reasonable
* range. If it is out of range it is likely to be because an
* interrupt or other delay occurred between reading the system
* time and writing it to MC memory.
*/
if
(
window
>=
SYNCHRONISATION_GRANULARITY_NS
&&
corrected
<
MAX_SYNCHRONISATION_NS
&&
corrected
>=
MIN_SYNCHRONISATION_NS
)
{
ngood
++
;
last_good
=
i
;
}
}
if
(
ngood
==
0
)
{
netif_warn
(
efx
,
drv
,
efx
->
net_dev
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录