|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [UNIKRAFT PATCH v2 1/2] lib/uknetdev: Save nw_stack data in a netdevice
Hi Sharan,
thanks a lot for this patch. Looks good to me, works as expected.
regards,
Hugo
Reviewed-by: Hugo Lefeuvre <hugo.lefeuvre@xxxxxxxxx>
On Tue, 2020-06-30 at 12:47 +0200, Sharan Santhanam wrote:
> We extend the uk_netdev to store network stack specific data into
> uk_netdev. The size of the of this data is passed to network stack
> by setting the CONFIG_UK_NETDEV_SCRATCH_SIZE
>
> Signed-off-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx>
> ---
> lib/uknetdev/Makefile.rules | 20 ++++++++++++++++++++
> lib/uknetdev/include/uk/netdev_core.h | 7 +++++++
> support/build/Makefile.rules | 2 +-
> 3 files changed, 28 insertions(+), 1 deletion(-)
> create mode 100644 lib/uknetdev/Makefile.rules
>
> diff --git a/lib/uknetdev/Makefile.rules
> b/lib/uknetdev/Makefile.rules
> new file mode 100644
> index 00000000..7894e163
> --- /dev/null
> +++ b/lib/uknetdev/Makefile.rules
> @@ -0,0 +1,20 @@
> +UK_SCRATCH_MEM=0
> +UK_SCRATCH_RULE_SET=
> +
> +.SECONDEXPANSION:
> +FORCE:
> +
> +uk_scratch_mem_set: $$(eval CFLAGS-y+=-
> DCONFIG_UK_NETDEV_SCRATCH_SIZE=$$(UK_SCRATCH_MEM))
> + @:;
> +
> +.PHONY : uk_scratch_mem_set
> +
> +
> +## reserve memory for the network stack
> +## uknetdev_scratch_mem,bytes_of_memory
> +define uknetdev_scratch_mem =
> +$(if $(strip $(1)),\
> + $(if $(shell test $(1) -gt $(UK_SCRATCH_MEM) && echo
> "scratch mem set"), $(eval UK_SCRATCH_MEM:=$(1))))
> +
> +$(if $(strip $(UK_SCRATCH_RULE_SET)),,$(eval UK_SCRATCH_RULE_SET:=1)
> $(eval UK_PREPARE-$(CONFIG_LIBUKNETDEV)+=uk_scratch_mem_set))
> +endef
> diff --git a/lib/uknetdev/include/uk/netdev_core.h
> b/lib/uknetdev/include/uk/netdev_core.h
> index dba719fc..827f1872 100644
> --- a/lib/uknetdev/include/uk/netdev_core.h
> +++ b/lib/uknetdev/include/uk/netdev_core.h
> @@ -65,6 +65,10 @@
> extern "C" {
> #endif
>
> +#ifndef CONFIG_UK_NETDEV_SCRATCH_SIZE
> +#define CONFIG_UK_NETDEV_SCRATCH_SIZE 0
> +#endif /* CONFIG_UK_NETDEV_SCRATCH_SIZE */
> +
> struct uk_netdev;
> UK_TAILQ_HEAD(uk_netdev_list, struct uk_netdev);
>
> @@ -400,6 +404,9 @@ struct uk_netdev {
> struct
> uk_netdev_tx_queue *_tx_queue[CONFIG_LIBUKNETDEV_MAXNBQUEUES];
>
> UK_TAILQ_ENTRY(struct uk_netdev) _list;
> +#if (CONFIG_UK_NETDEV_SCRATCH_SIZE > 0)
> + char scratch_pad[CONFIG_UK_NETDEV_SCRATCH_SIZE];
> +#endif /* CONFIG_UK_NETDEV_SCRATCH_SIZE */
> };
>
> #ifdef __cplusplus
> diff --git a/support/build/Makefile.rules
> b/support/build/Makefile.rules
> index 8c096fa5..5f7db8a3 100644
> --- a/support/build/Makefile.rules
> +++ b/support/build/Makefile.rules
> @@ -450,7 +450,7 @@ $(4): $(2) | prepare
> $($(call vprefix_lib,$(1),CINCLUDES))
> $($(call vprefix_lib,$(1),CINCLUDES-y)) \
> $($(call
> vprefix_src,$(1),$(2),$(3),INCLUDES)) $($(call
> vprefix_src,$(1),$(2),$(3),INCLUDES-y)) \
> $($(call vprefix_glb,$(3),ARCHFLAGS))
> $($(call vprefix_glb,$(3),ARCHFLAGS-y)) \
> - $(CFLAGS) $(CFLAGS-y) \
> + $(CFLAGS) $$(CFLAGS-y) \
> $($(call vprefix_lib,$(1),CFLAGS)) $($(call
> vprefix_lib,$(1),CFLAGS-y)) \
> $($(call vprefix_src,$(1),$(2),$(3),FLAGS))
> $($(call vprefix_src,$(1),$(2),$(3),FLAGS-y)) \
> $(5) \
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |