ptp4l: remove timestamping as a per-port configuration option
The current code for the timestamping mode does not allow interfaces to have separate timestamping modes. This is (probably) due to hardware timestamping mode being required on all ports to work properly. This patch removes the timestamping field in the struct iface, and makes it a clock variable which is really what the mode does anyways. Ports get passed the timestamping mode but no longer appear as though they are separate. Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>master
parent
7c501032b2
commit
0499513f1e
14
clock.c
14
clock.c
|
@ -210,9 +210,10 @@ UInteger8 clock_class(struct clock *c)
|
||||||
}
|
}
|
||||||
|
|
||||||
struct clock *clock_create(int phc_index, struct interface *iface, int count,
|
struct clock *clock_create(int phc_index, struct interface *iface, int count,
|
||||||
struct defaultDS *ds, struct port_defaults *pod)
|
enum timestamp_type timestamping, struct defaultDS *ds,
|
||||||
|
struct port_defaults *pod)
|
||||||
{
|
{
|
||||||
int i, max_adj, sw_ts = 0;
|
int i, max_adj, sw_ts = timestamping == TS_SOFTWARE ? 1 : 0;
|
||||||
struct clock *c = &the_clock;
|
struct clock *c = &the_clock;
|
||||||
char phc[32];
|
char phc[32];
|
||||||
|
|
||||||
|
@ -238,13 +239,6 @@ struct clock *clock_create(int phc_index, struct interface *iface, int count,
|
||||||
max_adj = 512000;
|
max_adj = 512000;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
|
||||||
if (iface[i].timestamping == TS_SOFTWARE) {
|
|
||||||
sw_ts = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
c->servo = servo_create("pi", max_adj, sw_ts);
|
c->servo = servo_create("pi", max_adj, sw_ts);
|
||||||
if (!c->servo) {
|
if (!c->servo) {
|
||||||
pr_err("Failed to create clock servo");
|
pr_err("Failed to create clock servo");
|
||||||
|
@ -274,7 +268,7 @@ struct clock *clock_create(int phc_index, struct interface *iface, int count,
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
c->port[i] = port_open(pod, phc_index, iface[i].name, iface[i].transport,
|
c->port[i] = port_open(pod, phc_index, iface[i].name, iface[i].transport,
|
||||||
iface[i].timestamping, 1+i, iface[i].dm, c);
|
timestamping, 1+i, iface[i].dm, c);
|
||||||
if (!c->port[i]) {
|
if (!c->port[i]) {
|
||||||
pr_err("failed to open port %s", iface[i].name);
|
pr_err("failed to open port %s", iface[i].name);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
19
clock.h
19
clock.h
|
@ -35,7 +35,6 @@ struct interface {
|
||||||
char *name;
|
char *name;
|
||||||
enum delay_mechanism dm;
|
enum delay_mechanism dm;
|
||||||
enum transport_type transport;
|
enum transport_type transport;
|
||||||
enum timestamp_type timestamping;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Opaque type. */
|
/** Opaque type. */
|
||||||
|
@ -68,16 +67,18 @@ UInteger8 clock_class(struct clock *c);
|
||||||
* Create a clock instance. There can only be one clock in any system,
|
* Create a clock instance. There can only be one clock in any system,
|
||||||
* so subsequent calls will destroy the previous clock instance.
|
* so subsequent calls will destroy the previous clock instance.
|
||||||
*
|
*
|
||||||
* @param phc_index PTP hardware clock device to use.
|
* @param phc_index PTP hardware clock device to use.
|
||||||
* Pass -1 to select CLOCK_REALTIME.
|
* Pass -1 to select CLOCK_REALTIME.
|
||||||
* @param interface An array of network interfaces.
|
* @param interface An array of network interfaces.
|
||||||
* @param count The number of elements in @a interfaces.
|
* @param count The number of elements in @a interfaces.
|
||||||
* @param ds A pointer to a default data set for the clock.
|
* @param timestamping The timestamping mode for this clock.
|
||||||
* @param pod A pointer to a default port data set for the clock.
|
* @param ds A pointer to a default data set for the clock.
|
||||||
* @return A pointer to the single global clock instance.
|
* @param pod A pointer to a default port data set for the clock.
|
||||||
|
* @return A pointer to the single global clock instance.
|
||||||
*/
|
*/
|
||||||
struct clock *clock_create(int phc_index, struct interface *iface, int count,
|
struct clock *clock_create(int phc_index, struct interface *iface, int count,
|
||||||
struct defaultDS *ds, struct port_defaults *pod);
|
enum timestamp_type timestamping, struct defaultDS *ds,
|
||||||
|
struct port_defaults *pod);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Obtains a clock's default data set.
|
* Obtains a clock's default data set.
|
||||||
|
|
7
ptp4l.c
7
ptp4l.c
|
@ -73,7 +73,7 @@ static void usage(char *progname)
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
char *config = NULL, *req_phc = NULL, *progname;
|
char *config = NULL, *req_phc = NULL, *progname;
|
||||||
int c, i, nports = 0, slaveonly = 0;
|
int c, nports = 0, slaveonly = 0;
|
||||||
struct interface iface[MAX_PORTS];
|
struct interface iface[MAX_PORTS];
|
||||||
enum delay_mechanism dm = DM_E2E;
|
enum delay_mechanism dm = DM_E2E;
|
||||||
enum transport_type transport = TRANS_UDP_IPV4;
|
enum transport_type transport = TRANS_UDP_IPV4;
|
||||||
|
@ -159,9 +159,6 @@ int main(int argc, char *argv[])
|
||||||
usage(progname);
|
usage(progname);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
for (i = 0; i < nports; i++) {
|
|
||||||
iface[i].timestamping = timestamping;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* determine PHC Clock index */
|
/* determine PHC Clock index */
|
||||||
if (timestamping == TS_SOFTWARE || timestamping == TS_LEGACY_HW) {
|
if (timestamping == TS_SOFTWARE || timestamping == TS_LEGACY_HW) {
|
||||||
|
@ -222,7 +219,7 @@ int main(int argc, char *argv[])
|
||||||
ds.clockQuality.clockClass = 255;
|
ds.clockQuality.clockClass = 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
clock = clock_create(phc_index, iface, nports, &ds, &pod);
|
clock = clock_create(phc_index, iface, nports, timestamping, &ds, &pod);
|
||||||
if (!clock) {
|
if (!clock) {
|
||||||
fprintf(stderr, "failed to create a clock\n");
|
fprintf(stderr, "failed to create a clock\n");
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in New Issue