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

Reply via email to