On 22/02/16 09:07, Elo, Matias (Nokia - FI/Espoo) wrote:
-----Original Message-----
From: EXT Zoltan Kiss [mailto:zoltan.k...@linaro.org]
Sent: Friday, February 19, 2016 6:13 PM
To: Elo, Matias (Nokia - FI/Espoo) <matias....@nokia.com>; lng-
o...@lists.linaro.org
Cc: Savolainen, Petri (Nokia - FI/Espoo) <petri.savolai...@nokia.com>
Subject: Re: [lng-odp] [API-NEXT PATCH v4 10/13] linux-generic: dpdk: add
odp_pktio_input_queues_config()

Hi,

I'm implementing multiqueue for ODP-DPDK as well, where I'm taking a lot
of your code, so finally I'm doing a bigger review of this code:

Hi,

Great to have feedback. I'll hopefully have time to test and review you patches 
tomorrow.

-Matias

On 15/02/16 10:49, Matias Elo wrote:
@@ -309,6 +335,29 @@ static int odp_dpdk_pktio_init_local(void)
        return 0;
   }

+static int dpdk_input_queues_config(pktio_entry_t *pktio_entry,
+                                   const odp_pktin_queue_param_t *p)
+{
+       odp_pktin_mode_t mode = pktio_entry->s.param.in_mode;
+       odp_bool_t lockless;
+
+       /**
+        * Scheduler synchronizes input queue polls. Only single thread
+        * at a time polls a queue */
+       if (mode == ODP_PKTIN_MODE_SCHED ||
+           p->op_mode == ODP_PKTIO_OP_MT_UNSAFE)
+               lockless = 1;
+       else
+               lockless = 0;
+
+       if (p->hash_enable && p->num_queues > 1)
+               pktio_entry->s.pkt_dpdk.hash = p->hash_proto;
We had a discussion about this when the API was introduced. The final
take for me was that this should not influence whether an actual hash is
generated, only the fact that hash is used to distribute packets between
queues. In DPDK you can't actually make difference between the two, so
even if these conditions are not met you have to generate something for
odp_packet_flow_hash().
I've simply added this else branch:

        else
                pktio_entry->s.pkt_dpdk.hash.all_bits = UINT32_MAX;

Good catch, I had missed the original API discussion. Instead of enabling all 
the hash protocols I'd rather go with a minimal default DPDK hash. ETH_RSS_IP 
seems like a good candidate for this. In the future odp_pktin_hash_proto_t may 
include more protocols and some of the combinations may not be supported by the 
DPDK drivers. I minimal default value would be more future proof and support 
more drivers.
Makes sense to not going all in. I would add TCP and UDP, as it is likely to be supported by everyone. This is the current default used in ODP-DPDK

This 'default hash' can be set in dpdk_setup_port() helper. I'll make a patch 
to implement this.


+
+       pktio_entry->s.pkt_dpdk.lockless_rx = lockless;
+
+       return 0;
+}
+

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

Reply via email to