LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH net-next v8 0/4] net: Add Keystone NetCP ethernet driver support
@ 2015-01-16  0:10 Murali Karicheri
  2015-01-19 20:11 ` David Miller
  0 siblings, 1 reply; 14+ messages in thread
From: Murali Karicheri @ 2015-01-16  0:10 UTC (permalink / raw)
  To: davem, devicetree, linux-kernel, netdev; +Cc: Murali Karicheri

The Network Coprocessor (NetCP) is a hardware accelerator that processes
Ethernet packets. NetCP has a gigabit Ethernet (GbE) subsystem with a ethernet
switch sub-module to send and receive packets. NetCP also includes a packet
accelerator (PA) module to perform packet classification operations such as
header matching, and packet modification operations such as checksum
generation. NetCP can also optionally include a Security Accelerator(SA)
capable of performing IPSec operations on ingress/egress packets.
    
Keystone SoC's also have a 10 Gigabit Ethernet Subsystem (XGbE) which
includes a 3-port Ethernet switch sub-module capable of 10Gb/s and
1Gb/s rates per Ethernet port.
    
Both GBE and XGBE network processors supported using common driver. It
is also designed to handle future variants of NetCP.

version history
---------------
v7->v8

 - Reworked comments against v7, related to checker warning.
 - Patch 2/4 that has all of the driver code in v7 is now split into 3
   patches based on functionality so that we have 3 smaller patches
   review instead of a big patch.
 - Patch for MAINTAINER is merged to 2/4 along with netcp core driver
 - Separate patch (3/4) for 1G and  (4/4) for 10G
 - Removed big endian support for initial version (will add it later)

v6->v7
 - Fixed some minor documentation error and also modified the netcp driver
   to fix the set* functions to include correct le/be macros.

v5->v6
 - updated version after incorporating comments [6] from David Miller,
   David Laight & Geert Uytterhoeven on v5. I would like get this in
   for v3.19 merge window if the latest version is acceptable.

v4->v5
 - Sorry to spin v5 quickly but I missed few check-patch warnings which
   were pointed by Joe Perches(thanks). I folded his changes [5] along with
   few more check-patch warning fixes. I would like get this in for v3.18
   merge window if David is happy with this version.

v3->v4
 - Couple of fixes in in error path as pointed [4] out by David. Rest of
   the patches are unchanged from v3. 

v2->v3
 - Update v3 after incorporating Jamal and David Miller's comment/suggestion
   from earlier versions [1] [2].  After per the discussion here [3], the
   controversial custom exports have been dropped now. And for future
   future offload support additions, we will plug into generic frameworks
   as an when they are available.

Murali Karicheri (2):
  Documentation: dt: net: Add binding doc for Keystone NetCP ethernet
    driver
  net: netcp: Add Keystone NetCP core ethernet driver

Wingman Kwok (2):
  net: netcp: Add Keystone NetCP GbE driver
  net: netcp: Enhance GBE driver to support 10G Ethernet

 Cc: David Miller <davem@davemloft.net>
 Cc: Rob Herring <robh+dt@kernel.org>
 Cc: Grant Likely <grant.likely@linaro.org>
 Cc: Santosh Shilimkar <santosh.shilimkar@kernel.org>
 Cc: Pawel Moll <pawel.moll@arm.com>
 Cc: Mark Rutland <mark.rutland@arm.com>
 Cc: Ian Campbell <ijc+devicetree@hellion.org.uk>
 Cc: Kumar Gala <galak@codeaurora.org>
    
 .../devicetree/bindings/net/keystone-netcp.txt     |  197 ++
 MAINTAINERS                                        |    7 +
 drivers/net/ethernet/ti/Kconfig                    |   11 +
 drivers/net/ethernet/ti/Makefile                   |    4 +
 drivers/net/ethernet/ti/netcp.h                    |  229 +++
 drivers/net/ethernet/ti/netcp_core.c               | 2141 +++++++++++++++++++
 drivers/net/ethernet/ti/netcp_ethss.c              | 2156 ++++++++++++++++++++
 drivers/net/ethernet/ti/netcp_sgmii.c              |  131 ++
 drivers/net/ethernet/ti/netcp_xgbepcsr.c           |  501 +++++
 9 files changed, 5377 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/net/keystone-netcp.txt
 create mode 100644 drivers/net/ethernet/ti/netcp.h
 create mode 100644 drivers/net/ethernet/ti/netcp_core.c
 create mode 100644 drivers/net/ethernet/ti/netcp_ethss.c
 create mode 100644 drivers/net/ethernet/ti/netcp_sgmii.c
 create mode 100644 drivers/net/ethernet/ti/netcp_xgbepcsr.c

[1] https://lkml.org/lkml/2014/4/22/805
[2] https://lkml.org/lkml/2014/8/15/218
[3] https://lkml.org/lkml/2014/9/11/691
[4] https://lkml.org/lkml/2014/9/15/403
[5] https://lkml.org/lkml/2014/9/25/332
[6] https://lkml.org/lkml/2014/9/29/639

-- 
1.7.9.5


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH net-next v8 0/4] net: Add Keystone NetCP ethernet driver support
  2015-01-16  0:10 [PATCH net-next v8 0/4] net: Add Keystone NetCP ethernet driver support Murali Karicheri
@ 2015-01-19 20:11 ` David Miller
  2015-01-20 15:53   ` Murali Karicheri
  0 siblings, 1 reply; 14+ messages in thread
From: David Miller @ 2015-01-19 20:11 UTC (permalink / raw)
  To: m-karicheri2; +Cc: devicetree, linux-kernel, netdev

From: Murali Karicheri <m-karicheri2@ti.com>
Date: Thu, 15 Jan 2015 19:10:03 -0500

> The Network Coprocessor (NetCP) is a hardware accelerator that processes
> Ethernet packets. NetCP has a gigabit Ethernet (GbE) subsystem with a ethernet
> switch sub-module to send and receive packets. NetCP also includes a packet
> accelerator (PA) module to perform packet classification operations such as
> header matching, and packet modification operations such as checksum
> generation. NetCP can also optionally include a Security Accelerator(SA)
> capable of performing IPSec operations on ingress/egress packets.
>     
> Keystone SoC's also have a 10 Gigabit Ethernet Subsystem (XGbE) which
> includes a 3-port Ethernet switch sub-module capable of 10Gb/s and
> 1Gb/s rates per Ethernet port.
>     
> Both GBE and XGBE network processors supported using common driver. It
> is also designed to handle future variants of NetCP.

Series applied to net-next, thanks.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH net-next v8 0/4] net: Add Keystone NetCP ethernet driver support
  2015-01-19 20:11 ` David Miller
@ 2015-01-20 15:53   ` Murali Karicheri
  2015-01-27 22:28     ` Arnd Bergmann
  0 siblings, 1 reply; 14+ messages in thread
From: Murali Karicheri @ 2015-01-20 15:53 UTC (permalink / raw)
  To: David Miller; +Cc: devicetree, linux-kernel, netdev

On 01/19/2015 03:11 PM, David Miller wrote:
> From: Murali Karicheri<m-karicheri2@ti.com>
> Date: Thu, 15 Jan 2015 19:10:03 -0500
>
>> The Network Coprocessor (NetCP) is a hardware accelerator that processes
>> Ethernet packets. NetCP has a gigabit Ethernet (GbE) subsystem with a ethernet
>> switch sub-module to send and receive packets. NetCP also includes a packet
>> accelerator (PA) module to perform packet classification operations such as
>> header matching, and packet modification operations such as checksum
>> generation. NetCP can also optionally include a Security Accelerator(SA)
>> capable of performing IPSec operations on ingress/egress packets.
>>
>> Keystone SoC's also have a 10 Gigabit Ethernet Subsystem (XGbE) which
>> includes a 3-port Ethernet switch sub-module capable of 10Gb/s and
>> 1Gb/s rates per Ethernet port.
>>
>> Both GBE and XGBE network processors supported using common driver. It
>> is also designed to handle future variants of NetCP.
>
> Series applied to net-next, thanks.
David,

Thanks a lot for applying this series. This helps us move forward to 
work on the next set of patches.

Thanks
-- 
Murali Karicheri
Linux Kernel, Texas Instruments

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH net-next v8 0/4] net: Add Keystone NetCP ethernet driver support
  2015-01-20 15:53   ` Murali Karicheri
@ 2015-01-27 22:28     ` Arnd Bergmann
  2015-01-28 16:49       ` Murali Karicheri
  0 siblings, 1 reply; 14+ messages in thread
From: Arnd Bergmann @ 2015-01-27 22:28 UTC (permalink / raw)
  To: Murali Karicheri; +Cc: David Miller, devicetree, linux-kernel, netdev

On Tuesday 20 January 2015 10:53:36 Murali Karicheri wrote:
> On 01/19/2015 03:11 PM, David Miller wrote:
> > From: Murali Karicheri<m-karicheri2@ti.com>
> > Date: Thu, 15 Jan 2015 19:10:03 -0500
> >
> >> The Network Coprocessor (NetCP) is a hardware accelerator that processes
> >> Ethernet packets. NetCP has a gigabit Ethernet (GbE) subsystem with a ethernet
> >> switch sub-module to send and receive packets. NetCP also includes a packet
> >> accelerator (PA) module to perform packet classification operations such as
> >> header matching, and packet modification operations such as checksum
> >> generation. NetCP can also optionally include a Security Accelerator(SA)
> >> capable of performing IPSec operations on ingress/egress packets.
> >>
> >> Keystone SoC's also have a 10 Gigabit Ethernet Subsystem (XGbE) which
> >> includes a 3-port Ethernet switch sub-module capable of 10Gb/s and
> >> 1Gb/s rates per Ethernet port.
> >>
> >> Both GBE and XGBE network processors supported using common driver. It
> >> is also designed to handle future variants of NetCP.
> >
> > Series applied to net-next, thanks.
> David,
> 
> Thanks a lot for applying this series. This helps us move forward to 
> work on the next set of patches.

Hi Murali,

Building an ARM 'allmodconfig' kernel now runs into two separate problems
from your driver:

- you have two module_init() instances in one module, which conflict.

- you have two files that are linked into more than one module, so building
  both TI_CPSW and TI_KEYSTONE_NETCP in the same kernel fails.

The answer to both of these is probably to have separate loadable modules,
but you might be able to come up with a different solution.

	Arnd

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH net-next v8 0/4] net: Add Keystone NetCP ethernet driver support
  2015-01-27 22:28     ` Arnd Bergmann
@ 2015-01-28 16:49       ` Murali Karicheri
  2015-01-28 17:43         ` Murali Karicheri
  0 siblings, 1 reply; 14+ messages in thread
From: Murali Karicheri @ 2015-01-28 16:49 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: David Miller, devicetree, linux-kernel, netdev

On 01/27/2015 05:28 PM, Arnd Bergmann wrote:
> On Tuesday 20 January 2015 10:53:36 Murali Karicheri wrote:
>> On 01/19/2015 03:11 PM, David Miller wrote:
>>> From: Murali Karicheri<m-karicheri2@ti.com>
>>> Date: Thu, 15 Jan 2015 19:10:03 -0500
>>>
>>>> The Network Coprocessor (NetCP) is a hardware accelerator that processes
>>>> Ethernet packets. NetCP has a gigabit Ethernet (GbE) subsystem with a ethernet
>>>> switch sub-module to send and receive packets. NetCP also includes a packet
>>>> accelerator (PA) module to perform packet classification operations such as
>>>> header matching, and packet modification operations such as checksum
>>>> generation. NetCP can also optionally include a Security Accelerator(SA)
>>>> capable of performing IPSec operations on ingress/egress packets.
>>>>
>>>> Keystone SoC's also have a 10 Gigabit Ethernet Subsystem (XGbE) which
>>>> includes a 3-port Ethernet switch sub-module capable of 10Gb/s and
>>>> 1Gb/s rates per Ethernet port.
>>>>
>>>> Both GBE and XGBE network processors supported using common driver. It
>>>> is also designed to handle future variants of NetCP.
>>>
>>> Series applied to net-next, thanks.
>> David,
>>
>> Thanks a lot for applying this series. This helps us move forward to
>> work on the next set of patches.
>
> Hi Murali,
>
> Building an ARM 'allmodconfig' kernel now runs into two separate problems
> from your driver:
>
> - you have two module_init() instances in one module, which conflict.
>
> - you have two files that are linked into more than one module, so building
>    both TI_CPSW and TI_KEYSTONE_NETCP in the same kernel fails.
>
> The answer to both of these is probably to have separate loadable modules,
> but you might be able to come up with a different solution.
Arnd,

Thanks for letting us know. We will look into this.

How do I reproduce this? Is there a defconfig used for allmodconfig? I 
am unable to find one. Any details to reproduce this will be useful.

Thanks.

Murali
>
> 	Arnd


-- 
Murali Karicheri
Linux Kernel, Texas Instruments

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH net-next v8 0/4] net: Add Keystone NetCP ethernet driver support
  2015-01-28 16:49       ` Murali Karicheri
@ 2015-01-28 17:43         ` Murali Karicheri
  2015-01-28 18:20           ` Murali Karicheri
  0 siblings, 1 reply; 14+ messages in thread
From: Murali Karicheri @ 2015-01-28 17:43 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: David Miller, devicetree, linux-kernel, netdev

On 01/28/2015 11:49 AM, Murali Karicheri wrote:
> On 01/27/2015 05:28 PM, Arnd Bergmann wrote:
>> On Tuesday 20 January 2015 10:53:36 Murali Karicheri wrote:
>>> On 01/19/2015 03:11 PM, David Miller wrote:
>>>> From: Murali Karicheri<m-karicheri2@ti.com>
>>>> Date: Thu, 15 Jan 2015 19:10:03 -0500
>>>>
>>>>> The Network Coprocessor (NetCP) is a hardware accelerator that
>>>>> processes
>>>>> Ethernet packets. NetCP has a gigabit Ethernet (GbE) subsystem with
>>>>> a ethernet
>>>>> switch sub-module to send and receive packets. NetCP also includes
>>>>> a packet
>>>>> accelerator (PA) module to perform packet classification operations
>>>>> such as
>>>>> header matching, and packet modification operations such as checksum
>>>>> generation. NetCP can also optionally include a Security
>>>>> Accelerator(SA)
>>>>> capable of performing IPSec operations on ingress/egress packets.
>>>>>
>>>>> Keystone SoC's also have a 10 Gigabit Ethernet Subsystem (XGbE) which
>>>>> includes a 3-port Ethernet switch sub-module capable of 10Gb/s and
>>>>> 1Gb/s rates per Ethernet port.
>>>>>
>>>>> Both GBE and XGBE network processors supported using common driver. It
>>>>> is also designed to handle future variants of NetCP.
>>>>
>>>> Series applied to net-next, thanks.
>>> David,
>>>
>>> Thanks a lot for applying this series. This helps us move forward to
>>> work on the next set of patches.
>>
>> Hi Murali,
>>
>> Building an ARM 'allmodconfig' kernel now runs into two separate problems
>> from your driver:
>>
>> - you have two module_init() instances in one module, which conflict.
>>
>> - you have two files that are linked into more than one module, so
>> building
>> both TI_CPSW and TI_KEYSTONE_NETCP in the same kernel fails.
>>
>> The answer to both of these is probably to have separate loadable
>> modules,
>> but you might be able to come up with a different solution.
> Arnd,
>
> Thanks for letting us know. We will look into this.
>
> How do I reproduce this? Is there a defconfig used for allmodconfig? I
> am unable to find one. Any details to reproduce this will be useful.
>
Ok I think I found it.

I did this with next-next branch and it seems to work. I will make 
kernel build to reproduce this.

make ARCH=arm allmodconfig
make uImage;

I am building it now.

Murali
> Thanks.
>
> Murali
>>
>> Arnd
>
>


-- 
Murali Karicheri
Linux Kernel, Texas Instruments

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH net-next v8 0/4] net: Add Keystone NetCP ethernet driver support
  2015-01-28 17:43         ` Murali Karicheri
@ 2015-01-28 18:20           ` Murali Karicheri
  2015-01-28 20:43             ` Murali Karicheri
  0 siblings, 1 reply; 14+ messages in thread
From: Murali Karicheri @ 2015-01-28 18:20 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: David Miller, devicetree, linux-kernel, netdev

On 01/28/2015 12:43 PM, Murali Karicheri wrote:
> On 01/28/2015 11:49 AM, Murali Karicheri wrote:
>> On 01/27/2015 05:28 PM, Arnd Bergmann wrote:
>>> On Tuesday 20 January 2015 10:53:36 Murali Karicheri wrote:
>>>> On 01/19/2015 03:11 PM, David Miller wrote:
>>>>> From: Murali Karicheri<m-karicheri2@ti.com>
>>>>> Date: Thu, 15 Jan 2015 19:10:03 -0500
>>>>>
>>>>>> The Network Coprocessor (NetCP) is a hardware accelerator that
>>>>>> processes
>>>>>> Ethernet packets. NetCP has a gigabit Ethernet (GbE) subsystem with
>>>>>> a ethernet
>>>>>> switch sub-module to send and receive packets. NetCP also includes
>>>>>> a packet
>>>>>> accelerator (PA) module to perform packet classification operations
>>>>>> such as
>>>>>> header matching, and packet modification operations such as checksum
>>>>>> generation. NetCP can also optionally include a Security
>>>>>> Accelerator(SA)
>>>>>> capable of performing IPSec operations on ingress/egress packets.
>>>>>>
>>>>>> Keystone SoC's also have a 10 Gigabit Ethernet Subsystem (XGbE) which
>>>>>> includes a 3-port Ethernet switch sub-module capable of 10Gb/s and
>>>>>> 1Gb/s rates per Ethernet port.
>>>>>>
>>>>>> Both GBE and XGBE network processors supported using common
>>>>>> driver. It
>>>>>> is also designed to handle future variants of NetCP.
>>>>>
>>>>> Series applied to net-next, thanks.
>>>> David,
>>>>
>>>> Thanks a lot for applying this series. This helps us move forward to
>>>> work on the next set of patches.
>>>
>>> Hi Murali,
>>>
>>> Building an ARM 'allmodconfig' kernel now runs into two separate
>>> problems
>>> from your driver:
>>>
>>> - you have two module_init() instances in one module, which conflict.
>>>
>>> - you have two files that are linked into more than one module, so
>>> building
>>> both TI_CPSW and TI_KEYSTONE_NETCP in the same kernel fails.
>>>
>>> The answer to both of these is probably to have separate loadable
>>> modules,
>>> but you might be able to come up with a different solution.
>> Arnd,
>>
>> Thanks for letting us know. We will look into this.
>>
>> How do I reproduce this? Is there a defconfig used for allmodconfig? I
>> am unable to find one. Any details to reproduce this will be useful.
>>
> Ok I think I found it.
>
> I did this with next-next branch and it seems to work. I will make
> kernel build to reproduce this.
>
> make ARCH=arm allmodconfig
> make uImage;
>
> I am building it now.
Arnd,

I see allmodconfig configure NetCP driver as module. My uImage build 
from net-next branch went through fine. I am building modules right now 
and should show error as you have pointed out. Let me know if you any 
issues on how I am working to reproduce the issue (wrong branch, wrong 
/incomplete commands etc. I have my CROSS_COMPILE and ARCH set in my 
env). Want to reproduce this so as to make sure my fix is addressing 
this. Hope I am on the right track.

Thanks

Murali
>
> Murali
>> Thanks.
>>
>> Murali
>>>
>>> Arnd
>>
>>
>
>


-- 
Murali Karicheri
Linux Kernel, Texas Instruments

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH net-next v8 0/4] net: Add Keystone NetCP ethernet driver support
  2015-01-28 18:20           ` Murali Karicheri
@ 2015-01-28 20:43             ` Murali Karicheri
  2015-01-28 21:03               ` Arnd Bergmann
  0 siblings, 1 reply; 14+ messages in thread
From: Murali Karicheri @ 2015-01-28 20:43 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: David Miller, devicetree, linux-kernel, netdev

On 01/28/2015 01:20 PM, Murali Karicheri wrote:
> On 01/28/2015 12:43 PM, Murali Karicheri wrote:
>> On 01/28/2015 11:49 AM, Murali Karicheri wrote:
>>> On 01/27/2015 05:28 PM, Arnd Bergmann wrote:
>>>> On Tuesday 20 January 2015 10:53:36 Murali Karicheri wrote:
>>>>> On 01/19/2015 03:11 PM, David Miller wrote:
>>>>>> From: Murali Karicheri<m-karicheri2@ti.com>
>>>>>> Date: Thu, 15 Jan 2015 19:10:03 -0500
>>>>>>
>>>>>>> The Network Coprocessor (NetCP) is a hardware accelerator that
>>>>>>> processes
>>>>>>> Ethernet packets. NetCP has a gigabit Ethernet (GbE) subsystem with
>>>>>>> a ethernet
>>>>>>> switch sub-module to send and receive packets. NetCP also includes
>>>>>>> a packet
>>>>>>> accelerator (PA) module to perform packet classification operations
>>>>>>> such as
>>>>>>> header matching, and packet modification operations such as checksum
>>>>>>> generation. NetCP can also optionally include a Security
>>>>>>> Accelerator(SA)
>>>>>>> capable of performing IPSec operations on ingress/egress packets.
>>>>>>>
>>>>>>> Keystone SoC's also have a 10 Gigabit Ethernet Subsystem (XGbE)
>>>>>>> which
>>>>>>> includes a 3-port Ethernet switch sub-module capable of 10Gb/s and
>>>>>>> 1Gb/s rates per Ethernet port.
>>>>>>>
>>>>>>> Both GBE and XGBE network processors supported using common
>>>>>>> driver. It
>>>>>>> is also designed to handle future variants of NetCP.
>>>>>>
>>>>>> Series applied to net-next, thanks.
>>>>> David,
>>>>>
>>>>> Thanks a lot for applying this series. This helps us move forward to
>>>>> work on the next set of patches.
>>>>
>>>> Hi Murali,
>>>>
>>>> Building an ARM 'allmodconfig' kernel now runs into two separate
>>>> problems
>>>> from your driver:
>>>>
>>>> - you have two module_init() instances in one module, which conflict.
>>>>
>>>> - you have two files that are linked into more than one module, so
>>>> building
>>>> both TI_CPSW and TI_KEYSTONE_NETCP in the same kernel fails.
>>>>
>>>> The answer to both of these is probably to have separate loadable
>>>> modules,
>>>> but you might be able to come up with a different solution.
>>> Arnd,
>>>
>>> Thanks for letting us know. We will look into this.
>>>
>>> How do I reproduce this? Is there a defconfig used for allmodconfig? I
>>> am unable to find one. Any details to reproduce this will be useful.
>>>
>> Ok I think I found it.
>>
>> I did this with next-next branch and it seems to work. I will make
>> kernel build to reproduce this.
>>
>> make ARCH=arm allmodconfig
>> make uImage;
>>
>> I am building it now.
> Arnd,
>
> I see allmodconfig configure NetCP driver as module. My uImage build
> from net-next branch went through fine. I am building modules right now
> and should show error as you have pointed out. Let me know if you any
> issues on how I am working to reproduce the issue (wrong branch, wrong
> /incomplete commands etc. I have my CROSS_COMPILE and ARCH set in my
> env). Want to reproduce this so as to make sure my fix is addressing
> this. Hope I am on the right track.

Reproduced this. Following errors seen when building the modules.

   LD [M]  drivers/net/ethernet/ti/keystone_netcp.o
drivers/net/ethernet/ti/netcp_ethss.o: In function `init_module':
netcp_ethss.c:(.init.text+0x0): multiple definition of `init_module'
drivers/net/ethernet/ti/netcp_core.o:netcp_core.c:(.init.text+0x0): 
first defined here
drivers/net/ethernet/ti/netcp_ethss.o: In function `cleanup_module':
netcp_ethss.c:(.exit.text+0x0): multiple definition of `cleanup_module'
drivers/net/ethernet/ti/netcp_core.o:netcp_core.c:(.exit.text+0x0): 
first defined here
make[4]: *** [drivers/net/ethernet/ti/keystone_netcp.o] Error 1


BTW, I had to disable cpsw_ale.c to get to build keystone NetCP. I am 
assuming someone from TI is addressing this.

drivers/net/ethernet/ti/cpsw_ale.c: In function ‘cpsw_ale_start’:
drivers/net/ethernet/ti/cpsw_ale.c:759:2: error: ‘KBUILD_MODNAME’ 
undeclared (first use in this function)
drivers/net/ethernet/ti/cpsw_ale.c:759:2: note: each undeclared 
identifier is reported only once for each function it appears in

Murali

>
> Thanks
>
> Murali
>>
>> Murali
>>> Thanks.
>>>
>>> Murali
>>>>
>>>> Arnd
>>>
>>>
>>
>>
>
>


-- 
Murali Karicheri
Linux Kernel, Texas Instruments

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH net-next v8 0/4] net: Add Keystone NetCP ethernet driver support
  2015-01-28 20:43             ` Murali Karicheri
@ 2015-01-28 21:03               ` Arnd Bergmann
  2015-01-28 22:40                 ` Murali Karicheri
  0 siblings, 1 reply; 14+ messages in thread
From: Arnd Bergmann @ 2015-01-28 21:03 UTC (permalink / raw)
  To: Murali Karicheri; +Cc: David Miller, devicetree, linux-kernel, netdev

On Wednesday 28 January 2015 15:43:57 Murali Karicheri wrote:
> > this. Hope I am on the right track.
> 
> Reproduced this. Following errors seen when building the modules.
> 
>    LD [M]  drivers/net/ethernet/ti/keystone_netcp.o
> drivers/net/ethernet/ti/netcp_ethss.o: In function `init_module':
> netcp_ethss.c:(.init.text+0x0): multiple definition of `init_module'
> drivers/net/ethernet/ti/netcp_core.o:netcp_core.c:(.init.text+0x0): 
> first defined here
> drivers/net/ethernet/ti/netcp_ethss.o: In function `cleanup_module':
> netcp_ethss.c:(.exit.text+0x0): multiple definition of `cleanup_module'
> drivers/net/ethernet/ti/netcp_core.o:netcp_core.c:(.exit.text+0x0): 
> first defined here
> make[4]: *** [drivers/net/ethernet/ti/keystone_netcp.o] Error 1
>
> BTW, I had to disable cpsw_ale.c to get to build keystone NetCP. I am 
> assuming someone from TI is addressing this.
> 
> drivers/net/ethernet/ti/cpsw_ale.c: In function ‘cpsw_ale_start’:
> drivers/net/ethernet/ti/cpsw_ale.c:759:2: error: ‘KBUILD_MODNAME’ 
> undeclared (first use in this function)
> drivers/net/ethernet/ti/cpsw_ale.c:759:2: note: each undeclared 
> identifier is reported only once for each function it appears in

I think both problems are nontrivial to fix. The first one is obviously
that there are multiple init_module functions in one module. You have
to either split the driver into multiple loadable modules with at most
one init_module/cleanup_module pair each, or call one of the functions
from the other one in the right order.

The second problem is where I got stuck myself: cpsw_ale.c (also cpts.c)
is getting linked into both modules, which is not allowed: It is
impossible for the kernel to compile these if one driver is a module
and the other one is not, and any use of KBUILD_MODNAME fails because
it is unclear what the modname is if the file is compiled once to
be linked into two drivers.

	Arnd

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH net-next v8 0/4] net: Add Keystone NetCP ethernet driver support
  2015-01-28 21:03               ` Arnd Bergmann
@ 2015-01-28 22:40                 ` Murali Karicheri
  2015-01-29 17:21                   ` Murali Karicheri
  0 siblings, 1 reply; 14+ messages in thread
From: Murali Karicheri @ 2015-01-28 22:40 UTC (permalink / raw)
  To: Arnd Bergmann, Balbi, Felipe, mugunthanvnm
  Cc: David Miller, devicetree, linux-kernel, netdev

+ Felipe, Mugunthan for commenting on TI_CPSW, ALE.

On 01/28/2015 04:03 PM, Arnd Bergmann wrote:
> On Wednesday 28 January 2015 15:43:57 Murali Karicheri wrote:
>>> this. Hope I am on the right track.
>>
>> Reproduced this. Following errors seen when building the modules.
>>
>>     LD [M]  drivers/net/ethernet/ti/keystone_netcp.o
>> drivers/net/ethernet/ti/netcp_ethss.o: In function `init_module':
>> netcp_ethss.c:(.init.text+0x0): multiple definition of `init_module'
>> drivers/net/ethernet/ti/netcp_core.o:netcp_core.c:(.init.text+0x0):
>> first defined here
>> drivers/net/ethernet/ti/netcp_ethss.o: In function `cleanup_module':
>> netcp_ethss.c:(.exit.text+0x0): multiple definition of `cleanup_module'
>> drivers/net/ethernet/ti/netcp_core.o:netcp_core.c:(.exit.text+0x0):
>> first defined here
>> make[4]: *** [drivers/net/ethernet/ti/keystone_netcp.o] Error 1
>>
>> BTW, I had to disable cpsw_ale.c to get to build keystone NetCP. I am
>> assuming someone from TI is addressing this.
>>
>> drivers/net/ethernet/ti/cpsw_ale.c: In function ‘cpsw_ale_start’:
>> drivers/net/ethernet/ti/cpsw_ale.c:759:2: error: ‘KBUILD_MODNAME’
>> undeclared (first use in this function)
>> drivers/net/ethernet/ti/cpsw_ale.c:759:2: note: each undeclared
>> identifier is reported only once for each function it appears in
>
> I think both problems are nontrivial to fix. The first one is obviously
> that there are multiple init_module functions in one module. You have
> to either split the driver into multiple loadable modules with at most
> one init_module/cleanup_module pair each, or call one of the functions
> from the other one in the right order.
I have a version that is building now with out issues. I had to make 
several modifications.

1. export functions from drivers/soc/ti/knav* that are used by the netcp 
driver. I will be sending a patch for this soon.

2. Convert netcp_ethss.o to a module and add Kconfig for the same

  config TI_KEYSTONE_NETCP
-       tristate "TI Keystone NETCP Ethernet subsystem Support"
+       tristate "TI Keystone NETCP Core Support"
+       select TI_CPSW_ALE
         depends on OF
         depends on KEYSTONE_NAVIGATOR_DMA && KEYSTONE_NAVIGATOR_QMSS
         ---help---
-         This driver supports TI's Keystone NETCP Ethernet subsystem.
+         This driver supports TI's Keystone NETCP Core.
+
+         To compile this driver as a module, choose M here: the module
+         will be called keystone_netcp.
+
+config TI_KEYSTONE_NETCP_ETHSS
+       depends on TI_KEYSTONE_NETCP
+       tristate "TI Keystone NETCP Ethernet subsystem Support"
+       ---help---


And Makefile to change as

diff --git a/drivers/net/ethernet/ti/Makefile 
b/drivers/net/ethernet/ti/Makefile
index 0a9813b..1dbb8b5 100644
--- a/drivers/net/ethernet/ti/Makefile
+++ b/drivers/net/ethernet/ti/Makefile
@@ -8,9 +8,13 @@ obj-$(CONFIG_TI_DAVINCI_EMAC) += davinci_emac.o
  obj-$(CONFIG_TI_DAVINCI_MDIO) += davinci_mdio.o
  obj-$(CONFIG_TI_DAVINCI_CPDMA) += davinci_cpdma.o
  obj-$(CONFIG_TI_CPSW_PHY_SEL) += cpsw-phy-sel.o
  obj-$(CONFIG_TI_CPSW) += ti_cpsw.o
  ti_cpsw-y := cpsw_ale.o cpsw.o cpts.o

  obj-$(CONFIG_TI_KEYSTONE_NETCP) += keystone_netcp.o
-keystone_netcp-y := netcp_core.o netcp_ethss.o netcp_sgmii.o \
-                       netcp_xgbepcsr.o cpsw_ale.o
+keystone_netcp-y := netcp_core.o
+
+obj-$(CONFIG_TI_KEYSTONE_NETCP_ETHSS) += keystone_netcp_ethss.o
+keystone_netcp_ethss-y := netcp_ethss.o netcp_sgmii.o netcp_xgbepcsr.o \
+               cpsw_ale.o

3. export some of the functions in netcp_core.c to support building 
keystone_netcp_ethss as module.

>
> The second problem is where I got stuck myself: cpsw_ale.c (also cpts.c)
> is getting linked into both modules, which is not allowed: It is
> impossible for the kernel to compile these if one driver is a module
> and the other one is not, and any use of KBUILD_MODNAME fails because
> it is unclear what the modname is if the file is compiled once to
> be linked into two drivers.

I am still looking into this. Both Keystone and TI CPSW driver would 
need to use cpsw_ale.o and cpts.o (currently not used, but will need 
this later). Not found a solution yet.

Murali
>
> 	Arnd


-- 
Murali Karicheri
Linux Kernel, Texas Instruments

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH net-next v8 0/4] net: Add Keystone NetCP ethernet driver support
  2015-01-28 22:40                 ` Murali Karicheri
@ 2015-01-29 17:21                   ` Murali Karicheri
  2015-01-29 22:00                     ` Arnd Bergmann
  0 siblings, 1 reply; 14+ messages in thread
From: Murali Karicheri @ 2015-01-29 17:21 UTC (permalink / raw)
  To: Arnd Bergmann, Balbi, Felipe, mugunthanvnm
  Cc: David Miller, devicetree, linux-kernel, netdev

On 01/28/2015 05:40 PM, Murali Karicheri wrote:
> + Felipe, Mugunthan for commenting on TI_CPSW, ALE.
>

  --- Cut ------

>
>>
>> The second problem is where I got stuck myself: cpsw_ale.c (also cpts.c)
>> is getting linked into both modules, which is not allowed: It is
>> impossible for the kernel to compile these if one driver is a module
>> and the other one is not, and any use of KBUILD_MODNAME fails because
>> it is unclear what the modname is if the file is compiled once to
>> be linked into two drivers.
Arnd,

I think the solution is to make the cpsw_ale as a module and configured 
through a Kconfig option. I am working on a fix for this now.

Similar fix is required for cpts.o. Currently we are not using this 
module for Netcp, but soon this will be re-used. I have send a patch 
that is already applied to net-next removing cpts.o for Netcp.

Murali
>
> I am still looking into this. Both Keystone and TI CPSW driver would
> need to use cpsw_ale.o and cpts.o (currently not used, but will need
> this later). Not found a solution yet.
>
> Murali
>>
>> Arnd
>
>


-- 
Murali Karicheri
Linux Kernel, Texas Instruments

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH net-next v8 0/4] net: Add Keystone NetCP ethernet driver support
  2015-01-29 17:21                   ` Murali Karicheri
@ 2015-01-29 22:00                     ` Arnd Bergmann
  2015-01-29 23:20                       ` Murali Karicheri
  0 siblings, 1 reply; 14+ messages in thread
From: Arnd Bergmann @ 2015-01-29 22:00 UTC (permalink / raw)
  To: Murali Karicheri
  Cc: Balbi, Felipe, mugunthanvnm, David Miller, devicetree,
	linux-kernel, netdev

On Thursday 29 January 2015 12:21:36 Murali Karicheri wrote:
> 
> I think the solution is to make the cpsw_ale as a module and configured 
> through a Kconfig option. I am working on a fix for this now.
> 
> Similar fix is required for cpts.o. Currently we are not using this 
> module for Netcp, but soon this will be re-used. I have send a patch 
> that is already applied to net-next removing cpts.o for Netcp.
> 

Great, thanks a lot for the follow-up.

	Arnd

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH net-next v8 0/4] net: Add Keystone NetCP ethernet driver support
  2015-01-29 22:00                     ` Arnd Bergmann
@ 2015-01-29 23:20                       ` Murali Karicheri
  2015-01-29 23:49                         ` Arnd Bergmann
  0 siblings, 1 reply; 14+ messages in thread
From: Murali Karicheri @ 2015-01-29 23:20 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Balbi, Felipe, mugunthanvnm, David Miller, devicetree,
	linux-kernel, netdev

On 01/29/2015 05:00 PM, Arnd Bergmann wrote:
> On Thursday 29 January 2015 12:21:36 Murali Karicheri wrote:
>>
>> I think the solution is to make the cpsw_ale as a module and configured
>> through a Kconfig option. I am working on a fix for this now.
>>
>> Similar fix is required for cpts.o. Currently we are not using this
>> module for Netcp, but soon this will be re-used. I have send a patch
>> that is already applied to net-next removing cpts.o for Netcp.
>>
>
> Great, thanks a lot for the follow-up.
>
> 	Arnd
Arnd,

I have just posted a patch to nedev list to address this issue. Please 
review and let me know your comments. This also require some additional 
fixes in drivers/soc/ti/ to build them as modules as well. Santosh has 
queued them against next merge window.

Felipe, Mugunthan,

As the patch touches ti_cpsw as well, please review and provide your 
comments. It will be great if you can apply this patch on net-next 
branch and test it on ti platform using ti_cpsw driver.

-- 
Murali Karicheri
Linux Kernel, Texas Instruments

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH net-next v8 0/4] net: Add Keystone NetCP ethernet driver support
  2015-01-29 23:20                       ` Murali Karicheri
@ 2015-01-29 23:49                         ` Arnd Bergmann
  0 siblings, 0 replies; 14+ messages in thread
From: Arnd Bergmann @ 2015-01-29 23:49 UTC (permalink / raw)
  To: Murali Karicheri
  Cc: Balbi, Felipe, mugunthanvnm, David Miller, devicetree,
	linux-kernel, netdev

On Thursday 29 January 2015 18:20:24 Murali Karicheri wrote:
> 
> I have just posted a patch to nedev list to address this issue. Please 
> review and let me know your comments. This also require some additional 
> fixes in drivers/soc/ti/ to build them as modules as well. Santosh has 
> queued them against next merge window.

Ok, thanks for addressing this! As I wrote in reply to your patch, I'll
give it some extra build testing in random configurations.

	Arnd

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2015-01-29 23:49 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-16  0:10 [PATCH net-next v8 0/4] net: Add Keystone NetCP ethernet driver support Murali Karicheri
2015-01-19 20:11 ` David Miller
2015-01-20 15:53   ` Murali Karicheri
2015-01-27 22:28     ` Arnd Bergmann
2015-01-28 16:49       ` Murali Karicheri
2015-01-28 17:43         ` Murali Karicheri
2015-01-28 18:20           ` Murali Karicheri
2015-01-28 20:43             ` Murali Karicheri
2015-01-28 21:03               ` Arnd Bergmann
2015-01-28 22:40                 ` Murali Karicheri
2015-01-29 17:21                   ` Murali Karicheri
2015-01-29 22:00                     ` Arnd Bergmann
2015-01-29 23:20                       ` Murali Karicheri
2015-01-29 23:49                         ` Arnd Bergmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).