LCOV - code coverage report
Current view: top level - app/test-flow-perf - flow_gen.c (source / functions) Hit Total Coverage
Test: Code coverage Lines: 0 18 0.0 %
Date: 2024-12-01 18:57:19 Functions: 0 2 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: BSD-3-Clause
       2                 :            :  * Copyright 2020 Mellanox Technologies, Ltd
       3                 :            :  *
       4                 :            :  * The file contains the implementations of the method to
       5                 :            :  * fill items, actions & attributes in their corresponding
       6                 :            :  * arrays, and then generate rte_flow rule.
       7                 :            :  *
       8                 :            :  * After the generation. The rule goes to validation then
       9                 :            :  * creation state and then return the results.
      10                 :            :  */
      11                 :            : 
      12                 :            : #include <stdint.h>
      13                 :            : 
      14                 :            : #include "flow_gen.h"
      15                 :            : #include "items_gen.h"
      16                 :            : #include "actions_gen.h"
      17                 :            : #include "config.h"
      18                 :            : 
      19                 :            : static void
      20                 :          0 : fill_attributes(struct rte_flow_attr *attr,
      21                 :            :         uint64_t *flow_attrs, uint16_t group, uint8_t max_priority)
      22                 :            : {
      23                 :            :         uint8_t i;
      24                 :          0 :         for (i = 0; i < MAX_ATTRS_NUM; i++) {
      25                 :          0 :                 if (flow_attrs[i] == 0)
      26                 :            :                         break;
      27                 :          0 :                 if (flow_attrs[i] & INGRESS)
      28                 :          0 :                         attr->ingress = 1;
      29                 :          0 :                 else if (flow_attrs[i] & EGRESS)
      30                 :          0 :                         attr->egress = 1;
      31                 :          0 :                 else if (flow_attrs[i] & TRANSFER)
      32                 :          0 :                         attr->transfer = 1;
      33                 :            :         }
      34                 :          0 :         attr->group = group;
      35                 :          0 :         attr->priority = rte_rand_max(max_priority);
      36                 :          0 : }
      37                 :            : 
      38                 :            : struct rte_flow *
      39                 :          0 : generate_flow(uint16_t port_id,
      40                 :            :         uint16_t group,
      41                 :            :         uint64_t *flow_attrs,
      42                 :            :         uint64_t *flow_items,
      43                 :            :         uint64_t *flow_actions,
      44                 :            :         uint16_t next_table,
      45                 :            :         uint32_t outer_ip_src,
      46                 :            :         uint16_t hairpinq,
      47                 :            :         uint64_t encap_data,
      48                 :            :         uint64_t decap_data,
      49                 :            :         uint16_t dst_port,
      50                 :            :         uint8_t core_idx,
      51                 :            :         uint8_t rx_queues_count,
      52                 :            :         bool unique_data,
      53                 :            :         uint8_t max_priority,
      54                 :            :         struct rte_flow_error *error)
      55                 :            : {
      56                 :            :         struct rte_flow_attr attr;
      57                 :            :         struct rte_flow_item items[MAX_ITEMS_NUM];
      58                 :            :         struct rte_flow_action actions[MAX_ACTIONS_NUM];
      59                 :            :         struct rte_flow *flow = NULL;
      60                 :            : 
      61                 :            :         memset(items, 0, sizeof(items));
      62                 :            :         memset(actions, 0, sizeof(actions));
      63                 :            :         memset(&attr, 0, sizeof(struct rte_flow_attr));
      64                 :            : 
      65                 :          0 :         fill_attributes(&attr, flow_attrs, group, max_priority);
      66                 :            : 
      67                 :          0 :         fill_actions(actions, flow_actions,
      68                 :            :                 outer_ip_src, next_table, hairpinq,
      69                 :            :                 encap_data, decap_data, core_idx,
      70                 :            :                 unique_data, rx_queues_count, dst_port);
      71                 :            : 
      72                 :          0 :         fill_items(items, flow_items, outer_ip_src, core_idx);
      73                 :            : 
      74                 :          0 :         flow = rte_flow_create(port_id, &attr, items, actions, error);
      75                 :          0 :         return flow;
      76                 :            : }

Generated by: LCOV version 1.14