Lines Matching refs:ib_spec

191 			   const union ib_flow_spec *ib_spec,  in parse_flow_attr()  argument
211 if (ib_spec->type & IB_FLOW_SPEC_INNER) { in parse_flow_attr()
227 switch (ib_spec->type & ~IB_FLOW_SPEC_INNER) { in parse_flow_attr()
229 if (FIELDS_NOT_SUPPORTED(ib_spec->eth.mask, LAST_ETH_FIELD)) in parse_flow_attr()
234 ib_spec->eth.mask.dst_mac); in parse_flow_attr()
237 ib_spec->eth.val.dst_mac); in parse_flow_attr()
241 ib_spec->eth.mask.src_mac); in parse_flow_attr()
244 ib_spec->eth.val.src_mac); in parse_flow_attr()
246 if (ib_spec->eth.mask.vlan_tag) { in parse_flow_attr()
253 first_vid, ntohs(ib_spec->eth.mask.vlan_tag)); in parse_flow_attr()
255 first_vid, ntohs(ib_spec->eth.val.vlan_tag)); in parse_flow_attr()
259 ntohs(ib_spec->eth.mask.vlan_tag) >> 12); in parse_flow_attr()
262 ntohs(ib_spec->eth.val.vlan_tag) >> 12); in parse_flow_attr()
266 ntohs(ib_spec->eth.mask.vlan_tag) >> 13); in parse_flow_attr()
269 ntohs(ib_spec->eth.val.vlan_tag) >> 13); in parse_flow_attr()
272 ethertype, ntohs(ib_spec->eth.mask.ether_type)); in parse_flow_attr()
274 ethertype, ntohs(ib_spec->eth.val.ether_type)); in parse_flow_attr()
277 if (FIELDS_NOT_SUPPORTED(ib_spec->ipv4.mask, LAST_IPV4_FIELD)) in parse_flow_attr()
294 &ib_spec->ipv4.mask.src_ip, in parse_flow_attr()
295 sizeof(ib_spec->ipv4.mask.src_ip)); in parse_flow_attr()
298 &ib_spec->ipv4.val.src_ip, in parse_flow_attr()
299 sizeof(ib_spec->ipv4.val.src_ip)); in parse_flow_attr()
302 &ib_spec->ipv4.mask.dst_ip, in parse_flow_attr()
303 sizeof(ib_spec->ipv4.mask.dst_ip)); in parse_flow_attr()
306 &ib_spec->ipv4.val.dst_ip, in parse_flow_attr()
307 sizeof(ib_spec->ipv4.val.dst_ip)); in parse_flow_attr()
310 ib_spec->ipv4.mask.tos, ib_spec->ipv4.val.tos); in parse_flow_attr()
313 ib_spec->ipv4.mask.proto, in parse_flow_attr()
314 ib_spec->ipv4.val.proto)) in parse_flow_attr()
318 if (FIELDS_NOT_SUPPORTED(ib_spec->ipv6.mask, LAST_IPV6_FIELD)) in parse_flow_attr()
335 &ib_spec->ipv6.mask.src_ip, in parse_flow_attr()
336 sizeof(ib_spec->ipv6.mask.src_ip)); in parse_flow_attr()
339 &ib_spec->ipv6.val.src_ip, in parse_flow_attr()
340 sizeof(ib_spec->ipv6.val.src_ip)); in parse_flow_attr()
343 &ib_spec->ipv6.mask.dst_ip, in parse_flow_attr()
344 sizeof(ib_spec->ipv6.mask.dst_ip)); in parse_flow_attr()
347 &ib_spec->ipv6.val.dst_ip, in parse_flow_attr()
348 sizeof(ib_spec->ipv6.val.dst_ip)); in parse_flow_attr()
351 ib_spec->ipv6.mask.traffic_class, in parse_flow_attr()
352 ib_spec->ipv6.val.traffic_class); in parse_flow_attr()
355 ib_spec->ipv6.mask.next_hdr, in parse_flow_attr()
356 ib_spec->ipv6.val.next_hdr)) in parse_flow_attr()
360 ntohl(ib_spec->ipv6.mask.flow_label), in parse_flow_attr()
361 ntohl(ib_spec->ipv6.val.flow_label), in parse_flow_attr()
362 ib_spec->type & IB_FLOW_SPEC_INNER); in parse_flow_attr()
367 if (FIELDS_NOT_SUPPORTED(ib_spec->tcp_udp.mask, in parse_flow_attr()
375 ntohs(ib_spec->tcp_udp.mask.src_port)); in parse_flow_attr()
377 ntohs(ib_spec->tcp_udp.val.src_port)); in parse_flow_attr()
380 ntohs(ib_spec->tcp_udp.mask.dst_port)); in parse_flow_attr()
382 ntohs(ib_spec->tcp_udp.val.dst_port)); in parse_flow_attr()
385 if (FIELDS_NOT_SUPPORTED(ib_spec->tcp_udp.mask, in parse_flow_attr()
393 ntohs(ib_spec->tcp_udp.mask.src_port)); in parse_flow_attr()
395 ntohs(ib_spec->tcp_udp.val.src_port)); in parse_flow_attr()
398 ntohs(ib_spec->tcp_udp.mask.dst_port)); in parse_flow_attr()
400 ntohs(ib_spec->tcp_udp.val.dst_port)); in parse_flow_attr()
403 if (ib_spec->gre.mask.c_ks_res0_ver) in parse_flow_attr()
415 ntohs(ib_spec->gre.mask.protocol)); in parse_flow_attr()
417 ntohs(ib_spec->gre.val.protocol)); in parse_flow_attr()
421 &ib_spec->gre.mask.key, in parse_flow_attr()
422 sizeof(ib_spec->gre.mask.key)); in parse_flow_attr()
425 &ib_spec->gre.val.key, in parse_flow_attr()
426 sizeof(ib_spec->gre.val.key)); in parse_flow_attr()
433 &ib_spec->mpls.mask.tag)) in parse_flow_attr()
438 &ib_spec->mpls.val.tag, in parse_flow_attr()
439 sizeof(ib_spec->mpls.val.tag)); in parse_flow_attr()
442 &ib_spec->mpls.mask.tag, in parse_flow_attr()
443 sizeof(ib_spec->mpls.mask.tag)); in parse_flow_attr()
448 &ib_spec->mpls.mask.tag)) in parse_flow_attr()
453 &ib_spec->mpls.val.tag, in parse_flow_attr()
454 sizeof(ib_spec->mpls.val.tag)); in parse_flow_attr()
457 &ib_spec->mpls.mask.tag, in parse_flow_attr()
458 sizeof(ib_spec->mpls.mask.tag)); in parse_flow_attr()
461 if (ib_spec->type & IB_FLOW_SPEC_INNER) { in parse_flow_attr()
464 &ib_spec->mpls.mask.tag)) in parse_flow_attr()
469 &ib_spec->mpls.val.tag, in parse_flow_attr()
470 sizeof(ib_spec->mpls.val.tag)); in parse_flow_attr()
473 &ib_spec->mpls.mask.tag, in parse_flow_attr()
474 sizeof(ib_spec->mpls.mask.tag)); in parse_flow_attr()
478 &ib_spec->mpls.mask.tag)) in parse_flow_attr()
483 &ib_spec->mpls.val.tag, in parse_flow_attr()
484 sizeof(ib_spec->mpls.val.tag)); in parse_flow_attr()
487 &ib_spec->mpls.mask.tag, in parse_flow_attr()
488 sizeof(ib_spec->mpls.mask.tag)); in parse_flow_attr()
493 if (FIELDS_NOT_SUPPORTED(ib_spec->tunnel.mask, in parse_flow_attr()
498 ntohl(ib_spec->tunnel.mask.tunnel_id)); in parse_flow_attr()
500 ntohl(ib_spec->tunnel.val.tunnel_id)); in parse_flow_attr()
503 if (FIELDS_NOT_SUPPORTED(ib_spec->flow_tag, in parse_flow_attr()
506 if (ib_spec->flow_tag.tag_id >= BIT(24)) in parse_flow_attr()
509 flow_context->flow_tag = ib_spec->flow_tag.tag_id; in parse_flow_attr()
513 if (FIELDS_NOT_SUPPORTED(ib_spec->drop, in parse_flow_attr()
519 ret = parse_flow_flow_action(to_mflow_act(ib_spec->action.act), in parse_flow_attr()
525 if (FIELDS_NOT_SUPPORTED(ib_spec->flow_count, in parse_flow_attr()
533 action->counters = ib_spec->flow_count.counters; in parse_flow_attr()
581 union ib_flow_spec *ib_spec = (union ib_flow_spec *)(flow_attr + 1); in is_valid_ethertype() local
598 if ((ib_spec->type == (IB_FLOW_SPEC_ETH | inner_bit)) && in is_valid_ethertype()
599 ib_spec->eth.mask.ether_type) { in is_valid_ethertype()
600 mask_valid = (ib_spec->eth.mask.ether_type == in is_valid_ethertype()
603 eth_type = ntohs(ib_spec->eth.val.ether_type); in is_valid_ethertype()
604 } else if ((ib_spec->type == (IB_FLOW_SPEC_IPV4 | inner_bit)) || in is_valid_ethertype()
605 (ib_spec->type == (IB_FLOW_SPEC_IPV6 | inner_bit))) { in is_valid_ethertype()
606 ip_spec_type = ib_spec->type; in is_valid_ethertype()
608 ib_spec = (void *)ib_spec + ib_spec->size; in is_valid_ethertype()