Bug 42

Summary: Crypto_mrvl error with multiple instances
Product: DPDK Reporter: Akhil Gupta (akhil.gupta)
Component: cryptodevAssignee: Akhil Gupta (akhil.gupta)
Status: IN_PROGRESS ---    
Severity: critical CC: ajit.khaparde, akhil.gupta, nsamsono
Priority: High    
Version: unspecified   
Target Milestone: ---   
Hardware: ARM   
OS: Linux   

Description Akhil Gupta 2018-05-09 09:40:11 CEST
Hi,
We are using DPDK over Marvell ARMADA 8040 processor and we have used all the MUSDK patches provided, to make our DPDK stack work.

But we are facing an issue while trying to use L2FWD-Crypto test application. Here we are trying to use crypto_mrvl with two instances and we are getting error on second one.
The command used is:
./l2fwd-crypto  -c 0x3 -n 4 --vdev=net_ring,iface=eth1,iface=eth0 --vdev=crypto_mrvl0 --vdev=crypto_mrvl1 -- \
  --cipher_op ENCRYPT --cipher_algo aes-cbc \
  --cipher_key 00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:0f  \
  --auth_op GENERATE --auth_algo sha1-hmac \
  --auth_key 10:11:12:13:14:15:16:17:18:19:1a:1b:1c:1d:1e:1f

While executing this, we are getting the errors:
[ERROR] Engine #0: Ring #0 is busy. Active rings map is 0x1
Failed to setup queue pair 0 on cryptodev 1EAL: Error - exiting with code: 1
  Cause: Failed to initialize crypto devices 


Can you please let us know if you see any issue is above command line being used.
In addition, can we use multiple instances for single crypto engine supported by Armada 8040?

Regards,
Akhil
Comment 1 Natalie 2018-05-17 13:31:05 CEST
(In reply to Akhil Gupta from comment #0)
> Hi,
> We are using DPDK over Marvell ARMADA 8040 processor and we have used all
> the MUSDK patches provided, to make our DPDK stack work.
> 
> But we are facing an issue while trying to use L2FWD-Crypto test
> application. Here we are trying to use crypto_mrvl with two instances and we
> are getting error on second one.
> The command used is:
> ./l2fwd-crypto  -c 0x3 -n 4 --vdev=net_ring,iface=eth1,iface=eth0
> --vdev=crypto_mrvl0 --vdev=crypto_mrvl1 -- \
>   --cipher_op ENCRYPT --cipher_algo aes-cbc \
>   --cipher_key 00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:0f  \
>   --auth_op GENERATE --auth_algo sha1-hmac \
>   --auth_key 10:11:12:13:14:15:16:17:18:19:1a:1b:1c:1d:1e:1f
> 
> While executing this, we are getting the errors:
> [ERROR] Engine #0: Ring #0 is busy. Active rings map is 0x1
> Failed to setup queue pair 0 on cryptodev 1EAL: Error - exiting with code: 1
>   Cause: Failed to initialize crypto devices 
> 
> 
> Can you please let us know if you see any issue is above command line being
> used.
> In addition, can we use multiple instances for single crypto engine
> supported by Armada 8040?
> 
> Regards,
> Akhil

It seems that was not loaded correctly.
Please verify that you doing it as below:

insmod crypto_safexcel.ko rings=0,0

Where:
rings=x,y means how many EIP197/EIP97 rings allocated for kernel usage:
x - for cp0 device
y - for cp1 device (if exist)
Comment 2 Ajit Khaparde 2018-07-15 06:42:49 CEST
Akhil,
Do you have an update? Did the suggested solution work?

Thanks
Ajit