Lines Matching refs:ib_spec

185 			   const union ib_flow_spec *ib_spec,  in parse_flow_attr()  argument
205 if (ib_spec->type & IB_FLOW_SPEC_INNER) { in parse_flow_attr()
221 switch (ib_spec->type & ~IB_FLOW_SPEC_INNER) { in parse_flow_attr()
223 if (FIELDS_NOT_SUPPORTED(ib_spec->eth.mask, LAST_ETH_FIELD)) in parse_flow_attr()
228 ib_spec->eth.mask.dst_mac); in parse_flow_attr()
231 ib_spec->eth.val.dst_mac); in parse_flow_attr()
235 ib_spec->eth.mask.src_mac); in parse_flow_attr()
238 ib_spec->eth.val.src_mac); in parse_flow_attr()
240 if (ib_spec->eth.mask.vlan_tag) { in parse_flow_attr()
247 first_vid, ntohs(ib_spec->eth.mask.vlan_tag)); in parse_flow_attr()
249 first_vid, ntohs(ib_spec->eth.val.vlan_tag)); in parse_flow_attr()
253 ntohs(ib_spec->eth.mask.vlan_tag) >> 12); in parse_flow_attr()
256 ntohs(ib_spec->eth.val.vlan_tag) >> 12); in parse_flow_attr()
260 ntohs(ib_spec->eth.mask.vlan_tag) >> 13); in parse_flow_attr()
263 ntohs(ib_spec->eth.val.vlan_tag) >> 13); in parse_flow_attr()
266 ethertype, ntohs(ib_spec->eth.mask.ether_type)); in parse_flow_attr()
268 ethertype, ntohs(ib_spec->eth.val.ether_type)); in parse_flow_attr()
271 if (FIELDS_NOT_SUPPORTED(ib_spec->ipv4.mask, LAST_IPV4_FIELD)) in parse_flow_attr()
288 &ib_spec->ipv4.mask.src_ip, in parse_flow_attr()
289 sizeof(ib_spec->ipv4.mask.src_ip)); in parse_flow_attr()
292 &ib_spec->ipv4.val.src_ip, in parse_flow_attr()
293 sizeof(ib_spec->ipv4.val.src_ip)); in parse_flow_attr()
296 &ib_spec->ipv4.mask.dst_ip, in parse_flow_attr()
297 sizeof(ib_spec->ipv4.mask.dst_ip)); in parse_flow_attr()
300 &ib_spec->ipv4.val.dst_ip, in parse_flow_attr()
301 sizeof(ib_spec->ipv4.val.dst_ip)); in parse_flow_attr()
304 ib_spec->ipv4.mask.tos, ib_spec->ipv4.val.tos); in parse_flow_attr()
307 ib_spec->ipv4.mask.proto, in parse_flow_attr()
308 ib_spec->ipv4.val.proto)) in parse_flow_attr()
312 if (FIELDS_NOT_SUPPORTED(ib_spec->ipv6.mask, LAST_IPV6_FIELD)) in parse_flow_attr()
329 &ib_spec->ipv6.mask.src_ip, in parse_flow_attr()
330 sizeof(ib_spec->ipv6.mask.src_ip)); in parse_flow_attr()
333 &ib_spec->ipv6.val.src_ip, in parse_flow_attr()
334 sizeof(ib_spec->ipv6.val.src_ip)); in parse_flow_attr()
337 &ib_spec->ipv6.mask.dst_ip, in parse_flow_attr()
338 sizeof(ib_spec->ipv6.mask.dst_ip)); in parse_flow_attr()
341 &ib_spec->ipv6.val.dst_ip, in parse_flow_attr()
342 sizeof(ib_spec->ipv6.val.dst_ip)); in parse_flow_attr()
345 ib_spec->ipv6.mask.traffic_class, in parse_flow_attr()
346 ib_spec->ipv6.val.traffic_class); in parse_flow_attr()
349 ib_spec->ipv6.mask.next_hdr, in parse_flow_attr()
350 ib_spec->ipv6.val.next_hdr)) in parse_flow_attr()
354 ntohl(ib_spec->ipv6.mask.flow_label), in parse_flow_attr()
355 ntohl(ib_spec->ipv6.val.flow_label), in parse_flow_attr()
356 ib_spec->type & IB_FLOW_SPEC_INNER); in parse_flow_attr()
361 if (FIELDS_NOT_SUPPORTED(ib_spec->tcp_udp.mask, in parse_flow_attr()
369 ntohs(ib_spec->tcp_udp.mask.src_port)); in parse_flow_attr()
371 ntohs(ib_spec->tcp_udp.val.src_port)); in parse_flow_attr()
374 ntohs(ib_spec->tcp_udp.mask.dst_port)); in parse_flow_attr()
376 ntohs(ib_spec->tcp_udp.val.dst_port)); in parse_flow_attr()
379 if (FIELDS_NOT_SUPPORTED(ib_spec->tcp_udp.mask, in parse_flow_attr()
387 ntohs(ib_spec->tcp_udp.mask.src_port)); in parse_flow_attr()
389 ntohs(ib_spec->tcp_udp.val.src_port)); in parse_flow_attr()
392 ntohs(ib_spec->tcp_udp.mask.dst_port)); in parse_flow_attr()
394 ntohs(ib_spec->tcp_udp.val.dst_port)); in parse_flow_attr()
397 if (ib_spec->gre.mask.c_ks_res0_ver) in parse_flow_attr()
409 ntohs(ib_spec->gre.mask.protocol)); in parse_flow_attr()
411 ntohs(ib_spec->gre.val.protocol)); in parse_flow_attr()
415 &ib_spec->gre.mask.key, in parse_flow_attr()
416 sizeof(ib_spec->gre.mask.key)); in parse_flow_attr()
419 &ib_spec->gre.val.key, in parse_flow_attr()
420 sizeof(ib_spec->gre.val.key)); in parse_flow_attr()
427 &ib_spec->mpls.mask.tag)) in parse_flow_attr()
432 &ib_spec->mpls.val.tag, in parse_flow_attr()
433 sizeof(ib_spec->mpls.val.tag)); in parse_flow_attr()
436 &ib_spec->mpls.mask.tag, in parse_flow_attr()
437 sizeof(ib_spec->mpls.mask.tag)); in parse_flow_attr()
442 &ib_spec->mpls.mask.tag)) in parse_flow_attr()
447 &ib_spec->mpls.val.tag, in parse_flow_attr()
448 sizeof(ib_spec->mpls.val.tag)); in parse_flow_attr()
451 &ib_spec->mpls.mask.tag, in parse_flow_attr()
452 sizeof(ib_spec->mpls.mask.tag)); in parse_flow_attr()
455 if (ib_spec->type & IB_FLOW_SPEC_INNER) { in parse_flow_attr()
458 &ib_spec->mpls.mask.tag)) in parse_flow_attr()
463 &ib_spec->mpls.val.tag, in parse_flow_attr()
464 sizeof(ib_spec->mpls.val.tag)); in parse_flow_attr()
467 &ib_spec->mpls.mask.tag, in parse_flow_attr()
468 sizeof(ib_spec->mpls.mask.tag)); in parse_flow_attr()
472 &ib_spec->mpls.mask.tag)) in parse_flow_attr()
477 &ib_spec->mpls.val.tag, in parse_flow_attr()
478 sizeof(ib_spec->mpls.val.tag)); in parse_flow_attr()
481 &ib_spec->mpls.mask.tag, in parse_flow_attr()
482 sizeof(ib_spec->mpls.mask.tag)); in parse_flow_attr()
487 if (FIELDS_NOT_SUPPORTED(ib_spec->tunnel.mask, in parse_flow_attr()
492 ntohl(ib_spec->tunnel.mask.tunnel_id)); in parse_flow_attr()
494 ntohl(ib_spec->tunnel.val.tunnel_id)); in parse_flow_attr()
497 if (FIELDS_NOT_SUPPORTED(ib_spec->flow_tag, in parse_flow_attr()
500 if (ib_spec->flow_tag.tag_id >= BIT(24)) in parse_flow_attr()
503 flow_context->flow_tag = ib_spec->flow_tag.tag_id; in parse_flow_attr()
507 if (FIELDS_NOT_SUPPORTED(ib_spec->drop, in parse_flow_attr()
513 ret = parse_flow_flow_action(to_mflow_act(ib_spec->action.act), in parse_flow_attr()
519 if (FIELDS_NOT_SUPPORTED(ib_spec->flow_count, in parse_flow_attr()
527 action->counters = ib_spec->flow_count.counters; in parse_flow_attr()
575 union ib_flow_spec *ib_spec = (union ib_flow_spec *)(flow_attr + 1); in is_valid_ethertype() local
592 if ((ib_spec->type == (IB_FLOW_SPEC_ETH | inner_bit)) && in is_valid_ethertype()
593 ib_spec->eth.mask.ether_type) { in is_valid_ethertype()
594 mask_valid = (ib_spec->eth.mask.ether_type == in is_valid_ethertype()
597 eth_type = ntohs(ib_spec->eth.val.ether_type); in is_valid_ethertype()
598 } else if ((ib_spec->type == (IB_FLOW_SPEC_IPV4 | inner_bit)) || in is_valid_ethertype()
599 (ib_spec->type == (IB_FLOW_SPEC_IPV6 | inner_bit))) { in is_valid_ethertype()
600 ip_spec_type = ib_spec->type; in is_valid_ethertype()
602 ib_spec = (void *)ib_spec + ib_spec->size; in is_valid_ethertype()