Commit 08ddfd5d authored by Danilo Sabato's avatar Danilo Sabato Committed by Alessandro Rubini

arch-bare-linux: fix pkt PTP msg format + last_rcv_time=timestamp

parent 93314fb5
......@@ -14,13 +14,34 @@ Octet buffer_out[PP_PACKET_SIZE + 14];
int bare_recv_packet(struct pp_instance *ppi, void *pkt, int len,
TimeInternal *t)
{
return sys_recv(NP(ppi)->ch[PP_NP_GEN].fd, pkt, len, 0);
if (t)
pp_get_tstamp(t);
return sys_recv(NP(ppi)->ch[PP_NP_GEN].fd,
pkt - NP(ppi)->proto_ofst, len, 0);
}
int bare_send_packet(struct pp_instance *ppi, void *pkt, int len,
TimeInternal *t, int chtype, int use_pdelay_addr)
{
return sys_send(NP(ppi)->ch[chtype].fd, pkt, len, 0);
struct bare_ethhdr *hdr;
hdr = PROTO_HDR(pkt);
hdr->h_proto = htons(ETH_P_1588);
if (OPTS(ppi)->gptp_mode) {
memcpy(hdr->h_dest, PP_PEER_MACADDRESS, 6);
} else {
memcpy(hdr->h_dest, PP_MCAST_MACADDRESS, 6);
}
/* raw socket implementation always uses gen socket */
memcpy(hdr->h_source, NP(ppi)->ch[PP_NP_GEN].addr, 6);
if (t)
pp_get_tstamp(t);
return sys_send(NP(ppi)->ch[chtype].fd, hdr,
len + NP(ppi)->proto_ofst, 0);
}
int pp_recv_packet(struct pp_instance *ppi, void *pkt, int len, TimeInternal *t)
......
......@@ -22,6 +22,7 @@ void bare_main_loop(struct pp_instance *ppi)
int delay_ms;
set_TimeInternal(&ppi->last_rcv_time, 0, 0);
NP(ppi)->proto_ofst = 14;
/*
* The main loop here is based on select. While we are not
......@@ -34,6 +35,7 @@ void bare_main_loop(struct pp_instance *ppi)
int i, maxfd;
struct bare_timeval tv;
unsigned char packet[1500];
void *payload = packet + 16; /* aligned */
/* Wait for a packet or for the timeout */
tv.tv_sec = delay_ms / 1000;
......@@ -64,7 +66,7 @@ void bare_main_loop(struct pp_instance *ppi)
*
* FIXME: we don't know which socket to receive from
*/
i = bare_recv_packet(ppi, packet, sizeof(packet),
i = bare_recv_packet(ppi, payload, sizeof(packet),
&ppi->last_rcv_time);
ppi->last_rcv_time.seconds += DSPRO(ppi)->currentUtcOffset;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment