Add helper function dpdk_setup_port() for configuring
DPDK ports.

Reviewed-by: Petri Savolainen <petri.savolai...@nokia.com>
Signed-off-by: Matias Elo <matias....@nokia.com>
---
 platform/linux-generic/pktio/dpdk.c | 62 ++++++++++++++++++++++++-------------
 1 file changed, 41 insertions(+), 21 deletions(-)

diff --git a/platform/linux-generic/pktio/dpdk.c 
b/platform/linux-generic/pktio/dpdk.c
index 4b007bc..1df0e90 100644
--- a/platform/linux-generic/pktio/dpdk.c
+++ b/platform/linux-generic/pktio/dpdk.c
@@ -151,6 +151,43 @@ static int dpdk_netdev_is_valid(const char *s)
        return 1;
 }
 
+static int dpdk_setup_port(pktio_entry_t *pktio_entry)
+{
+       pkt_dpdk_t *pkt_dpdk = &pktio_entry->s.pkt_dpdk;
+       int ret;
+       struct rte_eth_conf port_conf = {
+               .rxmode = {
+                       .mq_mode = ETH_MQ_RX_RSS,
+                       .max_rx_pkt_len = pkt_dpdk->data_room,
+                       .split_hdr_size = 0,
+                       .header_split   = 0,
+                       .hw_ip_checksum = 0,
+                       .hw_vlan_filter = 0,
+                       .jumbo_frame    = 1,
+                       .hw_strip_crc   = 0,
+               },
+               .rx_adv_conf = {
+                       .rss_conf = {
+                               .rss_key = NULL,
+                               .rss_hf = ETH_RSS_IP,
+                       },
+               },
+               .txmode = {
+                       .mq_mode = ETH_MQ_TX_NONE,
+               },
+       };
+
+       ret = rte_eth_dev_configure(pkt_dpdk->port_id,
+                                   pktio_entry->s.num_in_queue,
+                                   pktio_entry->s.num_out_queue, &port_conf);
+       if (ret < 0) {
+               ODP_ERR("Failed to setup device: err=%d, port=%" PRIu8 "\n",
+                       ret, pkt_dpdk->port_id);
+               return -1;
+       }
+       return 0;
+}
+
 static int dpdk_close(pktio_entry_t *pktio_entry ODP_UNUSED)
 {
        return 0;
@@ -361,32 +398,15 @@ static int dpdk_start(pktio_entry_t *pktio_entry)
        int ret;
        unsigned i;
 
-       struct rte_eth_conf port_conf = {
-               .rxmode = {
-                       .max_rx_pkt_len = pkt_dpdk->data_room,
-                       .split_hdr_size = 0,
-                       .header_split   = 0, /**< Header Split disabled */
-                       .hw_ip_checksum = 0, /**< IP checksum offload disabled 
*/
-                       .hw_vlan_filter = 0, /**< VLAN filtering disabled */
-                       .jumbo_frame    = 1, /**< Jumbo Frame Support enabled */
-                       .hw_strip_crc   = 0, /**< CRC stripped by hardware */
-               },
-               .txmode = {
-                       .mq_mode = ETH_MQ_TX_NONE,
-               },
-       };
-
        /* DPDK doesn't support nb_rx_q/nb_tx_q being 0 */
        if (!pktio_entry->s.num_in_queue)
                pktio_entry->s.num_in_queue = 1;
        if (!pktio_entry->s.num_out_queue)
                pktio_entry->s.num_out_queue = 1;
-       ret = rte_eth_dev_configure(pkt_dpdk->port_id,
-                                   pktio_entry->s.num_in_queue,
-                                   pktio_entry->s.num_out_queue, &port_conf);
-       if (ret < 0) {
-               ODP_ERR("Cannot configure device: err=%d, port=%" PRIu8 "\n",
-                       ret, pkt_dpdk->port_id);
+
+       /* init port */
+       if (dpdk_setup_port(pktio_entry)) {
+               ODP_ERR("Failed to configure device\n");
                return -1;
        }
        /* Init TX queues */
-- 
1.9.1

_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to