Lines Matching refs:params

659  * @params: information about the flow to be processed
662 static u16 ice_flow_calc_seg_sz(struct ice_flow_prof_params *params, u8 seg)
667 sz = (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_VLAN) ?
671 if (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_IPV4)
673 else if (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_IPV6)
675 else if (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_ARP)
677 else if (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDRS_L4_MASK)
682 if (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_ICMP)
684 else if (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_TCP)
686 else if (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_UDP)
688 else if (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_SCTP)
696 * @params: information about the flow to be processed
701 static int ice_flow_proc_seg_hdrs(struct ice_flow_prof_params *params)
706 memset(params->ptypes, 0xff, sizeof(params->ptypes));
708 prof = params->prof;
710 for (i = 0; i < params->prof->segs_cnt; i++) {
719 bitmap_and(params->ptypes, params->ptypes, src,
725 bitmap_and(params->ptypes, params->ptypes, src,
730 bitmap_and(params->ptypes, params->ptypes,
739 bitmap_and(params->ptypes, params->ptypes, src,
745 bitmap_and(params->ptypes, params->ptypes, src,
751 bitmap_and(params->ptypes, params->ptypes, src,
756 bitmap_and(params->ptypes, params->ptypes, src,
762 bitmap_and(params->ptypes, params->ptypes, src,
767 bitmap_and(params->ptypes, params->ptypes, src,
773 bitmap_and(params->ptypes, params->ptypes, src,
777 bitmap_and(params->ptypes, params->ptypes, src,
781 bitmap_andnot(params->ptypes, params->ptypes, src,
787 bitmap_and(params->ptypes, params->ptypes, src,
790 bitmap_and(params->ptypes, params->ptypes,
795 bitmap_and(params->ptypes, params->ptypes, src,
802 bitmap_and(params->ptypes, params->ptypes, src,
807 bitmap_and(params->ptypes, params->ptypes,
812 bitmap_and(params->ptypes, params->ptypes, src,
816 bitmap_and(params->ptypes, params->ptypes, src,
820 bitmap_and(params->ptypes, params->ptypes, src,
824 params->attr = ice_attr_gtpu_down;
825 params->attr_cnt = ARRAY_SIZE(ice_attr_gtpu_down);
828 bitmap_and(params->ptypes, params->ptypes, src,
832 params->attr = ice_attr_gtpu_up;
833 params->attr_cnt = ARRAY_SIZE(ice_attr_gtpu_up);
836 bitmap_and(params->ptypes, params->ptypes, src,
840 params->attr = ice_attr_gtpu_eh;
841 params->attr_cnt = ARRAY_SIZE(ice_attr_gtpu_eh);
844 bitmap_and(params->ptypes, params->ptypes, src,
848 bitmap_and(params->ptypes, params->ptypes, src,
852 bitmap_and(params->ptypes, params->ptypes, src,
856 bitmap_and(params->ptypes, params->ptypes, src,
860 bitmap_and(params->ptypes, params->ptypes, src,
870 bitmap_and(params->ptypes, params->ptypes, src,
874 bitmap_andnot(params->ptypes, params->ptypes, src,
878 bitmap_andnot(params->ptypes, params->ptypes, src,
889 * @params: information about the flow to be processed
899 ice_flow_xtract_fld(struct ice_hw *hw, struct ice_flow_prof_params *params,
904 u8 fv_words = hw->blk[params->blk].es.fvw;
911 flds = params->prof->segs[seg].fields;
1025 prot_id = (params->prof->segs[seg].hdrs & ICE_FLOW_SEG_HDR_IPV4) ?
1047 flds[fld].xtrct.idx = params->es_cnt;
1072 if (params->es_cnt >= fv_words)
1076 if (hw->blk[params->blk].es.reverse)
1077 idx = fv_words - params->es_cnt - 1;
1079 idx = params->es_cnt;
1081 params->es[idx].prot_id = prot_id;
1082 params->es[idx].off = off;
1083 params->mask[idx] = mask | sib_mask;
1084 params->es_cnt++;
1096 * @params: information about the flow to be processed
1100 ice_flow_xtract_raws(struct ice_hw *hw, struct ice_flow_prof_params *params,
1107 if (!params->prof->segs[seg].raws_cnt)
1110 if (params->prof->segs[seg].raws_cnt >
1111 ARRAY_SIZE(params->prof->segs[seg].raws))
1115 hdrs_sz = ice_flow_calc_seg_sz(params, seg);
1119 fv_words = hw->blk[params->blk].es.fvw;
1121 for (i = 0; i < params->prof->segs[seg].raws_cnt; i++) {
1125 raw = &params->prof->segs[seg].raws[i];
1133 raw->info.xtrct.idx = params->es_cnt;
1148 if (params->es_cnt >= hw->blk[params->blk].es.count ||
1149 params->es_cnt >= ICE_MAX_FV_WORDS)
1153 if (hw->blk[params->blk].es.reverse)
1154 idx = fv_words - params->es_cnt - 1;
1156 idx = params->es_cnt;
1158 params->es[idx].prot_id = raw->info.xtrct.prot_id;
1159 params->es[idx].off = off;
1160 params->es_cnt++;
1171 * @params: information about the flow to be processed
1178 struct ice_flow_prof_params *params)
1180 struct ice_flow_prof *prof = params->prof;
1185 u64 match = params->prof->segs[i].match;
1190 status = ice_flow_xtract_fld(hw, params, i, j, match);
1197 status = ice_flow_xtract_raws(hw, params, i);
1208 * @params: information about the flow to be processed
1211 ice_flow_proc_segs(struct ice_hw *hw, struct ice_flow_prof_params *params)
1215 status = ice_flow_proc_seg_hdrs(params);
1219 status = ice_flow_create_xtrct_seq(hw, params);
1223 switch (params->blk) {
1351 struct ice_flow_prof_params *params;
1365 params = kzalloc(sizeof(*params), GFP_KERNEL);
1366 if (!params)
1369 params->prof = devm_kzalloc(ice_hw_to_dev(hw), sizeof(*params->prof),
1371 if (!params->prof) {
1378 params->es[i].prot_id = ICE_PROT_INVALID;
1379 params->es[i].off = ICE_FV_OFFSET_INVAL;
1382 params->blk = blk;
1383 params->prof->id = prof_id;
1384 params->prof->dir = dir;
1385 params->prof->segs_cnt = segs_cnt;
1386 params->prof->symm = symm;
1392 memcpy(&params->prof->segs[i], &segs[i], sizeof(*segs));
1394 status = ice_flow_proc_segs(hw, params);
1401 status = ice_add_prof(hw, blk, prof_id, (u8 *)params->ptypes,
1402 params->attr, params->attr_cnt, params->es,
1403 params->mask, symm);
1409 INIT_LIST_HEAD(&params->prof->entries);
1410 mutex_init(&params->prof->entries_lock);
1412 *prof = params->prof;
1416 devm_kfree(ice_hw_to_dev(hw), params->prof);
1418 kfree(params);