Hi, I'm experiencing some issues using the flow API and a intel XXV710 (i40e). I managed to reproduce it in the flow filtering sample. I'm creating one flow than deleting it and then creating another with basic change #define SRC_IP ((0<<24) + (0<<16) + (0<<8) + 0) /* src ip = 0.0.0.0 */ #define SRC_IP_1 ((192<<24) + (168<<16) + (1<<8) + 3) /* dest ip = 192.168.1.1 */ #define DEST_IP ((192<<24) + (168<<16) + (1<<8) + 1) /* dest ip = 192.168.1.1 */ #define DEST_IP_1 ((192<<24) + (168<<16) + (1<<8) + 2) /* dest ip = 192.168.1.1 */ flow = generate_ipv4_flow(port_id, selected_queue, SRC_IP, EMPTY_MASK, DEST_IP, FULL_MASK, &error); if (!flow) { printf("Flow can't be created %d message: %s\n", error.type, error.message ? error.message : "(no stated reason)"); rte_exit(EXIT_FAILURE, "error in creating flow"); } //Deleting the rule int returned; returned = rte_flow_destroy(port_id, flow, &error); if(returned < 0) { printf("destroy %d message: %s\n", error.type, error.message ? error.message : "(no stated reason)"); } //Generating another rule flow1 = generate_ipv4_flow(port_id, selected_queue, SRC_IP_1, FULL_MASK, DEST_IP_1, FULL_MASK, &error); if (!flow1) { printf("Flow can't be created %d message: %s\n", error.type, error.message ? error.message : "(no stated reason)"); rte_exit(EXIT_FAILURE, "error in creating flow"); } When doing that I always get an error on the second flow I want to add. Flow can't be created 13 message: Conflict with the first rule's input set. The rule is indeed in conflict because it uses the same as the previous but with the source IP changing and also the destination IP. The strange thing is that a destroy has been made on the previous rule and should not be there anymore.... Am I doing something wrong or is there a bug in the destroy function ? Thank you in advance for your answer, Regards, Antoine Pollenus
I've also test using directly the flow director capabilities using ethtool and there it seems there is no issues I can make the same work flow as I want. I've also test through DPDK with a XL710 (40G) and I have the same issues it seems the issue come from someware in the i40e functions. Maybe the validate. This is really blocking for us and I have no idea how to fix that or any work around. thank you in advance for your help, regards Antoine Pollenus
Hi,
What's the DPDK version you used? With the latest DPDK version, there's no such issue.
BR,
Beilei
> -----Original Message-----
> From: users <users-bounces@dpdk.org> On Behalf Of Antoine POLLENUS
> Sent: Tuesday, May 25, 2021 8:34 PM
> To: users@dpdk.org
> Subject: [dpdk-users] Issues with rte_flow_destroy
>
> Hi,
>
> I'm experiencing some issues using the flow API and a intel XXV710 (i40e).
>
> I managed to reproduce it in the flow filtering sample.
>
> I'm creating one flow than deleting it and then creating another with basic
> change #define SRC_IP ((0<<24) + (0<<16) + (0<<8) + 0) /* src ip = 0.0.0.0 */
> #define SRC_IP_1 ((192<<24) + (168<<16) + (1<<8) + 3) /* dest ip = 192.168.1.1
> */ #define DEST_IP ((192<<24) + (168<<16) + (1<<8) + 1) /* dest ip = 192.168.1.1
> */ #define DEST_IP_1 ((192<<24) + (168<<16) + (1<<8) + 2) /* dest ip =
> 192.168.1.1 */
>
> flow = generate_ipv4_flow(port_id, selected_queue,
> SRC_IP, EMPTY_MASK,
> DEST_IP, FULL_MASK, &error);
> if (!flow) {
> printf("Flow can't be created %d message: %s\n",
> error.type,
> error.message ? error.message : "(no stated reason)");
> rte_exit(EXIT_FAILURE, "error in creating flow");
> }
> //Deleting the rule
> int returned;
> returned = rte_flow_destroy(port_id, flow, &error);
> if(returned < 0)
> {
> printf("destroy %d message: %s\n",
> error.type,
> error.message ? error.message : "(no stated reason)");
> }
> //Generating another rule
> flow1 = generate_ipv4_flow(port_id, selected_queue,
> SRC_IP_1, FULL_MASK,
> DEST_IP_1, FULL_MASK, &error);
> if (!flow1) {
> printf("Flow can't be created %d message: %s\n",
> error.type,
> error.message ? error.message : "(no stated reason)");
> rte_exit(EXIT_FAILURE, "error in creating flow");
> }
>
> When doing that I always get an error on the second flow I want to add.
>
> Flow can't be created 13 message: Conflict with the first rule's input set.
>
> The rule is indeed in conflict because it uses the same as the previous but with
> the source IP changing and also the destination IP.
>
> The strange thing is that a destroy has been made on the previous rule and
> should not be there anymore....
>
> Am I doing something wrong or is there a bug in the destroy function ?
>
> Thank you in advance for your answer,
>
> Regards,
>
> Antoine Pollenus
I tried with various version starting from 19.11 to the latest. Could it be an issue with the firmware of the intel cards I'm using ? If yes how can I get that firmware version ? Have you tried with my code in the flow_filtering example ? Regards, Antoine Pollenus
Hello, I've also tried with a broadcom P225P and I have an other issues there. I have an error on the destroy filter. bnxt_hwrm_clear_ntuple_filter(): error 1:16:00c00014:0000 destroy 2 message: Failed to destroy flow. I'm really asking myself if I'm doing something wrong and I really need some help on my issues. Regards, Antoine Pollenus