From: David S. Miller Date: Fri, 18 Mar 2016 23:33:05 +0000 (-0400) Subject: Merge branch 'ldmvsw' X-Git-Tag: v4.14-rc1~3609^2~14 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=70063e949949c004f297d802608a34c87bb8c960;p=platform%2Fkernel%2Flinux-rpi.git Merge branch 'ldmvsw' Aaron Young says: ==================== ldmvsw: Add ldmvsw driver This series adds a new Logical Domains vSwitch (ldmvsw) driver. The ldmvsw driver code will live in the drivers/net/ethernet/sun/ directory and will operate on Oracle systems running SPARC Linux in a Logical Domains environment (typically in the control domain). The ldmvsw driver is very similar in function to the existing sunvnet driver. Ldmvsw creates a network interface for each "vsw-port" node found in the Machine Description (MD) of a service domain. These nodes correspond to ports on a vswitch created by the logical domains manager. The created network interface(s) can be used by bridge/vswitch software (such as the Linux bridge or Open vSwitch) to provide guest domain(s) with network interconnectivity or connectivity to a physical network. Here is a example diagram of ldmvsw driver usage in a logical domain environment to provide a guest domain with network connectivity to a physical NIC on the service domain: +----------------+ +----------------- | Service Domain | | Guest domain | | | | | | LinuxBridge | | | | | | | | | | NIC Ldmvsw | | Sunvnet | +----------------+ +----------------+ | | LDC | LAN ------------------------------ As stated, the sunvnet and ldmvsw drivers are _very_ similar in function. They both create network interface(s) to receive/transmit network traffic across LDC network channel(s). Since the driver is so similar in function to sunvnet, the approach will be as follows to integrate the driver and take advantage of common code: Patch #1: Split sunvnet.c driver into sunvnet.c and sunvnet_common.c Patch #2: Modify the sunvnet_common code and data structures to be compatible with both the sunvnet and ldmvsw drivers. Patch #3: Add the new ldmvsw.c driver code Patch #4: Checkpatch cleanup of the sunvnet/sunvnet_common code. NOTE - Patch#1 renames a file (sunvnet.h -> sunvnet_common.h). When generating the patches (using git format-patch), I had to use the --no-renames option otherwise patch#1 would NOT apply using 'patch -p1' - which as I understand is a requirement for patch acceptance. I wasn't sure if this is proper thing to do. Please advise if not. Thanks. v2 changes: * change all EXPORT_SYMBOL declarations to EXPORT_SYMBOL_GPL * remove inline attribute for external function port_is_up_common() * Give all exported/global funcs in sunvnet_common.c a 'sunvnet_' prefix to avoid kernel global namespace pollution/collisions * ldmvsw.c: Order local variable declarations from longest to shortest line * ldmvsw.c: register the netdevice after all supporting state is ready/setup. NOTE: The consensus at Oracle is that the following functions must be done AFTER register_netdev() - this is the same ordering currently used in the sunvnet driver: 1. sunvnet_port_add_txq_common() - needs registered netdev 2. napi_enable() - requires registered netdev 3. vio_port_up() - as soon as this function is called LDC handshake messages will come in which must be handled by the napi code. ==================== Signed-off-by: David S. Miller --- 70063e949949c004f297d802608a34c87bb8c960