ice_parser.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /* Copyright (C) 2024 Intel Corporation */
  3. #ifndef _ICE_PARSER_H_
  4. #define _ICE_PARSER_H_
  5. #define ICE_SEC_DATA_OFFSET 4
  6. #define ICE_SID_RXPARSER_IMEM_ENTRY_SIZE 48
  7. #define ICE_SID_RXPARSER_METADATA_INIT_ENTRY_SIZE 24
  8. #define ICE_SID_RXPARSER_CAM_ENTRY_SIZE 16
  9. #define ICE_SID_RXPARSER_PG_SPILL_ENTRY_SIZE 17
  10. #define ICE_SID_RXPARSER_NOMATCH_CAM_ENTRY_SIZE 12
  11. #define ICE_SID_RXPARSER_NOMATCH_SPILL_ENTRY_SIZE 13
  12. #define ICE_SID_RXPARSER_BOOST_TCAM_ENTRY_SIZE 88
  13. #define ICE_SID_RXPARSER_MARKER_TYPE_ENTRY_SIZE 24
  14. #define ICE_SID_RXPARSER_MARKER_GRP_ENTRY_SIZE 8
  15. #define ICE_SID_RXPARSER_PROTO_GRP_ENTRY_SIZE 24
  16. #define ICE_SID_RXPARSER_FLAG_REDIR_ENTRY_SIZE 1
  17. #define ICE_SEC_LBL_DATA_OFFSET 2
  18. #define ICE_SID_LBL_ENTRY_SIZE 66
  19. /*** ICE_SID_RXPARSER_IMEM section ***/
  20. #define ICE_IMEM_TABLE_SIZE 192
  21. /* TCAM boost Master; if bit is set, and TCAM hit, TCAM output overrides iMEM
  22. * output.
  23. */
  24. struct ice_bst_main {
  25. bool alu0;
  26. bool alu1;
  27. bool alu2;
  28. bool pg;
  29. };
  30. struct ice_bst_keybuilder {
  31. u8 prio; /* 0-3: PG precedence within ALUs (3 highest) */
  32. bool tsr_ctrl; /* TCAM Search Register control */
  33. };
  34. /* Next protocol Key builder */
  35. struct ice_np_keybuilder {
  36. u8 opc;
  37. u8 start_reg0;
  38. u8 len_reg1;
  39. };
  40. enum ice_np_keybuilder_opcode {
  41. ICE_NPKB_OPC_EXTRACT = 0,
  42. ICE_NPKB_OPC_BUILD = 1,
  43. ICE_NPKB_OPC_BYPASS = 2,
  44. };
  45. /* Parse Graph Key builder */
  46. struct ice_pg_keybuilder {
  47. bool flag0_ena;
  48. bool flag1_ena;
  49. bool flag2_ena;
  50. bool flag3_ena;
  51. u8 flag0_idx;
  52. u8 flag1_idx;
  53. u8 flag2_idx;
  54. u8 flag3_idx;
  55. u8 alu_reg_idx;
  56. };
  57. enum ice_alu_idx {
  58. ICE_ALU0_IDX = 0,
  59. ICE_ALU1_IDX = 1,
  60. ICE_ALU2_IDX = 2,
  61. };
  62. enum ice_alu_opcode {
  63. ICE_ALU_PARK = 0,
  64. ICE_ALU_MOV_ADD = 1,
  65. ICE_ALU_ADD = 2,
  66. ICE_ALU_MOV_AND = 4,
  67. ICE_ALU_AND = 5,
  68. ICE_ALU_AND_IMM = 6,
  69. ICE_ALU_MOV_OR = 7,
  70. ICE_ALU_OR = 8,
  71. ICE_ALU_MOV_XOR = 9,
  72. ICE_ALU_XOR = 10,
  73. ICE_ALU_NOP = 11,
  74. ICE_ALU_BR = 12,
  75. ICE_ALU_BREQ = 13,
  76. ICE_ALU_BRNEQ = 14,
  77. ICE_ALU_BRGT = 15,
  78. ICE_ALU_BRLT = 16,
  79. ICE_ALU_BRGEQ = 17,
  80. ICE_ALU_BRLEG = 18,
  81. ICE_ALU_SETEQ = 19,
  82. ICE_ALU_ANDEQ = 20,
  83. ICE_ALU_OREQ = 21,
  84. ICE_ALU_SETNEQ = 22,
  85. ICE_ALU_ANDNEQ = 23,
  86. ICE_ALU_ORNEQ = 24,
  87. ICE_ALU_SETGT = 25,
  88. ICE_ALU_ANDGT = 26,
  89. ICE_ALU_ORGT = 27,
  90. ICE_ALU_SETLT = 28,
  91. ICE_ALU_ANDLT = 29,
  92. ICE_ALU_ORLT = 30,
  93. ICE_ALU_MOV_SUB = 31,
  94. ICE_ALU_SUB = 32,
  95. ICE_ALU_INVALID = 64,
  96. };
  97. enum ice_proto_off_opcode {
  98. ICE_PO_OFF_REMAIN = 0,
  99. ICE_PO_OFF_HDR_ADD = 1,
  100. ICE_PO_OFF_HDR_SUB = 2,
  101. };
  102. struct ice_alu {
  103. enum ice_alu_opcode opc;
  104. u8 src_start;
  105. u8 src_len;
  106. bool shift_xlate_sel;
  107. u8 shift_xlate_key;
  108. u8 src_reg_id;
  109. u8 dst_reg_id;
  110. bool inc0;
  111. bool inc1;
  112. u8 proto_offset_opc;
  113. u8 proto_offset;
  114. u8 branch_addr;
  115. u16 imm;
  116. bool dedicate_flags_ena;
  117. u8 dst_start;
  118. u8 dst_len;
  119. bool flags_extr_imm;
  120. u8 flags_start_imm;
  121. };
  122. /* Parser program code (iMEM) */
  123. struct ice_imem_item {
  124. u16 idx;
  125. struct ice_bst_main b_m;
  126. struct ice_bst_keybuilder b_kb;
  127. u8 pg_prio;
  128. struct ice_np_keybuilder np_kb;
  129. struct ice_pg_keybuilder pg_kb;
  130. struct ice_alu alu0;
  131. struct ice_alu alu1;
  132. struct ice_alu alu2;
  133. };
  134. /*** ICE_SID_RXPARSER_METADATA_INIT section ***/
  135. #define ICE_METAINIT_TABLE_SIZE 16
  136. /* Metadata Initialization item */
  137. struct ice_metainit_item {
  138. u16 idx;
  139. u8 tsr; /* TCAM Search key Register */
  140. u16 ho; /* Header Offset register */
  141. u16 pc; /* Program Counter register */
  142. u16 pg_rn; /* Parse Graph Root Node */
  143. u8 cd; /* Control Domain ID */
  144. /* General Purpose Registers */
  145. bool gpr_a_ctrl;
  146. u8 gpr_a_data_mdid;
  147. u8 gpr_a_data_start;
  148. u8 gpr_a_data_len;
  149. u8 gpr_a_id;
  150. bool gpr_b_ctrl;
  151. u8 gpr_b_data_mdid;
  152. u8 gpr_b_data_start;
  153. u8 gpr_b_data_len;
  154. u8 gpr_b_id;
  155. bool gpr_c_ctrl;
  156. u8 gpr_c_data_mdid;
  157. u8 gpr_c_data_start;
  158. u8 gpr_c_data_len;
  159. u8 gpr_c_id;
  160. bool gpr_d_ctrl;
  161. u8 gpr_d_data_mdid;
  162. u8 gpr_d_data_start;
  163. u8 gpr_d_data_len;
  164. u8 gpr_d_id;
  165. u64 flags; /* Initial value for all flags */
  166. };
  167. /*** ICE_SID_RXPARSER_CAM, ICE_SID_RXPARSER_PG_SPILL,
  168. * ICE_SID_RXPARSER_NOMATCH_CAM and ICE_SID_RXPARSER_NOMATCH_CAM
  169. * sections ***/
  170. #define ICE_PG_CAM_TABLE_SIZE 2048
  171. #define ICE_PG_SP_CAM_TABLE_SIZE 128
  172. #define ICE_PG_NM_CAM_TABLE_SIZE 1024
  173. #define ICE_PG_NM_SP_CAM_TABLE_SIZE 64
  174. struct ice_pg_cam_key {
  175. bool valid;
  176. struct_group_attr(val, __packed,
  177. u16 node_id; /* Node ID of protocol in parse graph */
  178. bool flag0;
  179. bool flag1;
  180. bool flag2;
  181. bool flag3;
  182. u8 boost_idx; /* Boost TCAM match index */
  183. u16 alu_reg;
  184. u32 next_proto; /* next Protocol value (must be last) */
  185. );
  186. };
  187. struct ice_pg_nm_cam_key {
  188. bool valid;
  189. struct_group_attr(val, __packed,
  190. u16 node_id;
  191. bool flag0;
  192. bool flag1;
  193. bool flag2;
  194. bool flag3;
  195. u8 boost_idx;
  196. u16 alu_reg;
  197. );
  198. };
  199. struct ice_pg_cam_action {
  200. u16 next_node; /* Parser Node ID for the next round */
  201. u8 next_pc; /* next Program Counter */
  202. bool is_pg; /* is protocol group */
  203. u8 proto_id; /* protocol ID or proto group ID */
  204. bool is_mg; /* is marker group */
  205. u8 marker_id; /* marker ID or marker group ID */
  206. bool is_last_round;
  207. bool ho_polarity; /* header offset polarity */
  208. u16 ho_inc;
  209. };
  210. /* Parse Graph item */
  211. struct ice_pg_cam_item {
  212. u16 idx;
  213. struct ice_pg_cam_key key;
  214. struct ice_pg_cam_action action;
  215. };
  216. /* Parse Graph No Match item */
  217. struct ice_pg_nm_cam_item {
  218. u16 idx;
  219. struct ice_pg_nm_cam_key key;
  220. struct ice_pg_cam_action action;
  221. };
  222. struct ice_pg_cam_item *ice_pg_cam_match(struct ice_pg_cam_item *table,
  223. int size, struct ice_pg_cam_key *key);
  224. struct ice_pg_nm_cam_item *
  225. ice_pg_nm_cam_match(struct ice_pg_nm_cam_item *table, int size,
  226. struct ice_pg_cam_key *key);
  227. /*** ICE_SID_RXPARSER_BOOST_TCAM and ICE_SID_LBL_RXPARSER_TMEM sections ***/
  228. #define ICE_BST_TCAM_TABLE_SIZE 256
  229. #define ICE_BST_TCAM_KEY_SIZE 20
  230. /* Boost TCAM item */
  231. struct ice_bst_tcam_item {
  232. u16 addr;
  233. u8 key[ICE_BST_TCAM_KEY_SIZE];
  234. u8 key_inv[ICE_BST_TCAM_KEY_SIZE];
  235. u8 hit_idx_grp;
  236. u8 pg_prio;
  237. struct ice_np_keybuilder np_kb;
  238. struct ice_pg_keybuilder pg_kb;
  239. struct ice_alu alu0;
  240. struct ice_alu alu1;
  241. struct ice_alu alu2;
  242. };
  243. #define ICE_LBL_LEN 64
  244. #define ICE_LBL_BST_DVM "BOOST_MAC_VLAN_DVM"
  245. #define ICE_LBL_BST_SVM "BOOST_MAC_VLAN_SVM"
  246. #define ICE_LBL_TNL_VXLAN "TNL_VXLAN"
  247. #define ICE_LBL_TNL_GENEVE "TNL_GENEVE"
  248. #define ICE_LBL_TNL_UDP_ECPRI "TNL_UDP_ECPRI"
  249. enum ice_lbl_type {
  250. ICE_LBL_BST_TYPE_UNKNOWN,
  251. ICE_LBL_BST_TYPE_DVM,
  252. ICE_LBL_BST_TYPE_SVM,
  253. ICE_LBL_BST_TYPE_VXLAN,
  254. ICE_LBL_BST_TYPE_GENEVE,
  255. ICE_LBL_BST_TYPE_UDP_ECPRI,
  256. };
  257. struct ice_lbl_item {
  258. u16 idx;
  259. char label[ICE_LBL_LEN];
  260. /* must be at the end, not part of the DDP section */
  261. enum ice_lbl_type type;
  262. };
  263. struct ice_bst_tcam_item *
  264. ice_bst_tcam_match(struct ice_bst_tcam_item *tcam_table, u8 *pat);
  265. struct ice_bst_tcam_item *
  266. ice_bst_tcam_search(struct ice_bst_tcam_item *tcam_table,
  267. struct ice_lbl_item *lbl_table,
  268. enum ice_lbl_type type, u16 *start);
  269. /*** ICE_SID_RXPARSER_MARKER_PTYPE section ***/
  270. #define ICE_PTYPE_MK_TCAM_TABLE_SIZE 1024
  271. #define ICE_PTYPE_MK_TCAM_KEY_SIZE 10
  272. struct ice_ptype_mk_tcam_item {
  273. u16 address;
  274. u16 ptype;
  275. u8 key[ICE_PTYPE_MK_TCAM_KEY_SIZE];
  276. u8 key_inv[ICE_PTYPE_MK_TCAM_KEY_SIZE];
  277. } __packed;
  278. struct ice_ptype_mk_tcam_item *
  279. ice_ptype_mk_tcam_match(struct ice_ptype_mk_tcam_item *table,
  280. u8 *pat, int len);
  281. /*** ICE_SID_RXPARSER_MARKER_GRP section ***/
  282. #define ICE_MK_GRP_TABLE_SIZE 128
  283. #define ICE_MK_COUNT_PER_GRP 8
  284. /* Marker Group item */
  285. struct ice_mk_grp_item {
  286. int idx;
  287. u8 markers[ICE_MK_COUNT_PER_GRP];
  288. };
  289. /*** ICE_SID_RXPARSER_PROTO_GRP section ***/
  290. #define ICE_PROTO_COUNT_PER_GRP 8
  291. #define ICE_PROTO_GRP_TABLE_SIZE 192
  292. #define ICE_PROTO_GRP_ITEM_SIZE 22
  293. struct ice_proto_off {
  294. bool polarity; /* true: positive, false: negative */
  295. u8 proto_id;
  296. u16 offset; /* 10 bit protocol offset */
  297. };
  298. /* Protocol Group item */
  299. struct ice_proto_grp_item {
  300. u16 idx;
  301. struct ice_proto_off po[ICE_PROTO_COUNT_PER_GRP];
  302. };
  303. /*** ICE_SID_RXPARSER_FLAG_REDIR section ***/
  304. #define ICE_FLG_RD_TABLE_SIZE 64
  305. #define ICE_FLG_RDT_SIZE 64
  306. /* Flags Redirection item */
  307. struct ice_flg_rd_item {
  308. u16 idx;
  309. bool expose;
  310. u8 intr_flg_id; /* Internal Flag ID */
  311. };
  312. u64 ice_flg_redirect(struct ice_flg_rd_item *table, u64 psr_flg);
  313. /*** ICE_SID_XLT_KEY_BUILDER_SW, ICE_SID_XLT_KEY_BUILDER_ACL,
  314. * ICE_SID_XLT_KEY_BUILDER_FD and ICE_SID_XLT_KEY_BUILDER_RSS
  315. * sections ***/
  316. #define ICE_XLT_KB_FLAG0_14_CNT 15
  317. #define ICE_XLT_KB_TBL_CNT 8
  318. #define ICE_XLT_KB_TBL_ENTRY_SIZE 24
  319. struct ice_xlt_kb_entry {
  320. u8 xlt1_ad_sel;
  321. u8 xlt2_ad_sel;
  322. u16 flg0_14_sel[ICE_XLT_KB_FLAG0_14_CNT];
  323. u8 xlt1_md_sel;
  324. u8 xlt2_md_sel;
  325. };
  326. /* XLT Key Builder */
  327. struct ice_xlt_kb {
  328. u8 xlt1_pm; /* XLT1 Partition Mode */
  329. u8 xlt2_pm; /* XLT2 Partition Mode */
  330. u8 prof_id_pm; /* Profile ID Partition Mode */
  331. u64 flag15;
  332. struct ice_xlt_kb_entry entries[ICE_XLT_KB_TBL_CNT];
  333. };
  334. u16 ice_xlt_kb_flag_get(struct ice_xlt_kb *kb, u64 pkt_flag);
  335. /*** Parser API ***/
  336. #define ICE_GPR_HV_IDX 64
  337. #define ICE_GPR_HV_SIZE 32
  338. #define ICE_GPR_ERR_IDX 84
  339. #define ICE_GPR_FLG_IDX 104
  340. #define ICE_GPR_FLG_SIZE 16
  341. #define ICE_GPR_TSR_IDX 108 /* TSR: TCAM Search Register */
  342. #define ICE_GPR_NN_IDX 109 /* NN: Next Parsing Cycle Node ID */
  343. #define ICE_GPR_HO_IDX 110 /* HO: Next Parsing Cycle hdr Offset */
  344. #define ICE_GPR_NP_IDX 111 /* NP: Next Parsing Cycle */
  345. #define ICE_PARSER_MAX_PKT_LEN 504
  346. #define ICE_PARSER_PKT_REV 32
  347. #define ICE_PARSER_GPR_NUM 128
  348. #define ICE_PARSER_FLG_NUM 64
  349. #define ICE_PARSER_ERR_NUM 16
  350. #define ICE_MARKER_ID_SIZE 9
  351. #define ICE_MARKER_MAX_SIZE \
  352. (ICE_MARKER_ID_SIZE * BITS_PER_BYTE - 1)
  353. #define ICE_MARKER_ID_NUM 8
  354. #define ICE_PO_PAIR_SIZE 256
  355. struct ice_gpr_pu {
  356. /* array of flags to indicate if GRP needs to be updated */
  357. bool gpr_val_upd[ICE_PARSER_GPR_NUM];
  358. u16 gpr_val[ICE_PARSER_GPR_NUM];
  359. u64 flg_msk;
  360. u64 flg_val;
  361. u16 err_msk;
  362. u16 err_val;
  363. };
  364. enum ice_pg_prio {
  365. ICE_PG_P0 = 0,
  366. ICE_PG_P1 = 1,
  367. ICE_PG_P2 = 2,
  368. ICE_PG_P3 = 3,
  369. };
  370. struct ice_parser_rt {
  371. struct ice_parser *psr;
  372. u16 gpr[ICE_PARSER_GPR_NUM];
  373. u8 pkt_buf[ICE_PARSER_MAX_PKT_LEN + ICE_PARSER_PKT_REV];
  374. u16 pkt_len;
  375. u16 po;
  376. u8 bst_key[ICE_BST_TCAM_KEY_SIZE];
  377. struct ice_pg_cam_key pg_key;
  378. u8 pg_prio;
  379. struct ice_alu *alu0;
  380. struct ice_alu *alu1;
  381. struct ice_alu *alu2;
  382. struct ice_pg_cam_action *action;
  383. struct ice_gpr_pu pu;
  384. u8 markers[ICE_MARKER_ID_SIZE];
  385. bool protocols[ICE_PO_PAIR_SIZE];
  386. u16 offsets[ICE_PO_PAIR_SIZE];
  387. };
  388. struct ice_parser_proto_off {
  389. u8 proto_id; /* hardware protocol ID */
  390. u16 offset; /* offset from the start of the protocol header */
  391. };
  392. #define ICE_PARSER_PROTO_OFF_PAIR_SIZE 16
  393. #define ICE_PARSER_FLAG_PSR_SIZE 8
  394. #define ICE_PARSER_FV_SIZE 48
  395. #define ICE_PARSER_FV_MAX 24
  396. #define ICE_BT_TUN_PORT_OFF_H 16
  397. #define ICE_BT_TUN_PORT_OFF_L 15
  398. #define ICE_BT_VM_OFF 0
  399. #define ICE_UDP_PORT_OFF_H 1
  400. #define ICE_UDP_PORT_OFF_L 0
  401. struct ice_parser_result {
  402. u16 ptype; /* 16 bits hardware PTYPE */
  403. /* array of protocol and header offset pairs */
  404. struct ice_parser_proto_off po[ICE_PARSER_PROTO_OFF_PAIR_SIZE];
  405. int po_num; /* # of protocol-offset pairs must <= 16 */
  406. u64 flags_psr; /* parser flags */
  407. u64 flags_pkt; /* packet flags */
  408. u16 flags_sw; /* key builder flags for SW */
  409. u16 flags_acl; /* key builder flags for ACL */
  410. u16 flags_fd; /* key builder flags for FD */
  411. u16 flags_rss; /* key builder flags for RSS */
  412. };
  413. void ice_parser_rt_reset(struct ice_parser_rt *rt);
  414. void ice_parser_rt_pktbuf_set(struct ice_parser_rt *rt, const u8 *pkt_buf,
  415. int pkt_len);
  416. int ice_parser_rt_execute(struct ice_parser_rt *rt,
  417. struct ice_parser_result *rslt);
  418. struct ice_parser {
  419. struct ice_hw *hw; /* pointer to the hardware structure */
  420. struct ice_imem_item *imem_table;
  421. struct ice_metainit_item *mi_table;
  422. struct ice_pg_cam_item *pg_cam_table;
  423. struct ice_pg_cam_item *pg_sp_cam_table;
  424. struct ice_pg_nm_cam_item *pg_nm_cam_table;
  425. struct ice_pg_nm_cam_item *pg_nm_sp_cam_table;
  426. struct ice_bst_tcam_item *bst_tcam_table;
  427. struct ice_lbl_item *bst_lbl_table;
  428. struct ice_ptype_mk_tcam_item *ptype_mk_tcam_table;
  429. struct ice_mk_grp_item *mk_grp_table;
  430. struct ice_proto_grp_item *proto_grp_table;
  431. struct ice_flg_rd_item *flg_rd_table;
  432. struct ice_xlt_kb *xlt_kb_sw;
  433. struct ice_xlt_kb *xlt_kb_acl;
  434. struct ice_xlt_kb *xlt_kb_fd;
  435. struct ice_xlt_kb *xlt_kb_rss;
  436. struct ice_parser_rt rt;
  437. };
  438. struct ice_parser *ice_parser_create(struct ice_hw *hw);
  439. void ice_parser_destroy(struct ice_parser *psr);
  440. void ice_parser_dvm_set(struct ice_parser *psr, bool on);
  441. int ice_parser_vxlan_tunnel_set(struct ice_parser *psr, u16 udp_port, bool on);
  442. int ice_parser_geneve_tunnel_set(struct ice_parser *psr, u16 udp_port, bool on);
  443. int ice_parser_ecpri_tunnel_set(struct ice_parser *psr, u16 udp_port, bool on);
  444. int ice_parser_run(struct ice_parser *psr, const u8 *pkt_buf,
  445. int pkt_len, struct ice_parser_result *rslt);
  446. void ice_parser_result_dump(struct ice_hw *hw, struct ice_parser_result *rslt);
  447. struct ice_parser_fv {
  448. u8 proto_id; /* hardware protocol ID */
  449. u16 offset; /* offset from the start of the protocol header */
  450. u16 spec; /* pattern to match */
  451. u16 msk; /* pattern mask */
  452. };
  453. struct ice_parser_profile {
  454. /* array of field vectors */
  455. struct ice_parser_fv fv[ICE_PARSER_FV_SIZE];
  456. int fv_num; /* # of field vectors must <= 48 */
  457. u16 flags; /* key builder flags */
  458. u16 flags_msk; /* key builder flag mask */
  459. DECLARE_BITMAP(ptypes, ICE_FLOW_PTYPE_MAX); /* PTYPE bitmap */
  460. };
  461. int ice_parser_profile_init(struct ice_parser_result *rslt,
  462. const u8 *pkt_buf, const u8 *msk_buf,
  463. int buf_len, enum ice_block blk,
  464. struct ice_parser_profile *prof);
  465. void ice_parser_profile_dump(struct ice_hw *hw,
  466. struct ice_parser_profile *prof);
  467. #endif /* _ICE_PARSER_H_ */