Lines Matching refs:ib_spec

195 			   const union ib_flow_spec *ib_spec,  in parse_flow_attr()  argument
215 if (ib_spec->type & IB_FLOW_SPEC_INNER) { in parse_flow_attr()
231 switch (ib_spec->type & ~IB_FLOW_SPEC_INNER) { in parse_flow_attr()
233 if (FIELDS_NOT_SUPPORTED(ib_spec->eth.mask, LAST_ETH_FIELD)) in parse_flow_attr()
238 ib_spec->eth.mask.dst_mac); in parse_flow_attr()
241 ib_spec->eth.val.dst_mac); in parse_flow_attr()
245 ib_spec->eth.mask.src_mac); in parse_flow_attr()
248 ib_spec->eth.val.src_mac); in parse_flow_attr()
250 if (ib_spec->eth.mask.vlan_tag) { in parse_flow_attr()
257 first_vid, ntohs(ib_spec->eth.mask.vlan_tag)); in parse_flow_attr()
259 first_vid, ntohs(ib_spec->eth.val.vlan_tag)); in parse_flow_attr()
263 ntohs(ib_spec->eth.mask.vlan_tag) >> 12); in parse_flow_attr()
266 ntohs(ib_spec->eth.val.vlan_tag) >> 12); in parse_flow_attr()
270 ntohs(ib_spec->eth.mask.vlan_tag) >> 13); in parse_flow_attr()
273 ntohs(ib_spec->eth.val.vlan_tag) >> 13); in parse_flow_attr()
276 ethertype, ntohs(ib_spec->eth.mask.ether_type)); in parse_flow_attr()
278 ethertype, ntohs(ib_spec->eth.val.ether_type)); in parse_flow_attr()
281 if (FIELDS_NOT_SUPPORTED(ib_spec->ipv4.mask, LAST_IPV4_FIELD)) in parse_flow_attr()
298 &ib_spec->ipv4.mask.src_ip, in parse_flow_attr()
299 sizeof(ib_spec->ipv4.mask.src_ip)); in parse_flow_attr()
302 &ib_spec->ipv4.val.src_ip, in parse_flow_attr()
303 sizeof(ib_spec->ipv4.val.src_ip)); in parse_flow_attr()
306 &ib_spec->ipv4.mask.dst_ip, in parse_flow_attr()
307 sizeof(ib_spec->ipv4.mask.dst_ip)); in parse_flow_attr()
310 &ib_spec->ipv4.val.dst_ip, in parse_flow_attr()
311 sizeof(ib_spec->ipv4.val.dst_ip)); in parse_flow_attr()
314 ib_spec->ipv4.mask.tos, ib_spec->ipv4.val.tos); in parse_flow_attr()
317 ib_spec->ipv4.mask.proto, in parse_flow_attr()
318 ib_spec->ipv4.val.proto)) in parse_flow_attr()
322 if (FIELDS_NOT_SUPPORTED(ib_spec->ipv6.mask, LAST_IPV6_FIELD)) in parse_flow_attr()
339 &ib_spec->ipv6.mask.src_ip, in parse_flow_attr()
340 sizeof(ib_spec->ipv6.mask.src_ip)); in parse_flow_attr()
343 &ib_spec->ipv6.val.src_ip, in parse_flow_attr()
344 sizeof(ib_spec->ipv6.val.src_ip)); in parse_flow_attr()
347 &ib_spec->ipv6.mask.dst_ip, in parse_flow_attr()
348 sizeof(ib_spec->ipv6.mask.dst_ip)); in parse_flow_attr()
351 &ib_spec->ipv6.val.dst_ip, in parse_flow_attr()
352 sizeof(ib_spec->ipv6.val.dst_ip)); in parse_flow_attr()
355 ib_spec->ipv6.mask.traffic_class, in parse_flow_attr()
356 ib_spec->ipv6.val.traffic_class); in parse_flow_attr()
359 ib_spec->ipv6.mask.next_hdr, in parse_flow_attr()
360 ib_spec->ipv6.val.next_hdr)) in parse_flow_attr()
364 ntohl(ib_spec->ipv6.mask.flow_label), in parse_flow_attr()
365 ntohl(ib_spec->ipv6.val.flow_label), in parse_flow_attr()
366 ib_spec->type & IB_FLOW_SPEC_INNER); in parse_flow_attr()
369 if (ib_spec->esp.mask.seq) in parse_flow_attr()
373 ntohl(ib_spec->esp.mask.spi)); in parse_flow_attr()
375 ntohl(ib_spec->esp.val.spi)); in parse_flow_attr()
378 if (FIELDS_NOT_SUPPORTED(ib_spec->tcp_udp.mask, in parse_flow_attr()
386 ntohs(ib_spec->tcp_udp.mask.src_port)); in parse_flow_attr()
388 ntohs(ib_spec->tcp_udp.val.src_port)); in parse_flow_attr()
391 ntohs(ib_spec->tcp_udp.mask.dst_port)); in parse_flow_attr()
393 ntohs(ib_spec->tcp_udp.val.dst_port)); in parse_flow_attr()
396 if (FIELDS_NOT_SUPPORTED(ib_spec->tcp_udp.mask, in parse_flow_attr()
404 ntohs(ib_spec->tcp_udp.mask.src_port)); in parse_flow_attr()
406 ntohs(ib_spec->tcp_udp.val.src_port)); in parse_flow_attr()
409 ntohs(ib_spec->tcp_udp.mask.dst_port)); in parse_flow_attr()
411 ntohs(ib_spec->tcp_udp.val.dst_port)); in parse_flow_attr()
414 if (ib_spec->gre.mask.c_ks_res0_ver) in parse_flow_attr()
426 ntohs(ib_spec->gre.mask.protocol)); in parse_flow_attr()
428 ntohs(ib_spec->gre.val.protocol)); in parse_flow_attr()
432 &ib_spec->gre.mask.key, in parse_flow_attr()
433 sizeof(ib_spec->gre.mask.key)); in parse_flow_attr()
436 &ib_spec->gre.val.key, in parse_flow_attr()
437 sizeof(ib_spec->gre.val.key)); in parse_flow_attr()
444 &ib_spec->mpls.mask.tag)) in parse_flow_attr()
449 &ib_spec->mpls.val.tag, in parse_flow_attr()
450 sizeof(ib_spec->mpls.val.tag)); in parse_flow_attr()
453 &ib_spec->mpls.mask.tag, in parse_flow_attr()
454 sizeof(ib_spec->mpls.mask.tag)); in parse_flow_attr()
459 &ib_spec->mpls.mask.tag)) in parse_flow_attr()
464 &ib_spec->mpls.val.tag, in parse_flow_attr()
465 sizeof(ib_spec->mpls.val.tag)); in parse_flow_attr()
468 &ib_spec->mpls.mask.tag, in parse_flow_attr()
469 sizeof(ib_spec->mpls.mask.tag)); in parse_flow_attr()
472 if (ib_spec->type & IB_FLOW_SPEC_INNER) { in parse_flow_attr()
475 &ib_spec->mpls.mask.tag)) in parse_flow_attr()
480 &ib_spec->mpls.val.tag, in parse_flow_attr()
481 sizeof(ib_spec->mpls.val.tag)); in parse_flow_attr()
484 &ib_spec->mpls.mask.tag, in parse_flow_attr()
485 sizeof(ib_spec->mpls.mask.tag)); in parse_flow_attr()
489 &ib_spec->mpls.mask.tag)) in parse_flow_attr()
494 &ib_spec->mpls.val.tag, in parse_flow_attr()
495 sizeof(ib_spec->mpls.val.tag)); in parse_flow_attr()
498 &ib_spec->mpls.mask.tag, in parse_flow_attr()
499 sizeof(ib_spec->mpls.mask.tag)); in parse_flow_attr()
504 if (FIELDS_NOT_SUPPORTED(ib_spec->tunnel.mask, in parse_flow_attr()
509 ntohl(ib_spec->tunnel.mask.tunnel_id)); in parse_flow_attr()
511 ntohl(ib_spec->tunnel.val.tunnel_id)); in parse_flow_attr()
514 if (FIELDS_NOT_SUPPORTED(ib_spec->flow_tag, in parse_flow_attr()
517 if (ib_spec->flow_tag.tag_id >= BIT(24)) in parse_flow_attr()
520 flow_context->flow_tag = ib_spec->flow_tag.tag_id; in parse_flow_attr()
524 if (FIELDS_NOT_SUPPORTED(ib_spec->drop, in parse_flow_attr()
530 ret = parse_flow_flow_action(to_mflow_act(ib_spec->action.act), in parse_flow_attr()
536 if (FIELDS_NOT_SUPPORTED(ib_spec->flow_count, in parse_flow_attr()
544 action->counters = ib_spec->flow_count.counters; in parse_flow_attr()
633 union ib_flow_spec *ib_spec = (union ib_flow_spec *)(flow_attr + 1); in is_valid_ethertype() local
650 if ((ib_spec->type == (IB_FLOW_SPEC_ETH | inner_bit)) && in is_valid_ethertype()
651 ib_spec->eth.mask.ether_type) { in is_valid_ethertype()
652 mask_valid = (ib_spec->eth.mask.ether_type == in is_valid_ethertype()
655 eth_type = ntohs(ib_spec->eth.val.ether_type); in is_valid_ethertype()
656 } else if ((ib_spec->type == (IB_FLOW_SPEC_IPV4 | inner_bit)) || in is_valid_ethertype()
657 (ib_spec->type == (IB_FLOW_SPEC_IPV6 | inner_bit))) { in is_valid_ethertype()
658 ip_spec_type = ib_spec->type; in is_valid_ethertype()
660 ib_spec = (void *)ib_spec + ib_spec->size; in is_valid_ethertype()