get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/130795/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 130795,
    "url": "https://patches.dpdk.org/api/patches/130795/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20230829075829.208413-11-wanry@3snic.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20230829075829.208413-11-wanry@3snic.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230829075829.208413-11-wanry@3snic.com",
    "date": "2023-08-29T07:58:07",
    "name": "[10/32] net/sssnic: add dev configure and infos get",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "a53cef50785f18830be95111dd3493a3390dbf90",
    "submitter": {
        "id": 3119,
        "url": "https://patches.dpdk.org/api/people/3119/?format=api",
        "name": "Renyong Wan",
        "email": "wanry@3snic.com"
    },
    "delegate": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20230829075829.208413-11-wanry@3snic.com/mbox/",
    "series": [
        {
            "id": 29358,
            "url": "https://patches.dpdk.org/api/series/29358/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=29358",
            "date": "2023-08-29T07:57:57",
            "name": "Introduce sssnic PMD for 3SNIC's 9x0 serials Ethernet adapters",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/29358/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/130795/comments/",
    "check": "warning",
    "checks": "https://patches.dpdk.org/api/patches/130795/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 903F541F53;\n\tTue, 29 Aug 2023 10:00:17 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id D3CA9402BD;\n\tTue, 29 Aug 2023 09:59:43 +0200 (CEST)",
            "from VLXDG1SPAM1.ramaxel.com (email.ramaxel.com [221.4.138.186])\n by mails.dpdk.org (Postfix) with ESMTP id D40E3402A6\n for <dev@dpdk.org>; Tue, 29 Aug 2023 09:59:37 +0200 (CEST)",
            "from V12DG1MBS03.ramaxel.local ([172.26.18.33])\n by VLXDG1SPAM1.ramaxel.com with ESMTP id 37T7wbm6080463;\n Tue, 29 Aug 2023 15:58:59 +0800 (GMT-8)\n (envelope-from wanry@3snic.com)",
            "from localhost.localdomain (10.64.136.151) by\n V12DG1MBS03.ramaxel.local (172.26.18.33) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id\n 15.1.2375.17; Tue, 29 Aug 2023 15:58:41 +0800"
        ],
        "From": "<wanry@3snic.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<ferruh.yigit@amd.com>, Renyong Wan <wanry@3snic.com>, Steven Song\n <steven.song@3snic.com>",
        "Subject": "[PATCH 10/32] net/sssnic: add dev configure and infos get",
        "Date": "Tue, 29 Aug 2023 15:58:07 +0800",
        "Message-ID": "<20230829075829.208413-11-wanry@3snic.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20230829075829.208413-1-wanry@3snic.com>",
        "References": "<20230829075829.208413-1-wanry@3snic.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "7bit",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.64.136.151]",
        "X-ClientProxiedBy": "V12DG1MBS03.ramaxel.local (172.26.18.33) To\n V12DG1MBS03.ramaxel.local (172.26.18.33)",
        "X-DNSRBL": "",
        "X-SPAM-SOURCE-CHECK": "pass",
        "X-MAIL": "VLXDG1SPAM1.ramaxel.com 37T7wbm6080463",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "From: Renyong Wan <wanry@3snic.com>\n\nSigned-off-by: Steven Song <steven.song@3snic.com>\nSigned-off-by: Renyong Wan <wanry@3snic.com>\n---\n drivers/net/sssnic/base/sssnic_api.c | 33 ++++++++++++\n drivers/net/sssnic/base/sssnic_api.h |  8 +++\n drivers/net/sssnic/base/sssnic_cmd.h | 14 +++++\n drivers/net/sssnic/base/sssnic_hw.c  | 33 +++++++++++-\n drivers/net/sssnic/base/sssnic_hw.h  |  6 +++\n drivers/net/sssnic/sssnic_ethdev.c   | 76 ++++++++++++++++++++++++++++\n drivers/net/sssnic/sssnic_ethdev.h   | 53 +++++++++++++++++++\n 7 files changed, 222 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/drivers/net/sssnic/base/sssnic_api.c b/drivers/net/sssnic/base/sssnic_api.c\nindex 51a59f0f25..bf0859cd63 100644\n--- a/drivers/net/sssnic/base/sssnic_api.c\n+++ b/drivers/net/sssnic/base/sssnic_api.c\n@@ -100,3 +100,36 @@ sssnic_msix_attr_set(struct sssnic_hw *hw, uint16_t msix_idx,\n \n \treturn 0;\n }\n+\n+int\n+sssnic_capability_get(struct sssnic_hw *hw, struct sssnic_capability *capa)\n+{\n+\tstruct sssnic_capability_get_cmd cmd;\n+\tstruct sssnic_msg msg;\n+\tuint32_t cmd_len;\n+\tint ret;\n+\n+\tmemset(&cmd, 0, sizeof(cmd));\n+\tcmd_len = sizeof(cmd);\n+\tcmd.function = SSSNIC_FUNC_IDX(hw);\n+\tsssnic_msg_init(&msg, (uint8_t *)&cmd, cmd_len,\n+\t\tSSSNIC_GET_CAPABILITY_CMD, SSSNIC_MPU_FUNC_IDX,\n+\t\tSSSNIC_CFG_MODULE, SSSNIC_MSG_TYPE_REQ);\n+\tret = sssnic_mbox_send(hw, &msg, (uint8_t *)&cmd, &cmd_len, 0);\n+\tif (ret != 0) {\n+\t\tPMD_DRV_LOG(ERR, \"Failed to send mbox message, ret=%d\", ret);\n+\t\treturn ret;\n+\t}\n+\tif (cmd_len == 0 || cmd.common.status != 0) {\n+\t\tPMD_DRV_LOG(ERR,\n+\t\t\t\"Bad response to SSSNIC_GET_CAPABILITY_CMD, len=%u, status=%u\",\n+\t\t\tcmd_len, cmd.common.status);\n+\t\treturn -EIO;\n+\t}\n+\n+\tcapa->phy_port = cmd.phy_port;\n+\tcapa->max_num_rxq = cmd.rxq_max_id + 1;\n+\tcapa->max_num_txq = cmd.txq_max_id + 1;\n+\n+\treturn 0;\n+}\ndiff --git a/drivers/net/sssnic/base/sssnic_api.h b/drivers/net/sssnic/base/sssnic_api.h\nindex 3d54eb826a..8011cc8b0f 100644\n--- a/drivers/net/sssnic/base/sssnic_api.h\n+++ b/drivers/net/sssnic/base/sssnic_api.h\n@@ -15,9 +15,17 @@ struct sssnic_msix_attr {\n \tuint8_t resend_timer;\n };\n \n+struct sssnic_capability {\n+\tuint16_t max_num_txq;\n+\tuint16_t max_num_rxq;\n+\tuint8_t phy_port;\n+\tuint8_t cos;\n+};\n+\n int sssnic_msix_attr_get(struct sssnic_hw *hw, uint16_t msix_idx,\n \tstruct sssnic_msix_attr *attr);\n int sssnic_msix_attr_set(struct sssnic_hw *hw, uint16_t msix_idx,\n \tstruct sssnic_msix_attr *attr);\n+int sssnic_capability_get(struct sssnic_hw *hw, struct sssnic_capability *capa);\n \n #endif /* _SSSNIC_API_H_ */\ndiff --git a/drivers/net/sssnic/base/sssnic_cmd.h b/drivers/net/sssnic/base/sssnic_cmd.h\nindex ee9f536ac2..79192affbc 100644\n--- a/drivers/net/sssnic/base/sssnic_cmd.h\n+++ b/drivers/net/sssnic/base/sssnic_cmd.h\n@@ -18,6 +18,8 @@ enum sssnic_mgmt_cmd_id {\n \tSSSNIC_GET_FW_VERSION_CMD = 60,\n };\n \n+#define SSSNIC_GET_CAPABILITY_CMD 0\n+\n struct sssnic_cmd_common {\n \tuint8_t status;\n \tuint8_t version;\n@@ -111,4 +113,16 @@ struct sssnic_msix_ctrl_cmd {\n \tuint8_t resvd1[5];\n };\n \n+struct sssnic_capability_get_cmd {\n+\tstruct sssnic_cmd_common common;\n+\tuint16_t function;\n+\tuint16_t resvd0;\n+\tuint8_t resvd1[3];\n+\tuint8_t phy_port;\n+\tuint32_t resvd2[16];\n+\tuint16_t txq_max_id;\n+\tuint16_t rxq_max_id;\n+\tuint32_t resvd3[63];\n+};\n+\n #endif /* _SSSNIC_CMD_H_ */\ndiff --git a/drivers/net/sssnic/base/sssnic_hw.c b/drivers/net/sssnic/base/sssnic_hw.c\nindex 4ca75208af..8f5f556bde 100644\n--- a/drivers/net/sssnic/base/sssnic_hw.c\n+++ b/drivers/net/sssnic/base/sssnic_hw.c\n@@ -253,6 +253,29 @@ sssnic_msix_attr_init(struct sssnic_hw *hw)\n \treturn 0;\n }\n \n+static int\n+sssnic_capability_init(struct sssnic_hw *hw)\n+{\n+\tstruct sssnic_capability cap;\n+\tint ret;\n+\n+\tret = sssnic_capability_get(hw, &cap);\n+\tif (ret != 0) {\n+\t\tPMD_DRV_LOG(ERR, \"Failed to get sssnic capability\");\n+\t\treturn ret;\n+\t}\n+\n+\tPMD_DRV_LOG(INFO,\n+\t\t\"Initialized capability, physic port:%u, max %u txqs, max %u rxqs\",\n+\t\tcap.phy_port, cap.max_num_txq, cap.max_num_rxq);\n+\n+\thw->phy_port = cap.phy_port;\n+\thw->max_num_rxq = cap.max_num_rxq;\n+\thw->max_num_txq = cap.max_num_txq;\n+\n+\treturn 0;\n+}\n+\n static int\n sssnic_base_init(struct sssnic_hw *hw)\n {\n@@ -360,10 +383,18 @@ sssnic_hw_init(struct sssnic_hw *hw)\n \t\tgoto ctrlq_init_fail;\n \t}\n \n+\tret = sssnic_capability_init(hw);\n+\tif (ret != 0) {\n+\t\tPMD_DRV_LOG(ERR, \"Failed to initialize capability\");\n+\t\tgoto capbility_init_fail;\n+\t}\n+\n \tsssnic_pf_status_set(hw, SSSNIC_PF_STATUS_ACTIVE);\n \n-\treturn -EINVAL;\n+\treturn 0;\n \n+capbility_init_fail:\n+\tsssnic_ctrlq_shutdown(hw);\n ctrlq_init_fail:\n \tsssnic_mbox_shutdown(hw);\n mbox_init_fail:\ndiff --git a/drivers/net/sssnic/base/sssnic_hw.h b/drivers/net/sssnic/base/sssnic_hw.h\nindex c1b9539015..5f20a9465d 100644\n--- a/drivers/net/sssnic/base/sssnic_hw.h\n+++ b/drivers/net/sssnic/base/sssnic_hw.h\n@@ -56,12 +56,18 @@ struct sssnic_hw {\n \tstruct sssnic_mbox *mbox;\n \tstruct sssnic_ctrlq *ctrlq;\n \tuint8_t num_eventqs;\n+\tuint8_t phy_port;\n \tuint16_t eth_port_id;\n+\tuint16_t max_num_rxq;\n+\tuint16_t max_num_txq;\n };\n \n #define SSSNIC_FUNC_IDX(hw) ((hw)->attr.func_idx)\n #define SSSNIC_ETH_PORT_ID(hw) ((hw)->eth_port_id)\n #define SSSNIC_MPU_FUNC_IDX 0x1fff\n+#define SSSNIC_MAX_NUM_RXQ(hw) ((hw)->max_num_rxq)\n+#define SSSNIC_MAX_NUM_TXQ(hw) ((hw)->max_num_txq)\n+#define SSSNIC_PHY_PORT(hw) ((hw)->phy_port)\n #define SSSNIC_FUNC_TYPE(hw) ((hw)->attr.func_type)\n #define SSSNIC_AF_FUNC_IDX(hw) ((hw)->attr.af_idx)\n \ndiff --git a/drivers/net/sssnic/sssnic_ethdev.c b/drivers/net/sssnic/sssnic_ethdev.c\nindex 9abe34ea2f..517d53b587 100644\n--- a/drivers/net/sssnic/sssnic_ethdev.c\n+++ b/drivers/net/sssnic/sssnic_ethdev.c\n@@ -10,6 +10,72 @@\n #include \"base/sssnic_hw.h\"\n #include \"sssnic_ethdev.h\"\n \n+static int\n+sssnic_ethdev_infos_get(struct rte_eth_dev *ethdev,\n+\tstruct rte_eth_dev_info *devinfo)\n+{\n+\tstruct sssnic_netdev *netdev;\n+\n+\tnetdev = SSSNIC_ETHDEV_PRIVATE(ethdev);\n+\n+\tdevinfo->max_rx_queues = netdev->max_num_rxq;\n+\tdevinfo->max_tx_queues = netdev->max_num_txq;\n+\n+\tdevinfo->max_mtu = SSSNIC_ETHDEV_MAX_MTU;\n+\tdevinfo->min_mtu = SSSNIC_ETHDEV_MIN_MTU;\n+\tdevinfo->min_rx_bufsize = SSSNIC_ETHDEV_MIN_RXBUF_SZ;\n+\tdevinfo->max_rx_pktlen = SSSNIC_ETHDEV_MAX_RXPKT_LEN;\n+\tdevinfo->max_lro_pkt_size = SSSNIC_ETHDEV_MAX_LRO_PKT_SZ;\n+\n+\tdevinfo->max_mac_addrs = SSSNIC_ETHDEV_MAX_NUM_UC_MAC;\n+\n+\tdevinfo->rx_queue_offload_capa = 0;\n+\tdevinfo->tx_queue_offload_capa = 0;\n+\tdevinfo->rx_offload_capa = SSSNIC_ETHDEV_RX_OFFLOAD_CAPA;\n+\tdevinfo->tx_offload_capa = SSSNIC_ETHDEV_TX_OFFLOAD_CAPA;\n+\n+\tdevinfo->hash_key_size = SSSNIC_ETHDEV_RSS_KEY_SZ;\n+\tdevinfo->reta_size = SSSNIC_ETHDEV_RSS_RETA_SZ;\n+\tdevinfo->flow_type_rss_offloads = SSSNIC_ETHDEV_RSS_OFFLOAD_FLOW_TYPES;\n+\n+\tdevinfo->rx_desc_lim = (struct rte_eth_desc_lim){\n+\t\t.nb_max = SSSNIC_ETHDEV_MAX_NUM_Q_DESC,\n+\t\t.nb_min = SSSNIC_ETHDEV_MIN_NUM_Q_DESC,\n+\t\t.nb_align = SSSNIC_ETHDEV_NUM_Q_DESC_ALGIN,\n+\t};\n+\tdevinfo->tx_desc_lim = (struct rte_eth_desc_lim){\n+\t\t.nb_max = SSSNIC_ETHDEV_MAX_NUM_Q_DESC,\n+\t\t.nb_min = SSSNIC_ETHDEV_MIN_NUM_Q_DESC,\n+\t\t.nb_align = SSSNIC_ETHDEV_NUM_Q_DESC_ALGIN,\n+\t};\n+\n+\tdevinfo->default_rxportconf = (struct rte_eth_dev_portconf){\n+\t\t.burst_size = SSSNIC_ETHDEV_DEF_BURST_SZ,\n+\t\t.ring_size = SSSNIC_ETHDEV_DEF_RING_SZ,\n+\t\t.nb_queues = SSSNIC_ETHDEV_DEF_NUM_QUEUES,\n+\t};\n+\n+\tdevinfo->default_txportconf = (struct rte_eth_dev_portconf){\n+\t\t.burst_size = SSSNIC_ETHDEV_DEF_BURST_SZ,\n+\t\t.ring_size = SSSNIC_ETHDEV_DEF_RING_SZ,\n+\t\t.nb_queues = SSSNIC_ETHDEV_DEF_NUM_QUEUES,\n+\t};\n+\n+\treturn 0;\n+}\n+\n+static int\n+sssnic_ethdev_configure(struct rte_eth_dev *ethdev)\n+{\n+\tif (ethdev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG)\n+\t\tethdev->data->dev_conf.rxmode.offloads |=\n+\t\t\tRTE_ETH_RX_OFFLOAD_RSS_HASH;\n+\n+\tPMD_DRV_LOG(INFO, \"Port %u is configured\", ethdev->data->port_id);\n+\n+\treturn 0;\n+}\n+\n static void\n sssnic_ethdev_release(struct rte_eth_dev *ethdev)\n {\n@@ -19,6 +85,11 @@ sssnic_ethdev_release(struct rte_eth_dev *ethdev)\n \trte_free(hw);\n }\n \n+static const struct eth_dev_ops sssnic_ethdev_ops = {\n+\t.dev_configure = sssnic_ethdev_configure,\n+\t.dev_infos_get = sssnic_ethdev_infos_get,\n+};\n+\n static int\n sssnic_ethdev_init(struct rte_eth_dev *ethdev)\n {\n@@ -48,6 +119,11 @@ sssnic_ethdev_init(struct rte_eth_dev *ethdev)\n \t\treturn ret;\n \t}\n \n+\tnetdev->max_num_rxq = SSSNIC_MAX_NUM_RXQ(hw);\n+\tnetdev->max_num_txq = SSSNIC_MAX_NUM_TXQ(hw);\n+\n+\tethdev->dev_ops = &sssnic_ethdev_ops;\n+\n \treturn 0;\n }\n \ndiff --git a/drivers/net/sssnic/sssnic_ethdev.h b/drivers/net/sssnic/sssnic_ethdev.h\nindex 5d951134cc..70dd43d5c0 100644\n--- a/drivers/net/sssnic/sssnic_ethdev.h\n+++ b/drivers/net/sssnic/sssnic_ethdev.h\n@@ -5,8 +5,61 @@\n #ifndef _SSSNIC_ETHDEV_H_\n #define _SSSNIC_ETHDEV_H_\n \n+#define SSSNIC_ETHDEV_MIN_MTU 384\n+#define SSSNIC_ETHDEV_MAX_MTU 9600\n+#define SSSNIC_ETHDEV_OVERHEAD_LEN                                             \\\n+\t(RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN + RTE_VLAN_HLEN * 2)\n+#define SSSNIC_ETHDEV_MIN_FRAME_SZ                                             \\\n+\t(SSSNIC_ETHDEV_MIN_MTU + SSSNIC_ETHDEV_OVERHEAD_LEN)\n+#define SSSNIC_ETHDEV_MAX_FRAME_SZ                                             \\\n+\t(SSSNIC_ETHDEV_MAX_MTU + SSSNIC_ETHDEV_OVERHEAD_LEN)\n+\n+#define SSSNIC_ETHDEV_MIN_RXBUF_SZ 1024\n+#define SSSNIC_ETHDEV_MAX_RXPKT_LEN SSSNIC_ETHDEV_MAX_FRAME_SZ\n+#define SSSNIC_ETHDEV_MAX_LRO_PKT_SZ 65536\n+\n+#define SSSNIC_ETHDEV_RSS_KEY_SZ 40\n+#define SSSNIC_ETHDEV_RSS_RETA_SZ 256\n+\n+#define SSSNIC_ETHDEV_MAX_NUM_Q_DESC 16384\n+#define SSSNIC_ETHDEV_MIN_NUM_Q_DESC 128\n+#define SSSNIC_ETHDEV_NUM_Q_DESC_ALGIN 1\n+\n+#define SSSNIC_ETHDEV_RX_OFFLOAD_CAPA                                          \\\n+\t(RTE_ETH_RX_OFFLOAD_VLAN_STRIP | RTE_ETH_RX_OFFLOAD_VLAN_FILTER |      \\\n+\t\tRTE_ETH_RX_OFFLOAD_IPV4_CKSUM | RTE_ETH_RX_OFFLOAD_UDP_CKSUM | \\\n+\t\tRTE_ETH_RX_OFFLOAD_TCP_CKSUM | RTE_ETH_RX_OFFLOAD_SCTP_CKSUM | \\\n+\t\tRTE_ETH_RX_OFFLOAD_SCATTER | RTE_ETH_RX_OFFLOAD_TCP_LRO |      \\\n+\t\tRTE_ETH_RX_OFFLOAD_RSS_HASH)\n+\n+#define SSSNIC_ETHDEV_TX_OFFLOAD_CAPA                                          \\\n+\t(RTE_ETH_TX_OFFLOAD_VLAN_INSERT | RTE_ETH_TX_OFFLOAD_IPV4_CKSUM |      \\\n+\t\tRTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM |                          \\\n+\t\tRTE_ETH_TX_OFFLOAD_UDP_CKSUM | RTE_ETH_TX_OFFLOAD_TCP_CKSUM |  \\\n+\t\tRTE_ETH_TX_OFFLOAD_SCTP_CKSUM | RTE_ETH_TX_OFFLOAD_TCP_TSO |   \\\n+\t\tRTE_ETH_TX_OFFLOAD_MULTI_SEGS)\n+\n+#define SSSNIC_ETHDEV_RSS_OFFLOAD_FLOW_TYPES                                   \\\n+\t(RTE_ETH_RSS_IPV4 | RTE_ETH_RSS_FRAG_IPV4 |                            \\\n+\t\tRTE_ETH_RSS_NONFRAG_IPV4_OTHER |                               \\\n+\t\tRTE_ETH_RSS_NONFRAG_IPV4_SCTP | RTE_ETH_RSS_NONFRAG_IPV4_TCP | \\\n+\t\tRTE_ETH_RSS_NONFRAG_IPV4_UDP | RTE_ETH_RSS_IPV6 |              \\\n+\t\tRTE_ETH_RSS_NONFRAG_IPV6_OTHER |                               \\\n+\t\tRTE_ETH_RSS_NONFRAG_IPV6_TCP | RTE_ETH_RSS_NONFRAG_IPV6_UDP |  \\\n+\t\tRTE_ETH_RSS_IPV6_EX | RTE_ETH_RSS_IPV6_TCP_EX |                \\\n+\t\tRTE_ETH_RSS_IPV6_UDP_EX)\n+\n+#define SSSNIC_ETHDEV_DEF_BURST_SZ 32\n+#define SSSNIC_ETHDEV_DEF_NUM_QUEUES 1\n+#define SSSNIC_ETHDEV_DEF_RING_SZ 1024\n+\n+#define SSSNIC_ETHDEV_MAX_NUM_UC_MAC 128\n+#define SSSNIC_ETHDEV_MAX_NUM_MC_MAC 2048\n+\n struct sssnic_netdev {\n \tvoid *hw;\n+\tuint16_t max_num_txq;\n+\tuint16_t max_num_rxq;\n };\n \n #define SSSNIC_ETHDEV_PRIVATE(eth_dev)                                         \\\n",
    "prefixes": [
        "10/32"
    ]
}