Lines Matching refs:params
662 static u16 ice_flow_calc_seg_sz(struct ice_flow_prof_params *params, u8 seg) in ice_flow_calc_seg_sz() argument
667 sz = (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_VLAN) ? in ice_flow_calc_seg_sz()
671 if (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_IPV4) in ice_flow_calc_seg_sz()
673 else if (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_IPV6) in ice_flow_calc_seg_sz()
675 else if (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_ARP) in ice_flow_calc_seg_sz()
677 else if (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDRS_L4_MASK) in ice_flow_calc_seg_sz()
682 if (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_ICMP) in ice_flow_calc_seg_sz()
684 else if (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_TCP) in ice_flow_calc_seg_sz()
686 else if (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_UDP) in ice_flow_calc_seg_sz()
688 else if (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_SCTP) in ice_flow_calc_seg_sz()
701 static int ice_flow_proc_seg_hdrs(struct ice_flow_prof_params *params) in ice_flow_proc_seg_hdrs() argument
706 memset(params->ptypes, 0xff, sizeof(params->ptypes)); in ice_flow_proc_seg_hdrs()
708 prof = params->prof; in ice_flow_proc_seg_hdrs()
710 for (i = 0; i < params->prof->segs_cnt; i++) { in ice_flow_proc_seg_hdrs()
719 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
725 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
730 bitmap_and(params->ptypes, params->ptypes, in ice_flow_proc_seg_hdrs()
739 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
745 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
751 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
756 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
762 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
767 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
773 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
777 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
781 bitmap_andnot(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
787 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
790 bitmap_and(params->ptypes, params->ptypes, in ice_flow_proc_seg_hdrs()
795 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
802 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
807 bitmap_and(params->ptypes, params->ptypes, in ice_flow_proc_seg_hdrs()
812 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
816 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
820 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
824 params->attr = ice_attr_gtpu_down; in ice_flow_proc_seg_hdrs()
825 params->attr_cnt = ARRAY_SIZE(ice_attr_gtpu_down); in ice_flow_proc_seg_hdrs()
828 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
832 params->attr = ice_attr_gtpu_up; in ice_flow_proc_seg_hdrs()
833 params->attr_cnt = ARRAY_SIZE(ice_attr_gtpu_up); in ice_flow_proc_seg_hdrs()
836 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
840 params->attr = ice_attr_gtpu_eh; in ice_flow_proc_seg_hdrs()
841 params->attr_cnt = ARRAY_SIZE(ice_attr_gtpu_eh); in ice_flow_proc_seg_hdrs()
844 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
848 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
852 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
856 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
860 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
870 bitmap_and(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
874 bitmap_andnot(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
878 bitmap_andnot(params->ptypes, params->ptypes, src, in ice_flow_proc_seg_hdrs()
899 ice_flow_xtract_fld(struct ice_hw *hw, struct ice_flow_prof_params *params, in ice_flow_xtract_fld() argument
904 u8 fv_words = hw->blk[params->blk].es.fvw; in ice_flow_xtract_fld()
911 flds = params->prof->segs[seg].fields; in ice_flow_xtract_fld()
1025 prot_id = (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_IPV4) ? in ice_flow_xtract_fld()
1047 flds[fld].xtrct.idx = params->es_cnt; in ice_flow_xtract_fld()
1072 if (params->es_cnt >= fv_words) in ice_flow_xtract_fld()
1076 if (hw->blk[params->blk].es.reverse) in ice_flow_xtract_fld()
1077 idx = fv_words - params->es_cnt - 1; in ice_flow_xtract_fld()
1079 idx = params->es_cnt; in ice_flow_xtract_fld()
1081 params->es[idx].prot_id = prot_id; in ice_flow_xtract_fld()
1082 params->es[idx].off = off; in ice_flow_xtract_fld()
1083 params->mask[idx] = mask | sib_mask; in ice_flow_xtract_fld()
1084 params->es_cnt++; in ice_flow_xtract_fld()
1100 ice_flow_xtract_raws(struct ice_hw *hw, struct ice_flow_prof_params *params, in ice_flow_xtract_raws() argument
1107 if (!params->prof->segs[seg].raws_cnt) in ice_flow_xtract_raws()
1110 if (params->prof->segs[seg].raws_cnt > in ice_flow_xtract_raws()
1111 ARRAY_SIZE(params->prof->segs[seg].raws)) in ice_flow_xtract_raws()
1115 hdrs_sz = ice_flow_calc_seg_sz(params, seg); in ice_flow_xtract_raws()
1119 fv_words = hw->blk[params->blk].es.fvw; in ice_flow_xtract_raws()
1121 for (i = 0; i < params->prof->segs[seg].raws_cnt; i++) { in ice_flow_xtract_raws()
1125 raw = ¶ms->prof->segs[seg].raws[i]; in ice_flow_xtract_raws()
1133 raw->info.xtrct.idx = params->es_cnt; in ice_flow_xtract_raws()
1148 if (params->es_cnt >= hw->blk[params->blk].es.count || in ice_flow_xtract_raws()
1149 params->es_cnt >= ICE_MAX_FV_WORDS) in ice_flow_xtract_raws()
1153 if (hw->blk[params->blk].es.reverse) in ice_flow_xtract_raws()
1154 idx = fv_words - params->es_cnt - 1; in ice_flow_xtract_raws()
1156 idx = params->es_cnt; in ice_flow_xtract_raws()
1158 params->es[idx].prot_id = raw->info.xtrct.prot_id; in ice_flow_xtract_raws()
1159 params->es[idx].off = off; in ice_flow_xtract_raws()
1160 params->es_cnt++; in ice_flow_xtract_raws()
1178 struct ice_flow_prof_params *params) in ice_flow_create_xtrct_seq() argument
1180 struct ice_flow_prof *prof = params->prof; in ice_flow_create_xtrct_seq()
1185 u64 match = params->prof->segs[i].match; in ice_flow_create_xtrct_seq()
1190 status = ice_flow_xtract_fld(hw, params, i, j, match); in ice_flow_create_xtrct_seq()
1197 status = ice_flow_xtract_raws(hw, params, i); in ice_flow_create_xtrct_seq()
1211 ice_flow_proc_segs(struct ice_hw *hw, struct ice_flow_prof_params *params) in ice_flow_proc_segs() argument
1215 status = ice_flow_proc_seg_hdrs(params); in ice_flow_proc_segs()
1219 status = ice_flow_create_xtrct_seq(hw, params); in ice_flow_proc_segs()
1223 switch (params->blk) { in ice_flow_proc_segs()
1361 struct ice_flow_prof_params *params; in ice_flow_add_prof_sync() local
1368 params = kzalloc(sizeof(*params), GFP_KERNEL); in ice_flow_add_prof_sync()
1369 if (!params) in ice_flow_add_prof_sync()
1372 params->prof = devm_kzalloc(ice_hw_to_dev(hw), sizeof(*params->prof), in ice_flow_add_prof_sync()
1374 if (!params->prof) { in ice_flow_add_prof_sync()
1381 params->es[i].prot_id = ICE_PROT_INVALID; in ice_flow_add_prof_sync()
1382 params->es[i].off = ICE_FV_OFFSET_INVAL; in ice_flow_add_prof_sync()
1385 params->blk = blk; in ice_flow_add_prof_sync()
1386 params->prof->id = prof_id; in ice_flow_add_prof_sync()
1387 params->prof->dir = dir; in ice_flow_add_prof_sync()
1388 params->prof->segs_cnt = segs_cnt; in ice_flow_add_prof_sync()
1394 memcpy(¶ms->prof->segs[i], &segs[i], sizeof(*segs)); in ice_flow_add_prof_sync()
1396 status = ice_flow_proc_segs(hw, params); in ice_flow_add_prof_sync()
1403 status = ice_add_prof(hw, blk, prof_id, (u8 *)params->ptypes, in ice_flow_add_prof_sync()
1404 params->attr, params->attr_cnt, params->es, in ice_flow_add_prof_sync()
1405 params->mask); in ice_flow_add_prof_sync()
1411 INIT_LIST_HEAD(¶ms->prof->entries); in ice_flow_add_prof_sync()
1412 mutex_init(¶ms->prof->entries_lock); in ice_flow_add_prof_sync()
1413 *prof = params->prof; in ice_flow_add_prof_sync()
1417 devm_kfree(ice_hw_to_dev(hw), params->prof); in ice_flow_add_prof_sync()
1419 kfree(params); in ice_flow_add_prof_sync()