On 03/21/2017 04:08 AM, Jianbo Liu wrote:
> The 03/20/2017 17:29, Hemant Agrawal wrote:
>> DPDK 16.07 introduced the support for mempool offload support.
>> rte_pktmbuf_pool_create is the recommended method for creating pktmbuf
>> pools. Buffer pools created with rte_mempool_create may not get offloaded
>> to the underlying offloaded mempools.
>>
>> This patch, changes the rte_mempool_create to use helper wrapper
>> "rte_pktmbuf_pool_create" provided by dpdk, so that it can leverage
>> offloaded mempools.
>>
>> Signed-off-by: Hemant Agrawal <[email protected]>
>> ---
>> branch-2.6 and master are different, so different patches are submitted.
>>
>>  lib/netdev-dpdk.c | 19 +++++++++----------
>>  1 file changed, 9 insertions(+), 10 deletions(-)
>>
>> diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
>> index ddc651b..5d0d762 100644
>> --- a/lib/netdev-dpdk.c
>> +++ b/lib/netdev-dpdk.c
>> @@ -466,7 +466,6 @@ ovs_rte_pktmbuf_init(struct rte_mempool *mp,
>>  static struct dpdk_mp *
>>  dpdk_mp_create(int socket_id, int mtu)
>>  {
>> -    struct rte_pktmbuf_pool_private mbp_priv;
>>      struct dpdk_mp *dmp;
>>      unsigned mp_size;
>>      char *mp_name;
>> @@ -478,9 +477,6 @@ dpdk_mp_create(int socket_id, int mtu)
>>      dmp->socket_id = socket_id;
>>      dmp->mtu = mtu;
>>      dmp->refcount = 1;
>> -    mbp_priv.mbuf_data_room_size = MBUF_SIZE(mtu) - sizeof(struct 
>> dp_packet);
>> -    mbp_priv.mbuf_priv_size = sizeof(struct dp_packet)
>> -                              - sizeof(struct rte_mbuf);
>>      /* XXX: this is a really rough method of provisioning memory.
>>       * It's impossible to determine what the exact memory requirements are
>>       * when the number of ports and rxqs that utilize a particular mempool 
>> can
>> @@ -496,18 +492,21 @@ dpdk_mp_create(int socket_id, int mtu)
>>          mp_name = xasprintf("ovs_mp_%d_%d_%u", dmp->mtu, dmp->socket_id,
>>                              mp_size);
>>
>> -        dmp->mp = rte_mempool_create(mp_name, mp_size, MBUF_SIZE(mtu),
>> -                                     MP_CACHE_SZ,
>> -                                     sizeof(struct 
>> rte_pktmbuf_pool_private),
>> -                                     rte_pktmbuf_pool_init, &mbp_priv,
>> -                                     ovs_rte_pktmbuf_init, NULL,
>> -                                     socket_id, 0);
>> +        dmp->mp = rte_pktmbuf_pool_create(mp_name, mp_size,
>> +                                          MP_CACHE_SZ,
>> +                                          sizeof (struct dp_packet)
>> +                                                 - sizeof (struct rte_mbuf),
>> +                                          MBUF_SIZE(mtu)
>> +                                                 - sizeof(struct dp_packet),
>> +                                          socket_id);
>>          if (dmp->mp) {
>>              VLOG_DBG("Allocated \"%s\" mempool with %u mbufs",
>>                       mp_name, mp_size);
>>          }
>>          free(mp_name);
>>          if (dmp->mp) {
>> +            /* pktmbuf only prepare the rte_mbuf, prepare the ovs bufs */
>> +            rte_mempool_obj_iter(dmp->mp, ovs_rte_pktmbuf_init, NULL);
> 
> I think you should remove rte_pktmbuf_init() in ovs_rte_pktmbuf_init() as it 
> is already called in rte_pktmbuf_pool_create().
> 

I agree with that optimization. Otherwise, LGTM for master branch.

>>              return dmp;
>>          }
>>      } while (rte_errno == ENOMEM && (mp_size /= 2) >= MIN_NB_MBUF);
>> --
>> 1.9.1
>>
>> _______________________________________________
>> dev mailing list
>> [email protected]
>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> 
> --
> IMPORTANT NOTICE: The contents of this email and any attachments are 
> confidential and may also be privileged. If you are not the intended 
> recipient, please notify the sender immediately and do not disclose the 
> contents to any other person, use it for any purpose, or store or copy the 
> information in any medium. Thank you.
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> 

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to