Sergio,

I'm having partial success.  I can get a single "vdev crypto_ccp" to be
recognized with a single worker core, but I'm not able to get multiple
devices.

In my /etc/vpp/startup.conf, I have the following:

...
cpu {
  main-core 1
  corelist-workers 2,6,10,14
}

dpdk {
  socket-mem 2048,2048,2048,2048
  dev default {
  num-rx-queues 2
  num-tx-queues 2
  num-tx-desc 2048
  num-rx-desc 2048
  }
  uio-driver uio-pci-generic
  dev 0000:41:00.0
  dev 0000:41:00.1
  vdev crypto_ccp0,socket_id=0
  vdev crypto_ccp1,socket_id=1
  vdev crypto_ccp2,socket_id=2
  vdev crypto_ccp3,socket_id=3
}
...

When I start VPP using this configuration, I see a message about "not enough 
DPDK crypto resources,
default to OpenSSL":

Feb  1 13:52:38 cl41 vpp: /usr/bin/vpp[15173]: dpdk_config:1344: socket-mem 
argument is deprecated
Feb  1 13:52:38 cl41 vpp: /usr/bin/vpp[15173]: dpdk: EAL init args: -c 4446 -n 
4 --in-memory --vdev crypto_ccp0,socket_id=0 --vdev crypto_ccp1,socket_id=1 
--vdev crypto_ccp2,socket_id=2 --vdev crypto_ccp3,socket_id=3 --file-prefix vpp 
-w 0000:41:00.0 -w 0000:41:00.1 --master-lcore 1
Feb  1 13:52:38 cl41 /usr/bin/vpp[15173]: dpdk: EAL init args: -c 4446 -n 4 
--in-memory --vdev crypto_ccp0,socket_id=0 --vdev crypto_ccp1,socket_id=1 
--vdev crypto_ccp2,socket_id=2 --vdev crypto_ccp3,socket_id=3 --file-prefix vpp 
-w 0000:41:00.0 -w 0000:41:00.1 --master-lcore 1
Feb  1 13:52:38 cl41 vnet[15173]: dpdk_ipsec_process:1014: not enough DPDK 
crypto resources, default to OpenSSL
Feb  1 13:53:13 cl41 vnet[15173]: unix_signal_handler:159: received signal 
SIGCONT, PC 0x7f9aa76687e0
Feb  1 13:53:13 cl41 systemd: Stopping Vector Packet Processing Process...
Feb  1 13:53:13 cl41 vnet[15173]: received SIGTERM, exiting...
Feb  1 13:53:13 cl41 vnet[15173]: unix_signal_handler:159: received signal 
SIGCONT, PC 0x7f9aa76687e0
Feb  1 13:53:13 cl41 vpp: CCP : Detected CCP device with ID = 0x1456
Feb  1 13:53:13 cl41 vpp: CCP : Detected CCP device with ID = 0x1468
Feb  1 13:53:13 cl41 vpp: Queue 0 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: Queue 1 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: Queue 2 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: Queue 3 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: Queue 4 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: CCP : Detected CCP device with ID = 0x1456
Feb  1 13:53:13 cl41 vpp: CCP : Detected CCP device with ID = 0x1468
Feb  1 13:53:13 cl41 vpp: Queue 0 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: Queue 1 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: Queue 2 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: Queue 3 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: Queue 4 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: CCP : Detected CCP device with ID = 0x1456
Feb  1 13:53:13 cl41 vpp: CCP : Detected CCP device with ID = 0x1468
Feb  1 13:53:13 cl41 vpp: Queue 0 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: Queue 1 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: Queue 2 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: Queue 3 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: Queue 4 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: CCP : Detected CCP device with ID = 0x1456
Feb  1 13:53:13 cl41 vpp: CCP : Detected CCP device with ID = 0x1468
Feb  1 13:53:13 cl41 vpp: Queue 0 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: Queue 1 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: Queue 2 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: Queue 3 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: Queue 4 can access 7 LSB regions  of mask  254
Feb  1 13:53:13 cl41 vpp: CCP : Crypto device count = 4
Feb  1 13:53:13 cl41 systemd: Stopped Vector Packet Processing Process.


If I modify the startup.conf to only have one worker core ("corelist-workers 
2"),
I don't get the message about "not enough DPDK crypto resources", and I see:

vpp# show dpdk crypto device
crypto_ccp0              crypto_ccp          up
  numa_node 0, max_queues 1
  free_resources 0, used_resources 1
  SYMMETRIC_CRYPTO, SYM_OPERATION_CHAINING, HW_ACCELERATED
  Cipher: aes-cbc-128, aes-cbc-192, aes-cbc-256, aes-ctr-128, aes-ctr-192, 
aes-ctr-256, aes-gcm-128, aes-gcm-192, aes-gcm-256
  Auth:

vpp#


When I look at the source code in crypto_parse_capabilities(), I am concerned 
about the lines
"              dcm->enabled |= (alg->resources >= n_mains);" in the following 
code:

static void
crypto_parse_capabilities (crypto_dev_t * dev,
                           const struct rte_cryptodev_capabilities *cap,
                           u32 n_mains)
{
  dpdk_crypto_main_t *dcm = &dpdk_crypto_main;
  crypto_alg_t *alg;
  u8 len, inc;

  for (; cap->op != RTE_CRYPTO_OP_TYPE_UNDEFINED; cap++)
    {
      /* A single capability maps to multiple cipher/auth algorithms */
      switch (cap->sym.xform_type)
        {
        case RTE_CRYPTO_SYM_XFORM_AEAD:
        case RTE_CRYPTO_SYM_XFORM_CIPHER:
          inc = cap->sym.cipher.key_size.increment;
          inc = inc ? inc : 1;
          for (len = cap->sym.cipher.key_size.min;
               len <= cap->sym.cipher.key_size.max; len += inc)
            {
              alg = cipher_cap_to_alg (cap, len);
              if (!alg)
                continue;
              dev->cipher_support[cipher_alg_index (alg)] = 1;
              alg->resources += vec_len (dev->free_resources);
              /* At least enough resources to support one algo */
              dcm->enabled |= (alg->resources >= n_mains);
            }
          break;
        case RTE_CRYPTO_SYM_XFORM_AUTH:
          inc = cap->sym.auth.digest_size.increment;
          inc = inc ? inc : 1;
          for (len = cap->sym.auth.digest_size.min;
               len <= cap->sym.auth.digest_size.max; len += inc)
            {
              alg = auth_cap_to_alg (cap, len);
              if (!alg)
                continue;
              dev->auth_support[auth_alg_index (alg)] = 1;
              alg->resources += vec_len (dev->free_resources);
              /* At least enough resources to support one algo */
              dcm->enabled |= (alg->resources >= n_mains);
            }
          break;
        default:
          ;
        }
    }
}

crypto_scan_devs() calls crypto_parse_capabilities() within a loop over 
cryptodevs.
The code appears to be comparing the resources of each cryptodev to the total 
number,
n_mains.  Should the code be comparing the sum of resources (from all of the 
cryptodevs)
to the total value, n_mains?


-    Lee


From: vpp-dev@lists.fd.io [mailto:vpp-dev@lists.fd.io] On Behalf Of Sergio 
Gonzalez Monroy
Sent: Wednesday, January 30, 2019 1:59 PM
To: Roberts, Lee A. <lee.robe...@hpe.com>; manuel.alo...@cavium.com; 
vpp-dev@lists.fd.io
Subject: Re: [vpp-dev] Question about crypto dev queue pairs #vpp

Hi folks,

Give the following patch a try and let me know.
https://gerrit.fd.io/r/#/c/17184/

I have done some very basic testing with SW cryptodev with single queue pair 
and all seems fine.

Let me know if there is any issue with it.

Regards,
Sergio
________________________________
From: Roberts, Lee A. <lee.robe...@hpe.com<mailto:lee.robe...@hpe.com>>
Sent: Tuesday, January 29, 2019 3:49 PM
To: Sergio Gonzalez Monroy; 
manuel.alo...@cavium.com<mailto:manuel.alo...@cavium.com>; 
vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>
Subject: RE: [vpp-dev] Question about crypto dev queue pairs #vpp


Sergio,



I encountered the same problem when attempting to enable the AMD CCP poll mode 
driver

in VPP 18.10.



As mentioned earlier in this e-mail thread, with max_qp = 1, max_res_idx 
becomes 65535

in the following statement:



     max_res_idx = (dev->max_qp / 2) - 1;



I hadn't found the time to study/debug the code to understand whether this was a

VPP or DPDK issue.  If you have a patch available in the next few days, I could

test it with the AMD CCP device.



-    Lee Roberts





From: vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> 
[mailto:vpp-dev@lists.fd.io] On Behalf Of Sergio Gonzalez Monroy
Sent: Tuesday, January 29, 2019 2:18 AM
To: manuel.alo...@cavium.com<mailto:manuel.alo...@cavium.com>; 
vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>
Subject: Re: [vpp-dev] Question about crypto dev queue pairs #vpp



Hi Manuel,



This is likely a mismatch in VPP side. I only tested it with QAT (2 qps per VF) 
and SW cryptodevs (default 8 qps) at the time (over a year ago).



I only tested it with SW cryptodevs and QAT, that was the HW I had access to.



So like I mentioned before, if you do not want to rework the code to support 1 
qp per resource, then a check for at least 2 qps per device is required to use 
that device.



I could provide a patch to use 1 pq per resource over the next few days if you 
are interested in it or could review if you decide to do the work.



Which device do you want to use?



Regards,

Sergio

________________________________

From: vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> 
<vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>> on behalf of 
manuel.alo...@cavium.com<mailto:manuel.alo...@cavium.com> 
<manuel.alo...@cavium.com<mailto:manuel.alo...@cavium.com>>
Sent: Monday, January 28, 2019 4:15 PM
To: vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>
Subject: Re: [vpp-dev] Question about crypto dev queue pairs #vpp



Hi Sergio,

thank you for the explanation, I see that there are 2 (or more qps). My concern 
was due to dpdk, since there are a few device drivers exporting only one queue 
pair for their crypto devices.
(I followed the code assuming one qps, based on a dpdk-18.11 exported value)
So I do not know where is the mismatching, vpp or dpdk?


BR,
Manuel
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#12133): https://lists.fd.io/g/vpp-dev/message/12133
Mute This Topic: https://lists.fd.io/mt/29538345/21656
Mute #vpp: https://lists.fd.io/mk?hashtag=vpp&subid=1480452
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to