|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [UNIKRAFT/LIBLWIP PATCH v2 2/3] lib/lwip: Fetch features supported on the netdev
Hi Sharan,
thanks for this patch. Here too, a little bit more documentation would
be nice. Comments inline.
regards,
Hugo
On Tue, 2020-06-30 at 13:15 +0200, Sharan Santhanam wrote:
> Signed-off-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx>
> ---
> uknetdev.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/uknetdev.c b/uknetdev.c
> index 7047352..ef57014 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,11 @@ 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
> +#error "Insufficient Scratch memory"
This is not supposed to happen, right? Having a comment about this here
would be nice:
/* This should not happen. CONFIG_UK_NETDEV_SCRATCH_SIZE is configured as the
max of all scratch pad requirements by the Makefile macro uknetdev_scratch_mem.
*/
> +#endif
> +
> + lwip_data = (struct lwip_netdev_data *)dev->scratch_pad;
I don't really like the idea that an outdated
CONFIG_LWIP_UKNETDEV_SCRATCH could lead to insufficient scratch pad
size. This is going to create a lot of trouble if users rely on
outdated config data (this is a realistic case, right?).
What about a compile time guard that checks the size of struct
lwip_netdev_data and makes sure that CONFIG_LWIP_UKNETDEV_SCRATCH is
big enough?
In any case, there should be a comment about this here I think. :-)
>
> LWIP_ASSERT("uknetdev needs an input callback (netif_input
> or tcpip_input)",
> nf->input != NULL);
> @@ -411,6 +421,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 |