From 8c210571851a5436240a5e5a92876853a271ab94 Mon Sep 17 00:00:00 2001 From: Matej Vido Date: Mon, 12 Jun 2017 14:03:22 +0200 Subject: [PATCH] net/szedata2: add more supported firmwares Add IBUF and OBUF offsets definitions for new firmwares. Signed-off-by: Matej Vido --- config/common_base | 8 +- doc/guides/nics/szedata2.rst | 32 +++++- doc/guides/rel_notes/release_17_08.rst | 4 + drivers/net/szedata2/szedata2_iobuf.c | 150 +++++++++++++++++++++++-- 4 files changed, 174 insertions(+), 20 deletions(-) diff --git a/config/common_base b/config/common_base index 0e0b73217b..f6aafd17d4 100644 --- a/config/common_base +++ b/config/common_base @@ -276,12 +276,8 @@ CONFIG_RTE_LIBRTE_SFC_EFX_DEBUG=n CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n # # Defines firmware type address space. -# RTE_LIBRTE_PMD_SZEDATA2_AS can be: -# 0 - for firmwares: -# NIC_100G1_LR4 -# HANIC_100G1_LR4 -# HANIC_100G1_SR10 -# Other values raise compile time error +# See documentation for supported values. +# Other values raise compile time error. CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS=0 # diff --git a/doc/guides/nics/szedata2.rst b/doc/guides/nics/szedata2.rst index 60080a9f66..1a5d413801 100644 --- a/doc/guides/nics/szedata2.rst +++ b/doc/guides/nics/szedata2.rst @@ -91,14 +91,34 @@ These configuration options can be modified before compilation in the * ``CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS`` default value: **0** - This option defines type of firmware address space. - Currently supported value is: + This option defines type of firmware address space and must be set + according to the used card and mode. + Currently supported values are: - * **0** for firmwares: + * **0** - for cards (modes): - * NIC_100G1_LR4 - * HANIC_100G1_LR4 - * HANIC_100G1_SR10 + * NFB-100G1 (100G1) + + * **1** - for cards (modes): + + * NFB-100G2Q (100G1) + + * **2** - for cards (modes): + + * NFB-40G2 (40G2) + * NFB-100G2C (100G2) + * NFB-100G2Q (40G2) + + * **3** - for cards (modes): + + * NFB-40G2 (10G8) + * NFB-100G2Q (10G8) + + * **4** - for cards (modes): + + * NFB-100G1 (10G10) + + * **5** - for experimental firmwares and future use Using the SZEDATA2 PMD ---------------------- diff --git a/doc/guides/rel_notes/release_17_08.rst b/doc/guides/rel_notes/release_17_08.rst index eb31da2be7..842f46f750 100644 --- a/doc/guides/rel_notes/release_17_08.rst +++ b/doc/guides/rel_notes/release_17_08.rst @@ -71,6 +71,10 @@ New Features Rx queues can be armed with an interrupt which will trigger on the next packet arrival. +* **Updated szedata2 PMD.** + + Added support for firmwares with multiple Ethernet ports per physical port. + Resolved Issues --------------- diff --git a/drivers/net/szedata2/szedata2_iobuf.c b/drivers/net/szedata2/szedata2_iobuf.c index 2d25e65ad1..3b9a71fefa 100644 --- a/drivers/net/szedata2/szedata2_iobuf.c +++ b/drivers/net/szedata2/szedata2_iobuf.c @@ -39,21 +39,41 @@ /* * IBUFs and OBUFs can generally be located at different offsets in different - * firmwares. - * This part defines base offsets of IBUFs and OBUFs through various firmwares. - * Currently one firmware type is supported. - * Type of firmware is set through configuration option + * firmwares (modes). + * This part defines base offsets of IBUFs and OBUFs for various cards + * and firmwares (modes). + * Type of firmware (mode) is set through configuration option * CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS. * Possible values are: - * 0 - for firmwares: - * NIC_100G1_LR4 - * HANIC_100G1_LR4 - * HANIC_100G1_SR10 + * 0 - for cards (modes): + * NFB-100G1 (100G1) + * + * 1 - for cards (modes): + * NFB-100G2Q (100G1) + * + * 2 - for cards (modes): + * NFB-40G2 (40G2) + * NFB-100G2C (100G2) + * NFB-100G2Q (40G2) + * + * 3 - for cards (modes): + * NFB-40G2 (10G8) + * NFB-100G2Q (10G8) + * + * 4 - for cards (modes): + * NFB-100G1 (10G10) + * + * 5 - for experimental firmwares and future use */ #if !defined(RTE_LIBRTE_PMD_SZEDATA2_AS) #error "RTE_LIBRTE_PMD_SZEDATA2_AS has to be defined" #elif RTE_LIBRTE_PMD_SZEDATA2_AS == 0 +/* + * Cards (modes): + * NFB-100G1 (100G1) + */ + const uint32_t szedata2_ibuf_base_table[] = { 0x8000 }; @@ -61,6 +81,120 @@ const uint32_t szedata2_obuf_base_table[] = { 0x9000 }; +#elif RTE_LIBRTE_PMD_SZEDATA2_AS == 1 + +/* + * Cards (modes): + * NFB-100G2Q (100G1) + */ + +const uint32_t szedata2_ibuf_base_table[] = { + 0x8800 +}; +const uint32_t szedata2_obuf_base_table[] = { + 0x9800 +}; + +#elif RTE_LIBRTE_PMD_SZEDATA2_AS == 2 + +/* + * Cards (modes): + * NFB-40G2 (40G2) + * NFB-100G2C (100G2) + * NFB-100G2Q (40G2) + */ + +const uint32_t szedata2_ibuf_base_table[] = { + 0x8000, + 0x8800 +}; +const uint32_t szedata2_obuf_base_table[] = { + 0x9000, + 0x9800 +}; + +#elif RTE_LIBRTE_PMD_SZEDATA2_AS == 3 + +/* + * Cards (modes): + * NFB-40G2 (10G8) + * NFB-100G2Q (10G8) + */ + +const uint32_t szedata2_ibuf_base_table[] = { + 0x8000, + 0x8200, + 0x8400, + 0x8600, + 0x8800, + 0x8A00, + 0x8C00, + 0x8E00 +}; +const uint32_t szedata2_obuf_base_table[] = { + 0x9000, + 0x9200, + 0x9400, + 0x9600, + 0x9800, + 0x9A00, + 0x9C00, + 0x9E00 +}; + +#elif RTE_LIBRTE_PMD_SZEDATA2_AS == 4 + +/* + * Cards (modes): + * NFB-100G1 (10G10) + */ + +const uint32_t szedata2_ibuf_base_table[] = { + 0x8000, + 0x8200, + 0x8400, + 0x8600, + 0x8800, + 0x8A00, + 0x8C00, + 0x8E00, + 0x9000, + 0x9200 +}; +const uint32_t szedata2_obuf_base_table[] = { + 0xA000, + 0xA200, + 0xA400, + 0xA600, + 0xA800, + 0xAA00, + 0xAC00, + 0xAE00, + 0xB000, + 0xB200 +}; + +#elif RTE_LIBRTE_PMD_SZEDATA2_AS == 5 + +/* + * Future use and experimental firmwares. + */ + +const uint32_t szedata2_ibuf_base_table[] = { + 0x8000, + 0x8200, + 0x8400, + 0x8600, + 0x8800 +}; +const uint32_t szedata2_obuf_base_table[] = { + 0x9000, + 0x9200, + 0x9400, + 0x9600, + 0x9800 +}; + #else #error "RTE_LIBRTE_PMD_SZEDATA2_AS has wrong value, see comments in config file" #endif -- 2.20.1