Subject: Re: [PATCH net-next 2/3] net: skb: use auto-generation to convert skb drop reason to string

From: Jakub Kicinski <[email-masked]>
Date: Fri, 27 May 2022 18:14:26 -0700

On Fri, 27 May 2022 15:15:21 +0800 [email-masked] wrote:
> +clean-files := dropreason_str.h
> +
> +quiet_cmd_dropreason_str = GEN     $@
> +cmd_dropreason_str = echo '\n\#define __DEFINE_SKB_DROP_REASON(FN) \' > $@;\

echo -n

> +	sed -e '/enum skb_drop_reason {/,/}/!d' $< | \
> +	awk -F ',' '/SKB_DROP_REASON_/{printf "	FN(%s) \\\n", substr($$1, 18)}' >> $@;\
> +	echo '' >> $@

Trying to figure out when we're in the enum could be more robust
in case more stuff gets added to the header:

 | awk -F ',' '/^enum skb_drop/ { dr=1; } 
               /\}\;/           { dr=0; } 
               /^\tSKB_DROP/    { if (dr) {print $1;}}'

> +$(obj)/dropreason_str.h: $(srctree)/include/linux/dropreason.h
> +	$(call cmd,dropreason_str)
> +
> +$(obj)/skbuff.o: $(obj)/dropreason_str.h

Since we just generate the array directly now should we generate
a source file with it directly instead of generating a header with 
the huge define?