Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
S
Software for White Rabbit PTP Core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
31
Issues
31
List
Board
Labels
Milestones
Merge Requests
4
Merge Requests
4
CI / CD
CI / CD
Pipelines
Schedules
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
Software for White Rabbit PTP Core
Commits
469248b5
Commit
469248b5
authored
Apr 26, 2016
by
Adam Wujek
💬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
include/sfp: use SFP_GET/SFP_ADD as a storage_get_sfp parameter
Signed-off-by:
Adam Wujek
<
adam.wujek@cern.ch
>
parent
fd5aa7b7
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
23 additions
and
17 deletions
+23
-17
eeprom.c
dev/eeprom.c
+3
-3
sdb-storage.c
dev/sdb-storage.c
+15
-12
sfp.h
include/sfp.h
+3
-0
cmd_sfp.c
shell/cmd_sfp.c
+2
-2
No files found.
dev/eeprom.c
View file @
469248b5
...
...
@@ -183,7 +183,7 @@ int storage_get_sfp(struct s_sfpinfo *sfp, uint8_t oper, uint8_t pos)
if
(
sfpcount
==
SFP_DB_EMPTY
)
sfpcount
=
0
;
if
(
!
oper
)
{
if
(
oper
==
SFP_GET
)
{
if
(
sfpcount
==
0
)
{
/* There are no SFPs in the database to read */
return
0
;
...
...
@@ -199,7 +199,7 @@ int storage_get_sfp(struct s_sfpinfo *sfp, uint8_t oper, uint8_t pos)
if
(
sfp_chksum
((
uint8_t
*
)
sfp
)
!=
sfp
->
chksum
)
return
EE_RET_CORRPT
;
}
if
(
oper
)
{
if
(
oper
==
SFP_ADD
)
{
for
(
i
=
0
;
i
<
sfpcount
;
i
++
)
{
if
(
eeprom_read
(
i2cif
,
i2c_addr
,
EE_BASE_SFP
+
sizeof
(
sfpcount
)
...
...
@@ -244,7 +244,7 @@ int storage_match_sfp(struct s_sfpinfo * sfp)
struct
s_sfpinfo
dbsfp
;
for
(
i
=
0
;
i
<
sfp_cnt
;
++
i
)
{
sfp_cnt
=
storage_get_sfp
(
&
dbsfp
,
0
,
i
);
sfp_cnt
=
storage_get_sfp
(
&
dbsfp
,
SFP_GET
,
i
);
if
(
sfp_cnt
<=
0
)
return
sfp_cnt
;
...
...
dev/sdb-storage.c
View file @
469248b5
...
...
@@ -402,7 +402,7 @@ static int sfp_valid(struct s_sfpinfo *sfp)
return
1
;
}
static
int
sfp_entry
(
struct
s_sfpinfo
*
sfp
,
uint8_t
add
,
uint8_t
pos
)
static
int
sfp_entry
(
struct
s_sfpinfo
*
sfp
,
uint8_t
oper
,
uint8_t
pos
)
{
static
uint8_t
sfpcount
=
0
;
struct
s_sfpinfo
tempsfp
;
...
...
@@ -430,17 +430,19 @@ static int sfp_entry(struct s_sfpinfo *sfp, uint8_t add, uint8_t pos)
}
}
if
(
add
&&
sfpcount
==
SFPS_MAX
)
{
/* no more space to add new SFPs */
if
((
oper
==
SFP_ADD
)
&&
(
sfpcount
==
SFPS_MAX
))
{
/* no more space to add new SFPs */
ret
=
EE_RET_DBFULL
;
goto
out
;
}
if
(
!
pos
&&
!
add
&&
sfpcount
==
0
)
{
/* no SFPs in the database */
if
(
!
pos
&&
(
oper
==
SFP_GET
)
&&
sfpcount
==
0
)
{
/* no SFPs in the database */
ret
=
0
;
goto
out
;
}
if
(
!
add
)
{
if
(
oper
==
SFP_GET
)
{
if
(
sdbfs_fread
(
&
wrc_sdb
,
sizeof
(
sfpcount
)
+
pos
*
sizeof
(
*
sfp
),
sfp
,
sizeof
(
*
sfp
))
!=
sizeof
(
*
sfp
))
...
...
@@ -454,7 +456,8 @@ static int sfp_entry(struct s_sfpinfo *sfp, uint8_t add, uint8_t pos)
pp_printf
(
"sfp: corrupted checksum
\n
"
);
goto
out
;
}
}
else
{
}
if
(
oper
==
SFP_ADD
)
{
/* count checksum */
ptr
=
(
uint8_t
*
)
sfp
;
/* use sizeof() - 1 because we don't include checksum */
...
...
@@ -488,7 +491,7 @@ static int storage_update_sfp(struct s_sfpinfo *sfp)
/* copy entries from flash to the memory, update entry if matched */
for
(
i
=
0
;
i
<
sfpcount
;
++
i
)
{
dbsfp
=
&
sfp_db
[
i
];
sfpcount
=
sfp_entry
(
dbsfp
,
0
,
i
);
sfpcount
=
sfp_entry
(
dbsfp
,
SFP_GET
,
i
);
if
(
sfpcount
<=
0
)
return
sfpcount
;
if
(
!
strncmp
(
dbsfp
->
pn
,
sfp
->
pn
,
16
))
{
...
...
@@ -508,7 +511,7 @@ static int storage_update_sfp(struct s_sfpinfo *sfp)
/* add all SFPs */
for
(
i
=
0
;
i
<
sfpcount
;
++
i
)
{
dbsfp
=
&
sfp_db
[
i
];
temp
=
sfp_entry
(
dbsfp
,
1
,
0
);
temp
=
sfp_entry
(
dbsfp
,
SFP_ADD
,
0
);
if
(
temp
<
0
)
{
/* if error, return it */
return
temp
;
...
...
@@ -517,13 +520,13 @@ static int storage_update_sfp(struct s_sfpinfo *sfp)
return
i
;
}
int
storage_get_sfp
(
struct
s_sfpinfo
*
sfp
,
uint8_t
add
,
uint8_t
pos
)
int
storage_get_sfp
(
struct
s_sfpinfo
*
sfp
,
uint8_t
oper
,
uint8_t
pos
)
{
struct
s_sfpinfo
tmp_sfp
;
if
(
!
add
)
{
if
(
oper
==
SFP_GET
)
{
/* Get SFP entry */
return
sfp_entry
(
sfp
,
add
,
pos
);
return
sfp_entry
(
sfp
,
SFP_GET
,
pos
);
}
/* storage_match_sfp replaces content of parameter, so do the copy
...
...
@@ -531,7 +534,7 @@ int storage_get_sfp(struct s_sfpinfo *sfp, uint8_t add, uint8_t pos)
tmp_sfp
=
*
sfp
;
if
(
!
storage_match_sfp
(
&
tmp_sfp
))
{
/* add a new sfp entry */
pp_printf
(
"Adding new SFP entry
\n
"
);
return
sfp_entry
(
sfp
,
1
,
0
);
return
sfp_entry
(
sfp
,
SFP_ADD
,
0
);
}
pp_printf
(
"Update existing SFP entry
\n
"
);
...
...
@@ -545,7 +548,7 @@ int storage_match_sfp(struct s_sfpinfo * sfp)
struct
s_sfpinfo
dbsfp
;
for
(
i
=
0
;
i
<
sfpcount
;
++
i
)
{
sfpcount
=
sfp_entry
(
&
dbsfp
,
0
,
i
);
sfpcount
=
sfp_entry
(
&
dbsfp
,
SFP_GET
,
i
);
if
(
sfpcount
<=
0
)
return
sfpcount
;
if
(
!
strncmp
(
dbsfp
.
pn
,
sfp
->
pn
,
16
))
{
...
...
include/sfp.h
View file @
469248b5
...
...
@@ -13,6 +13,9 @@
#define SFP_NOT_MATCHED 1
#define SFP_MATCHED 2
#define SFP_GET 0
#define SFP_ADD 1
extern
char
sfp_pn
[
SFP_PN_LEN
];
extern
int32_t
sfp_in_db
;
...
...
shell/cmd_sfp.c
View file @
469248b5
...
...
@@ -55,7 +55,7 @@ static int cmd_sfp(const char *args[])
sfp
.
dTx
=
atoi
(
args
[
2
]);
sfp
.
dRx
=
atoi
(
args
[
3
]);
sfp
.
alpha
=
atoi
(
args
[
4
]);
temp
=
storage_get_sfp
(
&
sfp
,
1
,
0
);
temp
=
storage_get_sfp
(
&
sfp
,
SFP_ADD
,
0
);
if
(
temp
==
EE_RET_DBFULL
)
{
pp_printf
(
"SFP DB is full
\n
"
);
return
-
ENOSPC
;
...
...
@@ -70,7 +70,7 @@ static int cmd_sfp(const char *args[])
return
0
;
}
else
if
(
!
strcasecmp
(
args
[
0
],
"show"
))
{
for
(
i
=
0
;
i
<
sfpcount
;
++
i
)
{
sfpcount
=
storage_get_sfp
(
&
sfp
,
0
,
i
);
sfpcount
=
storage_get_sfp
(
&
sfp
,
SFP_GET
,
i
);
if
(
sfpcount
==
0
)
{
pp_printf
(
"SFP database empty
\n
"
);
return
0
;
...
...
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