As most of us use little endian hardware and to retain backward compatible with most of us, we decide to use little endian.
Signed-off-by: Erez Geva <erez.geva....@siemens.com> --- pmc.c | 51 +++++++++++++++++++++++++++++++-------------------- port.c | 6 +++++- 2 files changed, 36 insertions(+), 21 deletions(-) diff --git a/pmc.c b/pmc.c index 1e569b5..9cf52c6 100644 --- a/pmc.c +++ b/pmc.c @@ -137,6 +137,17 @@ static void pmc_show_signaling(struct ptp_message *msg, FILE *fp) fflush(fp); } +static inline uint64_t getStat(struct port_stats_np *pcp, bool rx, int index) +{ + uint64_t ret; + + if (rx) + ret = pcp->stats.rxMsgType[index]; + else + ret = pcp->stats.txMsgType[index]; + return le64toh(ret); +} + static void pmc_show(struct ptp_message *msg, FILE *fp) { struct grandmaster_settings_np *gsn; @@ -469,26 +480,26 @@ static void pmc_show(struct ptp_message *msg, FILE *fp) IFMT "tx_Signaling %" PRIu64 IFMT "tx_Management %" PRIu64, pid2str(&pcp->portIdentity), - pcp->stats.rxMsgType[SYNC], - pcp->stats.rxMsgType[DELAY_REQ], - pcp->stats.rxMsgType[PDELAY_REQ], - pcp->stats.rxMsgType[PDELAY_RESP], - pcp->stats.rxMsgType[FOLLOW_UP], - pcp->stats.rxMsgType[DELAY_RESP], - pcp->stats.rxMsgType[PDELAY_RESP_FOLLOW_UP], - pcp->stats.rxMsgType[ANNOUNCE], - pcp->stats.rxMsgType[SIGNALING], - pcp->stats.rxMsgType[MANAGEMENT], - pcp->stats.txMsgType[SYNC], - pcp->stats.txMsgType[DELAY_REQ], - pcp->stats.txMsgType[PDELAY_REQ], - pcp->stats.txMsgType[PDELAY_RESP], - pcp->stats.txMsgType[FOLLOW_UP], - pcp->stats.txMsgType[DELAY_RESP], - pcp->stats.txMsgType[PDELAY_RESP_FOLLOW_UP], - pcp->stats.txMsgType[ANNOUNCE], - pcp->stats.txMsgType[SIGNALING], - pcp->stats.txMsgType[MANAGEMENT]); + getStat(pcp, true, SYNC), + getStat(pcp, true, DELAY_REQ), + getStat(pcp, true, PDELAY_REQ), + getStat(pcp, true, PDELAY_RESP), + getStat(pcp, true, FOLLOW_UP), + getStat(pcp, true, DELAY_RESP), + getStat(pcp, true, PDELAY_RESP_FOLLOW_UP), + getStat(pcp, true, ANNOUNCE), + getStat(pcp, true, SIGNALING), + getStat(pcp, true, MANAGEMENT), + getStat(pcp, false, SYNC), + getStat(pcp, false, DELAY_REQ), + getStat(pcp, false, PDELAY_REQ), + getStat(pcp, false, PDELAY_RESP), + getStat(pcp, false, FOLLOW_UP), + getStat(pcp, false, DELAY_RESP), + getStat(pcp, false, PDELAY_RESP_FOLLOW_UP), + getStat(pcp, false, ANNOUNCE), + getStat(pcp, false, SIGNALING), + getStat(pcp, false, MANAGEMENT)); break; case TLV_LOG_ANNOUNCE_INTERVAL: mtd = (struct management_tlv_datum *) mgt->data; diff --git a/port.c b/port.c index cefe780..7f45bf3 100644 --- a/port.c +++ b/port.c @@ -806,6 +806,7 @@ static int port_management_fill_response(struct port *target, uint16_t u16; uint8_t *buf; int datalen; + int i; extra = tlv_extra_alloc(); if (!extra) { @@ -958,7 +959,10 @@ static int port_management_fill_response(struct port *target, case TLV_PORT_STATS_NP: psn = (struct port_stats_np *)tlv->data; psn->portIdentity = target->portIdentity; - psn->stats = target->stats; + for (i = 0 ; i < MAX_MESSAGE_TYPES; i++) { + psn->stats.rxMsgType[i] = htole64(target->stats.rxMsgType[i]); + psn->stats.txMsgType[i] = htole64(target->stats.txMsgType[i]); + } datalen = sizeof(*psn); break; default: -- 2.20.1 _______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel