[dpdk-dev] [PATCH v2 60/62] net/cnxk: support for rte flow dev dump API
Nithin Dabilpuram
ndabilpuram at marvell.com
Mon Jun 7 19:59:41 CEST 2021
From: Satheesh Paul <psatheesh at marvell.com>
Add support to dump hardware internal representation information of
rte flow to file.
Every flow rule added will be dumped in the below format.
MCAM Index:1881
Interface :NIX-RX (0)
Priority :1
NPC RX Action:0X00000000404001
ActionOp:NIX_RX_ACTIONOP_UCAST (1)
PF_FUNC: 0X400
RQ Index:0X004
Match Id:0000
Flow Key Alg:0
NPC RX VTAG Action:0X00000000008100
VTAG0:relptr:0
lid:0X1
type:0
Patterns:
NPC_PARSE_NIBBLE_CHAN:000
NPC_PARSE_NIBBLE_LA_LTYPE:LA_ETHER
NPC_PARSE_NIBBLE_LB_LTYPE:NONE
NPC_PARSE_NIBBLE_LC_LTYPE:LC_IP
NPC_PARSE_NIBBLE_LD_LTYPE:LD_TCP
NPC_PARSE_NIBBLE_LE_LTYPE:NONE
LA_ETHER, hdr offset:0, len:0X6, key offset:0X8,\
Data:0X4AE124FC7FFF, Mask:0XFFFFFFFFFFFF
LA_ETHER, hdr offset:0XC, len:0X2, key offset:0X4, Data:0XCA5A,\
Mask:0XFFFF
LC_IP, hdr offset:0XC, len:0X8, key offset:0X10,\
Data:0X0A01010300000000, Mask:0XFFFFFFFF00000000
LD_TCP, hdr offset:0, len:0X4, key offset:0X18, Data:0X03450000,\
Mask:0XFFFF0000
MCAM Raw Data :
DW0 :0000CA5A01202000
DW0_Mask:0000FFFF0FF0F000
DW1 :00004AE124FC7FFF
DW1_Mask:0000FFFFFFFFFFFF
DW2 :0A01010300000000
DW2_Mask:FFFFFFFF00000000
DW3 :0000000003450000
DW3_Mask:00000000FFFF0000
DW4 :0000000000000000
DW4_Mask:0000000000000000
DW5 :0000000000000000
DW5_Mask:0000000000000000
DW6 :0000000000000000
DW6_Mask:0000000000000000
ci: skip_checkpatch skip_checkformat
Signed-off-by: Satheesh Paul <psatheesh at marvell.com>
---
drivers/net/cnxk/cnxk_rte_flow.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/drivers/net/cnxk/cnxk_rte_flow.c b/drivers/net/cnxk/cnxk_rte_flow.c
index 8486e9e..453425e 100644
--- a/drivers/net/cnxk/cnxk_rte_flow.c
+++ b/drivers/net/cnxk/cnxk_rte_flow.c
@@ -328,6 +328,33 @@ cnxk_flow_isolate(struct rte_eth_dev *dev __rte_unused, int enable __rte_unused,
return -rte_errno;
}
+static int
+cnxk_flow_dev_dump(struct rte_eth_dev *dev, struct rte_flow *flow,
+ FILE *file, struct rte_flow_error *error)
+{
+ struct cnxk_eth_dev *hw = dev->data->dev_private;
+ struct roc_npc *npc = &hw->npc;
+
+ if (file == NULL) {
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
+ "Invalid file");
+ return -rte_errno;
+ }
+
+ if (flow != NULL) {
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_HANDLE,
+ NULL,
+ "Invalid argument");
+ return -EINVAL;
+ }
+
+ roc_npc_flow_dump(file, npc);
+
+ return 0;
+}
+
const struct rte_flow_ops cnxk_flow_ops = {
.validate = cnxk_flow_validate,
.create = cnxk_flow_create,
@@ -335,4 +362,5 @@ const struct rte_flow_ops cnxk_flow_ops = {
.flush = cnxk_flow_flush,
.query = cnxk_flow_query,
.isolate = cnxk_flow_isolate,
+ .dev_dump = cnxk_flow_dev_dump,
};
--
2.8.4
More information about the dev
mailing list