[dpdk-dev] [PATCH 30/56] net/sfc: include libefx in build

2016-11-25 Thread Andrew Rybchenko
On 11/25/2016 01:24 PM, Ferruh Yigit wrote:
> On 11/24/2016 3:44 PM, Andrew Rybchenko wrote:
>> See one question below.
>>
>> On 11/23/2016 06:26 PM, Ferruh Yigit wrote:
>>> On 11/21/2016 3:00 PM, Andrew Rybchenko wrote:
 From: Artem Andreev 

 Implement efsys.h for the PMD.

 Reviewed-by: Andy Moreton 
 Signed-off-by: Artem Andreev 
 Signed-off-by: Andrew Rybchenko 
 ---
drivers/net/sfc/efx/Makefile |  54 +++
drivers/net/sfc/efx/efsys.h  | 767 
 +++
2 files changed, 821 insertions(+)
create mode 100644 drivers/net/sfc/efx/efsys.h

<...>

 diff --git a/drivers/net/sfc/efx/efsys.h b/drivers/net/sfc/efx/efsys.h
 new file mode 100644
 index 000..2eef996
 --- /dev/null
 +++ b/drivers/net/sfc/efx/efsys.h
 @@ -0,0 +1,767 @@
>>> <...>
>>>
>>> I guess below is hardcoded compile time configuration for libefx, do you
>>> think does it make sense to document this default configuration?
>> Yes, it is libefx configuration and more options will be enabled when
>> corresponding
>> functionality is supported in the PMD.
>> I'm sorry, but I don't understand what would you like to see in the
>> documentation.
>> Could you clarify, please?
> This is mostly a question, following defines how libefx behaves, and a
> little hard to find, do you think does it make sense to document these
> in nic documentation, guides/nics/sfc_efx.rst, to highlight default
> configuration.
>
> Like by default filtering capabilities and SFN7xxx family support
> enabled but 5xxx/6xxx family support disabled... These can be listed in
> a bullet listed way in two groups (default enabled / default disabled) ?

I think that the information about dependencies is not very useful in 
the user
guide documentation. For almost all options is not sufficient just to 
enable it
here. Support in the PMD is required to bind libefx to corresponding 
external
interfaces.

I think it is a good idea to document here why some options are enabled
and why SFN5xxx/SFN6xxx (Siena) support is disabled. Will do in v2.

 +
 +#define   EFSYS_OPT_NAMES 0
 +
 +#define   EFSYS_OPT_SIENA 0
 +#define   EFSYS_OPT_HUNTINGTON 1
 +#define   EFSYS_OPT_MEDFORD 1
 +#ifdef RTE_LIBRTE_SFC_EFX_DEBUG
 +#define   EFSYS_OPT_CHECK_REG 1
 +#else
 +#define   EFSYS_OPT_CHECK_REG 0
 +#endif
 +
 +#define   EFSYS_OPT_MCDI 1
 +#define   EFSYS_OPT_MCDI_LOGGING 0
 +#define   EFSYS_OPT_MCDI_PROXY_AUTH 0
 +
 +#define   EFSYS_OPT_MAC_STATS 0
 +
 +#define   EFSYS_OPT_LOOPBACK 0
 +
 +#define   EFSYS_OPT_MON_MCDI 0
 +#define   EFSYS_OPT_MON_STATS 0
 +
 +#define   EFSYS_OPT_PHY_STATS 0
 +#define   EFSYS_OPT_BIST 0
 +#define   EFSYS_OPT_PHY_LED_CONTROL 0
 +#define   EFSYS_OPT_PHY_FLAGS 0
 +
 +#define   EFSYS_OPT_VPD 0
 +#define   EFSYS_OPT_NVRAM 0
 +#define   EFSYS_OPT_BOOTCFG 0
 +
 +#define   EFSYS_OPT_DIAG 0
 +#define   EFSYS_OPT_RX_SCALE 0
 +#define   EFSYS_OPT_QSTATS 0
 +#define   EFSYS_OPT_FILTER 1
 +#define   EFSYS_OPT_RX_SCATTER 0
 +
 +#define   EFSYS_OPT_EV_PREFETCH 0
 +
 +#define   EFSYS_OPT_DECODE_INTR_FATAL 0
 +
 +#define   EFSYS_OPT_LICENSING 0
 +
 +#define   EFSYS_OPT_ALLOW_UNCONFIGURED_NIC 0
 +
 +#define   EFSYS_OPT_RX_PACKED_STREAM 0
>>> <...>




[dpdk-dev] [PATCH 30/56] net/sfc: include libefx in build

2016-11-25 Thread Ferruh Yigit
On 11/24/2016 3:44 PM, Andrew Rybchenko wrote:
> See one question below.
> 
> On 11/23/2016 06:26 PM, Ferruh Yigit wrote:
>> On 11/21/2016 3:00 PM, Andrew Rybchenko wrote:
>>> From: Artem Andreev 
>>>
>>> Implement efsys.h for the PMD.
>>>
>>> Reviewed-by: Andy Moreton 
>>> Signed-off-by: Artem Andreev 
>>> Signed-off-by: Andrew Rybchenko 
>>> ---
>>>   drivers/net/sfc/efx/Makefile |  54 +++
>>>   drivers/net/sfc/efx/efsys.h  | 767 
>>> +++
>>>   2 files changed, 821 insertions(+)
>>>   create mode 100644 drivers/net/sfc/efx/efsys.h
>>>
>>> diff --git a/drivers/net/sfc/efx/Makefile b/drivers/net/sfc/efx/Makefile
>>> index 71f07ca..de95ea8 100644
>>> --- a/drivers/net/sfc/efx/Makefile
>>> +++ b/drivers/net/sfc/efx/Makefile
>>> @@ -33,6 +33,8 @@ include $(RTE_SDK)/mk/rte.vars.mk
>>>   #
>>>   LIB = librte_pmd_sfc_efx.a
>>>   
>>> +CFLAGS += -I$(SRCDIR)/base/
>>> +CFLAGS += -I$(SRCDIR)
>>>   CFLAGS += -O3
>>>   
>>>   # Enable basic warnings but disable some which are accepted
>>> @@ -60,6 +62,17 @@ CFLAGS += -Wstrict-prototypes
>>>   CFLAGS += -Wundef
>>>   CFLAGS += -Wwrite-strings
>>>   
>>> +# Extra CFLAGS for base driver files
>>> +CFLAGS_BASE_DRIVER += -Wno-unused-variable
>>> +CFLAGS_BASE_DRIVER += -Wno-unused-but-set-variable
>> clang complain about this one:
>> warning: unknown warning option '-Wno-unused-but-set-variable'; did you
>> mean '-Wno-unused-const-variable'? [-Wunknown-warning-option]
> 
> Will fix in v2
> 
>>> +
>>> +#
>>> +# List of base driver object files for which
>>> +# special CFLAGS above should be applied
>>> +#
>>> +BASE_DRIVER_OBJS=$(patsubst %.c,%.o,$(notdir $(wildcard 
>>> $(SRCDIR)/base/*.c)))
>>> +$(foreach obj, $(BASE_DRIVER_OBJS), $(eval CFLAGS+=$(CFLAGS_BASE_DRIVER)))
>> This cause multiple "-Wno-unused-variable -Wno-unused-but-set-variable"
>> params in final command, I guess the intention is:
>>
>> $(foreach obj, $(BASE_DRIVER_OBJS), $(eval
>> CFLAGS_$(obj)+=$(CFLAGS_BASE_DRIVER)))
>>
>> Fixing this may generate a few compiler warnings.
> 
> Many thanks, will fix in v2.
> 
>> <...>
>>
>>> diff --git a/drivers/net/sfc/efx/efsys.h b/drivers/net/sfc/efx/efsys.h
>>> new file mode 100644
>>> index 000..2eef996
>>> --- /dev/null
>>> +++ b/drivers/net/sfc/efx/efsys.h
>>> @@ -0,0 +1,767 @@
>> <...>
>>
>> I guess below is hardcoded compile time configuration for libefx, do you
>> think does it make sense to document this default configuration?
> 
> Yes, it is libefx configuration and more options will be enabled when 
> corresponding
> functionality is supported in the PMD.
> I'm sorry, but I don't understand what would you like to see in the 
> documentation.
> Could you clarify, please?

This is mostly a question, following defines how libefx behaves, and a
little hard to find, do you think does it make sense to document these
in nic documentation, guides/nics/sfc_efx.rst, to highlight default
configuration.

Like by default filtering capabilities and SFN7xxx family support
enabled but 5xxx/6xxx family support disabled... These can be listed in
a bullet listed way in two groups (default enabled / default disabled) ?

> 
>>> +
>>> +#defineEFSYS_OPT_NAMES 0
>>> +
>>> +#defineEFSYS_OPT_SIENA 0
>>> +#defineEFSYS_OPT_HUNTINGTON 1
>>> +#defineEFSYS_OPT_MEDFORD 1
>>> +#ifdef RTE_LIBRTE_SFC_EFX_DEBUG
>>> +#defineEFSYS_OPT_CHECK_REG 1
>>> +#else
>>> +#defineEFSYS_OPT_CHECK_REG 0
>>> +#endif
>>> +
>>> +#defineEFSYS_OPT_MCDI 1
>>> +#defineEFSYS_OPT_MCDI_LOGGING 0
>>> +#defineEFSYS_OPT_MCDI_PROXY_AUTH 0
>>> +
>>> +#defineEFSYS_OPT_MAC_STATS 0
>>> +
>>> +#defineEFSYS_OPT_LOOPBACK 0
>>> +
>>> +#defineEFSYS_OPT_MON_MCDI 0
>>> +#defineEFSYS_OPT_MON_STATS 0
>>> +
>>> +#defineEFSYS_OPT_PHY_STATS 0
>>> +#defineEFSYS_OPT_BIST 0
>>> +#defineEFSYS_OPT_PHY_LED_CONTROL 0
>>> +#defineEFSYS_OPT_PHY_FLAGS 0
>>> +
>>> +#defineEFSYS_OPT_VPD 0
>>> +#defineEFSYS_OPT_NVRAM 0
>>> +#defineEFSYS_OPT_BOOTCFG 0
>>> +
>>> +#defineEFSYS_OPT_DIAG 0
>>> +#defineEFSYS_OPT_RX_SCALE 0
>>> +#defineEFSYS_OPT_QSTATS 0
>>> +#defineEFSYS_OPT_FILTER 1
>>> +#defineEFSYS_OPT_RX_SCATTER 0
>>> +
>>> +#defineEFSYS_OPT_EV_PREFETCH 0
>>> +
>>> +#defineEFSYS_OPT_DECODE_INTR_FATAL 0
>>> +
>>> +#defineEFSYS_OPT_LICENSING 0
>>> +
>>> +#defineEFSYS_OPT_ALLOW_UNCONFIGURED_NIC 0
>>> +
>>> +#defineEFSYS_OPT_RX_PACKED_STREAM 0
>> <...>
> 
> 



[dpdk-dev] [PATCH 30/56] net/sfc: include libefx in build

2016-11-24 Thread Andrew Rybchenko
See one question below.

On 11/23/2016 06:26 PM, Ferruh Yigit wrote:
> On 11/21/2016 3:00 PM, Andrew Rybchenko wrote:
>> From: Artem Andreev 
>>
>> Implement efsys.h for the PMD.
>>
>> Reviewed-by: Andy Moreton 
>> Signed-off-by: Artem Andreev 
>> Signed-off-by: Andrew Rybchenko 
>> ---
>>   drivers/net/sfc/efx/Makefile |  54 +++
>>   drivers/net/sfc/efx/efsys.h  | 767 
>> +++
>>   2 files changed, 821 insertions(+)
>>   create mode 100644 drivers/net/sfc/efx/efsys.h
>>
>> diff --git a/drivers/net/sfc/efx/Makefile b/drivers/net/sfc/efx/Makefile
>> index 71f07ca..de95ea8 100644
>> --- a/drivers/net/sfc/efx/Makefile
>> +++ b/drivers/net/sfc/efx/Makefile
>> @@ -33,6 +33,8 @@ include $(RTE_SDK)/mk/rte.vars.mk
>>   #
>>   LIB = librte_pmd_sfc_efx.a
>>   
>> +CFLAGS += -I$(SRCDIR)/base/
>> +CFLAGS += -I$(SRCDIR)
>>   CFLAGS += -O3
>>   
>>   # Enable basic warnings but disable some which are accepted
>> @@ -60,6 +62,17 @@ CFLAGS += -Wstrict-prototypes
>>   CFLAGS += -Wundef
>>   CFLAGS += -Wwrite-strings
>>   
>> +# Extra CFLAGS for base driver files
>> +CFLAGS_BASE_DRIVER += -Wno-unused-variable
>> +CFLAGS_BASE_DRIVER += -Wno-unused-but-set-variable
> clang complain about this one:
> warning: unknown warning option '-Wno-unused-but-set-variable'; did you
> mean '-Wno-unused-const-variable'? [-Wunknown-warning-option]

Will fix in v2

>> +
>> +#
>> +# List of base driver object files for which
>> +# special CFLAGS above should be applied
>> +#
>> +BASE_DRIVER_OBJS=$(patsubst %.c,%.o,$(notdir $(wildcard 
>> $(SRCDIR)/base/*.c)))
>> +$(foreach obj, $(BASE_DRIVER_OBJS), $(eval CFLAGS+=$(CFLAGS_BASE_DRIVER)))
> This cause multiple "-Wno-unused-variable -Wno-unused-but-set-variable"
> params in final command, I guess the intention is:
>
> $(foreach obj, $(BASE_DRIVER_OBJS), $(eval
> CFLAGS_$(obj)+=$(CFLAGS_BASE_DRIVER)))
>
> Fixing this may generate a few compiler warnings.

Many thanks, will fix in v2.

> <...>
>
>> diff --git a/drivers/net/sfc/efx/efsys.h b/drivers/net/sfc/efx/efsys.h
>> new file mode 100644
>> index 000..2eef996
>> --- /dev/null
>> +++ b/drivers/net/sfc/efx/efsys.h
>> @@ -0,0 +1,767 @@
> <...>
>
> I guess below is hardcoded compile time configuration for libefx, do you
> think does it make sense to document this default configuration?

Yes, it is libefx configuration and more options will be enabled when 
corresponding
functionality is supported in the PMD.
I'm sorry, but I don't understand what would you like to see in the 
documentation.
Could you clarify, please?

>> +
>> +#define EFSYS_OPT_NAMES 0
>> +
>> +#define EFSYS_OPT_SIENA 0
>> +#define EFSYS_OPT_HUNTINGTON 1
>> +#define EFSYS_OPT_MEDFORD 1
>> +#ifdef RTE_LIBRTE_SFC_EFX_DEBUG
>> +#define EFSYS_OPT_CHECK_REG 1
>> +#else
>> +#define EFSYS_OPT_CHECK_REG 0
>> +#endif
>> +
>> +#define EFSYS_OPT_MCDI 1
>> +#define EFSYS_OPT_MCDI_LOGGING 0
>> +#define EFSYS_OPT_MCDI_PROXY_AUTH 0
>> +
>> +#define EFSYS_OPT_MAC_STATS 0
>> +
>> +#define EFSYS_OPT_LOOPBACK 0
>> +
>> +#define EFSYS_OPT_MON_MCDI 0
>> +#define EFSYS_OPT_MON_STATS 0
>> +
>> +#define EFSYS_OPT_PHY_STATS 0
>> +#define EFSYS_OPT_BIST 0
>> +#define EFSYS_OPT_PHY_LED_CONTROL 0
>> +#define EFSYS_OPT_PHY_FLAGS 0
>> +
>> +#define EFSYS_OPT_VPD 0
>> +#define EFSYS_OPT_NVRAM 0
>> +#define EFSYS_OPT_BOOTCFG 0
>> +
>> +#define EFSYS_OPT_DIAG 0
>> +#define EFSYS_OPT_RX_SCALE 0
>> +#define EFSYS_OPT_QSTATS 0
>> +#define EFSYS_OPT_FILTER 1
>> +#define EFSYS_OPT_RX_SCATTER 0
>> +
>> +#define EFSYS_OPT_EV_PREFETCH 0
>> +
>> +#define EFSYS_OPT_DECODE_INTR_FATAL 0
>> +
>> +#define EFSYS_OPT_LICENSING 0
>> +
>> +#define EFSYS_OPT_ALLOW_UNCONFIGURED_NIC 0
>> +
>> +#define EFSYS_OPT_RX_PACKED_STREAM 0
> <...>




[dpdk-dev] [PATCH 30/56] net/sfc: include libefx in build

2016-11-23 Thread Ferruh Yigit
On 11/21/2016 3:00 PM, Andrew Rybchenko wrote:
> From: Artem Andreev 
> 
> Implement efsys.h for the PMD.
> 
> Reviewed-by: Andy Moreton 
> Signed-off-by: Artem Andreev 
> Signed-off-by: Andrew Rybchenko 
> ---
>  drivers/net/sfc/efx/Makefile |  54 +++
>  drivers/net/sfc/efx/efsys.h  | 767 
> +++
>  2 files changed, 821 insertions(+)
>  create mode 100644 drivers/net/sfc/efx/efsys.h
> 
> diff --git a/drivers/net/sfc/efx/Makefile b/drivers/net/sfc/efx/Makefile
> index 71f07ca..de95ea8 100644
> --- a/drivers/net/sfc/efx/Makefile
> +++ b/drivers/net/sfc/efx/Makefile
> @@ -33,6 +33,8 @@ include $(RTE_SDK)/mk/rte.vars.mk
>  #
>  LIB = librte_pmd_sfc_efx.a
>  
> +CFLAGS += -I$(SRCDIR)/base/
> +CFLAGS += -I$(SRCDIR)
>  CFLAGS += -O3
>  
>  # Enable basic warnings but disable some which are accepted
> @@ -60,6 +62,17 @@ CFLAGS += -Wstrict-prototypes
>  CFLAGS += -Wundef
>  CFLAGS += -Wwrite-strings
>  
> +# Extra CFLAGS for base driver files
> +CFLAGS_BASE_DRIVER += -Wno-unused-variable
> +CFLAGS_BASE_DRIVER += -Wno-unused-but-set-variable

clang complain about this one:
warning: unknown warning option '-Wno-unused-but-set-variable'; did you
mean '-Wno-unused-const-variable'? [-Wunknown-warning-option]


> +
> +#
> +# List of base driver object files for which
> +# special CFLAGS above should be applied
> +#
> +BASE_DRIVER_OBJS=$(patsubst %.c,%.o,$(notdir $(wildcard $(SRCDIR)/base/*.c)))
> +$(foreach obj, $(BASE_DRIVER_OBJS), $(eval CFLAGS+=$(CFLAGS_BASE_DRIVER)))

This cause multiple "-Wno-unused-variable -Wno-unused-but-set-variable"
params in final command, I guess the intention is:

$(foreach obj, $(BASE_DRIVER_OBJS), $(eval
CFLAGS_$(obj)+=$(CFLAGS_BASE_DRIVER)))

Fixing this may generate a few compiler warnings.

<...>

> diff --git a/drivers/net/sfc/efx/efsys.h b/drivers/net/sfc/efx/efsys.h
> new file mode 100644
> index 000..2eef996
> --- /dev/null
> +++ b/drivers/net/sfc/efx/efsys.h
> @@ -0,0 +1,767 @@
<...>

I guess below is hardcoded compile time configuration for libefx, do you
think does it make sense to document this default configuration?

> +
> +#define  EFSYS_OPT_NAMES 0
> +
> +#define  EFSYS_OPT_SIENA 0
> +#define  EFSYS_OPT_HUNTINGTON 1
> +#define  EFSYS_OPT_MEDFORD 1
> +#ifdef RTE_LIBRTE_SFC_EFX_DEBUG
> +#define  EFSYS_OPT_CHECK_REG 1
> +#else
> +#define  EFSYS_OPT_CHECK_REG 0
> +#endif
> +
> +#define  EFSYS_OPT_MCDI 1
> +#define  EFSYS_OPT_MCDI_LOGGING 0
> +#define  EFSYS_OPT_MCDI_PROXY_AUTH 0
> +
> +#define  EFSYS_OPT_MAC_STATS 0
> +
> +#define  EFSYS_OPT_LOOPBACK 0
> +
> +#define  EFSYS_OPT_MON_MCDI 0
> +#define  EFSYS_OPT_MON_STATS 0
> +
> +#define  EFSYS_OPT_PHY_STATS 0
> +#define  EFSYS_OPT_BIST 0
> +#define  EFSYS_OPT_PHY_LED_CONTROL 0
> +#define  EFSYS_OPT_PHY_FLAGS 0
> +
> +#define  EFSYS_OPT_VPD 0
> +#define  EFSYS_OPT_NVRAM 0
> +#define  EFSYS_OPT_BOOTCFG 0
> +
> +#define  EFSYS_OPT_DIAG 0
> +#define  EFSYS_OPT_RX_SCALE 0
> +#define  EFSYS_OPT_QSTATS 0
> +#define  EFSYS_OPT_FILTER 1
> +#define  EFSYS_OPT_RX_SCATTER 0
> +
> +#define  EFSYS_OPT_EV_PREFETCH 0
> +
> +#define  EFSYS_OPT_DECODE_INTR_FATAL 0
> +
> +#define  EFSYS_OPT_LICENSING 0
> +
> +#define  EFSYS_OPT_ALLOW_UNCONFIGURED_NIC 0
> +
> +#define  EFSYS_OPT_RX_PACKED_STREAM 0

<...>


[dpdk-dev] [PATCH 30/56] net/sfc: include libefx in build

2016-11-21 Thread Andrew Rybchenko
From: Artem Andreev 

Implement efsys.h for the PMD.

Reviewed-by: Andy Moreton 
Signed-off-by: Artem Andreev 
Signed-off-by: Andrew Rybchenko 
---
 drivers/net/sfc/efx/Makefile |  54 +++
 drivers/net/sfc/efx/efsys.h  | 767 +++
 2 files changed, 821 insertions(+)
 create mode 100644 drivers/net/sfc/efx/efsys.h

diff --git a/drivers/net/sfc/efx/Makefile b/drivers/net/sfc/efx/Makefile
index 71f07ca..de95ea8 100644
--- a/drivers/net/sfc/efx/Makefile
+++ b/drivers/net/sfc/efx/Makefile
@@ -33,6 +33,8 @@ include $(RTE_SDK)/mk/rte.vars.mk
 #
 LIB = librte_pmd_sfc_efx.a

+CFLAGS += -I$(SRCDIR)/base/
+CFLAGS += -I$(SRCDIR)
 CFLAGS += -O3

 # Enable basic warnings but disable some which are accepted
@@ -60,6 +62,17 @@ CFLAGS += -Wstrict-prototypes
 CFLAGS += -Wundef
 CFLAGS += -Wwrite-strings

+# Extra CFLAGS for base driver files
+CFLAGS_BASE_DRIVER += -Wno-unused-variable
+CFLAGS_BASE_DRIVER += -Wno-unused-but-set-variable
+
+#
+# List of base driver object files for which
+# special CFLAGS above should be applied
+#
+BASE_DRIVER_OBJS=$(patsubst %.c,%.o,$(notdir $(wildcard $(SRCDIR)/base/*.c)))
+$(foreach obj, $(BASE_DRIVER_OBJS), $(eval CFLAGS+=$(CFLAGS_BASE_DRIVER)))
+
 EXPORT_MAP := rte_pmd_sfc_efx_version.map

 LIBABIVER := 1
@@ -70,6 +83,47 @@ LIBABIVER := 1
 SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += sfc_ethdev.c
 SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += sfc_kvargs.c

+VPATH += $(SRCDIR)/base
+
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_bootcfg.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_crc32.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_ev.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_filter.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_hash.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_intr.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_lic.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_mac.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_mcdi.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_mon.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_nic.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_nvram.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_phy.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_port.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_rx.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_sram.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_tx.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += efx_vpd.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += mcdi_mon.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += siena_mac.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += siena_mcdi.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += siena_nic.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += siena_nvram.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += siena_phy.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += siena_sram.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += siena_vpd.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_ev.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_filter.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_intr.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_mac.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_mcdi.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_nic.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_nvram.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_phy.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_rx.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_tx.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_vpd.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += hunt_nic.c
+SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += medford_nic.c

 # this lib depends upon:
 DEPDIRS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += lib/librte_eal
diff --git a/drivers/net/sfc/efx/efsys.h b/drivers/net/sfc/efx/efsys.h
new file mode 100644
index 000..2eef996
--- /dev/null
+++ b/drivers/net/sfc/efx/efsys.h
@@ -0,0 +1,767 @@
+/*-
+ * Copyright (c) 2016 Solarflare Communications Inc.
+ * All rights reserved.
+ *
+ * This software was jointly developed between OKTET Labs (under contract
+ * for Solarflare) and Solarflare Communications, Inc.
+ *
+ * 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.
+ *
+ * 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 OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,