parse_attr
mod_acts = &attr->parse_attr->mod_hdr_acts;
if (!mlx5e_is_eswitch_flow(flow) && parse_attr->mirred_ifindex[0]) {
struct mlx5e_tc_flow_parse_attr *parse_attr = attr->parse_attr;
struct mlx5e_tc_flow_parse_attr *parse_attr;
parse_attr = attr->parse_attr;
if (parse_attr->filter_dev != priv->netdev) {
struct mlx5e_tc_flow_parse_attr *parse_attr = attr->parse_attr;
parse_attr->mirred_ifindex[esw_attr->out_count] = out_dev->ifindex;
parse_attr->tun_info[esw_attr->out_count] =
if (!parse_attr->tun_info[esw_attr->out_count])
memcpy(&parse_attr->mpls_info[esw_attr->out_count],
struct mlx5e_tc_flow_parse_attr *parse_attr = attr->parse_attr;
if (is_vlan_dev(parse_attr->filter_dev)) {
attr->parse_attr->mirred_ifindex[0] = act->dev->ifindex;
filter_dev = attr->parse_attr->filter_dev;
err = mlx5e_tc_act_pedit_parse_action(flow->priv, act, ns_type, attr->parse_attr->hdrs,
struct mlx5e_tc_flow_parse_attr *parse_attr;
parse_attr = attr->parse_attr;
if (netif_is_ovs_master(parse_attr->filter_dev)) {
struct mlx5e_tc_flow_parse_attr *parse_attr,
nest_level = attr->parse_attr->filter_dev->lower_level -
attr->parse_attr, &attr->action,
struct mlx5e_tc_flow_parse_attr *parse_attr = attr->parse_attr;
&parse_attr->spec),
err = add_vlan_prio_tag_rewrite_action(priv, parse_attr,
&parse_attr->spec),
&prio_tag_act, parse_attr, action,
struct mlx5e_tc_flow_parse_attr *parse_attr,
struct mlx5e_tc_flow_parse_attr *parse_attr,
headers_c = mlx5e_get_match_headers_criteria(*action, &parse_attr->spec);
headers_v = mlx5e_get_match_headers_value(*action, &parse_attr->spec);
err = mlx5e_tc_act_pedit_parse_action(priv, &pedit_act, namespace, parse_attr->hdrs,
err = mlx5e_tc_act_vlan_add_rewrite_action(priv, ns_type, act, attr->parse_attr,
mod_acts = &attr->parse_attr->mod_hdr_acts;
err = mlx5e_tc_match_to_reg_set(priv->mdev, &attr->parse_attr->mod_hdr_acts,
err = mlx5e_tc_match_to_reg_set(priv->mdev, &attr->parse_attr->mod_hdr_acts,
err = mlx5_tc_ct_entry_set_registers(priv, &attr->parse_attr->mod_hdr_acts,
struct mlx5e_tc_flow_parse_attr *parse_attr;
parse_attr = attr->parse_attr;
mirred_ifindex = parse_attr->mirred_ifindex[out_index];
kfree(attr->parse_attr->tun_info[out_index]);
struct mlx5e_tc_flow_parse_attr *parse_attr;
parse_attr = attr->parse_attr;
err = mlx5e_tc_tun_route_lookup(priv, &parse_attr->spec, attr, parse_attr->filter_dev);
r = mlx5e_route_get_create(priv, &key, parse_attr->filter_dev->ifindex,
struct mlx5e_tc_flow_parse_attr *parse_attr;
parse_attr = attr->parse_attr;
tun_info = parse_attr->tun_info[out_index];
err = mlx5e_set_vf_tunnel(esw, attr, &parse_attr->mod_hdr_acts, e->out_dev,
r = mlx5e_route_get_create(priv, &key, parse_attr->mirred_ifindex[out_index],
struct mlx5e_tc_flow_parse_attr *parse_attr;
spec = &flow->attr->parse_attr->spec;
parse_attr = attr->parse_attr;
err = mlx5e_update_vf_tunnel(esw, esw_attr, &parse_attr->mod_hdr_acts,
struct mlx5e_tc_flow_parse_attr *parse_attr;
parse_attr = attr->parse_attr;
spec = &parse_attr->spec;
err = mlx5e_tc_tun_route_lookup(priv, spec, attr, parse_attr->filter_dev);
spec = &flow->attr->parse_attr->spec;
spec = &flow->attr->parse_attr->spec;
mlx5e_eswitch_uplink_rep(attr->parse_attr->filter_dev) &&
struct mlx5e_tc_flow_parse_attr *parse_attr;
parse_attr = attr->parse_attr;
tun_info = parse_attr->tun_info[out_index];
mpls_info = &parse_attr->mpls_info[out_index];
struct mlx5e_tc_flow_parse_attr *parse_attr,
int peer_ifindex = parse_attr->mirred_ifindex[0];
err = mlx5e_hairpin_get_prio(priv, &parse_attr->spec, &match_prio,
struct mlx5e_tc_flow_parse_attr *parse_attr;
parse_attr = attr->parse_attr;
err = mlx5e_hairpin_flow_add(priv, flow, parse_attr, extack);
flow->rule[0] = mlx5e_add_offloaded_nic_rule(priv, &parse_attr->spec, attr);
mlx5e_mod_hdr_dealloc(&attr->parse_attr->mod_hdr_acts);
kvfree(attr->parse_attr);
struct mlx5e_tc_flow_parse_attr *parse_attr, *parse_attr2;
parse_attr2 = kvzalloc_obj(*parse_attr);
attr2->parse_attr = parse_attr2;
parse_attr = attr->parse_attr;
parse_attr2->filter_dev = parse_attr->filter_dev;
&parse_attr->mod_hdr_acts);
struct mlx5e_tc_flow_parse_attr *parse_attr;
parse_attr = attr->parse_attr;
err = mlx5e_tc_match_to_reg_set(priv->mdev, &parse_attr->mod_hdr_acts,
if (netif_is_ovs_master(parse_attr->filter_dev)) {
parse_attr->filter_dev->ifindex,
flow->rule[0] = mlx5e_tc_offload_to_slow_path(esw, flow, &parse_attr->spec);
flow->rule[0] = mlx5e_tc_offload_fdb_rules(esw, flow, &parse_attr->spec, attr);
kvfree(attr->parse_attr);
if (mlx5_flow_has_geneve_opt(&attr->parse_attr->spec))
kvfree(flow->extra_split_attr->parse_attr);
kvfree(attr->parse_attr);
mlx5e_tc_match_to_reg_match(&attr->parse_attr->spec,
mod_hdr_acts = &attr->parse_attr->mod_hdr_acts;
struct mlx5e_tc_flow_parse_attr *parse_attr,
struct pedit_headers_action *hdrs = parse_attr->hdrs;
mod_acts = &parse_attr->mod_hdr_acts;
headers_c = mlx5e_get_match_headers_criteria(*action_flags, &parse_attr->spec);
headers_v = mlx5e_get_match_headers_value(*action_flags, &parse_attr->spec);
struct mlx5e_tc_flow_parse_attr *parse_attr,
cmd_masks = &parse_attr->hdrs[cmd].masks;
struct mlx5e_tc_flow_parse_attr *parse_attr,
err = offload_pedit_fields(priv, namespace, parse_attr, action_flags, extack);
err = verify_offload_pedit_fields(priv, parse_attr, extack);
mlx5e_mod_hdr_dealloc(&parse_attr->mod_hdr_acts);
struct mlx5e_tc_flow_parse_attr *parse_attr,
!modify_header_match_supported(priv, &parse_attr->spec, flow_action, actions,
struct mlx5e_tc_flow_parse_attr *parse_attr = attr->parse_attr;
struct pedit_headers_action *hdrs = parse_attr->hdrs;
err = alloc_tc_pedit_action(priv, ns_type, parse_attr, &attr->action, extack);
if (parse_attr->mod_hdr_acts.num_actions > 0)
mlx5e_mod_hdr_dealloc(&parse_attr->mod_hdr_acts);
struct mlx5e_tc_flow_parse_attr *parse_attr;
parse_attr = kvzalloc_obj(*parse_attr);
if (!attr2 || !parse_attr) {
kvfree(parse_attr);
parse_attr->filter_dev = attr->parse_attr->filter_dev;
attr2->parse_attr = parse_attr;
kvfree(attr->parse_attr);
struct mlx5e_tc_flow_parse_attr *parse_attr;
parse_attr = attr->parse_attr;
parse_state = &parse_attr->parse_state;
parse_attr, flow, extack))
struct mlx5e_tc_flow_parse_attr *parse_attr;
parse_attr = attr->parse_attr;
err = mlx5e_tc_match_to_reg_set(priv->mdev, &parse_attr->mod_hdr_acts,
struct mlx5e_tc_flow_parse_attr *parse_attr;
parse_attr = attr->parse_attr;
filter_dev = parse_attr->filter_dev;
parse_state = &parse_attr->parse_state;
parse_attr, flow, extack))
mlx5e_mod_hdr_dealloc(&attr->parse_attr->mod_hdr_acts);
struct mlx5e_tc_flow_parse_attr *parse_attr;
parse_attr = kvzalloc_obj(*parse_attr);
if (!parse_attr || !flow)
*__parse_attr = parse_attr;
kvfree(parse_attr);
struct mlx5e_tc_flow_parse_attr *parse_attr,
attr->parse_attr = parse_attr;
struct mlx5e_tc_flow_parse_attr *parse_attr,
mlx5e_flow_attr_init(attr, parse_attr, f);
struct mlx5e_tc_flow_parse_attr *parse_attr;
&parse_attr, &flow);
parse_attr->filter_dev = filter_dev;
priv, parse_attr,
err = parse_cls_flower(flow->priv, flow, &parse_attr->spec,
err = mlx5_tc_ct_match_add(get_ct_priv(priv), &parse_attr->spec, f,
struct mlx5e_tc_flow_parse_attr *parse_attr;
parse_attr = flow->attr->parse_attr;
parse_attr->filter_dev,
struct mlx5e_tc_flow_parse_attr *parse_attr;
&parse_attr, &flow);
parse_attr->filter_dev = filter_dev;
mlx5e_flow_attr_init(flow->attr, parse_attr, f);
err = parse_cls_flower(flow->priv, flow, &parse_attr->spec,
err = mlx5_tc_ct_match_add(get_ct_priv(priv), &parse_attr->spec, f,
mlx5e_mod_hdr_dealloc(&parse_attr->mod_hdr_acts);
&attr->parse_attr->mod_hdr_acts);
struct mlx5e_tc_flow_parse_attr *parse_attr;
ret = parse_attr(tb, TCA_NETEM_MAX, opt, netem_policy, sizeof(*qopt), extack);
libbpf_dump_nlmsg_t parse_attr,
parse_msg, parse_attr, cookie);