[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [UNIKRAFT PATCH v4 03/12] plat/xen/drivers: Add skeleton for netfront driver
On 8/20/20 6:45 PM, Simon Kuenzer wrote: > On 13.08.20 10:53, Costin Lupu wrote: >> This patch introduces the skeleton for the Xen netfront driver. >> >> Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx> >> Signed-off-by: Razvan Cojocaru <razvan.cojocaru93@xxxxxxxxx> >> --- >> plat/xen/Config.uk | 7 +++ >> plat/xen/Makefile.uk | 10 ++++ >> plat/xen/drivers/net/exportsyms.uk | 1 + >> plat/xen/drivers/net/netfront.c | 73 ++++++++++++++++++++++++++++++ >> 4 files changed, 91 insertions(+) >> create mode 100644 plat/xen/drivers/net/exportsyms.uk >> create mode 100644 plat/xen/drivers/net/netfront.c >> >> diff --git a/plat/xen/Config.uk b/plat/xen/Config.uk >> index 364c9528..511bfa89 100644 >> --- a/plat/xen/Config.uk >> +++ b/plat/xen/Config.uk >> @@ -90,6 +90,13 @@ config XEN_XENBUS >> menu "Xenbus Drivers" >> depends on XEN_XENBUS >> +config XEN_NETFRONT >> + bool "Xenbus Netfront Driver" >> + default n > > Instead of having patch 12 in this series we should add another default > line here to achieve the same configuration experience: > > default y if LIBUKNETDEV > > We did the same with virtio-net (kvm's Config.uk): > > ... > config VIRTIO_NET > bool "Virtio Net device" > default y if LIBUKNETDEV > default n > depends on LIBUKNETDEV > imply VIRTIO_PCI if ARCH_X86_64 > select VIRTIO_BUS > select LIBUKSGLIST > help > Virtual network driver. > ... Ack. > >> + depends on LIBUKNETDEV >> + help >> + Driver for netfront devices >> + >> menuconfig XEN_BLKFRONT >> bool "Xenbus Blkfront Driver" >> default n >> diff --git a/plat/xen/Makefile.uk b/plat/xen/Makefile.uk >> index 2a8cdbf6..339b1b21 100644 >> --- a/plat/xen/Makefile.uk >> +++ b/plat/xen/Makefile.uk >> @@ -10,6 +10,7 @@ $(eval $(call addplat_s,xen,$(CONFIG_PLAT_XEN))) >> ## >> $(eval $(call addplatlib,xen,libxenplat)) >> $(eval $(call addplatlib_s,xen,libxenbus,$(CONFIG_XEN_XENBUS))) >> +$(eval $(call addplatlib_s,xen,libxennetfront,$(CONFIG_XEN_NETFRONT))) >> $(eval $(call addplatlib_s,xen,libxenblkfront,$(CONFIG_XEN_BLKFRONT))) >> $(eval $(call addplatlib_s,xen,libxen9pfront,$(CONFIG_XEN_9PFRONT))) >> @@ -113,6 +114,15 @@ LIBXENBUS_SRCS-y += >> $(LIBXENPLAT_BASE)/xenbus/xs_watch.c >> LIBXENBUS_SRCS-y += $(LIBXENPLAT_BASE)/xenbus/xs.c >> endif >> +ifeq ($(CONFIG_XEN_NETFRONT),y) >> +LIBXENNETFRONT_EXPORTS = >> $(LIBXENPLAT_BASE)/drivers/net/exportsyms.uk >> +LIBXENNETFRONT_ASFLAGS-y += $(LIBXENPLAT_ASFLAGS-y) >> +LIBXENNETFRONT_ASINCLUDES-y += $(LIBXENPLAT_ASINCLUDES-y) >> +LIBXENNETFRONT_CFLAGS-y += $(LIBXENPLAT_CFLAGS-y) >> +LIBXENNETFRONT_CINCLUDES-y += $(LIBXENPLAT_CINCLUDES-y) >> +LIBXENNETFRONT_SRCS-y += >> $(LIBXENPLAT_BASE)/drivers/net/netfront.c >> +endif >> + >> ifeq ($(CONFIG_XEN_BLKFRONT),y) >> LIBXENBLKFRONT_EXPORTS = >> $(LIBXENPLAT_BASE)/drivers/blk/exportsyms.uk >> LIBXENBLKFRONT_ASFLAGS-y += $(LIBXENPLAT_ASFLAGS-y) >> diff --git a/plat/xen/drivers/net/exportsyms.uk >> b/plat/xen/drivers/net/exportsyms.uk >> new file mode 100644 >> index 00000000..c86c3f35 >> --- /dev/null >> +++ b/plat/xen/drivers/net/exportsyms.uk >> @@ -0,0 +1 @@ >> +none >> \ No newline at end of file >> diff --git a/plat/xen/drivers/net/netfront.c >> b/plat/xen/drivers/net/netfront.c >> new file mode 100644 >> index 00000000..b455911e >> --- /dev/null >> +++ b/plat/xen/drivers/net/netfront.c >> @@ -0,0 +1,73 @@ >> +/* SPDX-License-Identifier: BSD-3-Clause */ >> +/* >> + * Authors: Costin Lupu <costin.lupu@xxxxxxxxx> >> + * Razvan Cojocaru <razvan.cojocaru93@xxxxxxxxx> >> + * >> + * Copyright (c) 2020, University Politehnica of Bucharest. All >> rights reserved. >> + * >> + * Redistribution and use in source and binary forms, with or without >> + * modification, are permitted provided that the following conditions >> + * are met: >> + * >> + * 1. Redistributions of source code must retain the above copyright >> + * notice, this list of conditions and the following disclaimer. >> + * 2. Redistributions in binary form must reproduce the above copyright >> + * notice, this list of conditions and the following disclaimer in >> the >> + * documentation and/or other materials provided with the >> distribution. >> + * 3. Neither the name of the copyright holder nor the names of its >> + * contributors may be used to endorse or promote products derived >> from >> + * this software without specific prior written permission. >> + * >> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND >> CONTRIBUTORS "AS IS" >> + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED >> TO, THE >> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >> PURPOSE >> + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR >> CONTRIBUTORS BE >> + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >> + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >> + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR >> BUSINESS >> + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, >> WHETHER IN >> + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR >> OTHERWISE) >> + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF >> ADVISED OF THE >> + * POSSIBILITY OF SUCH DAMAGE. >> + * >> + * THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY. >> + */ >> + >> +#include <xenbus/xenbus.h> >> + >> + >> +#define DRIVER_NAME "xen-netfront" >> + >> +static struct uk_alloc *drv_allocator; >> + >> + >> +static int netfront_add_dev(struct xenbus_device *xendev) >> +{ >> + int rc = 0; >> + >> + UK_ASSERT(xendev != NULL); >> + >> + return rc; >> +} >> + >> +static int netfront_drv_init(struct uk_alloc *allocator) >> +{ >> + /* driver initialization */ >> + if (!allocator) >> + return -EINVAL; >> + >> + drv_allocator = allocator; >> + return 0; >> +} >> + >> +static const xenbus_dev_type_t netfront_devtypes[] = { >> + xenbus_dev_vif, >> + xenbus_dev_none >> +}; >> + >> +static struct xenbus_driver netfront_driver = { >> + .device_types = netfront_devtypes, >> + .init = netfront_drv_init, >> + .add_dev = netfront_add_dev >> +}; >> +XENBUS_REGISTER_DRIVER(&netfront_driver); >> >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |