[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [UNIKRAFT/LIBLWIP PATCH v3 2/3] lib/lwip: Fetch features supported on the netdev
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); + 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 -- 2.7.4
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |