From: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
To: dev@dpdk.org
Cc: Kishore Padmanabha <kishore.padmanabha@broadcom.com>,
Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Subject: [dpdk-dev] [PATCH v2 26/34] net/bnxt: add support for rte flow action parsing
Date: Tue, 14 Apr 2020 01:10:03 +0530 [thread overview]
Message-ID: <1586806811-21736-27-git-send-email-venkatkumar.duvvuru@broadcom.com> (raw)
In-Reply-To: <1586806811-21736-1-git-send-email-venkatkumar.duvvuru@broadcom.com>
From: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
This patch does the following
1. Registers a callback handler for each rte_flow_action type, if
it is supported
2. Iterates through each rte_flow_action till RTE_FLOW_ACTION_TYPE_END
3. Invokes the action call back handler
4. Each action call back handler will populate the respective fields in
act_details & act_bitmap
Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Reviewed-by: Lance Richardson <lance.richardson@broadcom.com>
Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
---
drivers/net/bnxt/tf_ulp/bnxt_tf_common.h | 7 +
drivers/net/bnxt/tf_ulp/ulp_rte_parser.c | 441 ++++++++++++++++++++++++++
drivers/net/bnxt/tf_ulp/ulp_rte_parser.h | 85 ++++-
drivers/net/bnxt/tf_ulp/ulp_template_db.c | 199 ++++++++++++
drivers/net/bnxt/tf_ulp/ulp_template_db.h | 7 +
drivers/net/bnxt/tf_ulp/ulp_template_struct.h | 13 +
6 files changed, 751 insertions(+), 1 deletion(-)
diff --git a/drivers/net/bnxt/tf_ulp/bnxt_tf_common.h b/drivers/net/bnxt/tf_ulp/bnxt_tf_common.h
index e4ebfc5..f417579 100644
--- a/drivers/net/bnxt/tf_ulp/bnxt_tf_common.h
+++ b/drivers/net/bnxt/tf_ulp/bnxt_tf_common.h
@@ -31,6 +31,13 @@ enum bnxt_tf_rc {
BNXT_TF_RC_SUCCESS = 0
};
+/* eth IPv4 Type */
+enum bnxt_ulp_eth_ip_type {
+ BNXT_ULP_ETH_IPV4 = 4,
+ BNXT_ULP_ETH_IPV6 = 5,
+ BNXT_ULP_MAX_ETH_IP_TYPE = 0
+};
+
/* ulp direction Type */
enum ulp_direction_type {
ULP_DIR_INGRESS,
diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
index 3ffdcbd..7a31b43 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
@@ -30,6 +30,21 @@ static inline void ulp_util_field_int_write(uint8_t *buffer,
memcpy(buffer, &temp_val, sizeof(uint32_t));
}
+/* Utility function to skip the void items. */
+static inline int32_t
+ulp_rte_item_skip_void(const struct rte_flow_item **item, uint32_t increment)
+{
+ if (!*item)
+ return 0;
+ if (increment)
+ (*item)++;
+ while ((*item) && (*item)->type == RTE_FLOW_ITEM_TYPE_VOID)
+ (*item)++;
+ if (*item)
+ return 1;
+ return 0;
+}
+
/*
* Function to handle the parsing of RTE Flows and placing
* the RTE flow items into the ulp structures.
@@ -73,6 +88,45 @@ bnxt_ulp_rte_parser_hdr_parse(const struct rte_flow_item pattern[],
return BNXT_TF_RC_SUCCESS;
}
+/*
+ * Function to handle the parsing of RTE Flows and placing
+ * the RTE flow actions into the ulp structures.
+ */
+int32_t
+bnxt_ulp_rte_parser_act_parse(const struct rte_flow_action actions[],
+ struct ulp_rte_act_bitmap *act_bitmap,
+ struct ulp_rte_act_prop *act_prop)
+{
+ const struct rte_flow_action *action_item = actions;
+ struct bnxt_ulp_rte_act_info *hdr_info;
+
+ /* Parse all the items in the pattern */
+ while (action_item && action_item->type != RTE_FLOW_ACTION_TYPE_END) {
+ /* get the header information from the flow_hdr_info table */
+ hdr_info = &ulp_act_info[action_item->type];
+ if (hdr_info->act_type ==
+ BNXT_ULP_ACT_TYPE_NOT_SUPPORTED) {
+ BNXT_TF_DBG(ERR,
+ "Truflow parser does not support act %u\n",
+ action_item->type);
+ return BNXT_TF_RC_ERROR;
+ } else if (hdr_info->act_type ==
+ BNXT_ULP_ACT_TYPE_SUPPORTED) {
+ /* call the registered callback handler */
+ if (hdr_info->proto_act_func) {
+ if (hdr_info->proto_act_func(action_item,
+ act_bitmap,
+ act_prop) !=
+ BNXT_TF_RC_SUCCESS) {
+ return BNXT_TF_RC_ERROR;
+ }
+ }
+ }
+ action_item++;
+ }
+ return BNXT_TF_RC_SUCCESS;
+}
+
/* Function to handle the parsing of RTE Flow item PF Header. */
static int32_t
ulp_rte_parser_svif_set(struct ulp_rte_hdr_bitmap *hdr_bitmap,
@@ -765,3 +819,390 @@ ulp_rte_void_hdr_handler(const struct rte_flow_item *item __rte_unused,
{
return BNXT_TF_RC_SUCCESS;
}
+
+/* Function to handle the parsing of RTE Flow action void Header. */
+int32_t
+ulp_rte_void_act_handler(const struct rte_flow_action *action_item __rte_unused,
+ struct ulp_rte_act_bitmap *act __rte_unused,
+ struct ulp_rte_act_prop *act_prop __rte_unused)
+{
+ return BNXT_TF_RC_SUCCESS;
+}
+
+/* Function to handle the parsing of RTE Flow action Mark Header. */
+int32_t
+ulp_rte_mark_act_handler(const struct rte_flow_action *action_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop)
+{
+ const struct rte_flow_action_mark *mark;
+ uint32_t mark_id = 0;
+
+ mark = action_item->conf;
+ if (mark) {
+ mark_id = tfp_cpu_to_be_32(mark->id);
+ memcpy(&act_prop->act_details[BNXT_ULP_ACT_PROP_IDX_MARK],
+ &mark_id, BNXT_ULP_ACT_PROP_SZ_MARK);
+
+ /* Update the hdr_bitmap with vxlan */
+ ULP_BITMAP_SET(act->bits, BNXT_ULP_ACTION_BIT_MARK);
+ return BNXT_TF_RC_SUCCESS;
+ }
+ BNXT_TF_DBG(ERR, "Parse Error: Mark arg is invalid\n");
+ return BNXT_TF_RC_ERROR;
+}
+
+/* Function to handle the parsing of RTE Flow action RSS Header. */
+int32_t
+ulp_rte_rss_act_handler(const struct rte_flow_action *action_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop __rte_unused)
+{
+ const struct rte_flow_action_rss *rss;
+
+ rss = action_item->conf;
+ if (rss) {
+ /* Update the hdr_bitmap with vxlan */
+ ULP_BITMAP_SET(act->bits, BNXT_ULP_ACTION_BIT_RSS);
+ return BNXT_TF_RC_SUCCESS;
+ }
+ BNXT_TF_DBG(ERR, "Parse Error: RSS arg is invalid\n");
+ return BNXT_TF_RC_ERROR;
+}
+
+/* Function to handle the parsing of RTE Flow action vxlan_encap Header. */
+int32_t
+ulp_rte_vxlan_encap_act_handler(const struct rte_flow_action *action_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *ap)
+{
+ const struct rte_flow_action_vxlan_encap *vxlan_encap;
+ const struct rte_flow_item *item;
+ const struct rte_flow_item_eth *eth_spec;
+ const struct rte_flow_item_ipv4 *ipv4_spec;
+ const struct rte_flow_item_ipv6 *ipv6_spec;
+ struct rte_flow_item_vxlan vxlan_spec;
+ uint32_t vlan_num = 0, vlan_size = 0;
+ uint32_t ip_size = 0, ip_type = 0;
+ uint32_t vxlan_size = 0;
+ uint8_t *buff;
+ /* IP header per byte - ver/hlen, TOS, ID, ID, FRAG, FRAG, TTL, PROTO */
+ const uint8_t def_ipv4_hdr[] = {0x45, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x40, 0x11};
+
+ vxlan_encap = action_item->conf;
+ if (!vxlan_encap) {
+ BNXT_TF_DBG(ERR, "Parse Error: Vxlan_encap arg is invalid\n");
+ return BNXT_TF_RC_ERROR;
+ }
+
+ item = vxlan_encap->definition;
+ if (!item) {
+ BNXT_TF_DBG(ERR, "Parse Error: definition arg is invalid\n");
+ return BNXT_TF_RC_ERROR;
+ }
+
+ if (!ulp_rte_item_skip_void(&item, 0))
+ return BNXT_TF_RC_ERROR;
+
+ /* must have ethernet header */
+ if (item->type != RTE_FLOW_ITEM_TYPE_ETH) {
+ BNXT_TF_DBG(ERR, "Parse Error:vxlan encap does not have eth\n");
+ return BNXT_TF_RC_ERROR;
+ }
+ eth_spec = item->spec;
+ buff = &ap->act_details[BNXT_ULP_ACT_PROP_IDX_ENCAP_L2_DMAC];
+ ulp_encap_buffer_copy(buff,
+ eth_spec->dst.addr_bytes,
+ BNXT_ULP_ACT_PROP_SZ_ENCAP_L2_DMAC);
+
+ /* Goto the next item */
+ if (!ulp_rte_item_skip_void(&item, 1))
+ return BNXT_TF_RC_ERROR;
+
+ /* May have vlan header */
+ if (item->type == RTE_FLOW_ITEM_TYPE_VLAN) {
+ vlan_num++;
+ buff = &ap->act_details[BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG];
+ ulp_encap_buffer_copy(buff,
+ item->spec,
+ sizeof(struct rte_flow_item_vlan));
+
+ if (!ulp_rte_item_skip_void(&item, 1))
+ return BNXT_TF_RC_ERROR;
+ }
+
+ /* may have two vlan headers */
+ if (item->type == RTE_FLOW_ITEM_TYPE_VLAN) {
+ vlan_num++;
+ memcpy(&ap->act_details[BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG +
+ sizeof(struct rte_flow_item_vlan)],
+ item->spec,
+ sizeof(struct rte_flow_item_vlan));
+ if (!ulp_rte_item_skip_void(&item, 1))
+ return BNXT_TF_RC_ERROR;
+ }
+ /* Update the vlan count and size of more than one */
+ if (vlan_num) {
+ vlan_size = vlan_num * sizeof(struct rte_flow_item_vlan);
+ vlan_num = tfp_cpu_to_be_32(vlan_num);
+ memcpy(&ap->act_details[BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_NUM],
+ &vlan_num,
+ sizeof(uint32_t));
+ vlan_size = tfp_cpu_to_be_32(vlan_size);
+ memcpy(&ap->act_details[BNXT_ULP_ACT_PROP_IDX_ENCAP_VTAG_SZ],
+ &vlan_size,
+ sizeof(uint32_t));
+ }
+
+ /* L3 must be IPv4, IPv6 */
+ if (item->type == RTE_FLOW_ITEM_TYPE_IPV4) {
+ ipv4_spec = item->spec;
+ ip_size = BNXT_ULP_ENCAP_IPV4_SIZE;
+
+ /* copy the ipv4 details */
+ if (ulp_buffer_is_empty(&ipv4_spec->hdr.version_ihl,
+ BNXT_ULP_ENCAP_IPV4_VER_HLEN_TOS)) {
+ buff = &ap->act_details[BNXT_ULP_ACT_PROP_IDX_ENCAP_IP];
+ ulp_encap_buffer_copy(buff,
+ def_ipv4_hdr,
+ BNXT_ULP_ENCAP_IPV4_VER_HLEN_TOS +
+ BNXT_ULP_ENCAP_IPV4_ID_PROTO);
+ } else {
+ const uint8_t *tmp_buff;
+
+ buff = &ap->act_details[BNXT_ULP_ACT_PROP_IDX_ENCAP_IP];
+ ulp_encap_buffer_copy(buff,
+ &ipv4_spec->hdr.version_ihl,
+ BNXT_ULP_ENCAP_IPV4_VER_HLEN_TOS);
+ buff = &ap->act_details[BNXT_ULP_ACT_PROP_IDX_ENCAP_IP +
+ BNXT_ULP_ENCAP_IPV4_VER_HLEN_TOS];
+ tmp_buff = (const uint8_t *)&ipv4_spec->hdr.packet_id;
+ ulp_encap_buffer_copy(buff,
+ tmp_buff,
+ BNXT_ULP_ENCAP_IPV4_ID_PROTO);
+ }
+ buff = &ap->act_details[BNXT_ULP_ACT_PROP_IDX_ENCAP_IP +
+ BNXT_ULP_ENCAP_IPV4_VER_HLEN_TOS +
+ BNXT_ULP_ENCAP_IPV4_ID_PROTO];
+ ulp_encap_buffer_copy(buff,
+ (const uint8_t *)&ipv4_spec->hdr.dst_addr,
+ BNXT_ULP_ENCAP_IPV4_DEST_IP);
+
+ /* Update the ip size details */
+ ip_size = tfp_cpu_to_be_32(ip_size);
+ memcpy(&ap->act_details[BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ],
+ &ip_size, sizeof(uint32_t));
+
+ /* update the ip type */
+ ip_type = rte_cpu_to_be_32(BNXT_ULP_ETH_IPV4);
+ memcpy(&ap->act_details[BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE],
+ &ip_type, sizeof(uint32_t));
+
+ if (!ulp_rte_item_skip_void(&item, 1))
+ return BNXT_TF_RC_ERROR;
+ } else if (item->type == RTE_FLOW_ITEM_TYPE_IPV6) {
+ ipv6_spec = item->spec;
+ ip_size = BNXT_ULP_ENCAP_IPV6_SIZE;
+
+ /* copy the ipv4 details */
+ memcpy(&ap->act_details[BNXT_ULP_ACT_PROP_IDX_ENCAP_IP],
+ ipv6_spec, BNXT_ULP_ENCAP_IPV6_SIZE);
+
+ /* Update the ip size details */
+ ip_size = tfp_cpu_to_be_32(ip_size);
+ memcpy(&ap->act_details[BNXT_ULP_ACT_PROP_IDX_ENCAP_IP_SZ],
+ &ip_size, sizeof(uint32_t));
+
+ /* update the ip type */
+ ip_type = rte_cpu_to_be_32(BNXT_ULP_ETH_IPV6);
+ memcpy(&ap->act_details[BNXT_ULP_ACT_PROP_IDX_ENCAP_L3_TYPE],
+ &ip_type, sizeof(uint32_t));
+
+ if (!ulp_rte_item_skip_void(&item, 1))
+ return BNXT_TF_RC_ERROR;
+ } else {
+ BNXT_TF_DBG(ERR, "Parse Error: Vxlan Encap expects L3 hdr\n");
+ return BNXT_TF_RC_ERROR;
+ }
+
+ /* L4 is UDP */
+ if (item->type != RTE_FLOW_ITEM_TYPE_UDP) {
+ BNXT_TF_DBG(ERR, "vxlan encap does not have udp\n");
+ return BNXT_TF_RC_ERROR;
+ }
+ /* copy the udp details */
+ ulp_encap_buffer_copy(&ap->act_details[BNXT_ULP_ACT_PROP_IDX_ENCAP_UDP],
+ item->spec, BNXT_ULP_ENCAP_UDP_SIZE);
+
+ if (!ulp_rte_item_skip_void(&item, 1))
+ return BNXT_TF_RC_ERROR;
+
+ /* Finally VXLAN */
+ if (item->type != RTE_FLOW_ITEM_TYPE_VXLAN) {
+ BNXT_TF_DBG(ERR, "vxlan encap does not have vni\n");
+ return BNXT_TF_RC_ERROR;
+ }
+ vxlan_size = sizeof(struct rte_flow_item_vxlan);
+ /* copy the vxlan details */
+ memcpy(&vxlan_spec, item->spec, vxlan_size);
+ vxlan_spec.flags = 0x08;
+ ulp_encap_buffer_copy(&ap->act_details[BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN],
+ (const uint8_t *)&vxlan_spec,
+ vxlan_size);
+ vxlan_size = tfp_cpu_to_be_32(vxlan_size);
+ memcpy(&ap->act_details[BNXT_ULP_ACT_PROP_IDX_ENCAP_TUN_SZ],
+ &vxlan_size, sizeof(uint32_t));
+
+ /*update the hdr_bitmap with vxlan */
+ ULP_BITMAP_SET(act->bits, BNXT_ULP_ACTION_BIT_VXLAN_ENCAP);
+ return BNXT_TF_RC_SUCCESS;
+}
+
+/* Function to handle the parsing of RTE Flow action vxlan_encap Header */
+int32_t
+ulp_rte_vxlan_decap_act_handler(const struct rte_flow_action *action_item
+ __rte_unused,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop __rte_unused)
+{
+ /* update the hdr_bitmap with vxlan */
+ ULP_BITMAP_SET(act->bits, BNXT_ULP_ACTION_BIT_VXLAN_DECAP);
+ return BNXT_TF_RC_SUCCESS;
+}
+
+/* Function to handle the parsing of RTE Flow action drop Header. */
+int32_t
+ulp_rte_drop_act_handler(const struct rte_flow_action *action_item __rte_unused,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop __rte_unused)
+{
+ /* Update the hdr_bitmap with drop */
+ ULP_BITMAP_SET(act->bits, BNXT_ULP_ACTION_BIT_DROP);
+ return BNXT_TF_RC_SUCCESS;
+}
+
+/* Function to handle the parsing of RTE Flow action count. */
+int32_t
+ulp_rte_count_act_handler(const struct rte_flow_action *action_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop __rte_unused)
+
+{
+ const struct rte_flow_action_count *act_count;
+
+ act_count = action_item->conf;
+ if (act_count) {
+ if (act_count->shared) {
+ BNXT_TF_DBG(ERR,
+ "Parse Error:Shared count not supported\n");
+ return BNXT_TF_RC_PARSE_ERR;
+ }
+ memcpy(&act_prop->act_details[BNXT_ULP_ACT_PROP_IDX_COUNT],
+ &act_count->id,
+ BNXT_ULP_ACT_PROP_SZ_COUNT);
+ }
+
+ /* Update the hdr_bitmap with count */
+ ULP_BITMAP_SET(act->bits, BNXT_ULP_ACTION_BIT_COUNT);
+ return BNXT_TF_RC_SUCCESS;
+}
+
+/* Function to handle the parsing of RTE Flow action PF. */
+int32_t
+ulp_rte_pf_act_handler(const struct rte_flow_action *action_item __rte_unused,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop)
+{
+ uint8_t *svif_buf;
+ uint8_t *vnic_buffer;
+ uint32_t svif;
+
+ /* Update the hdr_bitmap with vnic bit */
+ ULP_BITMAP_SET(act->bits, BNXT_ULP_ACTION_BIT_VNIC);
+
+ /* copy the PF of the current device into VNIC Property */
+ svif_buf = &act_prop->act_details[BNXT_ULP_ACT_PROP_IDX_VNIC];
+ ulp_util_field_int_read(svif_buf, &svif);
+ vnic_buffer = &act_prop->act_details[BNXT_ULP_ACT_PROP_IDX_VNIC];
+ ulp_util_field_int_write(vnic_buffer, svif);
+
+ return BNXT_TF_RC_SUCCESS;
+}
+
+/* Function to handle the parsing of RTE Flow action VF. */
+int32_t
+ulp_rte_vf_act_handler(const struct rte_flow_action *action_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop)
+{
+ const struct rte_flow_action_vf *vf_action;
+
+ vf_action = action_item->conf;
+ if (vf_action) {
+ if (vf_action->original) {
+ BNXT_TF_DBG(ERR,
+ "Parse Error:VF Original not supported\n");
+ return BNXT_TF_RC_PARSE_ERR;
+ }
+ /* TBD: Update the computed VNIC using VF conversion */
+ memcpy(&act_prop->act_details[BNXT_ULP_ACT_PROP_IDX_VNIC],
+ &vf_action->id,
+ BNXT_ULP_ACT_PROP_SZ_VNIC);
+ }
+
+ /* Update the hdr_bitmap with count */
+ ULP_BITMAP_SET(act->bits, BNXT_ULP_ACTION_BIT_VNIC);
+ return BNXT_TF_RC_SUCCESS;
+}
+
+/* Function to handle the parsing of RTE Flow action port_id. */
+int32_t
+ulp_rte_port_id_act_handler(const struct rte_flow_action *act_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop)
+{
+ const struct rte_flow_action_port_id *port_id;
+
+ port_id = act_item->conf;
+ if (port_id) {
+ if (port_id->original) {
+ BNXT_TF_DBG(ERR,
+ "ParseErr:Portid Original not supported\n");
+ return BNXT_TF_RC_PARSE_ERR;
+ }
+ /* TBD: Update the computed VNIC using port conversion */
+ memcpy(&act_prop->act_details[BNXT_ULP_ACT_PROP_IDX_VNIC],
+ &port_id->id,
+ BNXT_ULP_ACT_PROP_SZ_VNIC);
+ }
+
+ /* Update the hdr_bitmap with count */
+ ULP_BITMAP_SET(act->bits, BNXT_ULP_ACTION_BIT_VNIC);
+ return BNXT_TF_RC_SUCCESS;
+}
+
+/* Function to handle the parsing of RTE Flow action phy_port. */
+int32_t
+ulp_rte_phy_port_act_handler(const struct rte_flow_action *action_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop)
+{
+ const struct rte_flow_action_phy_port *phy_port;
+
+ phy_port = action_item->conf;
+ if (phy_port) {
+ if (phy_port->original) {
+ BNXT_TF_DBG(ERR,
+ "Parse Err:Port Original not supported\n");
+ return BNXT_TF_RC_PARSE_ERR;
+ }
+ memcpy(&act_prop->act_details[BNXT_ULP_ACT_PROP_IDX_VPORT],
+ &phy_port->index,
+ BNXT_ULP_ACT_PROP_SZ_VPORT);
+ }
+
+ /* Update the hdr_bitmap with count */
+ ULP_BITMAP_SET(act->bits, BNXT_ULP_ACTION_BIT_VPORT);
+ return BNXT_TF_RC_SUCCESS;
+}
diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h
index 3a7845d..0ab43d2 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h
@@ -12,6 +12,14 @@
#include "ulp_template_db.h"
#include "ulp_template_struct.h"
+/* defines to be used in the tunnel header parsing */
+#define BNXT_ULP_ENCAP_IPV4_VER_HLEN_TOS 2
+#define BNXT_ULP_ENCAP_IPV4_ID_PROTO 6
+#define BNXT_ULP_ENCAP_IPV4_DEST_IP 4
+#define BNXT_ULP_ENCAP_IPV4_SIZE 12
+#define BNXT_ULP_ENCAP_IPV6_SIZE 8
+#define BNXT_ULP_ENCAP_UDP_SIZE 4
+
/*
* Function to handle the parsing of RTE Flows and placing
* the RTE flow items into the ulp structures.
@@ -21,6 +29,15 @@ bnxt_ulp_rte_parser_hdr_parse(const struct rte_flow_item pattern[],
struct ulp_rte_hdr_bitmap *hdr_bitmap,
struct ulp_rte_hdr_field *hdr_field);
+/*
+ * Function to handle the parsing of RTE Flows and placing
+ * the RTE flow actions into the ulp structures.
+ */
+int32_t
+bnxt_ulp_rte_parser_act_parse(const struct rte_flow_action actions[],
+ struct ulp_rte_act_bitmap *act_bitmap,
+ struct ulp_rte_act_prop *act_prop);
+
/* Function to handle the parsing of RTE Flow item PF Header. */
int32_t
ulp_rte_pf_hdr_handler(const struct rte_flow_item *item,
@@ -45,7 +62,7 @@ ulp_rte_port_id_hdr_handler(const struct rte_flow_item *item,
uint32_t *field_idx,
uint32_t *vlan_idx);
-/* Function to handle the parsing of RTE Flow item port id Header. */
+/* Function to handle the parsing of RTE Flow item port Header. */
int32_t
ulp_rte_phy_port_hdr_handler(const struct rte_flow_item *item,
struct ulp_rte_hdr_bitmap *hdr_bitmap,
@@ -117,4 +134,70 @@ ulp_rte_void_hdr_handler(const struct rte_flow_item *item,
uint32_t *field_idx,
uint32_t *vlan_idx);
+/* Function to handle the parsing of RTE Flow action void Header. */
+int32_t
+ulp_rte_void_act_handler(const struct rte_flow_action *action_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop);
+
+/* Function to handle the parsing of RTE Flow action RSS Header. */
+int32_t
+ulp_rte_rss_act_handler(const struct rte_flow_action *action_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop);
+
+/* Function to handle the parsing of RTE Flow action Mark Header. */
+int32_t
+ulp_rte_mark_act_handler(const struct rte_flow_action *action_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop);
+
+/* Function to handle the parsing of RTE Flow action vxlan_encap Header. */
+int32_t
+ulp_rte_vxlan_encap_act_handler(const struct rte_flow_action *action_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop);
+
+/* Function to handle the parsing of RTE Flow action vxlan_encap Header. */
+int32_t
+ulp_rte_vxlan_decap_act_handler(const struct rte_flow_action *action_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop);
+
+/* Function to handle the parsing of RTE Flow action drop Header. */
+int32_t
+ulp_rte_drop_act_handler(const struct rte_flow_action *action_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop);
+
+/* Function to handle the parsing of RTE Flow action count. */
+int32_t
+ulp_rte_count_act_handler(const struct rte_flow_action *action_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop);
+
+/* Function to handle the parsing of RTE Flow action PF. */
+int32_t
+ulp_rte_pf_act_handler(const struct rte_flow_action *action_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop);
+
+/* Function to handle the parsing of RTE Flow action VF. */
+int32_t
+ulp_rte_vf_act_handler(const struct rte_flow_action *action_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop);
+
+/* Function to handle the parsing of RTE Flow action port_id. */
+int32_t
+ulp_rte_port_id_act_handler(const struct rte_flow_action *act_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_p);
+
+/* Function to handle the parsing of RTE Flow action phy_port. */
+int32_t
+ulp_rte_phy_port_act_handler(const struct rte_flow_action *action_item,
+ struct ulp_rte_act_bitmap *act,
+ struct ulp_rte_act_prop *act_prop);
+
#endif /* _ULP_RTE_PARSER_H_ */
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db.c b/drivers/net/bnxt/tf_ulp/ulp_template_db.c
index 1d15563..89572c7 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_db.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db.c
@@ -96,6 +96,205 @@ uint32_t ulp_act_prop_map_table[] = {
BNXT_ULP_ACT_PROP_SZ_LAST
};
+struct bnxt_ulp_rte_act_info ulp_act_info[] = {
+ [RTE_FLOW_ACTION_TYPE_END] = {
+ .act_type = BNXT_ULP_ACT_TYPE_END,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_VOID] = {
+ .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
+ .proto_act_func = ulp_rte_void_act_handler
+ },
+ [RTE_FLOW_ACTION_TYPE_PASSTHRU] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_JUMP] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_MARK] = {
+ .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
+ .proto_act_func = ulp_rte_mark_act_handler
+ },
+ [RTE_FLOW_ACTION_TYPE_FLAG] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_QUEUE] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_DROP] = {
+ .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
+ .proto_act_func = ulp_rte_drop_act_handler
+ },
+ [RTE_FLOW_ACTION_TYPE_COUNT] = {
+ .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
+ .proto_act_func = ulp_rte_count_act_handler
+ },
+ [RTE_FLOW_ACTION_TYPE_RSS] = {
+ .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
+ .proto_act_func = ulp_rte_rss_act_handler
+ },
+ [RTE_FLOW_ACTION_TYPE_PF] = {
+ .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
+ .proto_act_func = ulp_rte_pf_act_handler
+ },
+ [RTE_FLOW_ACTION_TYPE_VF] = {
+ .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
+ .proto_act_func = ulp_rte_vf_act_handler
+ },
+ [RTE_FLOW_ACTION_TYPE_PHY_PORT] = {
+ .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
+ .proto_act_func = ulp_rte_phy_port_act_handler
+ },
+ [RTE_FLOW_ACTION_TYPE_PORT_ID] = {
+ .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
+ .proto_act_func = ulp_rte_port_id_act_handler
+ },
+ [RTE_FLOW_ACTION_TYPE_METER] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_SECURITY] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_OF_SET_MPLS_TTL] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_OF_DEC_MPLS_TTL] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_OF_SET_NW_TTL] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_OUT] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_IN] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_OF_POP_VLAN] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_VID] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_OF_SET_VLAN_PCP] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_OF_POP_MPLS] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP] = {
+ .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
+ .proto_act_func = ulp_rte_vxlan_encap_act_handler
+ },
+ [RTE_FLOW_ACTION_TYPE_VXLAN_DECAP] = {
+ .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED,
+ .proto_act_func = ulp_rte_vxlan_decap_act_handler
+ },
+ [RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_NVGRE_DECAP] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_RAW_ENCAP] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_RAW_DECAP] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_SET_IPV4_DST] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_SET_IPV6_DST] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_SET_TP_SRC] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_SET_TP_DST] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_MAC_SWAP] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_DEC_TTL] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_SET_TTL] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_SET_MAC_SRC] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_SET_MAC_DST] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_INC_TCP_ACK] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ },
+ [RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK] = {
+ .act_type = BNXT_ULP_ACT_TYPE_NOT_SUPPORTED,
+ .proto_act_func = NULL
+ }
+};
+
struct bnxt_ulp_device_params ulp_device_params[] = {
[BNXT_ULP_DEVICE_ID_WH_PLUS] = {
.global_fid_enable = BNXT_ULP_SYM_YES,
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db.h b/drivers/net/bnxt/tf_ulp/ulp_template_db.h
index 906b542..dfab266 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_db.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db.h
@@ -74,6 +74,13 @@ enum bnxt_ulp_hdr_bit {
BNXT_ULP_HDR_BIT_LAST = 0x0000000000200000
};
+enum bnxt_ulp_act_type {
+ BNXT_ULP_ACT_TYPE_NOT_SUPPORTED = 0,
+ BNXT_ULP_ACT_TYPE_SUPPORTED = 1,
+ BNXT_ULP_ACT_TYPE_END = 2,
+ BNXT_ULP_ACT_TYPE_LAST = 3
+};
+
enum bnxt_ulp_byte_order {
BNXT_ULP_BYTE_ORDER_BE,
BNXT_ULP_BYTE_ORDER_LE,
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_struct.h b/drivers/net/bnxt/tf_ulp/ulp_template_struct.h
index 0699634..47c0dd8 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_struct.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_struct.h
@@ -72,6 +72,19 @@ struct ulp_rte_act_prop {
uint8_t act_details[BNXT_ULP_ACT_PROP_IDX_LAST];
};
+/* Flow Parser Action Information Structure */
+struct bnxt_ulp_rte_act_info {
+ enum bnxt_ulp_act_type act_type;
+ /* Flow Parser Protocol Action Function Prototype */
+ int32_t (*proto_act_func)
+ (const struct rte_flow_action *action_item,
+ struct ulp_rte_act_bitmap *act_bitmap,
+ struct ulp_rte_act_prop *act_prop);
+};
+
+/* Flow Parser Action Information Structure Array defined in template source*/
+extern struct bnxt_ulp_rte_act_info ulp_act_info[];
+
/* Flow Matcher structures */
struct bnxt_ulp_header_match_info {
struct ulp_rte_hdr_bitmap hdr_bitmap;
--
2.7.4
next prev parent reply other threads:[~2020-04-13 19:47 UTC|newest]
Thread overview: 154+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-17 15:37 [dpdk-dev] [PATCH 00/33] add support for host based flow table management Venkat Duvvuru
2020-03-17 15:37 ` [dpdk-dev] [PATCH 01/33] net/bnxt: add updated dpdk hsi structure Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 02/33] net/bnxt: update hwrm prep to use ptr Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 03/33] net/bnxt: add truflow message handlers Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 04/33] net/bnxt: add initial tf core session open Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 05/33] net/bnxt: add initial tf core session close support Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 06/33] net/bnxt: add tf core session sram functions Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 07/33] net/bnxt: add initial tf core resource mgmt support Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 08/33] net/bnxt: add resource manager functionality Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 09/33] net/bnxt: add tf core identifier support Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 10/33] net/bnxt: add tf core TCAM support Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 11/33] net/bnxt: add tf core table scope support Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 12/33] net/bnxt: add EM/EEM functionality Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 13/33] net/bnxt: fetch SVIF information from the firmware Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 14/33] net/bnxt: fetch vnic info from DPDK port Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 15/33] net/bnxt: add support for ULP session manager init Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 16/33] net/bnxt: add support for ULP session manager cleanup Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 17/33] net/bnxt: add helper functions for blob/regfile ops Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 18/33] net/bnxt: add support to process action tables Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 19/33] net/bnxt: add support to process key tables Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 20/33] net/bnxt: add support to free key and action tables Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 21/33] net/bnxt: add support to alloc and program key and act tbls Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 22/33] net/bnxt: match rte flow items with flow template patterns Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 23/33] net/bnxt: match rte flow actions with flow template actions Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 24/33] net/bnxt: add support for rte flow item parsing Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 25/33] net/bnxt: add support for rte flow action parsing Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 26/33] net/bnxt: add support for rte flow create driver hook Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 27/33] net/bnxt: add support for rte flow validate " Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 28/33] net/bnxt: add support for rte flow destroy " Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 29/33] net/bnxt: add support for rte flow flush " Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 30/33] net/bnxt: register tf rte flow ops Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 31/33] net/bnxt: disable vector mode when BNXT TRUFLOW is enabled Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 32/33] net/bnxt: add support for injecting mark into packet’s mbuf Venkat Duvvuru
2020-03-17 15:38 ` [dpdk-dev] [PATCH 33/33] config: introduce BNXT TRUFLOW config flag Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 00/34] add support for host based flow table management Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 01/34] net/bnxt: add updated dpdk hsi structure Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 02/34] net/bnxt: update hwrm prep to use ptr Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 03/34] net/bnxt: add truflow message handlers Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 04/34] net/bnxt: add initial tf core session open Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 05/34] net/bnxt: add initial tf core session close support Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 06/34] net/bnxt: add tf core session sram functions Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 07/34] net/bnxt: add initial tf core resource mgmt support Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 08/34] net/bnxt: add resource manager functionality Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 09/34] net/bnxt: add tf core identifier support Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 10/34] net/bnxt: add tf core TCAM support Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 11/34] net/bnxt: add tf core table scope support Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 12/34] net/bnxt: add EM/EEM functionality Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 13/34] net/bnxt: fetch SVIF information from the firmware Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 14/34] net/bnxt: fetch vnic info from DPDK port Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 15/34] net/bnxt: add devargs parameter for host memory based TRUFLOW feature Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 16/34] net/bnxt: add support for ULP session manager init Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 17/34] net/bnxt: add support for ULP session manager cleanup Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 18/34] net/bnxt: add helper functions for blob/regfile ops Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 19/34] net/bnxt: add support to process action tables Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 20/34] net/bnxt: add support to process key tables Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 21/34] net/bnxt: add support to free key and action tables Venkat Duvvuru
2020-04-13 19:39 ` [dpdk-dev] [PATCH v2 22/34] net/bnxt: add support to alloc and program key and act tbls Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 23/34] net/bnxt: match rte flow items with flow template patterns Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 24/34] net/bnxt: match rte flow actions with flow template actions Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 25/34] net/bnxt: add support for rte flow item parsing Venkat Duvvuru
2020-04-13 19:40 ` Venkat Duvvuru [this message]
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 27/34] net/bnxt: add support for rte flow create driver hook Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 28/34] net/bnxt: add support for rte flow validate " Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 29/34] net/bnxt: add support for rte flow destroy " Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 30/34] net/bnxt: add support for rte flow flush " Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 31/34] net/bnxt: register tf rte flow ops Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 32/34] net/bnxt: disable vector mode when host based TRUFLOW is enabled Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 33/34] net/bnxt: add support for injecting mark into packet’s mbuf Venkat Duvvuru
2020-04-13 19:40 ` [dpdk-dev] [PATCH v2 34/34] net/bnxt: enable meson build on truflow code Venkat Duvvuru
2020-04-13 21:35 ` [dpdk-dev] [PATCH v2 00/34] add support for host based flow table management Thomas Monjalon
2020-04-15 8:56 ` Venkat Duvvuru
2020-04-14 8:12 ` [dpdk-dev] [PATCH v3 " Venkat Duvvuru
2020-04-14 8:12 ` [dpdk-dev] [PATCH v3 01/34] net/bnxt: add updated dpdk hsi structure Venkat Duvvuru
2020-04-14 8:12 ` [dpdk-dev] [PATCH v3 02/34] net/bnxt: update hwrm prep to use ptr Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 03/34] net/bnxt: add truflow message handlers Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 04/34] net/bnxt: add initial tf core session open Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 05/34] net/bnxt: add initial tf core session close support Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 06/34] net/bnxt: add tf core session sram functions Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 07/34] net/bnxt: add initial tf core resource mgmt support Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 08/34] net/bnxt: add resource manager functionality Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 09/34] net/bnxt: add tf core identifier support Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 10/34] net/bnxt: add tf core TCAM support Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 11/34] net/bnxt: add tf core table scope support Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 12/34] net/bnxt: add EM/EEM functionality Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 13/34] net/bnxt: fetch SVIF information from the firmware Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 14/34] net/bnxt: fetch vnic info from DPDK port Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 15/34] net/bnxt: add devargs parameter for host memory based TRUFLOW feature Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 16/34] net/bnxt: add support for ULP session manager init Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 17/34] net/bnxt: add support for ULP session manager cleanup Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 18/34] net/bnxt: add helper functions for blob/regfile ops Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 19/34] net/bnxt: add support to process action tables Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 20/34] net/bnxt: add support to process key tables Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 21/34] net/bnxt: add support to free key and action tables Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 22/34] net/bnxt: add support to alloc and program key and act tbls Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 23/34] net/bnxt: match rte flow items with flow template patterns Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 24/34] net/bnxt: match rte flow actions with flow template actions Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 25/34] net/bnxt: add support for rte flow item parsing Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 26/34] net/bnxt: add support for rte flow action parsing Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 27/34] net/bnxt: add support for rte flow create driver hook Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 28/34] net/bnxt: add support for rte flow validate " Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 29/34] net/bnxt: add support for rte flow destroy " Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 30/34] net/bnxt: add support for rte flow flush " Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 31/34] net/bnxt: register tf rte flow ops Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 32/34] net/bnxt: disable vector mode when host based TRUFLOW is enabled Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 33/34] net/bnxt: add support for injecting mark into packet’s mbuf Venkat Duvvuru
2020-04-14 8:13 ` [dpdk-dev] [PATCH v3 34/34] net/bnxt: enable meson build on truflow code Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 00/34] add support for host based flow table management Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 01/34] net/bnxt: add updated dpdk hsi structure Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 02/34] net/bnxt: update hwrm prep to use ptr Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 03/34] net/bnxt: add truflow message handlers Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 04/34] net/bnxt: add initial tf core session open Venkat Duvvuru
2020-04-16 17:39 ` Ferruh Yigit
2020-04-16 17:47 ` Ajit Khaparde
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 05/34] net/bnxt: add initial tf core session close support Venkat Duvvuru
2020-04-16 17:39 ` Ferruh Yigit
2020-04-16 17:48 ` Ajit Khaparde
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 06/34] net/bnxt: add tf core session sram functions Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 07/34] net/bnxt: add initial tf core resource mgmt support Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 08/34] net/bnxt: add resource manager functionality Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 09/34] net/bnxt: add tf core identifier support Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 10/34] net/bnxt: add tf core TCAM support Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 11/34] net/bnxt: add tf core table scope support Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 12/34] net/bnxt: add EM/EEM functionality Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 13/34] net/bnxt: fetch SVIF information from the firmware Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 14/34] net/bnxt: fetch vnic info from DPDK port Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 15/34] net/bnxt: add devargs parameter for host memory based TRUFLOW feature Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 16/34] net/bnxt: add support for ULP session manager init Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 17/34] net/bnxt: add support for ULP session manager cleanup Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 18/34] net/bnxt: add helper functions for blob/regfile ops Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 19/34] net/bnxt: add support to process action tables Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 20/34] net/bnxt: add support to process key tables Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 21/34] net/bnxt: add support to free key and action tables Venkat Duvvuru
2020-04-15 8:18 ` [dpdk-dev] [PATCH v4 22/34] net/bnxt: add support to alloc and program key and act tbls Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 23/34] net/bnxt: match rte flow items with flow template patterns Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 24/34] net/bnxt: match rte flow actions with flow template actions Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 25/34] net/bnxt: add support for rte flow item parsing Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 26/34] net/bnxt: add support for rte flow action parsing Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 27/34] net/bnxt: add support for rte flow create driver hook Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 28/34] net/bnxt: add support for rte flow validate " Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 29/34] net/bnxt: add support for rte flow destroy " Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 30/34] net/bnxt: add support for rte flow flush " Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 31/34] net/bnxt: register tf rte flow ops Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 32/34] net/bnxt: disable vector mode when host based TRUFLOW is enabled Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 33/34] net/bnxt: add support for injecting mark into packet’s mbuf Venkat Duvvuru
2020-04-15 8:19 ` [dpdk-dev] [PATCH v4 34/34] net/bnxt: enable meson build on truflow code Venkat Duvvuru
2020-04-22 21:27 ` Thomas Monjalon
2020-04-15 15:29 ` [dpdk-dev] [PATCH v4 00/34] add support for host based flow table management Ajit Khaparde
2020-04-16 16:23 ` Ferruh Yigit
2020-04-16 16:38 ` Ajit Khaparde
2020-04-16 17:40 ` Ferruh Yigit
2020-04-16 17:51 ` Ajit Khaparde
2020-04-17 8:37 ` Ferruh Yigit
2020-04-17 11:03 ` Ferruh Yigit
2020-04-17 16:14 ` Ajit Khaparde
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1586806811-21736-27-git-send-email-venkatkumar.duvvuru@broadcom.com \
--to=venkatkumar.duvvuru@broadcom.com \
--cc=dev@dpdk.org \
--cc=kishore.padmanabha@broadcom.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).