|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [UNIKRAFT/LIBLWIP PATCH v3 2/3] lib/lwip: Fetch features supported on the netdev
Hi Sharan,
As discussed off-list, we will do a minor modification while
upstreaming: UK_CTASSERT should be used instead of UK_ASSERT, see
comment below.
otherwise, looks good to me.
Reviewed-by: Hugo Lefeuvre <hugo.lefeuvre@xxxxxxxxx>
On Tue, 2020-07-21 at 17:32 +0200, Sharan Santhanam wrote:
> Signed-off-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx>
> ---
> uknetdev.c | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/uknetdev.c b/uknetdev.c
> index 7047352..fe679e9 100644
> --- a/uknetdev.c
> +++ b/uknetdev.c
> @@ -62,6 +62,10 @@
> #define UKNETDEV_NETIF_NAME0 'e'
> #define UKNETDEV_NETIF_NAME1 'n'
>
> +struct lwip_netdev_data {
> + uint32_t features;
> +};
> +
> /*
> * Global headroom settings for buffer allocations used on receive
> * and transmit. We are taking the maximum of all uknetdev devices
> as
> @@ -372,6 +376,7 @@ err_t uknetdev_init(struct netif *nf)
> struct uk_netdev_rxqueue_conf rxq_conf;
> struct uk_netdev_txqueue_conf txq_conf;
> struct uk_netdev_info info;
> + struct lwip_netdev_data *lwip_data;
> const struct uk_hwaddr *hwaddr;
> unsigned int i;
> int ret;
> @@ -379,6 +384,21 @@ err_t uknetdev_init(struct netif *nf)
> UK_ASSERT(nf);
> dev = netif_to_uknetdev(nf);
> UK_ASSERT(dev);
> +#if CONFIG_UK_NETDEV_SCRATCH_SIZE < CONFIG_LWIP_UKNETDEV_SCRATCH
> +/**
> + * CONFIG_UK_NETDEV_SCRATCH_SIZE is configured as the max of all
> scratch pad
> + * requirements by the Makefile.uk macro uknetdev_scratch_mem. This
> value
> + * should atleast be greater CONFIG_LWIP_UKNETDEV_SCRATCH
> + */
> +#error "Insufficient Scratch memory"
> +#endif
> +
> + /**
> + * Make sure the CONFIG_LWIP_UKNETDEV_SCRATCH is still
> sufficient to
> + * store lwip_data.
> + */
> + UK_ASSERT(sizeof(*lwip_data) <=
> CONFIG_LWIP_UKNETDEV_SCRATCH);
this can be done at compile time, we should use UK_CTASSERT.
> + lwip_data = (struct lwip_netdev_data *)dev->scratch_pad;
>
> LWIP_ASSERT("uknetdev needs an input callback (netif_input
> or tcpip_input)",
> nf->input != NULL);
> @@ -411,6 +431,7 @@ err_t uknetdev_init(struct netif *nf)
> uk_netdev_info_get(dev, &info);
> if (!info.max_rx_queues || !info.max_tx_queues)
> return ERR_IF;
> + lwip_data->features = info.features;
>
> /*
> * Update our global (rx|tx)_headroom setting that we use
> for
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |