Lines Matching refs:flow_attr
196 const struct ib_flow_attr *flow_attr, in parse_flow_attr() argument
531 flow_attr->flags & IB_FLOW_ATTR_FLAGS_EGRESS, action); in parse_flow_attr()
630 const struct ib_flow_attr *flow_attr, in is_valid_ethertype() argument
633 union ib_flow_spec *ib_spec = (union ib_flow_spec *)(flow_attr + 1); in is_valid_ethertype()
649 for (spec_index = 0; spec_index < flow_attr->num_of_specs; spec_index++) { in is_valid_ethertype()
679 const struct ib_flow_attr *flow_attr) in is_valid_attr() argument
681 return is_valid_ethertype(mdev, flow_attr, false) && in is_valid_attr()
682 is_valid_ethertype(mdev, flow_attr, true); in is_valid_attr()
762 struct ib_flow_attr *flow_attr, in get_flow_table() argument
765 bool dont_trap = flow_attr->flags & IB_FLOW_ATTR_FLAGS_DONT_TRAP; in get_flow_table()
781 switch (flow_attr->type) { in get_flow_table()
783 if (flow_is_multicast_only(flow_attr) && !dont_trap) in get_flow_table()
786 priority = ib_prio_to_core_prio(flow_attr->priority, in get_flow_table()
904 const struct ib_flow_attr *flow_attr, in _create_flow_rule() argument
915 const void *ib_flow = (const void *)flow_attr + sizeof(*flow_attr); in _create_flow_rule()
920 bool is_egress = flow_attr->flags & IB_FLOW_ATTR_FLAGS_EGRESS; in _create_flow_rule()
922 if (!is_valid_attr(dev->mdev, flow_attr)) in _create_flow_rule()
937 for (spec_index = 0; spec_index < flow_attr->num_of_specs; spec_index++) { in _create_flow_rule()
939 ib_flow, flow_attr, &flow_act, in _create_flow_rule()
953 if (!flow_is_multicast_only(flow_attr)) in _create_flow_rule()
956 if (dev->is_rep && flow_attr->type != IB_FLOW_ATTR_SNIFFER) { in _create_flow_rule()
959 rep = dev->port[flow_attr->port - 1].rep; in _create_flow_rule()
996 if (flow_attr->flags & IB_FLOW_ATTR_FLAGS_DONT_TRAP) in _create_flow_rule()
1006 (flow_attr->type == IB_FLOW_ATTR_ALL_DEFAULT || in _create_flow_rule()
1007 flow_attr->type == IB_FLOW_ATTR_MC_DEFAULT)) { in _create_flow_rule()
1009 spec->flow_context.flow_tag, flow_attr->type); in _create_flow_rule()
1038 const struct ib_flow_attr *flow_attr, in create_flow_rule() argument
1041 return _create_flow_rule(dev, ft_prio, flow_attr, dst, 0, NULL); in create_flow_rule()
1051 struct ib_flow_attr *flow_attr, in create_leftovers_rule() argument
1058 struct ib_flow_attr flow_attr; in create_leftovers_rule() member
1062 .flow_attr = { in create_leftovers_rule()
1074 .flow_attr = { in create_leftovers_rule()
1088 &leftovers_specs[LEFTOVERS_MC].flow_attr, in create_leftovers_rule()
1091 flow_attr->type == IB_FLOW_ATTR_ALL_DEFAULT) { in create_leftovers_rule()
1093 &leftovers_specs[LEFTOVERS_UC].flow_attr, in create_leftovers_rule()
1116 static const struct ib_flow_attr flow_attr = { in create_sniffer_rule() local
1119 .size = sizeof(flow_attr) in create_sniffer_rule()
1122 handler_rx = create_flow_rule(dev, ft_rx, &flow_attr, dst); in create_sniffer_rule()
1128 handler_tx = create_flow_rule(dev, ft_tx, &flow_attr, dst); in create_sniffer_rule()
1147 struct ib_flow_attr *flow_attr, in mlx5_ib_create_flow() argument
1156 bool is_egress = flow_attr->flags & IB_FLOW_ATTR_FLAGS_EGRESS; in mlx5_ib_create_flow()
1192 if (flow_attr->priority > MLX5_IB_FLOW_LAST_PRIO) { in mlx5_ib_create_flow()
1197 if (flow_attr->port > dev->num_ports || in mlx5_ib_create_flow()
1198 (flow_attr->flags & in mlx5_ib_create_flow()
1205 (flow_attr->type == IB_FLOW_ATTR_ALL_DEFAULT || in mlx5_ib_create_flow()
1206 flow_attr->type == IB_FLOW_ATTR_MC_DEFAULT)) { in mlx5_ib_create_flow()
1219 ft_prio = get_flow_table(dev, flow_attr, in mlx5_ib_create_flow()
1225 if (flow_attr->type == IB_FLOW_ATTR_SNIFFER) { in mlx5_ib_create_flow()
1226 ft_prio_tx = get_flow_table(dev, flow_attr, MLX5_IB_FT_TX); in mlx5_ib_create_flow()
1244 switch (flow_attr->type) { in mlx5_ib_create_flow()
1249 handler = _create_flow_rule(dev, ft_prio, flow_attr, dst, in mlx5_ib_create_flow()
1254 handler = create_leftovers_rule(dev, ft_prio, flow_attr, dst); in mlx5_ib_create_flow()