Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 92a54f4a authored by Carl Heymann's avatar Carl Heymann Committed by David S. Miller
Browse files

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: default avatarCarl Heymann <carl.heymann@netronome.com>
Reviewed-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 197171e5
Loading
Loading
Loading
Loading
+7 −7
Original line number Original line Diff line number Diff line
@@ -126,13 +126,13 @@ struct nfp_dump_error {


/* to track state through debug size calculation TLV traversal */
/* to track state through debug size calculation TLV traversal */
struct nfp_level_size {
struct nfp_level_size {
	u32 requested_level;	/* input */
	__be32 requested_level;	/* input */
	u32 total_size;		/* output */
	u32 total_size;		/* output */
};
};


/* to track state during debug dump creation TLV traversal */
/* to track state during debug dump creation TLV traversal */
struct nfp_dump_state {
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 dumped_size;	/* adds up to size of dumped data */
	u32 buf_size;		/* size of buffer pointer to by p */
	u32 buf_size;		/* size of buffer pointer to by p */
	void *p;		/* current point in dump buffer */
	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;
	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 0;


	return nfp_traverse_tlvs(pf, dump_level->data,
	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;
	struct nfp_level_size lev_sz;
	int err;
	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));
	lev_sz.total_size = ALIGN8(sizeof(struct nfp_dump_prolog));


	err = nfp_traverse_tlvs(pf, spec->data, spec->size, &lev_sz,
	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;
	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 0;


	return nfp_traverse_tlvs(pf, dump_level->data,
	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)
	if (err)
		return err;
		return err;


	prolog->dump_level = cpu_to_be32(dump->requested_level);
	prolog->dump_level = dump->requested_level;


	return 0;
	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;
	struct nfp_dump_state dump;
	int err;
	int err;


	dump.requested_level = dump_param->flag;
	dump.requested_level = cpu_to_be32(dump_param->flag);
	dump.dumped_size = 0;
	dump.dumped_size = 0;
	dump.p = dest;
	dump.p = dest;
	dump.buf_size = dump_param->len;
	dump.buf_size = dump_param->len;