From 92a54f4a47a348de03ed946b38b8c2b33ec8548a Mon Sep 17 00:00:00 2001 From: Carl Heymann Date: Fri, 8 Dec 2017 19:37:04 -0800 Subject: [PATCH] nfp: debug dump - decrease endian conversions Convert the requested dump level parameter to big-endian at the start of nfp_net_dump_calculate_size() and nfp_net_dump_populate_buffer(), then compare and assign it directly where needed in the traversal and prolog code. This decreases the total number of conversions used. Signed-off-by: Carl Heymann Reviewed-by: Jakub Kicinski Signed-off-by: David S. Miller --- drivers/net/ethernet/netronome/nfp/nfp_net_debugdump.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_debugdump.c b/drivers/net/ethernet/netronome/nfp/nfp_net_debugdump.c index cb74602..cbff0ad 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_debugdump.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_debugdump.c @@ -126,13 +126,13 @@ struct nfp_dump_error { /* to track state through debug size calculation TLV traversal */ struct nfp_level_size { - u32 requested_level; /* input */ + __be32 requested_level; /* input */ u32 total_size; /* output */ }; /* to track state during debug dump creation TLV traversal */ struct nfp_dump_state { - u32 requested_level; /* input param */ + __be32 requested_level; /* input param */ u32 dumped_size; /* adds up to size of dumped data */ u32 buf_size; /* size of buffer pointer to by p */ void *p; /* current point in dump buffer */ @@ -334,7 +334,7 @@ nfp_calc_specific_level_size(struct nfp_pf *pf, struct nfp_dump_tl *dump_level, { struct nfp_level_size *lev_sz = param; - if (be32_to_cpu(dump_level->type) != lev_sz->requested_level) + if (dump_level->type != lev_sz->requested_level) return 0; return nfp_traverse_tlvs(pf, dump_level->data, @@ -348,7 +348,7 @@ s64 nfp_net_dump_calculate_size(struct nfp_pf *pf, struct nfp_dumpspec *spec, struct nfp_level_size lev_sz; int err; - lev_sz.requested_level = flag; + lev_sz.requested_level = cpu_to_be32(flag); lev_sz.total_size = ALIGN8(sizeof(struct nfp_dump_prolog)); err = nfp_traverse_tlvs(pf, spec->data, spec->size, &lev_sz, @@ -733,7 +733,7 @@ nfp_dump_specific_level(struct nfp_pf *pf, struct nfp_dump_tl *dump_level, { struct nfp_dump_state *dump = param; - if (be32_to_cpu(dump_level->type) != dump->requested_level) + if (dump_level->type != dump->requested_level) return 0; return nfp_traverse_tlvs(pf, dump_level->data, @@ -753,7 +753,7 @@ static int nfp_dump_populate_prolog(struct nfp_dump_state *dump) if (err) return err; - prolog->dump_level = cpu_to_be32(dump->requested_level); + prolog->dump_level = dump->requested_level; return 0; } @@ -764,7 +764,7 @@ int nfp_net_dump_populate_buffer(struct nfp_pf *pf, struct nfp_dumpspec *spec, struct nfp_dump_state dump; int err; - dump.requested_level = dump_param->flag; + dump.requested_level = cpu_to_be32(dump_param->flag); dump.dumped_size = 0; dump.p = dest; dump.buf_size = dump_param->len; -- 2.7.4