Re: [PATCH 01/12] Make and configuration files.
On Tue, 2016-12-27 at 05:17 -0800, David VomLehn wrote: > Patches to create the make and configuration file [] > \ No newline at end of file Not good > diff --git a/drivers/net/ethernet/aquantia/atlantic/Makefile > b/drivers/net/ethernet/aquantia/atlantic/Makefile A really atypical Makefile you'll probably need to rework
Re: [PATCH 01/12] Make and configuration files.
On 12/27/2016 08:47 PM, Rami Rosen wrote: Hi, David, For the Makefile, you should follow the pattern which is common in Linux Kernel Ethernet drivers, for example, http://lxr.free-electrons.com/source/drivers/net/ethernet/intel/i40e/Makefile or http://lxr.free-electrons.com/source/drivers/net/ethernet/mellanox/mlx5/core/Makefile Don't think that I ever saw usage of "-j" in a kernel module Makefile; apart from it, "-j4" is specific to one platform with a given number of cores, and of course there can be platforms with many more cores, for which it is less suitable. You can pass the "-j" when running "make" from the command line, there is no justification to put it in a Makefile: +all: + $(MAKE) -j4 CC=$(CC) -C $(BUILD_DIR) M=$(PWD) modules + +dox: .doxygen + @doxygen $< + +clean: + $(MAKE) -j4 -C $(BUILD_DIR) M=$(PWD) clean Don't think I ever encountered load/unload targets in Linux Kernel Makefiles (not talking about out of tree projects): +load: + insmod ./$(TARGET).ko + +unload: + rmmod ./$(TARGET).ko Regards, Rami Rosen You are right. The driver spent a while as an out-of-tree build module, where this made sense. It clearly no longer makes sense. -- David VL
Re: [PATCH 01/12] Make and configuration files.
Hi, David, For the Makefile, you should follow the pattern which is common in Linux Kernel Ethernet drivers, for example, http://lxr.free-electrons.com/source/drivers/net/ethernet/intel/i40e/Makefile or http://lxr.free-electrons.com/source/drivers/net/ethernet/mellanox/mlx5/core/Makefile Don't think that I ever saw usage of "-j" in a kernel module Makefile; apart from it, "-j4" is specific to one platform with a given number of cores, and of course there can be platforms with many more cores, for which it is less suitable. You can pass the "-j" when running "make" from the command line, there is no justification to put it in a Makefile: >+all: >+ $(MAKE) -j4 CC=$(CC) -C $(BUILD_DIR) M=$(PWD) modules >+ >+dox: .doxygen >+ @doxygen $< >+ >+clean: >+ $(MAKE) -j4 -C $(BUILD_DIR) M=$(PWD) clean Don't think I ever encountered load/unload targets in Linux Kernel Makefiles (not talking about out of tree projects): >+load: >+ insmod ./$(TARGET).ko >+ >+unload: >+ rmmod ./$(TARGET).ko Regards, Rami Rosen
Re: [PATCH 01/12] Make and configuration files.
On Tue, 2016-12-27 at 05:17 -0800, David VomLehn wrote: > Patches to create the make and configuration files. A few small things about this patch series that adds a new driver: These should be sent with a cover letter [0/N] so that the reason this series is useful can be added to the merge log. Patch 1 will not build if CONFIG_AQTION is enabled. Patch 1/12 should be reordered to be patch 12/12 and all the other patches moved up appropriately. The patches should ave a subject prefix of "AQtion: " so the generic titles are recognizable.
[PATCH 01/12] Make and configuration files.
Patches to create the make and configuration files. Signed-off-by: Dmitrii TarakanovSigned-off-by: Alexander Loktionov Signed-off-by: David M. VomLehn --- drivers/net/ethernet/aquantia/atlantic/Kconfig | 9 ++ drivers/net/ethernet/aquantia/atlantic/Makefile | 40 + drivers/net/ethernet/aquantia/atlantic/ver.h| 18 +++ 3 files changed, 67 insertions(+) create mode 100644 drivers/net/ethernet/aquantia/atlantic/Kconfig create mode 100644 drivers/net/ethernet/aquantia/atlantic/Makefile create mode 100644 drivers/net/ethernet/aquantia/atlantic/ver.h diff --git a/drivers/net/ethernet/aquantia/atlantic/Kconfig b/drivers/net/ethernet/aquantia/atlantic/Kconfig new file mode 100644 index 000..33f1eb6 --- /dev/null +++ b/drivers/net/ethernet/aquantia/atlantic/Kconfig @@ -0,0 +1,9 @@ +# +# Aquantia device configuration +# + +config AQTION + tristate "Aquantia AQtion Support" + depends on PCI + ---help--- + This enables the support for the Aquantia AQtion Ethernet card. \ No newline at end of file diff --git a/drivers/net/ethernet/aquantia/atlantic/Makefile b/drivers/net/ethernet/aquantia/atlantic/Makefile new file mode 100644 index 000..f0d961f --- /dev/null +++ b/drivers/net/ethernet/aquantia/atlantic/Makefile @@ -0,0 +1,40 @@ +TARGET:=atlantic + +CC = gcc + +ifeq "$(CC)" "gcc" + ccflags-y := -Wall +endif + +ifneq ($(KERNELRELEASE),) + $(TARGET)-objs:=aq_main.o aq_nic.o aq_pci_func.o aq_nic.o aq_vec.o \ + aq_ring.o aq_hw_utils.o aq_ethtool.o hw_atl/hw_atl_a0.o \ + hw_atl/hw_atl_utils.o hw_atl/hw_atl_llh.o + + obj-m:=$(TARGET).o +else + ifndef KDIR + BUILD_DIR:=/lib/modules/$(shell uname -r)/build + else + BUILD_DIR:=$(KDIR) + endif + + PWD:=$(shell pwd) + +all: + $(MAKE) -j4 CC=$(CC) -C $(BUILD_DIR) M=$(PWD) modules + +dox: .doxygen + @doxygen $< + +clean: + $(MAKE) -j4 -C $(BUILD_DIR) M=$(PWD) clean + @-rm -rdf doc/html 2 > /dev/null + +load: + insmod ./$(TARGET).ko + +unload: + rmmod ./$(TARGET).ko + +endif diff --git a/drivers/net/ethernet/aquantia/atlantic/ver.h b/drivers/net/ethernet/aquantia/atlantic/ver.h new file mode 100644 index 000..225f561 --- /dev/null +++ b/drivers/net/ethernet/aquantia/atlantic/ver.h @@ -0,0 +1,18 @@ +/* + * Aquantia Corporation Network Driver + * Copyright (C) 2014-2016 Aquantia Corporation. All rights reserved + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + */ + +#ifndef VER_H +#define VER_H + +#define NIC_MAJOR_DRIVER_VERSION 1 +#define NIC_MINOR_DRIVER_VERSION 4 +#define NIC_BUILD_DRIVER_VERSION 1671 +#define NIC_REVISION_DRIVER_VERSION0 + +#endif /* VER_H */ -- 2.7.4
[PATCH 01/12] Make and configuration files.
Patches to create the make and configuration files. Signed-off-by: Dmitrii TarakanovSigned-off-by: Alexander Loktionov Signed-off-by: David M. VomLehn --- drivers/net/ethernet/aquantia/atlantic/Kconfig | 9 ++ drivers/net/ethernet/aquantia/atlantic/Makefile | 40 + drivers/net/ethernet/aquantia/atlantic/ver.h| 18 +++ 3 files changed, 67 insertions(+) create mode 100644 drivers/net/ethernet/aquantia/atlantic/Kconfig create mode 100644 drivers/net/ethernet/aquantia/atlantic/Makefile create mode 100644 drivers/net/ethernet/aquantia/atlantic/ver.h diff --git a/drivers/net/ethernet/aquantia/atlantic/Kconfig b/drivers/net/ethernet/aquantia/atlantic/Kconfig new file mode 100644 index 000..33f1eb6 --- /dev/null +++ b/drivers/net/ethernet/aquantia/atlantic/Kconfig @@ -0,0 +1,9 @@ +# +# Aquantia device configuration +# + +config AQTION + tristate "Aquantia AQtion Support" + depends on PCI + ---help--- + This enables the support for the Aquantia AQtion Ethernet card. \ No newline at end of file diff --git a/drivers/net/ethernet/aquantia/atlantic/Makefile b/drivers/net/ethernet/aquantia/atlantic/Makefile new file mode 100644 index 000..f0d961f --- /dev/null +++ b/drivers/net/ethernet/aquantia/atlantic/Makefile @@ -0,0 +1,40 @@ +TARGET:=atlantic + +CC = gcc + +ifeq "$(CC)" "gcc" + ccflags-y := -Wall +endif + +ifneq ($(KERNELRELEASE),) + $(TARGET)-objs:=aq_main.o aq_nic.o aq_pci_func.o aq_nic.o aq_vec.o \ + aq_ring.o aq_hw_utils.o aq_ethtool.o hw_atl/hw_atl_a0.o \ + hw_atl/hw_atl_utils.o hw_atl/hw_atl_llh.o + + obj-m:=$(TARGET).o +else + ifndef KDIR + BUILD_DIR:=/lib/modules/$(shell uname -r)/build + else + BUILD_DIR:=$(KDIR) + endif + + PWD:=$(shell pwd) + +all: + $(MAKE) -j4 CC=$(CC) -C $(BUILD_DIR) M=$(PWD) modules + +dox: .doxygen + @doxygen $< + +clean: + $(MAKE) -j4 -C $(BUILD_DIR) M=$(PWD) clean + @-rm -rdf doc/html 2 > /dev/null + +load: + insmod ./$(TARGET).ko + +unload: + rmmod ./$(TARGET).ko + +endif diff --git a/drivers/net/ethernet/aquantia/atlantic/ver.h b/drivers/net/ethernet/aquantia/atlantic/ver.h new file mode 100644 index 000..225f561 --- /dev/null +++ b/drivers/net/ethernet/aquantia/atlantic/ver.h @@ -0,0 +1,18 @@ +/* + * Aquantia Corporation Network Driver + * Copyright (C) 2014-2016 Aquantia Corporation. All rights reserved + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + */ + +#ifndef VER_H +#define VER_H + +#define NIC_MAJOR_DRIVER_VERSION 1 +#define NIC_MINOR_DRIVER_VERSION 4 +#define NIC_BUILD_DRIVER_VERSION 1671 +#define NIC_REVISION_DRIVER_VERSION0 + +#endif /* VER_H */ -- 2.7.4