Symbol: rule
drivers/acpi/acpica/acinterp.h
473
void acpi_ex_acquire_global_lock(u32 rule);
drivers/acpi/acpica/acinterp.h
475
void acpi_ex_release_global_lock(u32 rule);
drivers/infiniband/hw/hfi1/chip.c
14551
int rule, struct rsm_rule_data *rrd)
drivers/infiniband/hw/hfi1/chip.c
14554
dd_dev_err(dd, "Failed to update RMT for RSM%d rule\n", rule);
drivers/infiniband/hw/hfi1/chip.c
14558
add_rsm_rule(dd, rule, rrd);
drivers/infiniband/hw/mlx5/counters.c
1178
opfc->rule[0] = in_use_opfc->rule[0];
drivers/infiniband/hw/mlx5/fs.c
1054
opfc->rule[0] = in_use_opfc->rule[0];
drivers/infiniband/hw/mlx5/fs.c
1142
opfc->rule[i] = mlx5_add_flow_rules(prio->flow_table, &spec[i],
drivers/infiniband/hw/mlx5/fs.c
1144
if (IS_ERR(opfc->rule[i])) {
drivers/infiniband/hw/mlx5/fs.c
1145
err = PTR_ERR(opfc->rule[i]);
drivers/infiniband/hw/mlx5/fs.c
1161
mlx5_del_flow_rules(opfc->rule[i]);
drivers/infiniband/hw/mlx5/fs.c
1324
opfc->rule[i] = mlx5_add_flow_rules(prio->flow_table, &spec[i],
drivers/infiniband/hw/mlx5/fs.c
1326
if (IS_ERR(opfc->rule[i])) {
drivers/infiniband/hw/mlx5/fs.c
1327
err = PTR_ERR(opfc->rule[i]);
drivers/infiniband/hw/mlx5/fs.c
1338
mlx5_del_flow_rules(opfc->rule[i]);
drivers/infiniband/hw/mlx5/fs.c
1356
for (i = 0; i < MAX_OPFC_RULES && opfc->rule[i]; i++) {
drivers/infiniband/hw/mlx5/fs.c
1357
mlx5_del_flow_rules(opfc->rule[i]);
drivers/infiniband/hw/mlx5/fs.c
1388
if (!per_qp_opfc->opfcs[i].rule[j])
drivers/infiniband/hw/mlx5/fs.c
1390
mlx5_del_flow_rules(per_qp_opfc->opfcs[i].rule[j]);
drivers/infiniband/hw/mlx5/fs.c
1614
handler->rule = mlx5_add_flow_rules(ft, spec,
drivers/infiniband/hw/mlx5/fs.c
1618
if (IS_ERR(handler->rule)) {
drivers/infiniband/hw/mlx5/fs.c
1619
err = PTR_ERR(handler->rule);
drivers/infiniband/hw/mlx5/fs.c
1681
mlx5_del_flow_rules(handler->rule);
drivers/infiniband/hw/mlx5/fs.c
1724
mlx5_del_flow_rules(handler_rx->rule);
drivers/infiniband/hw/mlx5/fs.c
2078
handler->rule = mlx5_add_flow_rules(ft, spec,
drivers/infiniband/hw/mlx5/fs.c
2081
if (IS_ERR(handler->rule)) {
drivers/infiniband/hw/mlx5/fs.c
2082
err = PTR_ERR(handler->rule);
drivers/infiniband/hw/mlx5/fs.c
654
mlx5_del_flow_rules(iter->rule);
drivers/infiniband/hw/mlx5/fs.c
660
mlx5_del_flow_rules(handler->rule);
drivers/infiniband/hw/mlx5/mlx5_ib.h
251
struct mlx5_flow_handle *rule;
drivers/infiniband/hw/mlx5/mlx5_ib.h
877
struct mlx5_flow_handle *rule[MAX_OPFC_RULES];
drivers/net/dsa/bcm_sf2_cfp.c
1026
struct cfp_rule *rule;
drivers/net/dsa/bcm_sf2_cfp.c
1039
rule = bcm_sf2_cfp_rule_find(priv, port, loc);
drivers/net/dsa/bcm_sf2_cfp.c
1040
if (!rule)
drivers/net/dsa/bcm_sf2_cfp.c
1045
list_del(&rule->next);
drivers/net/dsa/bcm_sf2_cfp.c
1046
kfree(rule);
drivers/net/dsa/bcm_sf2_cfp.c
1067
struct cfp_rule *rule;
drivers/net/dsa/bcm_sf2_cfp.c
1069
rule = bcm_sf2_cfp_rule_find(priv, port, nfc->fs.location);
drivers/net/dsa/bcm_sf2_cfp.c
1070
if (!rule)
drivers/net/dsa/bcm_sf2_cfp.c
1073
memcpy(&nfc->fs, &rule->fs, sizeof(rule->fs));
drivers/net/dsa/bcm_sf2_cfp.c
1215
struct cfp_rule *rule, *n;
drivers/net/dsa/bcm_sf2_cfp.c
1220
list_for_each_entry_safe_reverse(rule, n, &priv->cfp.rules_list, next)
drivers/net/dsa/bcm_sf2_cfp.c
1221
bcm_sf2_cfp_rule_del(priv, rule->port, rule->fs.location);
drivers/net/dsa/bcm_sf2_cfp.c
1227
struct cfp_rule *rule;
drivers/net/dsa/bcm_sf2_cfp.c
1242
list_for_each_entry(rule, &priv->cfp.rules_list, next) {
drivers/net/dsa/bcm_sf2_cfp.c
1243
ret = bcm_sf2_cfp_rule_remove(priv, rule->port,
drivers/net/dsa/bcm_sf2_cfp.c
1244
rule->fs.location);
drivers/net/dsa/bcm_sf2_cfp.c
1250
ret = bcm_sf2_cfp_rule_insert(ds, rule->port, &rule->fs);
drivers/net/dsa/bcm_sf2_cfp.c
1304
struct cfp_rule *rule;
drivers/net/dsa/bcm_sf2_cfp.c
1309
rule = bcm_sf2_cfp_rule_find(priv, port, i);
drivers/net/dsa/bcm_sf2_cfp.c
1310
if (!rule)
drivers/net/dsa/bcm_sf2_cfp.c
398
flow_rule_match_ipv4_addrs(flow->rule, &ipv4);
drivers/net/dsa/bcm_sf2_cfp.c
399
flow_rule_match_ports(flow->rule, &ports);
drivers/net/dsa/bcm_sf2_cfp.c
400
flow_rule_match_ip(flow->rule, &ip);
drivers/net/dsa/bcm_sf2_cfp.c
570
struct cfp_rule *rule;
drivers/net/dsa/bcm_sf2_cfp.c
572
list_for_each_entry(rule, &priv->cfp.rules_list, next) {
drivers/net/dsa/bcm_sf2_cfp.c
573
if (rule->port == port && rule->fs.location == location)
drivers/net/dsa/bcm_sf2_cfp.c
574
return rule;
drivers/net/dsa/bcm_sf2_cfp.c
583
struct cfp_rule *rule = NULL;
drivers/net/dsa/bcm_sf2_cfp.c
590
list_for_each_entry(rule, &priv->cfp.rules_list, next) {
drivers/net/dsa/bcm_sf2_cfp.c
592
if (rule->port != port)
drivers/net/dsa/bcm_sf2_cfp.c
595
if (rule->fs.flow_type != fs->flow_type ||
drivers/net/dsa/bcm_sf2_cfp.c
596
rule->fs.ring_cookie != fs->ring_cookie ||
drivers/net/dsa/bcm_sf2_cfp.c
597
rule->fs.h_ext.data[0] != fs->h_ext.data[0])
drivers/net/dsa/bcm_sf2_cfp.c
613
ret = memcmp(&rule->fs.h_u, &fs->h_u, fs_size);
drivers/net/dsa/bcm_sf2_cfp.c
614
ret |= memcmp(&rule->fs.m_u, &fs->m_u, fs_size);
drivers/net/dsa/bcm_sf2_cfp.c
616
if (rule->fs.flow_type & FLOW_EXT) {
drivers/net/dsa/bcm_sf2_cfp.c
617
ret |= rule->fs.h_ext.vlan_tci != fs->h_ext.vlan_tci;
drivers/net/dsa/bcm_sf2_cfp.c
618
ret |= rule->fs.m_ext.vlan_tci != fs->m_ext.vlan_tci;
drivers/net/dsa/bcm_sf2_cfp.c
708
flow_rule_match_ipv6_addrs(flow->rule, &ipv6);
drivers/net/dsa/bcm_sf2_cfp.c
709
flow_rule_match_ports(flow->rule, &ports);
drivers/net/dsa/bcm_sf2_cfp.c
930
struct cfp_rule *rule = NULL;
drivers/net/dsa/bcm_sf2_cfp.c
953
rule = kzalloc_obj(*rule);
drivers/net/dsa/bcm_sf2_cfp.c
954
if (!rule)
drivers/net/dsa/bcm_sf2_cfp.c
959
kfree(rule);
drivers/net/dsa/bcm_sf2_cfp.c
963
rule->port = port;
drivers/net/dsa/bcm_sf2_cfp.c
964
memcpy(&rule->fs, fs, sizeof(*fs));
drivers/net/dsa/bcm_sf2_cfp.c
965
list_add_tail(&rule->next, &priv->cfp.rules_list);
drivers/net/dsa/microchip/ksz9477_tc_flower.c
112
struct flow_rule *rule,
drivers/net/dsa/microchip/ksz9477_tc_flower.c
115
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/dsa/microchip/ksz9477_tc_flower.c
127
if (flow_rule_match_has_control_flags(rule, extack))
drivers/net/dsa/microchip/ksz9477_tc_flower.c
130
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC) ||
drivers/net/dsa/microchip/ksz9477_tc_flower.c
131
flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/dsa/microchip/ksz9477_tc_flower.c
132
ret = ksz9477_flower_parse_key_l2(dev, port, extack, rule,
drivers/net/dsa/microchip/ksz9477_tc_flower.c
162
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/dsa/microchip/ksz9477_tc_flower.c
175
flow_action_for_each(i, act, &rule->action) {
drivers/net/dsa/microchip/ksz9477_tc_flower.c
218
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/dsa/microchip/ksz9477_tc_flower.c
237
ret = ksz9477_flower_parse_key(dev, port, extack, rule, cls->cookie,
drivers/net/dsa/microchip/ksz9477_tc_flower.c
29
struct flow_rule *rule,
drivers/net/dsa/microchip/ksz9477_tc_flower.c
40
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/dsa/microchip/ksz9477_tc_flower.c
43
flow_rule_match_basic(rule, &match);
drivers/net/dsa/microchip/ksz9477_tc_flower.c
56
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/dsa/microchip/ksz9477_tc_flower.c
57
flow_rule_match_eth_addrs(rule, &ematch);
drivers/net/dsa/ocelot/felix_vsc9959.c
1760
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/dsa/ocelot/felix_vsc9959.c
1761
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/dsa/ocelot/felix_vsc9959.c
1770
if (flow_rule_match_has_control_flags(rule, f->common.extack))
drivers/net/dsa/ocelot/felix_vsc9959.c
1773
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/dsa/ocelot/felix_vsc9959.c
1776
flow_rule_match_eth_addrs(rule, &match);
drivers/net/dsa/ocelot/felix_vsc9959.c
1784
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/dsa/ocelot/felix_vsc9959.c
1787
flow_rule_match_vlan(rule, &match);
drivers/net/dsa/ocelot/felix_vsc9959.c
2271
flow_action_for_each(i, a, &f->rule->action) {
drivers/net/dsa/sja1105/sja1105_flower.c
10
struct sja1105_rule *rule;
drivers/net/dsa/sja1105/sja1105_flower.c
108
struct sja1105_rule *rule = sja1105_rule_find(priv, cookie);
drivers/net/dsa/sja1105/sja1105_flower.c
114
if (!rule) {
drivers/net/dsa/sja1105/sja1105_flower.c
115
rule = kzalloc_obj(*rule);
drivers/net/dsa/sja1105/sja1105_flower.c
116
if (!rule)
drivers/net/dsa/sja1105/sja1105_flower.c
119
rule->cookie = cookie;
drivers/net/dsa/sja1105/sja1105_flower.c
12
list_for_each_entry(rule, &priv->flow_block.rules, list)
drivers/net/dsa/sja1105/sja1105_flower.c
120
rule->type = SJA1105_RULE_TC_POLICER;
drivers/net/dsa/sja1105/sja1105_flower.c
121
rule->tc_pol.sharindx = sja1105_find_free_l2_policer(priv);
drivers/net/dsa/sja1105/sja1105_flower.c
122
rule->key.type = SJA1105_KEY_TC;
drivers/net/dsa/sja1105/sja1105_flower.c
123
rule->key.tc.pcp = tc;
drivers/net/dsa/sja1105/sja1105_flower.c
127
if (rule->tc_pol.sharindx == -1) {
drivers/net/dsa/sja1105/sja1105_flower.c
13
if (rule->cookie == cookie)
drivers/net/dsa/sja1105/sja1105_flower.c
14
return rule;
drivers/net/dsa/sja1105/sja1105_flower.c
142
rule->port_mask |= BIT(port);
drivers/net/dsa/sja1105/sja1105_flower.c
147
for_each_set_bit(p, &rule->port_mask, SJA1105_MAX_NUM_PORTS) {
drivers/net/dsa/sja1105/sja1105_flower.c
150
policing[index].sharindx = rule->tc_pol.sharindx;
drivers/net/dsa/sja1105/sja1105_flower.c
153
policing[rule->tc_pol.sharindx].rate = div_u64(rate_bytes_per_sec *
drivers/net/dsa/sja1105/sja1105_flower.c
155
policing[rule->tc_pol.sharindx].smax = burst;
drivers/net/dsa/sja1105/sja1105_flower.c
158
policing[rule->tc_pol.sharindx].maxlen = VLAN_ETH_FRAME_LEN +
drivers/net/dsa/sja1105/sja1105_flower.c
165
priv->flow_block.l2_policer_used[rule->tc_pol.sharindx] = true;
drivers/net/dsa/sja1105/sja1105_flower.c
166
list_add(&rule->list, &priv->flow_block.rules);
drivers/net/dsa/sja1105/sja1105_flower.c
168
kfree(rule);
drivers/net/dsa/sja1105/sja1105_flower.c
200
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/dsa/sja1105/sja1105_flower.c
201
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/dsa/sja1105/sja1105_flower.c
217
if (flow_rule_match_has_control_flags(rule, extack))
drivers/net/dsa/sja1105/sja1105_flower.c
220
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/dsa/sja1105/sja1105_flower.c
223
flow_rule_match_basic(rule, &match);
drivers/net/dsa/sja1105/sja1105_flower.c
231
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/dsa/sja1105/sja1105_flower.c
236
flow_rule_match_eth_addrs(rule, &match);
drivers/net/dsa/sja1105/sja1105_flower.c
255
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/dsa/sja1105/sja1105_flower.c
258
flow_rule_match_vlan(rule, &match);
drivers/net/dsa/sja1105/sja1105_flower.c
349
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/dsa/sja1105/sja1105_flower.c
36
struct sja1105_rule *rule = sja1105_rule_find(priv, cookie);
drivers/net/dsa/sja1105/sja1105_flower.c
364
flow_action_for_each(i, act, &rule->action) {
drivers/net/dsa/sja1105/sja1105_flower.c
367
rc = sja1105_policer_validate(&rule->action, act, extack);
drivers/net/dsa/sja1105/sja1105_flower.c
43
if (!rule) {
drivers/net/dsa/sja1105/sja1105_flower.c
44
rule = kzalloc_obj(*rule);
drivers/net/dsa/sja1105/sja1105_flower.c
45
if (!rule)
drivers/net/dsa/sja1105/sja1105_flower.c
466
struct sja1105_rule *rule = sja1105_rule_find(priv, cls->cookie);
drivers/net/dsa/sja1105/sja1105_flower.c
470
if (!rule)
drivers/net/dsa/sja1105/sja1105_flower.c
473
if (rule->type == SJA1105_RULE_VL)
drivers/net/dsa/sja1105/sja1105_flower.c
474
return sja1105_vl_delete(priv, port, rule, cls->common.extack);
drivers/net/dsa/sja1105/sja1105_flower.c
478
if (rule->type == SJA1105_RULE_BCAST_POLICER) {
drivers/net/dsa/sja1105/sja1105_flower.c
48
rule->cookie = cookie;
drivers/net/dsa/sja1105/sja1105_flower.c
483
} else if (rule->type == SJA1105_RULE_TC_POLICER) {
drivers/net/dsa/sja1105/sja1105_flower.c
484
int index = (port * SJA1105_NUM_TC) + rule->key.tc.pcp;
drivers/net/dsa/sja1105/sja1105_flower.c
49
rule->type = SJA1105_RULE_BCAST_POLICER;
drivers/net/dsa/sja1105/sja1105_flower.c
492
rule->port_mask &= ~BIT(port);
drivers/net/dsa/sja1105/sja1105_flower.c
493
if (!rule->port_mask) {
drivers/net/dsa/sja1105/sja1105_flower.c
495
list_del(&rule->list);
drivers/net/dsa/sja1105/sja1105_flower.c
496
kfree(rule);
drivers/net/dsa/sja1105/sja1105_flower.c
50
rule->bcast_pol.sharindx = sja1105_find_free_l2_policer(priv);
drivers/net/dsa/sja1105/sja1105_flower.c
506
struct sja1105_rule *rule = sja1105_rule_find(priv, cls->cookie);
drivers/net/dsa/sja1105/sja1105_flower.c
509
if (!rule)
drivers/net/dsa/sja1105/sja1105_flower.c
51
rule->key.type = SJA1105_KEY_BCAST;
drivers/net/dsa/sja1105/sja1105_flower.c
512
if (rule->type != SJA1105_RULE_VL)
drivers/net/dsa/sja1105/sja1105_flower.c
515
rc = sja1105_vl_stats(priv, port, rule, &cls->stats,
drivers/net/dsa/sja1105/sja1105_flower.c
537
struct sja1105_rule *rule;
drivers/net/dsa/sja1105/sja1105_flower.c
541
rule = list_entry(pos, struct sja1105_rule, list);
drivers/net/dsa/sja1105/sja1105_flower.c
542
list_del(&rule->list);
drivers/net/dsa/sja1105/sja1105_flower.c
543
kfree(rule);
drivers/net/dsa/sja1105/sja1105_flower.c
55
if (rule->bcast_pol.sharindx == -1) {
drivers/net/dsa/sja1105/sja1105_flower.c
70
rule->port_mask |= BIT(port);
drivers/net/dsa/sja1105/sja1105_flower.c
75
for_each_set_bit(p, &rule->port_mask, SJA1105_MAX_NUM_PORTS) {
drivers/net/dsa/sja1105/sja1105_flower.c
78
policing[bcast].sharindx = rule->bcast_pol.sharindx;
drivers/net/dsa/sja1105/sja1105_flower.c
81
policing[rule->bcast_pol.sharindx].rate = div_u64(rate_bytes_per_sec *
drivers/net/dsa/sja1105/sja1105_flower.c
83
policing[rule->bcast_pol.sharindx].smax = burst;
drivers/net/dsa/sja1105/sja1105_flower.c
86
policing[rule->bcast_pol.sharindx].maxlen = VLAN_ETH_FRAME_LEN +
drivers/net/dsa/sja1105/sja1105_flower.c
93
priv->flow_block.l2_policer_used[rule->bcast_pol.sharindx] = true;
drivers/net/dsa/sja1105/sja1105_flower.c
94
list_add(&rule->list, &priv->flow_block.rules);
drivers/net/dsa/sja1105/sja1105_flower.c
96
kfree(rule);
drivers/net/dsa/sja1105/sja1105_main.c
2374
struct sja1105_rule *rule;
drivers/net/dsa/sja1105/sja1105_main.c
2378
list_for_each_entry(rule, &priv->flow_block.rules, list) {
drivers/net/dsa/sja1105/sja1105_main.c
2379
if (rule->type == SJA1105_RULE_VL) {
drivers/net/dsa/sja1105/sja1105_tas.c
345
schedule[k].destports = e->rule->vl.destports;
drivers/net/dsa/sja1105/sja1105_tas.c
348
schedule[k].vlindex = e->rule->vl.sharindx;
drivers/net/dsa/sja1105/sja1105_tas.c
349
schedule[k].winstindex = e->rule->vl.sharindx;
drivers/net/dsa/sja1105/sja1105_tas.h
29
struct sja1105_rule *rule;
drivers/net/dsa/sja1105/sja1105_vl.c
102
list_for_each_entry(rule, &priv->flow_block.rules, list) {
drivers/net/dsa/sja1105/sja1105_vl.c
103
if (rule->type != SJA1105_RULE_VL)
drivers/net/dsa/sja1105/sja1105_vl.c
105
if (rule->vl.type != SJA1105_VL_TIME_TRIGGERED)
drivers/net/dsa/sja1105/sja1105_vl.c
108
if (max_cycle_time < rule->vl.cycle_time) {
drivers/net/dsa/sja1105/sja1105_vl.c
109
max_cycle_time = rule->vl.cycle_time;
drivers/net/dsa/sja1105/sja1105_vl.c
110
its_base_time = rule->vl.base_time;
drivers/net/dsa/sja1105/sja1105_vl.c
12
struct sja1105_rule *rule,
drivers/net/dsa/sja1105/sja1105_vl.c
124
list_for_each_entry(rule, &priv->flow_block.rules, list) {
drivers/net/dsa/sja1105/sja1105_vl.c
128
if (rule->type != SJA1105_RULE_VL)
drivers/net/dsa/sja1105/sja1105_vl.c
130
if (rule->vl.type != SJA1105_VL_TIME_TRIGGERED)
drivers/net/dsa/sja1105/sja1105_vl.c
137
rbt = future_base_time(rule->vl.base_time, rule->vl.cycle_time,
drivers/net/dsa/sja1105/sja1105_vl.c
143
for (i = 0; i < rule->vl.num_entries; i++) {
drivers/net/dsa/sja1105/sja1105_vl.c
144
u8 gate_state = rule->vl.entries[i].gate_state;
drivers/net/dsa/sja1105/sja1105_vl.c
148
rc = sja1105_insert_gate_entry(gating_cfg, rule,
drivers/net/dsa/sja1105/sja1105_vl.c
155
entry_time += rule->vl.cycle_time;
drivers/net/dsa/sja1105/sja1105_vl.c
157
time += rule->vl.entries[i].interval;
drivers/net/dsa/sja1105/sja1105_vl.c
23
e->rule = rule;
drivers/net/dsa/sja1105/sja1105_vl.c
320
struct sja1105_rule *rule;
drivers/net/dsa/sja1105/sja1105_vl.c
326
list_for_each_entry(rule, &priv->flow_block.rules, list) {
drivers/net/dsa/sja1105/sja1105_vl.c
327
if (rule->type != SJA1105_RULE_VL)
drivers/net/dsa/sja1105/sja1105_vl.c
330
num_virtual_links += hweight_long(rule->port_mask);
drivers/net/dsa/sja1105/sja1105_vl.c
332
if (rule->vl.type != SJA1105_VL_NONCRITICAL)
drivers/net/dsa/sja1105/sja1105_vl.c
334
if (max_sharindx < rule->vl.sharindx)
drivers/net/dsa/sja1105/sja1105_vl.c
335
max_sharindx = rule->vl.sharindx;
drivers/net/dsa/sja1105/sja1105_vl.c
396
list_for_each_entry(rule, &priv->flow_block.rules, list) {
drivers/net/dsa/sja1105/sja1105_vl.c
399
if (rule->type != SJA1105_RULE_VL)
drivers/net/dsa/sja1105/sja1105_vl.c
402
for_each_set_bit(port, &rule->port_mask, SJA1105_MAX_NUM_PORTS) {
drivers/net/dsa/sja1105/sja1105_vl.c
405
vl_lookup[k].macaddr = rule->key.vl.dmac;
drivers/net/dsa/sja1105/sja1105_vl.c
406
if (rule->key.type == SJA1105_KEY_VLAN_AWARE_VL) {
drivers/net/dsa/sja1105/sja1105_vl.c
407
vl_lookup[k].vlanid = rule->key.vl.vid;
drivers/net/dsa/sja1105/sja1105_vl.c
408
vl_lookup[k].vlanprior = rule->key.vl.pcp;
drivers/net/dsa/sja1105/sja1105_vl.c
421
if (rule->vl.type == SJA1105_VL_NONCRITICAL)
drivers/net/dsa/sja1105/sja1105_vl.c
422
vl_lookup[k].destports = rule->vl.destports;
drivers/net/dsa/sja1105/sja1105_vl.c
425
vl_lookup[k].flow_cookie = rule->cookie;
drivers/net/dsa/sja1105/sja1105_vl.c
481
struct sja1105_rule *rule = sja1105_rule_find(priv, cookie);
drivers/net/dsa/sja1105/sja1105_vl.c
483
if (rule->vl.type == SJA1105_VL_NONCRITICAL)
drivers/net/dsa/sja1105/sja1105_vl.c
485
if (rule->vl.type == SJA1105_VL_TIME_TRIGGERED) {
drivers/net/dsa/sja1105/sja1105_vl.c
486
int sharindx = rule->vl.sharindx;
drivers/net/dsa/sja1105/sja1105_vl.c
490
vl_policing[i].maxlen = rule->vl.maxlen;
drivers/net/dsa/sja1105/sja1105_vl.c
495
vl_fwd[sharindx].priority = rule->vl.ipv;
drivers/net/dsa/sja1105/sja1105_vl.c
497
vl_fwd[sharindx].destports = rule->vl.destports;
drivers/net/dsa/sja1105/sja1105_vl.c
511
struct sja1105_rule *rule = sja1105_rule_find(priv, cookie);
drivers/net/dsa/sja1105/sja1105_vl.c
526
if (!rule) {
drivers/net/dsa/sja1105/sja1105_vl.c
527
rule = kzalloc_obj(*rule);
drivers/net/dsa/sja1105/sja1105_vl.c
528
if (!rule)
drivers/net/dsa/sja1105/sja1105_vl.c
531
rule->cookie = cookie;
drivers/net/dsa/sja1105/sja1105_vl.c
532
rule->type = SJA1105_RULE_VL;
drivers/net/dsa/sja1105/sja1105_vl.c
533
rule->key = *key;
drivers/net/dsa/sja1105/sja1105_vl.c
534
list_add(&rule->list, &priv->flow_block.rules);
drivers/net/dsa/sja1105/sja1105_vl.c
537
rule->port_mask |= BIT(port);
drivers/net/dsa/sja1105/sja1105_vl.c
539
rule->vl.destports |= destports;
drivers/net/dsa/sja1105/sja1105_vl.c
541
rule->vl.destports = destports;
drivers/net/dsa/sja1105/sja1105_vl.c
545
rule->port_mask &= ~BIT(port);
drivers/net/dsa/sja1105/sja1105_vl.c
546
if (!rule->port_mask) {
drivers/net/dsa/sja1105/sja1105_vl.c
547
list_del(&rule->list);
drivers/net/dsa/sja1105/sja1105_vl.c
548
kfree(rule);
drivers/net/dsa/sja1105/sja1105_vl.c
556
struct sja1105_rule *rule, struct netlink_ext_ack *extack)
drivers/net/dsa/sja1105/sja1105_vl.c
560
rule->port_mask &= ~BIT(port);
drivers/net/dsa/sja1105/sja1105_vl.c
561
if (!rule->port_mask) {
drivers/net/dsa/sja1105/sja1105_vl.c
562
list_del(&rule->list);
drivers/net/dsa/sja1105/sja1105_vl.c
563
kfree(rule);
drivers/net/dsa/sja1105/sja1105_vl.c
587
struct sja1105_rule *rule = sja1105_rule_find(priv, cookie);
drivers/net/dsa/sja1105/sja1105_vl.c
624
if (!rule) {
drivers/net/dsa/sja1105/sja1105_vl.c
625
rule = kzalloc_obj(*rule);
drivers/net/dsa/sja1105/sja1105_vl.c
626
if (!rule)
drivers/net/dsa/sja1105/sja1105_vl.c
629
list_add(&rule->list, &priv->flow_block.rules);
drivers/net/dsa/sja1105/sja1105_vl.c
630
rule->cookie = cookie;
drivers/net/dsa/sja1105/sja1105_vl.c
631
rule->type = SJA1105_RULE_VL;
drivers/net/dsa/sja1105/sja1105_vl.c
632
rule->key = *key;
drivers/net/dsa/sja1105/sja1105_vl.c
633
rule->vl.type = SJA1105_VL_TIME_TRIGGERED;
drivers/net/dsa/sja1105/sja1105_vl.c
634
rule->vl.sharindx = index;
drivers/net/dsa/sja1105/sja1105_vl.c
635
rule->vl.base_time = base_time;
drivers/net/dsa/sja1105/sja1105_vl.c
636
rule->vl.cycle_time = cycle_time;
drivers/net/dsa/sja1105/sja1105_vl.c
637
rule->vl.num_entries = num_entries;
drivers/net/dsa/sja1105/sja1105_vl.c
638
rule->vl.entries = kzalloc_objs(struct action_gate_entry,
drivers/net/dsa/sja1105/sja1105_vl.c
640
if (!rule->vl.entries) {
drivers/net/dsa/sja1105/sja1105_vl.c
686
rule->vl.entries[i] = entries[i];
drivers/net/dsa/sja1105/sja1105_vl.c
697
rule->vl.maxlen = VLAN_ETH_FRAME_LEN + ETH_FCS_LEN;
drivers/net/dsa/sja1105/sja1105_vl.c
698
rule->vl.ipv = ipv;
drivers/net/dsa/sja1105/sja1105_vl.c
701
rule->port_mask |= BIT(port);
drivers/net/dsa/sja1105/sja1105_vl.c
719
rule->port_mask &= ~BIT(port);
drivers/net/dsa/sja1105/sja1105_vl.c
720
if (!rule->port_mask) {
drivers/net/dsa/sja1105/sja1105_vl.c
721
list_del(&rule->list);
drivers/net/dsa/sja1105/sja1105_vl.c
722
kfree(rule->vl.entries);
drivers/net/dsa/sja1105/sja1105_vl.c
723
kfree(rule);
drivers/net/dsa/sja1105/sja1105_vl.c
762
struct sja1105_rule *rule, struct flow_stats *stats,
drivers/net/dsa/sja1105/sja1105_vl.c
773
if (rule->vl.type != SJA1105_VL_TIME_TRIGGERED)
drivers/net/dsa/sja1105/sja1105_vl.c
776
vlid = sja1105_find_vlid(priv, port, &rule->key);
drivers/net/dsa/sja1105/sja1105_vl.c
793
flow_stats_update(stats, 0, pkts - rule->vl.stats.pkts, 0,
drivers/net/dsa/sja1105/sja1105_vl.c
794
jiffies - rule->vl.stats.lastused,
drivers/net/dsa/sja1105/sja1105_vl.c
797
rule->vl.stats.pkts = pkts;
drivers/net/dsa/sja1105/sja1105_vl.c
798
rule->vl.stats.lastused = jiffies;
drivers/net/dsa/sja1105/sja1105_vl.c
95
struct sja1105_rule *rule;
drivers/net/dsa/sja1105/sja1105_vl.h
17
struct sja1105_rule *rule,
drivers/net/dsa/sja1105/sja1105_vl.h
27
struct sja1105_rule *rule, struct flow_stats *stats,
drivers/net/dsa/sja1105/sja1105_vl.h
44
int port, struct sja1105_rule *rule,
drivers/net/dsa/sja1105/sja1105_vl.h
64
struct sja1105_rule *rule,
drivers/net/ethernet/airoha/airoha_eth.c
2569
const struct flow_action *actions = &f->rule->action;
drivers/net/ethernet/airoha/airoha_eth.c
2635
act = &f->rule->action.entries[0];
drivers/net/ethernet/airoha/airoha_ppe.c
1007
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/airoha/airoha_ppe.c
1021
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_META))
drivers/net/ethernet/airoha/airoha_ppe.c
1024
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/airoha/airoha_ppe.c
1027
flow_rule_match_control(rule, &match);
drivers/net/ethernet/airoha/airoha_ppe.c
1036
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/airoha/airoha_ppe.c
1039
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/airoha/airoha_ppe.c
1048
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/airoha/airoha_ppe.c
1051
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/airoha/airoha_ppe.c
1068
flow_action_for_each(i, act, &rule->action) {
drivers/net/ethernet/airoha/airoha_ppe.c
1114
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/airoha/airoha_ppe.c
1120
flow_rule_match_ports(rule, &ports);
drivers/net/ethernet/airoha/airoha_ppe.c
1130
flow_rule_match_ipv4_addrs(rule, &addrs);
drivers/net/ethernet/airoha/airoha_ppe.c
1139
flow_rule_match_ipv6_addrs(rule, &addrs);
drivers/net/ethernet/airoha/airoha_ppe.c
1146
flow_action_for_each(i, act, &rule->action) {
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
434
struct aq_rx_filter *rule = NULL;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
437
hlist_for_each_entry_safe(rule, aq_node2,
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
439
if (be16_to_cpu(rule->aq_fsp.h_ext.vlan_tci) == vlan_id)
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
442
if (rule && rule->type == aq_rx_filter_vlan &&
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
443
be16_to_cpu(rule->aq_fsp.h_ext.vlan_tci) == vlan_id) {
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
446
cmd.fs.location = rule->aq_fsp.location;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
634
struct aq_rx_filter *rule = NULL, *parent = NULL;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
638
hlist_for_each_entry_safe(rule, aq_node2,
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
640
if (rule->aq_fsp.location >= index)
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
642
parent = rule;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
645
if (rule && rule->aq_fsp.location == index) {
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
646
err = aq_add_del_rule(aq_nic, rule, false);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
647
hlist_del(&rule->aq_node);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
648
kfree(rule);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
70
struct aq_rx_filter *rule;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
721
struct aq_rx_filter *rule = NULL;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
725
hlist_for_each_entry_safe(rule, aq_node2,
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
727
if (rule->aq_fsp.location == cmd->fs.location)
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
731
if (rule && rule->aq_fsp.location == cmd->fs.location) {
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
732
err = aq_add_del_rule(aq_nic, rule, false);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
733
hlist_del(&rule->aq_node);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
734
kfree(rule);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
74
hlist_for_each_entry_safe(rule, aq_node2,
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
745
struct aq_rx_filter *rule = NULL;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
748
hlist_for_each_entry_safe(rule, aq_node2,
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
750
if (fsp->location <= rule->aq_fsp.location)
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
753
if (unlikely(!rule || fsp->location != rule->aq_fsp.location))
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
756
memcpy(fsp, &rule->aq_fsp, sizeof(*fsp));
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
76
if (rule->aq_fsp.location == fsp->location)
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
766
struct aq_rx_filter *rule;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
771
hlist_for_each_entry_safe(rule, aq_node2,
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
776
rule_locs[count++] = rule->aq_fsp.location;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
78
if (aq_match_filter(&rule->aq_fsp, fsp)) {
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
788
struct aq_rx_filter *rule;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
791
hlist_for_each_entry_safe(rule, aq_node2,
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
793
err = aq_add_del_rule(aq_nic, rule, false);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
796
hlist_del(&rule->aq_node);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
797
kfree(rule);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
809
struct aq_rx_filter *rule;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
812
hlist_for_each_entry_safe(rule, aq_node2,
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
814
err = aq_add_del_rule(aq_nic, rule, true);
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
15270
u32 param, rule;
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
15278
rule = port ? NIG_REG_P1_TLLH_PTP_RULE_MASK :
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
15284
REG_WR(bp, rule, BNX2X_PTP_TX_ON_RULE_MASK);
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
15294
rule = port ? NIG_REG_P1_LLH_PTP_RULE_MASK :
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
15310
REG_WR(bp, rule, BNX2X_PTP_V1_L4_RULE_MASK);
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
15318
REG_WR(bp, rule, BNX2X_PTP_V2_L4_RULE_MASK);
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
15326
REG_WR(bp, rule, BNX2X_PTP_V2_L2_RULE_MASK);
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
15335
REG_WR(bp, rule, BNX2X_PTP_V2_RULE_MASK);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
372
struct flow_rule *rule = flow_cls_offload_flow_rule(tc_flow_cmd);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
374
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
384
if (flow_rule_match_has_control_flags(rule, extack))
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
387
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
390
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
401
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
404
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
412
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
415
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
427
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV4_ADDRS)) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
430
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
436
} else if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV6_ADDRS)) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
439
flow_rule_match_ipv6_addrs(rule, &match);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
447
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
450
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
458
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ICMP)) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
461
flow_rule_match_icmp(rule, &match);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
469
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_IPV4_ADDRS)) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
472
flow_rule_match_enc_ipv4_addrs(rule, &match);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
478
} else if (flow_rule_match_key(rule,
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
483
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_KEYID)) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
486
flow_rule_match_enc_keyid(rule, &match);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
492
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_PORTS)) {
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
495
flow_rule_match_enc_ports(rule, &match);
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
503
return bnxt_tc_parse_actions(bp, &flow->actions, &rule->action,
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1559
struct bcmgenet_rxnfc_rule *rule;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1565
rule = &priv->rxnfc_rules[cmd->fs.location];
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1566
if (rule->state == BCMGENET_RXNFC_STATE_UNUSED) {
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1571
if (rule->state == BCMGENET_RXNFC_STATE_ENABLED)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1573
if (rule->state != BCMGENET_RXNFC_STATE_UNUSED) {
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1574
list_del(&rule->list);
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1577
rule->state = BCMGENET_RXNFC_STATE_UNUSED;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1578
memset(&rule->fs, 0, sizeof(struct ethtool_rx_flow_spec));
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1609
struct bcmgenet_rxnfc_rule *rule;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1615
rule = &priv->rxnfc_rules[loc];
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1616
if (rule->state == BCMGENET_RXNFC_STATE_UNUSED)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1619
memcpy(&cmd->fs, &rule->fs,
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1647
struct bcmgenet_rxnfc_rule *rule;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1660
list_for_each_entry(rule, &priv->rxnfc_list, list)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1662
rule_locs[i++] = rule->fs.location;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4175
struct bcmgenet_rxnfc_rule *rule;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4186
list_for_each_entry(rule, &priv->rxnfc_list, list)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4187
if (rule->state == BCMGENET_RXNFC_STATE_ENABLED)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4189
rule->fs.location + 1);
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4232
list_for_each_entry(rule, &priv->rxnfc_list, list)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4233
if (rule->state != BCMGENET_RXNFC_STATE_UNUSED)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4234
bcmgenet_hfb_create_rxnfc_filter(priv, rule);
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4263
struct bcmgenet_rxnfc_rule *rule;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4276
list_for_each_entry(rule, &priv->rxnfc_list, list)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4277
if (rule->fs.ring_cookie == RX_CLS_FLOW_WAKE &&
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4278
rule->state == BCMGENET_RXNFC_STATE_ENABLED)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4279
hfb_enable |= 1 << rule->fs.location;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
598
struct bcmgenet_rxnfc_rule *rule)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
600
struct ethtool_rx_flow_spec *fs = &rule->fs;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
698
rule->state = BCMGENET_RXNFC_STATE_ENABLED;
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
1911
ret = cxgb4_flow_rule_replace(netdev, flow->rule, cmd->fs.location,
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
163
struct flow_rule *rule,
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
168
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
172
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
193
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
208
flow_rule_match_ipv6_addrs(rule, &match);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
226
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
229
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
240
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IP)) {
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
243
flow_rule_match_ip(rule, &match);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
248
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_KEYID)) {
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
251
flow_rule_match_enc_keyid(rule, &match);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
260
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
264
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
298
struct flow_rule *rule)
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
300
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
319
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
322
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
327
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IP)) {
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
337
flow_rule_match_ip(rule, &match);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
841
int cxgb4_flow_rule_replace(struct net_device *dev, struct flow_rule *rule,
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
851
if (cxgb4_validate_flow_actions(dev, &rule->action, extack, 0))
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
854
if (cxgb4_validate_flow_match(extack, rule))
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
857
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
860
flow_rule_match_control(rule, &match);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
872
} else if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV4_ADDRS)) {
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
874
} else if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV6_ADDRS)) {
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
878
cxgb4_process_flow_match(dev, rule, addr_type, fs);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
879
cxgb4_process_flow_actions(dev, &rule->action, fs);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
936
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.c
953
ret = cxgb4_flow_rule_replace(dev, rule, cls->common.prio, extack, fs,
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_flower.h
140
int cxgb4_flow_rule_replace(struct net_device *dev, struct flow_rule *rule,
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_matchall.c
189
flow_action_for_each(i, entry, &cls->rule->action)
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_matchall.c
193
ret = cxgb4_policer_validate(&cls->rule->action, entry, extack);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_matchall.c
251
flow_action_for_each(i, act, &cls->rule->action) {
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_matchall.c
337
cxgb4_process_flow_actions(dev, &cls->rule->action, fs);
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_matchall.c
423
&cls_matchall->rule->action,
drivers/net/ethernet/chelsio/cxgb4/cxgb4_tc_matchall.c
55
struct flow_action *actions = &cls->rule->action;
drivers/net/ethernet/engleder/tsnep_rxnfc.c
104
rule = tsnep_get_rule(adapter, fsp->location);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
105
if (!rule) {
drivers/net/ethernet/engleder/tsnep_rxnfc.c
112
fsp->ring_cookie = rule->queue_index;
drivers/net/ethernet/engleder/tsnep_rxnfc.c
114
if (rule->filter.type == TSNEP_RXNFC_ETHER_TYPE) {
drivers/net/ethernet/engleder/tsnep_rxnfc.c
115
fsp->h_u.ether_spec.h_proto = htons(rule->filter.ether_type);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
128
struct tsnep_rxnfc_rule *rule;
drivers/net/ethernet/engleder/tsnep_rxnfc.c
135
list_for_each_entry(rule, &adapter->rxnfc_rules, list) {
drivers/net/ethernet/engleder/tsnep_rxnfc.c
142
rule_locs[count] = rule->location;
drivers/net/ethernet/engleder/tsnep_rxnfc.c
15
rx_assign |= (rule->queue_index << TSNEP_RX_ASSIGN_QUEUE_SHIFT) &
drivers/net/ethernet/engleder/tsnep_rxnfc.c
171
static void tsnep_rxnfc_init_rule(struct tsnep_rxnfc_rule *rule,
drivers/net/ethernet/engleder/tsnep_rxnfc.c
174
INIT_LIST_HEAD(&rule->list);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
176
rule->queue_index = fsp->ring_cookie;
drivers/net/ethernet/engleder/tsnep_rxnfc.c
177
rule->location = fsp->location;
drivers/net/ethernet/engleder/tsnep_rxnfc.c
179
rule->filter.type = TSNEP_RXNFC_ETHER_TYPE;
drivers/net/ethernet/engleder/tsnep_rxnfc.c
180
rule->filter.ether_type = ntohs(fsp->h_u.ether_spec.h_proto);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
184
struct tsnep_rxnfc_rule *rule)
drivers/net/ethernet/engleder/tsnep_rxnfc.c
19
TSNEP_RX_ASSIGN_ETHER_TYPE_OFFSET * rule->location;
drivers/net/ethernet/engleder/tsnep_rxnfc.c
190
if (!memcmp(&rule->filter, &tmp->filter, sizeof(rule->filter)) &&
drivers/net/ethernet/engleder/tsnep_rxnfc.c
191
tmp->location != rule->location) {
drivers/net/ethernet/engleder/tsnep_rxnfc.c
20
iowrite16(rule->filter.ether_type, addr);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
207
struct tsnep_rxnfc_rule *rule, *old_rule;
drivers/net/ethernet/engleder/tsnep_rxnfc.c
234
rule = kzalloc_obj(*rule);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
235
if (!rule)
drivers/net/ethernet/engleder/tsnep_rxnfc.c
24
TSNEP_RX_ASSIGN_OFFSET * rule->location;
drivers/net/ethernet/engleder/tsnep_rxnfc.c
247
tsnep_rxnfc_init_rule(rule, fsp);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
249
retval = tsnep_rxnfc_check_rule(adapter, rule);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
257
tsnep_add_rule(adapter, rule);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
265
kfree(rule);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
274
struct tsnep_rxnfc_rule *rule;
drivers/net/ethernet/engleder/tsnep_rxnfc.c
278
rule = tsnep_get_rule(adapter, fsp->location);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
279
if (!rule) {
drivers/net/ethernet/engleder/tsnep_rxnfc.c
285
tsnep_delete_rule(adapter, rule);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
29
struct tsnep_rxnfc_rule *rule)
drivers/net/ethernet/engleder/tsnep_rxnfc.c
34
TSNEP_RX_ASSIGN_OFFSET * rule->location;
drivers/net/ethernet/engleder/tsnep_rxnfc.c
41
struct tsnep_rxnfc_rule *rule;
drivers/net/ethernet/engleder/tsnep_rxnfc.c
43
list_for_each_entry(rule, &adapter->rxnfc_rules, list) {
drivers/net/ethernet/engleder/tsnep_rxnfc.c
44
if (rule->location == location)
drivers/net/ethernet/engleder/tsnep_rxnfc.c
45
return rule;
drivers/net/ethernet/engleder/tsnep_rxnfc.c
46
if (rule->location > location)
drivers/net/ethernet/engleder/tsnep_rxnfc.c
54
struct tsnep_rxnfc_rule *rule)
drivers/net/ethernet/engleder/tsnep_rxnfc.c
58
tsnep_enable_rule(adapter, rule);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
62
if (cur->location >= rule->location)
drivers/net/ethernet/engleder/tsnep_rxnfc.c
67
list_add(&rule->list, pred ? &pred->list : &adapter->rxnfc_rules);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
72
struct tsnep_rxnfc_rule *rule)
drivers/net/ethernet/engleder/tsnep_rxnfc.c
74
tsnep_disable_rule(adapter, rule);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
76
list_del(&rule->list);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
79
kfree(rule);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
84
struct tsnep_rxnfc_rule *rule, *tmp;
drivers/net/ethernet/engleder/tsnep_rxnfc.c
88
list_for_each_entry_safe(rule, tmp, &adapter->rxnfc_rules, list)
drivers/net/ethernet/engleder/tsnep_rxnfc.c
89
tsnep_delete_rule(adapter, rule);
drivers/net/ethernet/engleder/tsnep_rxnfc.c
9
struct tsnep_rxnfc_rule *rule)
drivers/net/ethernet/engleder/tsnep_rxnfc.c
98
struct tsnep_rxnfc_rule *rule = NULL;
drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c
676
struct dpaa2_eth_cls_rule *rule;
drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c
685
rule = &priv->cls_rules[location];
drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c
688
if (rule->in_use) {
drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c
689
err = dpaa2_eth_do_cls_rule(net_dev, &rule->fs, false);
drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c
693
rule->in_use = 0;
drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c
708
rule->in_use = 1;
drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c
709
rule->fs = *new_fs;
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
14
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
15
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
36
if (flow_rule_match_has_control_flags(rule, extack))
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
39
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
42
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
49
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
496
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
516
act = &rule->action.entries[0];
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
52
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
540
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
541
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
554
if (flow_rule_match_has_control_flags(rule, extack))
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
557
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
560
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
59
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
597
cls_act = &cls->rule->action.entries[0];
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
62
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
651
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
655
if (!flow_offload_has_one_action(&rule->action)) {
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
660
act = &rule->action.entries[0];
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
715
act = &cls->rule->action.entries[0];
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
74
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV4_ADDRS)) {
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
750
cls_act = &cls->rule->action.entries[0];
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
77
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
800
if (!flow_offload_has_one_action(&cls->rule->action)) {
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
805
act = &cls->rule->action.entries[0];
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
84
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
87
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
94
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IP)) {
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c
97
flow_rule_match_ip(rule, &match);
drivers/net/ethernet/freescale/enetc/enetc_qos.c
1129
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/freescale/enetc/enetc_qos.c
1146
flow_action_for_each(i, entry, &rule->action)
drivers/net/ethernet/freescale/enetc/enetc_qos.c
1162
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/freescale/enetc/enetc_qos.c
1165
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/freescale/enetc/enetc_qos.c
1202
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/freescale/enetc/enetc_qos.c
1205
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/freescale/enetc/enetc_qos.c
1281
err = enetc_psfp_policer_validate(&rule->action, entryp, extack);
drivers/net/ethernet/freescale/enetc/enetc_qos.c
1396
struct flow_rule *rule = flow_cls_offload_flow_rule(cls_flower);
drivers/net/ethernet/freescale/enetc/enetc_qos.c
1398
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/freescale/enetc/enetc_qos.c
1399
struct flow_action *action = &rule->action;
drivers/net/ethernet/freescale/gianfar_ethtool.c
1053
static inline u32 vlan_tci_vid(struct ethtool_rx_flow_spec *rule)
drivers/net/ethernet/freescale/gianfar_ethtool.c
1055
return be16_to_cpu(rule->h_ext.vlan_tci) & VLAN_VID_MASK;
drivers/net/ethernet/freescale/gianfar_ethtool.c
1058
static inline u32 vlan_tci_vidm(struct ethtool_rx_flow_spec *rule)
drivers/net/ethernet/freescale/gianfar_ethtool.c
1060
return be16_to_cpu(rule->m_ext.vlan_tci) & VLAN_VID_MASK;
drivers/net/ethernet/freescale/gianfar_ethtool.c
1063
static inline u32 vlan_tci_cfi(struct ethtool_rx_flow_spec *rule)
drivers/net/ethernet/freescale/gianfar_ethtool.c
1065
return be16_to_cpu(rule->h_ext.vlan_tci) & VLAN_CFI_MASK;
drivers/net/ethernet/freescale/gianfar_ethtool.c
1068
static inline u32 vlan_tci_cfim(struct ethtool_rx_flow_spec *rule)
drivers/net/ethernet/freescale/gianfar_ethtool.c
1070
return be16_to_cpu(rule->m_ext.vlan_tci) & VLAN_CFI_MASK;
drivers/net/ethernet/freescale/gianfar_ethtool.c
1073
static inline u32 vlan_tci_prio(struct ethtool_rx_flow_spec *rule)
drivers/net/ethernet/freescale/gianfar_ethtool.c
1075
return (be16_to_cpu(rule->h_ext.vlan_tci) & VLAN_PRIO_MASK) >>
drivers/net/ethernet/freescale/gianfar_ethtool.c
1079
static inline u32 vlan_tci_priom(struct ethtool_rx_flow_spec *rule)
drivers/net/ethernet/freescale/gianfar_ethtool.c
1081
return (be16_to_cpu(rule->m_ext.vlan_tci) & VLAN_PRIO_MASK) >>
drivers/net/ethernet/freescale/gianfar_ethtool.c
1086
static int gfar_convert_to_filer(struct ethtool_rx_flow_spec *rule,
drivers/net/ethernet/freescale/gianfar_ethtool.c
1096
if ((rule->flow_type & FLOW_EXT) &&
drivers/net/ethernet/freescale/gianfar_ethtool.c
1097
(rule->m_ext.vlan_tci != cpu_to_be16(0xFFFF))) {
drivers/net/ethernet/freescale/gianfar_ethtool.c
1098
if (!rule->m_ext.vlan_tci)
drivers/net/ethernet/freescale/gianfar_ethtool.c
1099
rule->m_ext.vlan_tci = cpu_to_be16(0xFFFF);
drivers/net/ethernet/freescale/gianfar_ethtool.c
1105
id = vlan_tci_vid(rule);
drivers/net/ethernet/freescale/gianfar_ethtool.c
1106
id_mask = vlan_tci_vidm(rule);
drivers/net/ethernet/freescale/gianfar_ethtool.c
1107
cfi = vlan_tci_cfi(rule);
drivers/net/ethernet/freescale/gianfar_ethtool.c
1108
cfi_mask = vlan_tci_cfim(rule);
drivers/net/ethernet/freescale/gianfar_ethtool.c
1109
prio = vlan_tci_prio(rule);
drivers/net/ethernet/freescale/gianfar_ethtool.c
1110
prio_mask = vlan_tci_priom(rule);
drivers/net/ethernet/freescale/gianfar_ethtool.c
1119
switch (rule->flow_type & ~FLOW_EXT) {
drivers/net/ethernet/freescale/gianfar_ethtool.c
1123
gfar_set_basic_ip(&rule->h_u.tcp_ip4_spec,
drivers/net/ethernet/freescale/gianfar_ethtool.c
1124
&rule->m_u.tcp_ip4_spec, tab);
drivers/net/ethernet/freescale/gianfar_ethtool.c
1129
gfar_set_basic_ip(&rule->h_u.udp_ip4_spec,
drivers/net/ethernet/freescale/gianfar_ethtool.c
1130
&rule->m_u.udp_ip4_spec, tab);
drivers/net/ethernet/freescale/gianfar_ethtool.c
1136
gfar_set_basic_ip((struct ethtool_tcpip4_spec *)&rule->h_u,
drivers/net/ethernet/freescale/gianfar_ethtool.c
1137
(struct ethtool_tcpip4_spec *)&rule->m_u,
drivers/net/ethernet/freescale/gianfar_ethtool.c
1143
gfar_set_user_ip((struct ethtool_usrip4_spec *) &rule->h_u,
drivers/net/ethernet/freescale/gianfar_ethtool.c
1144
(struct ethtool_usrip4_spec *) &rule->m_u,
drivers/net/ethernet/freescale/gianfar_ethtool.c
1150
gfar_set_ether((struct ethhdr *) &rule->h_u,
drivers/net/ethernet/freescale/gianfar_ethtool.c
1151
(struct ethhdr *) &rule->m_u, tab);
drivers/net/ethernet/freescale/gianfar_ethtool.c
1175
if (rule->ring_cookie == RX_CLS_FLOW_DISC)
drivers/net/ethernet/freescale/gianfar_ethtool.c
1178
tab->fe[tab->index - 1].ctrl |= (rule->ring_cookie << 10);
drivers/net/ethernet/google/gve/gve_adminq.c
1339
int gve_adminq_add_flow_rule(struct gve_priv *priv, struct gve_adminq_flow_rule *rule, u32 loc)
drivers/net/ethernet/google/gve/gve_adminq.c
1344
.rule = *rule,
drivers/net/ethernet/google/gve/gve_adminq.h
524
struct gve_adminq_flow_rule rule;
drivers/net/ethernet/google/gve/gve_adminq.h
647
int gve_adminq_add_flow_rule(struct gve_priv *priv, struct gve_adminq_flow_rule *rule, u32 loc);
drivers/net/ethernet/google/gve/gve_flow_rule.c
107
struct gve_adminq_flow_rule *rule)
drivers/net/ethernet/google/gve/gve_flow_rule.c
12
struct gve_adminq_queried_flow_rule *rule)
drivers/net/ethernet/google/gve/gve_flow_rule.c
129
rule->action = cpu_to_be16(fsp->ring_cookie);
drivers/net/ethernet/google/gve/gve_flow_rule.c
135
rule->flow_type = cpu_to_be16(flow_type_lut[flow_type]);
drivers/net/ethernet/google/gve/gve_flow_rule.c
14
struct gve_adminq_flow_rule *flow_rule = &rule->flow_rule;
drivers/net/ethernet/google/gve/gve_flow_rule.c
141
rule->key.src_ip[0] = fsp->h_u.tcp_ip4_spec.ip4src;
drivers/net/ethernet/google/gve/gve_flow_rule.c
142
rule->key.dst_ip[0] = fsp->h_u.tcp_ip4_spec.ip4dst;
drivers/net/ethernet/google/gve/gve_flow_rule.c
143
rule->key.src_port = fsp->h_u.tcp_ip4_spec.psrc;
drivers/net/ethernet/google/gve/gve_flow_rule.c
144
rule->key.dst_port = fsp->h_u.tcp_ip4_spec.pdst;
drivers/net/ethernet/google/gve/gve_flow_rule.c
145
rule->mask.src_ip[0] = fsp->m_u.tcp_ip4_spec.ip4src;
drivers/net/ethernet/google/gve/gve_flow_rule.c
146
rule->mask.dst_ip[0] = fsp->m_u.tcp_ip4_spec.ip4dst;
drivers/net/ethernet/google/gve/gve_flow_rule.c
147
rule->mask.src_port = fsp->m_u.tcp_ip4_spec.psrc;
drivers/net/ethernet/google/gve/gve_flow_rule.c
148
rule->mask.dst_port = fsp->m_u.tcp_ip4_spec.pdst;
drivers/net/ethernet/google/gve/gve_flow_rule.c
152
rule->key.src_ip[0] = fsp->h_u.tcp_ip4_spec.ip4src;
drivers/net/ethernet/google/gve/gve_flow_rule.c
153
rule->key.dst_ip[0] = fsp->h_u.tcp_ip4_spec.ip4dst;
drivers/net/ethernet/google/gve/gve_flow_rule.c
154
rule->key.spi = fsp->h_u.ah_ip4_spec.spi;
drivers/net/ethernet/google/gve/gve_flow_rule.c
155
rule->mask.src_ip[0] = fsp->m_u.tcp_ip4_spec.ip4src;
drivers/net/ethernet/google/gve/gve_flow_rule.c
156
rule->mask.dst_ip[0] = fsp->m_u.tcp_ip4_spec.ip4dst;
drivers/net/ethernet/google/gve/gve_flow_rule.c
157
rule->mask.spi = fsp->m_u.ah_ip4_spec.spi;
drivers/net/ethernet/google/gve/gve_flow_rule.c
162
memcpy(&rule->key.src_ip, fsp->h_u.tcp_ip6_spec.ip6src,
drivers/net/ethernet/google/gve/gve_flow_rule.c
164
memcpy(&rule->key.dst_ip, fsp->h_u.tcp_ip6_spec.ip6dst,
drivers/net/ethernet/google/gve/gve_flow_rule.c
166
rule->key.src_port = fsp->h_u.tcp_ip6_spec.psrc;
drivers/net/ethernet/google/gve/gve_flow_rule.c
167
rule->key.dst_port = fsp->h_u.tcp_ip6_spec.pdst;
drivers/net/ethernet/google/gve/gve_flow_rule.c
168
memcpy(&rule->mask.src_ip, fsp->m_u.tcp_ip6_spec.ip6src,
drivers/net/ethernet/google/gve/gve_flow_rule.c
170
memcpy(&rule->mask.dst_ip, fsp->m_u.tcp_ip6_spec.ip6dst,
drivers/net/ethernet/google/gve/gve_flow_rule.c
172
rule->mask.src_port = fsp->m_u.tcp_ip6_spec.psrc;
drivers/net/ethernet/google/gve/gve_flow_rule.c
173
rule->mask.dst_port = fsp->m_u.tcp_ip6_spec.pdst;
drivers/net/ethernet/google/gve/gve_flow_rule.c
177
memcpy(&rule->key.src_ip, fsp->h_u.usr_ip6_spec.ip6src,
drivers/net/ethernet/google/gve/gve_flow_rule.c
179
memcpy(&rule->key.dst_ip, fsp->h_u.usr_ip6_spec.ip6dst,
drivers/net/ethernet/google/gve/gve_flow_rule.c
181
rule->key.spi = fsp->h_u.ah_ip6_spec.spi;
drivers/net/ethernet/google/gve/gve_flow_rule.c
182
memcpy(&rule->mask.src_ip, fsp->m_u.usr_ip6_spec.ip6src,
drivers/net/ethernet/google/gve/gve_flow_rule.c
184
memcpy(&rule->mask.dst_ip, fsp->m_u.usr_ip6_spec.ip6dst,
drivers/net/ethernet/google/gve/gve_flow_rule.c
186
rule->key.spi = fsp->h_u.ah_ip6_spec.spi;
drivers/net/ethernet/google/gve/gve_flow_rule.c
201
struct gve_adminq_queried_flow_rule *rule = NULL;
drivers/net/ethernet/google/gve/gve_flow_rule.c
220
rule = &rules_cache[i];
drivers/net/ethernet/google/gve/gve_flow_rule.c
225
if (!rule)
drivers/net/ethernet/google/gve/gve_flow_rule.c
228
err = gve_fill_ethtool_flow_spec(fsp, rule);
drivers/net/ethernet/google/gve/gve_flow_rule.c
266
struct gve_adminq_flow_rule *rule = NULL;
drivers/net/ethernet/google/gve/gve_flow_rule.c
272
rule = kvzalloc_obj(*rule);
drivers/net/ethernet/google/gve/gve_flow_rule.c
273
if (!rule)
drivers/net/ethernet/google/gve/gve_flow_rule.c
276
err = gve_generate_flow_rule(priv, fsp, rule);
drivers/net/ethernet/google/gve/gve_flow_rule.c
280
err = gve_adminq_add_flow_rule(priv, rule, fsp->location);
drivers/net/ethernet/google/gve/gve_flow_rule.c
283
kvfree(rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2017
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2022
hlist_for_each_entry_safe(rule, node, &hdev->fd_rule_list, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2023
rule_locs[cnt] = rule->location;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5207
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5209
hlist_del(&rule->rule_node);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5210
kfree(rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5266
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5269
hlist_for_each_entry_safe(rule, node, hlist, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5270
if (rule->location == location)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5271
return rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5272
else if (rule->location > location)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5277
*parent = rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5285
struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5288
INIT_HLIST_NODE(&rule->rule_node);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5291
hlist_add_behind(&rule->rule_node, &parent->rule_node);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5293
hlist_add_head(&rule->rule_node, hlist);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5351
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5358
if (!rule || rule->rule_type != HCLGE_FD_EP_ACTIVE ||
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5359
rule->ep.user_def.layer == HCLGE_FD_USER_DEF_NONE)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5363
cfg = &hdev->fd_cfg.user_def_cfg[rule->ep.user_def.layer - 1];
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5364
info = &rule->ep.user_def;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5372
fd_rule = hclge_find_fd_rule(hlist, rule->location, &parent);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5387
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5391
if (!rule || rule->rule_type != HCLGE_FD_EP_ACTIVE ||
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5392
rule->ep.user_def.layer == HCLGE_FD_USER_DEF_NONE)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5395
cfg = &hdev->fd_cfg.user_def_cfg[rule->ep.user_def.layer - 1];
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5397
cfg->offset = rule->ep.user_def.offset;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5404
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5408
if (!rule || rule->rule_type != HCLGE_FD_EP_ACTIVE ||
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5409
rule->ep.user_def.layer == HCLGE_FD_USER_DEF_NONE)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5412
cfg = &hdev->fd_cfg.user_def_cfg[rule->ep.user_def.layer - 1];
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5709
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5715
u8 *p = (u8 *)rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5718
if (rule->unused_tuple & BIT(tuple_bit))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5791
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5808
rule->vf_id, 0);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5832
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5855
cur_key_y, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5868
rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5870
ret = hclge_fd_tcam_config(hdev, stage, false, rule->location, key_y,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5875
rule->queue_id, ret);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5879
ret = hclge_fd_tcam_config(hdev, stage, true, rule->location, key_x,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5884
rule->queue_id, ret);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5889
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5896
ad_data.ad_id = rule->location;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5898
if (rule->action == HCLGE_FD_ACTION_DROP_PACKET) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5900
} else if (rule->action == HCLGE_FD_ACTION_SELECT_TC) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5903
kinfo->tc_info.tqp_offset[rule->cls_flower.tc];
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5905
ilog2(kinfo->tc_info.tqp_count[rule->cls_flower.tc]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5908
ad_data.queue_id = rule->queue_id;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5913
ad_data.counter_id = rule->vf_id %
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
5924
ad_data.rule_id = rule->location;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6261
struct hclge_fd_rule *rule, u8 ip_proto)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6263
rule->tuples.src_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6265
rule->tuples_mask.src_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6268
rule->tuples.dst_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6270
rule->tuples_mask.dst_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6273
rule->tuples.src_port = be16_to_cpu(fs->h_u.tcp_ip4_spec.psrc);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6274
rule->tuples_mask.src_port = be16_to_cpu(fs->m_u.tcp_ip4_spec.psrc);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6276
rule->tuples.dst_port = be16_to_cpu(fs->h_u.tcp_ip4_spec.pdst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6277
rule->tuples_mask.dst_port = be16_to_cpu(fs->m_u.tcp_ip4_spec.pdst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6279
rule->tuples.ip_tos = fs->h_u.tcp_ip4_spec.tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6280
rule->tuples_mask.ip_tos = fs->m_u.tcp_ip4_spec.tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6282
rule->tuples.ether_proto = ETH_P_IP;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6283
rule->tuples_mask.ether_proto = 0xFFFF;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6285
rule->tuples.ip_proto = ip_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6286
rule->tuples_mask.ip_proto = 0xFF;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6290
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6292
rule->tuples.src_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6294
rule->tuples_mask.src_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6297
rule->tuples.dst_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6299
rule->tuples_mask.dst_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6302
rule->tuples.ip_tos = fs->h_u.usr_ip4_spec.tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6303
rule->tuples_mask.ip_tos = fs->m_u.usr_ip4_spec.tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6305
rule->tuples.ip_proto = fs->h_u.usr_ip4_spec.proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6306
rule->tuples_mask.ip_proto = fs->m_u.usr_ip4_spec.proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6308
rule->tuples.ether_proto = ETH_P_IP;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6309
rule->tuples_mask.ether_proto = 0xFFFF;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6313
struct hclge_fd_rule *rule, u8 ip_proto)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6315
ipv6_addr_be32_to_cpu(rule->tuples.src_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6317
ipv6_addr_be32_to_cpu(rule->tuples_mask.src_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6320
ipv6_addr_be32_to_cpu(rule->tuples.dst_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6322
ipv6_addr_be32_to_cpu(rule->tuples_mask.dst_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6325
rule->tuples.src_port = be16_to_cpu(fs->h_u.tcp_ip6_spec.psrc);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6326
rule->tuples_mask.src_port = be16_to_cpu(fs->m_u.tcp_ip6_spec.psrc);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6328
rule->tuples.dst_port = be16_to_cpu(fs->h_u.tcp_ip6_spec.pdst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6329
rule->tuples_mask.dst_port = be16_to_cpu(fs->m_u.tcp_ip6_spec.pdst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6331
rule->tuples.ether_proto = ETH_P_IPV6;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6332
rule->tuples_mask.ether_proto = 0xFFFF;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6334
rule->tuples.ip_tos = fs->h_u.tcp_ip6_spec.tclass;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6335
rule->tuples_mask.ip_tos = fs->m_u.tcp_ip6_spec.tclass;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6337
rule->tuples.ip_proto = ip_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6338
rule->tuples_mask.ip_proto = 0xFF;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6342
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6344
ipv6_addr_be32_to_cpu(rule->tuples.src_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6346
ipv6_addr_be32_to_cpu(rule->tuples_mask.src_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6349
ipv6_addr_be32_to_cpu(rule->tuples.dst_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6351
ipv6_addr_be32_to_cpu(rule->tuples_mask.dst_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6354
rule->tuples.ip_proto = fs->h_u.usr_ip6_spec.l4_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6355
rule->tuples_mask.ip_proto = fs->m_u.usr_ip6_spec.l4_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6357
rule->tuples.ip_tos = fs->h_u.tcp_ip6_spec.tclass;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6358
rule->tuples_mask.ip_tos = fs->m_u.tcp_ip6_spec.tclass;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6360
rule->tuples.ether_proto = ETH_P_IPV6;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6361
rule->tuples_mask.ether_proto = 0xFFFF;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6365
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6367
ether_addr_copy(rule->tuples.src_mac, fs->h_u.ether_spec.h_source);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6368
ether_addr_copy(rule->tuples_mask.src_mac, fs->m_u.ether_spec.h_source);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6370
ether_addr_copy(rule->tuples.dst_mac, fs->h_u.ether_spec.h_dest);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6371
ether_addr_copy(rule->tuples_mask.dst_mac, fs->m_u.ether_spec.h_dest);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6373
rule->tuples.ether_proto = be16_to_cpu(fs->h_u.ether_spec.h_proto);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6374
rule->tuples_mask.ether_proto = be16_to_cpu(fs->m_u.ether_spec.h_proto);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6378
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6382
rule->tuples.l2_user_def = info->data;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6383
rule->tuples_mask.l2_user_def = info->data_mask;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6386
rule->tuples.l3_user_def = info->data;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6387
rule->tuples_mask.l3_user_def = info->data_mask;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6390
rule->tuples.l4_user_def = (u32)info->data << 16;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6391
rule->tuples_mask.l4_user_def = (u32)info->data_mask << 16;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6397
rule->ep.user_def = *info;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6401
struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6408
hclge_fd_get_tcpip4_tuple(fs, rule, IPPROTO_SCTP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6411
hclge_fd_get_tcpip4_tuple(fs, rule, IPPROTO_TCP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6414
hclge_fd_get_tcpip4_tuple(fs, rule, IPPROTO_UDP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6417
hclge_fd_get_ip4_tuple(fs, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6420
hclge_fd_get_tcpip6_tuple(fs, rule, IPPROTO_SCTP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6423
hclge_fd_get_tcpip6_tuple(fs, rule, IPPROTO_TCP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6426
hclge_fd_get_tcpip6_tuple(fs, rule, IPPROTO_UDP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6429
hclge_fd_get_ip6_tuple(fs, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6432
hclge_fd_get_ether_tuple(fs, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6439
rule->tuples.vlan_tag1 = be16_to_cpu(fs->h_ext.vlan_tci);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6440
rule->tuples_mask.vlan_tag1 = be16_to_cpu(fs->m_ext.vlan_tci);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6441
hclge_fd_get_user_def_tuple(info, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6445
ether_addr_copy(rule->tuples.dst_mac, fs->h_ext.h_dest);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6446
ether_addr_copy(rule->tuples_mask.dst_mac, fs->m_ext.h_dest);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6453
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6457
ret = hclge_config_action(hdev, HCLGE_FD_STAGE_1, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6461
return hclge_config_key(hdev, HCLGE_FD_STAGE_1, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6465
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6471
if (hdev->fd_active_type != rule->rule_type &&
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6476
rule->rule_type, hdev->fd_active_type);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6481
ret = hclge_fd_check_user_def_refcnt(hdev, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6489
ret = hclge_fd_config_rule(hdev, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6493
rule->state = HCLGE_FD_ACTIVE;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6494
hdev->fd_active_type = rule->rule_type;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6495
hclge_update_fd_list(hdev, rule->state, rule->location, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6557
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6585
rule = kzalloc_obj(*rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6586
if (!rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6589
ret = hclge_fd_get_tuple(fs, rule, &info);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6591
kfree(rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6595
rule->flow_type = fs->flow_type;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6596
rule->location = fs->location;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6597
rule->unused_tuple = unused;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6598
rule->vf_id = dst_vport_id;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6599
rule->queue_id = q_index;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6600
rule->action = action;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6601
rule->rule_type = HCLGE_FD_EP_ACTIVE;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6603
ret = hclge_add_fd_entry_common(hdev, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6605
kfree(rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6650
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6662
hlist_for_each_entry_safe(rule, node, &hdev->fd_rule_list,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6664
hlist_del(&rule->rule_node);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6665
kfree(rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6689
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6704
hlist_for_each_entry_safe(rule, node, &hdev->fd_rule_list, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6705
if (rule->state == HCLGE_FD_ACTIVE)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6706
rule->state = HCLGE_FD_TO_ADD;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6729
static void hclge_fd_get_tcpip4_info(struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6733
spec->ip4src = cpu_to_be32(rule->tuples.src_ip[IPV4_INDEX]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6734
spec_mask->ip4src = rule->unused_tuple & BIT(INNER_SRC_IP) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6735
0 : cpu_to_be32(rule->tuples_mask.src_ip[IPV4_INDEX]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6737
spec->ip4dst = cpu_to_be32(rule->tuples.dst_ip[IPV4_INDEX]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6738
spec_mask->ip4dst = rule->unused_tuple & BIT(INNER_DST_IP) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6739
0 : cpu_to_be32(rule->tuples_mask.dst_ip[IPV4_INDEX]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6741
spec->psrc = cpu_to_be16(rule->tuples.src_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6742
spec_mask->psrc = rule->unused_tuple & BIT(INNER_SRC_PORT) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6743
0 : cpu_to_be16(rule->tuples_mask.src_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6745
spec->pdst = cpu_to_be16(rule->tuples.dst_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6746
spec_mask->pdst = rule->unused_tuple & BIT(INNER_DST_PORT) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6747
0 : cpu_to_be16(rule->tuples_mask.dst_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6749
spec->tos = rule->tuples.ip_tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6750
spec_mask->tos = rule->unused_tuple & BIT(INNER_IP_TOS) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6751
0 : rule->tuples_mask.ip_tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6754
static void hclge_fd_get_ip4_info(struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6758
spec->ip4src = cpu_to_be32(rule->tuples.src_ip[IPV4_INDEX]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6759
spec_mask->ip4src = rule->unused_tuple & BIT(INNER_SRC_IP) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6760
0 : cpu_to_be32(rule->tuples_mask.src_ip[IPV4_INDEX]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6762
spec->ip4dst = cpu_to_be32(rule->tuples.dst_ip[IPV4_INDEX]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6763
spec_mask->ip4dst = rule->unused_tuple & BIT(INNER_DST_IP) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6764
0 : cpu_to_be32(rule->tuples_mask.dst_ip[IPV4_INDEX]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6766
spec->tos = rule->tuples.ip_tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6767
spec_mask->tos = rule->unused_tuple & BIT(INNER_IP_TOS) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6768
0 : rule->tuples_mask.ip_tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6770
spec->proto = rule->tuples.ip_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6771
spec_mask->proto = rule->unused_tuple & BIT(INNER_IP_PROTO) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6772
0 : rule->tuples_mask.ip_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6777
static void hclge_fd_get_tcpip6_info(struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6781
ipv6_addr_cpu_to_be32(spec->ip6src, rule->tuples.src_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6782
ipv6_addr_cpu_to_be32(spec->ip6dst, rule->tuples.dst_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6783
if (rule->unused_tuple & BIT(INNER_SRC_IP))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6787
rule->tuples_mask.src_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6789
if (rule->unused_tuple & BIT(INNER_DST_IP))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6793
rule->tuples_mask.dst_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6795
spec->tclass = rule->tuples.ip_tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6796
spec_mask->tclass = rule->unused_tuple & BIT(INNER_IP_TOS) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6797
0 : rule->tuples_mask.ip_tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6799
spec->psrc = cpu_to_be16(rule->tuples.src_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6800
spec_mask->psrc = rule->unused_tuple & BIT(INNER_SRC_PORT) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6801
0 : cpu_to_be16(rule->tuples_mask.src_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6803
spec->pdst = cpu_to_be16(rule->tuples.dst_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6804
spec_mask->pdst = rule->unused_tuple & BIT(INNER_DST_PORT) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6805
0 : cpu_to_be16(rule->tuples_mask.dst_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6808
static void hclge_fd_get_ip6_info(struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6812
ipv6_addr_cpu_to_be32(spec->ip6src, rule->tuples.src_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6813
ipv6_addr_cpu_to_be32(spec->ip6dst, rule->tuples.dst_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6814
if (rule->unused_tuple & BIT(INNER_SRC_IP))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6818
rule->tuples_mask.src_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6820
if (rule->unused_tuple & BIT(INNER_DST_IP))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6824
rule->tuples_mask.dst_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6826
spec->tclass = rule->tuples.ip_tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6827
spec_mask->tclass = rule->unused_tuple & BIT(INNER_IP_TOS) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6828
0 : rule->tuples_mask.ip_tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6830
spec->l4_proto = rule->tuples.ip_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6831
spec_mask->l4_proto = rule->unused_tuple & BIT(INNER_IP_PROTO) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6832
0 : rule->tuples_mask.ip_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6835
static void hclge_fd_get_ether_info(struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6839
ether_addr_copy(spec->h_source, rule->tuples.src_mac);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6840
ether_addr_copy(spec->h_dest, rule->tuples.dst_mac);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6842
if (rule->unused_tuple & BIT(INNER_SRC_MAC))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6845
ether_addr_copy(spec_mask->h_source, rule->tuples_mask.src_mac);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6847
if (rule->unused_tuple & BIT(INNER_DST_MAC))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6850
ether_addr_copy(spec_mask->h_dest, rule->tuples_mask.dst_mac);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6852
spec->h_proto = cpu_to_be16(rule->tuples.ether_proto);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6853
spec_mask->h_proto = rule->unused_tuple & BIT(INNER_ETH_TYPE) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6854
0 : cpu_to_be16(rule->tuples_mask.ether_proto);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6858
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6860
if ((rule->unused_tuple & HCLGE_FD_TUPLE_USER_DEF_TUPLES) ==
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6867
fs->h_ext.data[0] = cpu_to_be32(rule->ep.user_def.offset);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6868
fs->h_ext.data[1] = cpu_to_be32(rule->ep.user_def.data);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6871
fs->m_ext.data[1] = cpu_to_be32(rule->ep.user_def.data_mask);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6876
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6879
fs->h_ext.vlan_tci = cpu_to_be16(rule->tuples.vlan_tag1);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6881
rule->unused_tuple & BIT(INNER_VLAN_TAG_FST) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6882
0 : cpu_to_be16(rule->tuples_mask.vlan_tag1);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6884
hclge_fd_get_user_def_info(fs, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6888
ether_addr_copy(fs->h_ext.h_dest, rule->tuples.dst_mac);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6889
if (rule->unused_tuple & BIT(INNER_DST_MAC))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6893
rule->tuples_mask.dst_mac);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6900
struct hclge_fd_rule *rule = NULL;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6903
hlist_for_each_entry_safe(rule, node2, &hdev->fd_rule_list, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6904
if (rule->location == location)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6905
return rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6906
else if (rule->location > location)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6914
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6916
if (rule->action == HCLGE_FD_ACTION_DROP_PACKET) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6921
fs->ring_cookie = rule->queue_id;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6922
vf_id = rule->vf_id;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6932
struct hclge_fd_rule *rule = NULL;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6943
rule = hclge_get_fd_rule(hdev, fs->location);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6944
if (!rule) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6949
fs->flow_type = rule->flow_type;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6954
hclge_fd_get_tcpip4_info(rule, &fs->h_u.tcp_ip4_spec,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6958
hclge_fd_get_ip4_info(rule, &fs->h_u.usr_ip4_spec,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6964
hclge_fd_get_tcpip6_info(rule, &fs->h_u.tcp_ip6_spec,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6968
hclge_fd_get_ip6_info(rule, &fs->h_u.usr_ip6_spec,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6976
hclge_fd_get_ether_info(rule, &fs->h_u.ether_spec,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6981
hclge_fd_get_ext_info(fs, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6983
hclge_fd_get_ring_cookie(fs, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
6995
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7005
hlist_for_each_entry_safe(rule, node2,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7012
if (rule->state == HCLGE_FD_TO_DEL)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7015
rule_locs[cnt] = rule->location;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7054
struct hclge_fd_rule *rule = NULL;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7057
hlist_for_each_entry_safe(rule, node, &hdev->fd_rule_list, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7058
if (!memcmp(tuples, &rule->tuples, sizeof(*tuples)))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7059
return rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7066
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7068
rule->unused_tuple = BIT(INNER_SRC_MAC) | BIT(INNER_DST_MAC) |
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7071
rule->action = 0;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7072
rule->vf_id = 0;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7073
rule->rule_type = HCLGE_FD_ARFS_ACTIVE;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7074
rule->state = HCLGE_FD_TO_ADD;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7077
rule->flow_type = TCP_V4_FLOW;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7079
rule->flow_type = UDP_V4_FLOW;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7082
rule->flow_type = TCP_V6_FLOW;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7084
rule->flow_type = UDP_V6_FLOW;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7086
memcpy(&rule->tuples, tuples, sizeof(rule->tuples));
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7087
memset(&rule->tuples_mask, 0xFF, sizeof(rule->tuples_mask));
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7096
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7119
rule = hclge_fd_search_flow_keys(hdev, &new_tuples);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7120
if (!rule) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7127
rule = kzalloc_obj(*rule, GFP_ATOMIC);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7128
if (!rule) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7133
rule->location = bit_id;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7134
rule->arfs.flow_id = flow_id;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7135
rule->queue_id = queue_id;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7136
hclge_fd_build_arfs_rule(&new_tuples, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7137
hclge_update_fd_list(hdev, rule->state, rule->location, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7139
} else if (rule->queue_id != queue_id) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7140
rule->queue_id = queue_id;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7141
rule->state = HCLGE_FD_TO_ADD;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7146
return rule->location;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7153
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7161
hlist_for_each_entry_safe(rule, node, &hdev->fd_rule_list, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7162
if (rule->state != HCLGE_FD_ACTIVE)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7164
if (rps_may_expire_flow(handle->netdev, rule->queue_id,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7165
rule->arfs.flow_id, rule->location)) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7166
rule->state = HCLGE_FD_TO_DEL;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7178
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7185
hlist_for_each_entry_safe(rule, node, &hdev->fd_rule_list, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7186
switch (rule->state) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7190
rule->location, NULL, false);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7195
hclge_fd_dec_rule_cnt(hdev, rule->location);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7196
hlist_del(&rule->rule_node);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7197
kfree(rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7210
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7224
rule->tuples.ether_proto = ethtype_key;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7225
rule->tuples_mask.ether_proto = ethtype_mask;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7226
rule->tuples.ip_proto = match.key->ip_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7227
rule->tuples_mask.ip_proto = match.mask->ip_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7229
rule->unused_tuple |= BIT(INNER_IP_PROTO);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7230
rule->unused_tuple |= BIT(INNER_ETH_TYPE);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7235
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7241
ether_addr_copy(rule->tuples.dst_mac, match.key->dst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7242
ether_addr_copy(rule->tuples_mask.dst_mac, match.mask->dst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7243
ether_addr_copy(rule->tuples.src_mac, match.key->src);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7244
ether_addr_copy(rule->tuples_mask.src_mac, match.mask->src);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7246
rule->unused_tuple |= BIT(INNER_DST_MAC);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7247
rule->unused_tuple |= BIT(INNER_SRC_MAC);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7252
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7258
rule->tuples.vlan_tag1 = match.key->vlan_id |
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7260
rule->tuples_mask.vlan_tag1 = match.mask->vlan_id |
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7263
rule->unused_tuple |= BIT(INNER_VLAN_TAG_FST);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7268
struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7287
rule->tuples.src_ip[IPV4_INDEX] = be32_to_cpu(match.key->src);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7288
rule->tuples_mask.src_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7290
rule->tuples.dst_ip[IPV4_INDEX] = be32_to_cpu(match.key->dst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7291
rule->tuples_mask.dst_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7297
ipv6_addr_be32_to_cpu(rule->tuples.src_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7299
ipv6_addr_be32_to_cpu(rule->tuples_mask.src_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7301
ipv6_addr_be32_to_cpu(rule->tuples.dst_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7303
ipv6_addr_be32_to_cpu(rule->tuples_mask.dst_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7306
rule->unused_tuple |= BIT(INNER_SRC_IP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7307
rule->unused_tuple |= BIT(INNER_DST_IP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7314
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7321
rule->tuples.src_port = be16_to_cpu(match.key->src);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7322
rule->tuples_mask.src_port = be16_to_cpu(match.mask->src);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7323
rule->tuples.dst_port = be16_to_cpu(match.key->dst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7324
rule->tuples_mask.dst_port = be16_to_cpu(match.mask->dst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7326
rule->unused_tuple |= BIT(INNER_SRC_PORT);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7327
rule->unused_tuple |= BIT(INNER_DST_PORT);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7333
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7353
hclge_get_cls_key_basic(flow, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7354
hclge_get_cls_key_mac(flow, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7355
hclge_get_cls_key_vlan(flow, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7357
ret = hclge_get_cls_key_ip(flow, rule, extack);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7361
hclge_get_cls_key_port(flow, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7397
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7413
rule = kzalloc_obj(*rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7414
if (!rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7417
ret = hclge_parse_cls_flower(hdev, cls_flower, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7419
kfree(rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7423
rule->action = HCLGE_FD_ACTION_SELECT_TC;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7424
rule->cls_flower.tc = tc;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7425
rule->location = cls_flower->common.prio - 1;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7426
rule->vf_id = 0;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7427
rule->cls_flower.cookie = cls_flower->cookie;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7428
rule->rule_type = HCLGE_FD_TC_FLOWER_ACTIVE;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7430
ret = hclge_add_fd_entry_common(hdev, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7432
kfree(rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7440
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7443
hlist_for_each_entry_safe(rule, node, &hdev->fd_rule_list, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7444
if (rule->cls_flower.cookie == cookie)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7445
return rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7456
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7464
rule = hclge_find_cls_flower(hdev, cls_flower->cookie);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7465
if (!rule) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7470
ret = hclge_fd_tcam_config(hdev, HCLGE_FD_STAGE_1, true, rule->location,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7477
hclge_update_fd_list(hdev, HCLGE_FD_TO_DEL, rule->location, NULL);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7483
hclge_update_fd_list(hdev, HCLGE_FD_DELETED, rule->location, NULL);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7491
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7500
hlist_for_each_entry_safe(rule, node, hlist, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7501
switch (rule->state) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7503
ret = hclge_fd_config_rule(hdev, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7506
rule->state = HCLGE_FD_ACTIVE;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7510
rule->location, NULL, false);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7513
hclge_fd_dec_rule_cnt(hdev, rule->location);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
7514
hclge_fd_free_node(hdev, rule);
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3323
struct i40e_fdir_filter *rule;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3330
hlist_for_each_entry_safe(rule, node2,
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3335
rule_locs[cnt] = rule->fd_id;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3360
struct i40e_fdir_filter *rule = NULL;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3366
hlist_for_each_entry_safe(rule, node2,
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3368
if (fsp->location <= rule->fd_id)
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3372
if (!rule || fsp->location != rule->fd_id)
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3375
fsp->flow_type = rule->flow_type;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3390
fsp->h_u.tcp_ip6_spec.psrc = rule->dst_port;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3391
fsp->h_u.tcp_ip6_spec.pdst = rule->src_port;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3392
memcpy(fsp->h_u.tcp_ip6_spec.ip6dst, rule->src_ip6,
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3394
memcpy(fsp->h_u.tcp_ip6_spec.ip6src, rule->dst_ip6,
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3401
fsp->h_u.tcp_ip4_spec.psrc = rule->dst_port;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3402
fsp->h_u.tcp_ip4_spec.pdst = rule->src_port;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3403
fsp->h_u.tcp_ip4_spec.ip4src = rule->dst_ip;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3404
fsp->h_u.tcp_ip4_spec.ip4dst = rule->src_ip;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3407
switch (rule->flow_type) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3439
rule->flow_type);
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3473
if (rule->dest_ctl == I40E_FILTER_PROGRAM_DESC_DEST_DROP_PACKET)
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3476
fsp->ring_cookie = rule->q_index;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3478
if (rule->vlan_tag) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3479
fsp->h_ext.vlan_etype = rule->vlan_etype;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3481
fsp->h_ext.vlan_tci = rule->vlan_tag;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3487
if (rule->dest_vsi != vsi->id) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3488
vsi = i40e_find_vsi_from_id(pf, rule->dest_vsi);
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3500
if (rule->flex_filter) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3502
userdef.flex_word = be16_to_cpu(rule->flex_word);
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3503
userdef.flex_offset = rule->flex_offset;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3750
struct i40e_fdir_filter *rule, *parent;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3756
rule = NULL;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3758
hlist_for_each_entry_safe(rule, node2,
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3761
if (rule->fd_id >= sw_idx)
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3763
parent = rule;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3767
if (rule && (rule->fd_id == sw_idx)) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3771
err = i40e_add_del_fdir(vsi, rule, false);
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3772
hlist_del(&rule->fdir_node);
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3773
kfree(rule);
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3810
struct i40e_fdir_filter *rule;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3816
hlist_for_each_entry(rule, &pf->fdir_filter_list, fdir_node) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3817
if (rule->flow_type != IP_USER_FLOW)
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3819
if (rule->flex_filter &&
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3820
rule->flex_offset == entry->src_offset) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3839
hlist_for_each_entry(rule, &pf->fdir_filter_list, fdir_node) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3843
if (rule->flow_type == IP_USER_FLOW)
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3845
if (rule->flex_filter &&
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3846
rule->flex_offset == entry->src_offset) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
4760
struct i40e_fdir_filter *rule;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
4764
hlist_for_each_entry_safe(rule, node2,
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
4770
if (rule->fd_id == input->fd_id)
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
4776
if (i40e_match_fdir_filter(rule, input)) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
4779
rule->fd_id);
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
5026
struct i40e_fdir_filter *rule;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
5056
hlist_for_each_entry_safe(rule, node2,
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
5058
if (rule->dest_ctl != drop && count <= rule->q_index) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
5061
rule->fd_id, rule->q_index);
drivers/net/ethernet/intel/i40e/i40e_main.c
8568
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/intel/i40e/i40e_main.c
8569
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/intel/i40e/i40e_main.c
8588
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_KEYID)) {
drivers/net/ethernet/intel/i40e/i40e_main.c
8591
flow_rule_match_enc_keyid(rule, &match);
drivers/net/ethernet/intel/i40e/i40e_main.c
8598
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/intel/i40e/i40e_main.c
8601
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/intel/i40e/i40e_main.c
8613
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/intel/i40e/i40e_main.c
8616
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/intel/i40e/i40e_main.c
8642
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/intel/i40e/i40e_main.c
8645
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/intel/i40e/i40e_main.c
8660
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/intel/i40e/i40e_main.c
8663
flow_rule_match_control(rule, &match);
drivers/net/ethernet/intel/i40e/i40e_main.c
8674
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/intel/i40e/i40e_main.c
8706
flow_rule_match_ipv6_addrs(rule, &match);
drivers/net/ethernet/intel/i40e/i40e_main.c
8727
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/intel/i40e/i40e_main.c
8730
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1001
memcpy(fsp->h_u.ah_ip6_spec.ip6dst, &rule->ip_data.v6_addrs.dst_ip,
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1003
fsp->h_u.ah_ip6_spec.spi = rule->ip_data.spi;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1004
fsp->h_u.ah_ip6_spec.tclass = rule->ip_data.tclass;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1005
memcpy(fsp->m_u.ah_ip6_spec.ip6src, &rule->ip_mask.v6_addrs.src_ip,
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1007
memcpy(fsp->m_u.ah_ip6_spec.ip6dst, &rule->ip_mask.v6_addrs.dst_ip,
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1009
fsp->m_u.ah_ip6_spec.spi = rule->ip_mask.spi;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1010
fsp->m_u.ah_ip6_spec.tclass = rule->ip_mask.tclass;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1013
memcpy(fsp->h_u.usr_ip6_spec.ip6src, &rule->ip_data.v6_addrs.src_ip,
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1015
memcpy(fsp->h_u.usr_ip6_spec.ip6dst, &rule->ip_data.v6_addrs.dst_ip,
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1017
fsp->h_u.usr_ip6_spec.l4_4_bytes = rule->ip_data.l4_header;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1018
fsp->h_u.usr_ip6_spec.tclass = rule->ip_data.tclass;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1019
fsp->h_u.usr_ip6_spec.l4_proto = rule->ip_data.proto;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1020
memcpy(fsp->m_u.usr_ip6_spec.ip6src, &rule->ip_mask.v6_addrs.src_ip,
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1022
memcpy(fsp->m_u.usr_ip6_spec.ip6dst, &rule->ip_mask.v6_addrs.dst_ip,
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1024
fsp->m_u.usr_ip6_spec.l4_4_bytes = rule->ip_mask.l4_header;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1025
fsp->m_u.usr_ip6_spec.tclass = rule->ip_mask.tclass;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1026
fsp->m_u.usr_ip6_spec.l4_proto = rule->ip_mask.proto;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1029
fsp->h_u.ether_spec.h_proto = rule->eth_data.etype;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1030
fsp->m_u.ether_spec.h_proto = rule->eth_mask.etype;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1037
iavf_fill_rx_flow_ext_data(fsp, rule);
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1039
if (rule->action == VIRTCHNL_ACTION_DROP)
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
1042
fsp->ring_cookie = rule->q_index;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
920
struct iavf_fdir_fltr *rule = NULL;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
928
rule = iavf_find_fdir_fltr(adapter, false, fsp->location);
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
929
if (!rule) {
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
934
fsp->flow_type = iavf_fltr_to_ethtool_flow(rule->flow_type);
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
943
fsp->h_u.tcp_ip4_spec.ip4src = rule->ip_data.v4_addrs.src_ip;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
944
fsp->h_u.tcp_ip4_spec.ip4dst = rule->ip_data.v4_addrs.dst_ip;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
945
fsp->h_u.tcp_ip4_spec.psrc = rule->ip_data.src_port;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
946
fsp->h_u.tcp_ip4_spec.pdst = rule->ip_data.dst_port;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
947
fsp->h_u.tcp_ip4_spec.tos = rule->ip_data.tos;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
948
fsp->m_u.tcp_ip4_spec.ip4src = rule->ip_mask.v4_addrs.src_ip;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
949
fsp->m_u.tcp_ip4_spec.ip4dst = rule->ip_mask.v4_addrs.dst_ip;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
950
fsp->m_u.tcp_ip4_spec.psrc = rule->ip_mask.src_port;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
951
fsp->m_u.tcp_ip4_spec.pdst = rule->ip_mask.dst_port;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
952
fsp->m_u.tcp_ip4_spec.tos = rule->ip_mask.tos;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
956
fsp->h_u.ah_ip4_spec.ip4src = rule->ip_data.v4_addrs.src_ip;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
957
fsp->h_u.ah_ip4_spec.ip4dst = rule->ip_data.v4_addrs.dst_ip;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
958
fsp->h_u.ah_ip4_spec.spi = rule->ip_data.spi;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
959
fsp->h_u.ah_ip4_spec.tos = rule->ip_data.tos;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
960
fsp->m_u.ah_ip4_spec.ip4src = rule->ip_mask.v4_addrs.src_ip;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
961
fsp->m_u.ah_ip4_spec.ip4dst = rule->ip_mask.v4_addrs.dst_ip;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
962
fsp->m_u.ah_ip4_spec.spi = rule->ip_mask.spi;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
963
fsp->m_u.ah_ip4_spec.tos = rule->ip_mask.tos;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
966
fsp->h_u.usr_ip4_spec.ip4src = rule->ip_data.v4_addrs.src_ip;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
967
fsp->h_u.usr_ip4_spec.ip4dst = rule->ip_data.v4_addrs.dst_ip;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
968
fsp->h_u.usr_ip4_spec.l4_4_bytes = rule->ip_data.l4_header;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
969
fsp->h_u.usr_ip4_spec.tos = rule->ip_data.tos;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
971
fsp->h_u.usr_ip4_spec.proto = rule->ip_data.proto;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
972
fsp->m_u.usr_ip4_spec.ip4src = rule->ip_mask.v4_addrs.src_ip;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
973
fsp->m_u.usr_ip4_spec.ip4dst = rule->ip_mask.v4_addrs.dst_ip;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
974
fsp->m_u.usr_ip4_spec.l4_4_bytes = rule->ip_mask.l4_header;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
975
fsp->m_u.usr_ip4_spec.tos = rule->ip_mask.tos;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
977
fsp->m_u.usr_ip4_spec.proto = rule->ip_mask.proto;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
982
memcpy(fsp->h_u.usr_ip6_spec.ip6src, &rule->ip_data.v6_addrs.src_ip,
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
984
memcpy(fsp->h_u.usr_ip6_spec.ip6dst, &rule->ip_data.v6_addrs.dst_ip,
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
986
fsp->h_u.tcp_ip6_spec.psrc = rule->ip_data.src_port;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
987
fsp->h_u.tcp_ip6_spec.pdst = rule->ip_data.dst_port;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
988
fsp->h_u.tcp_ip6_spec.tclass = rule->ip_data.tclass;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
989
memcpy(fsp->m_u.usr_ip6_spec.ip6src, &rule->ip_mask.v6_addrs.src_ip,
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
991
memcpy(fsp->m_u.usr_ip6_spec.ip6dst, &rule->ip_mask.v6_addrs.dst_ip,
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
993
fsp->m_u.tcp_ip6_spec.psrc = rule->ip_mask.src_port;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
994
fsp->m_u.tcp_ip6_spec.pdst = rule->ip_mask.dst_port;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
995
fsp->m_u.tcp_ip6_spec.tclass = rule->ip_mask.tclass;
drivers/net/ethernet/intel/iavf/iavf_ethtool.c
999
memcpy(fsp->h_u.ah_ip6_spec.ip6src, &rule->ip_data.v6_addrs.src_ip,
drivers/net/ethernet/intel/iavf/iavf_fdir.c
831
struct iavf_fdir_fltr *rule;
drivers/net/ethernet/intel/iavf/iavf_fdir.c
833
list_for_each_entry(rule, &adapter->fdir_list_head, list) {
drivers/net/ethernet/intel/iavf/iavf_fdir.c
834
if ((is_raw && rule->cls_u32_handle == data) ||
drivers/net/ethernet/intel/iavf/iavf_fdir.c
835
(!is_raw && rule->loc == data))
drivers/net/ethernet/intel/iavf/iavf_fdir.c
836
return rule;
drivers/net/ethernet/intel/iavf/iavf_fdir.c
852
struct iavf_fdir_fltr *rule, *parent = NULL;
drivers/net/ethernet/intel/iavf/iavf_fdir.c
863
list_for_each_entry(rule, &adapter->fdir_list_head, list) {
drivers/net/ethernet/intel/iavf/iavf_fdir.c
867
if (rule->loc >= fltr->loc)
drivers/net/ethernet/intel/iavf/iavf_fdir.c
869
parent = rule;
drivers/net/ethernet/intel/iavf/iavf_main.c
3813
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/intel/iavf/iavf_main.c
3814
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/intel/iavf/iavf_main.c
3837
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_KEYID)) {
drivers/net/ethernet/intel/iavf/iavf_main.c
3840
flow_rule_match_enc_keyid(rule, &match);
drivers/net/ethernet/intel/iavf/iavf_main.c
3845
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/intel/iavf/iavf_main.c
3848
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/intel/iavf/iavf_main.c
3870
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/intel/iavf/iavf_main.c
3873
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/intel/iavf/iavf_main.c
3917
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/intel/iavf/iavf_main.c
3920
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/intel/iavf/iavf_main.c
3934
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/intel/iavf/iavf_main.c
3937
flow_rule_match_control(rule, &match);
drivers/net/ethernet/intel/iavf/iavf_main.c
3948
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/intel/iavf/iavf_main.c
3986
flow_rule_match_ipv6_addrs(rule, &match);
drivers/net/ethernet/intel/iavf/iavf_main.c
4017
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/intel/iavf/iavf_main.c
4020
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
125
struct ice_rule_query_data *rule;
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
132
rule = kzalloc_obj(*rule);
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
133
if (!rule)
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
165
err = ice_add_adv_rule(hw, list, lkups_cnt, &rule_info, rule);
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
171
return rule;
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
176
kfree(rule);
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
186
struct ice_rule_query_data *rule;
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
193
rule = kzalloc_obj(*rule);
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
194
if (!rule)
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
212
err = ice_add_adv_rule(hw, list, lkups_cnt, &rule_info, rule);
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
218
return rule;
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
223
kfree(rule);
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
91
ice_eswitch_br_rule_delete(struct ice_hw *hw, struct ice_rule_query_data *rule)
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
95
if (!rule)
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
98
err = ice_rem_adv_rule_by_id(hw, rule);
drivers/net/ethernet/intel/ice/ice_eswitch_br.c
99
kfree(rule);
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
123
struct ice_fdir_fltr *rule;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
131
rule = ice_fdir_find_fltr_by_idx(hw, fsp->location);
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
133
if (!rule || fsp->location != rule->fltr_id) {
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
138
fsp->flow_type = ice_fltr_to_ethtool_flow(rule->flow_type);
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
145
fsp->h_u.ether_spec = rule->eth;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
146
fsp->m_u.ether_spec = rule->eth_mask;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
151
fsp->h_u.usr_ip4_spec.l4_4_bytes = rule->ip.v4.l4_header;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
152
fsp->h_u.usr_ip4_spec.tos = rule->ip.v4.tos;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
153
fsp->h_u.usr_ip4_spec.ip4src = rule->ip.v4.src_ip;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
154
fsp->h_u.usr_ip4_spec.ip4dst = rule->ip.v4.dst_ip;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
155
fsp->m_u.usr_ip4_spec.ip4src = rule->mask.v4.src_ip;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
156
fsp->m_u.usr_ip4_spec.ip4dst = rule->mask.v4.dst_ip;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
159
fsp->m_u.usr_ip4_spec.l4_4_bytes = rule->mask.v4.l4_header;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
160
fsp->m_u.usr_ip4_spec.tos = rule->mask.v4.tos;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
165
fsp->h_u.tcp_ip4_spec.psrc = rule->ip.v4.src_port;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
166
fsp->h_u.tcp_ip4_spec.pdst = rule->ip.v4.dst_port;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
167
fsp->h_u.tcp_ip4_spec.ip4src = rule->ip.v4.src_ip;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
168
fsp->h_u.tcp_ip4_spec.ip4dst = rule->ip.v4.dst_ip;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
169
fsp->m_u.tcp_ip4_spec.psrc = rule->mask.v4.src_port;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
170
fsp->m_u.tcp_ip4_spec.pdst = rule->mask.v4.dst_port;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
171
fsp->m_u.tcp_ip4_spec.ip4src = rule->mask.v4.src_ip;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
172
fsp->m_u.tcp_ip4_spec.ip4dst = rule->mask.v4.dst_ip;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
175
fsp->h_u.usr_ip6_spec.l4_4_bytes = rule->ip.v6.l4_header;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
176
fsp->h_u.usr_ip6_spec.tclass = rule->ip.v6.tc;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
177
fsp->h_u.usr_ip6_spec.l4_proto = rule->ip.v6.proto;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
178
memcpy(fsp->h_u.tcp_ip6_spec.ip6src, rule->ip.v6.src_ip,
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
180
memcpy(fsp->h_u.tcp_ip6_spec.ip6dst, rule->ip.v6.dst_ip,
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
182
memcpy(fsp->m_u.tcp_ip6_spec.ip6src, rule->mask.v6.src_ip,
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
184
memcpy(fsp->m_u.tcp_ip6_spec.ip6dst, rule->mask.v6.dst_ip,
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
186
fsp->m_u.usr_ip6_spec.l4_4_bytes = rule->mask.v6.l4_header;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
187
fsp->m_u.usr_ip6_spec.tclass = rule->mask.v6.tc;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
188
fsp->m_u.usr_ip6_spec.l4_proto = rule->mask.v6.proto;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
193
memcpy(fsp->h_u.tcp_ip6_spec.ip6src, rule->ip.v6.src_ip,
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
195
memcpy(fsp->h_u.tcp_ip6_spec.ip6dst, rule->ip.v6.dst_ip,
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
197
fsp->h_u.tcp_ip6_spec.psrc = rule->ip.v6.src_port;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
198
fsp->h_u.tcp_ip6_spec.pdst = rule->ip.v6.dst_port;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
200
rule->mask.v6.src_ip,
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
203
rule->mask.v6.dst_ip,
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
205
fsp->m_u.tcp_ip6_spec.psrc = rule->mask.v6.src_port;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
206
fsp->m_u.tcp_ip6_spec.pdst = rule->mask.v6.dst_port;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
207
fsp->h_u.tcp_ip6_spec.tclass = rule->ip.v6.tc;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
208
fsp->m_u.tcp_ip6_spec.tclass = rule->mask.v6.tc;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
214
if (rule->dest_ctl == ICE_FLTR_PRGM_DESC_DEST_DROP_PKT)
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
217
fsp->ring_cookie = rule->orig_q_index;
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c
222
rule->flow_type);
drivers/net/ethernet/intel/ice/ice_fdir.c
1144
struct ice_fdir_fltr *rule;
drivers/net/ethernet/intel/ice/ice_fdir.c
1146
list_for_each_entry(rule, &hw->fdir_list_head, fltr_node) {
drivers/net/ethernet/intel/ice/ice_fdir.c
1148
if (fltr_idx == rule->fltr_id)
drivers/net/ethernet/intel/ice/ice_fdir.c
1149
return rule;
drivers/net/ethernet/intel/ice/ice_fdir.c
1150
if (fltr_idx < rule->fltr_id)
drivers/net/ethernet/intel/ice/ice_fdir.c
1163
struct ice_fdir_fltr *rule, *parent = NULL;
drivers/net/ethernet/intel/ice/ice_fdir.c
1165
list_for_each_entry(rule, &hw->fdir_list_head, fltr_node) {
drivers/net/ethernet/intel/ice/ice_fdir.c
1167
if (rule->fltr_id >= fltr->fltr_id)
drivers/net/ethernet/intel/ice/ice_fdir.c
1169
parent = rule;
drivers/net/ethernet/intel/ice/ice_fdir.c
1280
struct ice_fdir_fltr *rule;
drivers/net/ethernet/intel/ice/ice_fdir.c
1283
list_for_each_entry(rule, &hw->fdir_list_head, fltr_node) {
drivers/net/ethernet/intel/ice/ice_fdir.c
1284
if (rule->flow_type != input->flow_type)
drivers/net/ethernet/intel/ice/ice_fdir.c
1287
ret = ice_fdir_comp_rules(rule, input);
drivers/net/ethernet/intel/ice/ice_fdir.c
1289
if (rule->fltr_id == input->fltr_id &&
drivers/net/ethernet/intel/ice/ice_fdir.c
1290
rule->q_index != input->q_index)
drivers/net/ethernet/intel/ice/ice_main.c
8907
struct ice_rule_query_data rule;
drivers/net/ethernet/intel/ice/ice_main.c
8914
rule.rid = fltr->rid;
drivers/net/ethernet/intel/ice/ice_main.c
8915
rule.rule_id = fltr->rule_id;
drivers/net/ethernet/intel/ice/ice_main.c
8916
rule.vsi_handle = fltr->dest_vsi_handle;
drivers/net/ethernet/intel/ice/ice_main.c
8917
status = ice_rem_adv_rule_by_id(&pf->hw, &rule);
drivers/net/ethernet/intel/ice/ice_main.c
8921
rule.rule_id);
drivers/net/ethernet/intel/ice/ice_switch.c
4840
ice_fill_valid_words(struct ice_adv_lkup_elem *rule,
drivers/net/ethernet/intel/ice/ice_switch.c
4845
if (!ice_prot_type_to_id(rule->type, &prot_id))
drivers/net/ethernet/intel/ice/ice_switch.c
4850
for (j = 0; j < sizeof(rule->m_u) / sizeof(u16); j++)
drivers/net/ethernet/intel/ice/ice_switch.c
4851
if (((u16 *)&rule->m_u)[j] &&
drivers/net/ethernet/intel/ice/ice_switch.c
4852
rule->type < ARRAY_SIZE(ice_prot_ext)) {
drivers/net/ethernet/intel/ice/ice_switch.c
4857
ice_prot_ext[rule->type].offs[j];
drivers/net/ethernet/intel/ice/ice_switch.c
4859
ice_prot_id_tbl[rule->type].protocol_id;
drivers/net/ethernet/intel/ice/ice_switch.c
4861
be16_to_cpu(((__force __be16 *)&rule->m_u)[j]);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1475
ice_get_tunnel_device(struct net_device *dev, struct flow_rule *rule)
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1483
flow_action_for_each(i, act, &rule->action) {
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1527
ice_parse_tunnel_attr(struct net_device *dev, struct flow_rule *rule,
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1537
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_KEYID)) {
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1540
flow_rule_match_enc_keyid(rule, &enc_keyid);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1550
flow_rule_match_enc_control(rule, &enc_control);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1558
flow_rule_match_enc_ipv4_addrs(rule, &match);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1565
flow_rule_match_enc_ipv6_addrs(rule, &match);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1570
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_IP)) {
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1573
flow_rule_match_enc_ip(rule, &match);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1577
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_PORTS) &&
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1581
flow_rule_match_enc_ports(rule, &match);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1592
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_OPTS) &&
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1596
flow_rule_match_enc_opts(rule, &match);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1607
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_OPTS) &&
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1611
flow_rule_match_enc_opts(rule, &match);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1642
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1647
dissector = rule->match.dissector;
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1672
tunnel_dev = ice_get_tunnel_device(filter_dev, rule);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1678
err = ice_parse_tunnel_attr(filter_dev, rule, fltr);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1706
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1709
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1742
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1745
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1764
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN) ||
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1778
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1806
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CVLAN)) {
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1814
flow_rule_match_cvlan(rule, &match);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1837
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PPPOE)) {
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1840
flow_rule_match_pppoe(rule, &match);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1853
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1856
flow_rule_match_control(rule, &match);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1868
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1876
flow_rule_match_ipv6_addrs(rule, &match);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1881
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IP)) {
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1884
flow_rule_match_ip(rule, &match);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1888
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_L2TPV3)) {
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1891
flow_rule_match_l2tpv3(rule, &match);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1897
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/intel/ice/ice_tc_lib.c
1900
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
2097
struct flow_rule *rule = flow_cls_offload_flow_rule(cls_flower);
drivers/net/ethernet/intel/ice/ice_tc_lib.c
2098
struct flow_action *flow_action = &rule->action;
drivers/net/ethernet/intel/ice/virt/fdir.c
292
struct virtchnl_fdir_rule *rule = &fltr->rule_cfg;
drivers/net/ethernet/intel/ice/virt/fdir.c
299
proto = &rule->proto_hdrs;
drivers/net/ethernet/intel/idpf/idpf.h
1076
struct virtchnl2_flow_rule_add_del *rule,
drivers/net/ethernet/intel/idpf/idpf_ethtool.c
173
struct virtchnl2_flow_rule_add_del *rule;
drivers/net/ethernet/intel/idpf/idpf_ethtool.c
203
rule = kzalloc_flex(*rule, rule_info, 1);
drivers/net/ethernet/intel/idpf/idpf_ethtool.c
204
if (!rule)
drivers/net/ethernet/intel/idpf/idpf_ethtool.c
230
rule->vport_id = cpu_to_le32(vport->vport_id);
drivers/net/ethernet/intel/idpf/idpf_ethtool.c
231
rule->count = cpu_to_le32(1);
drivers/net/ethernet/intel/idpf/idpf_ethtool.c
232
info = &rule->rule_info[0];
drivers/net/ethernet/intel/idpf/idpf_ethtool.c
258
err = idpf_add_del_fsteer_filters(vport->adapter, rule,
drivers/net/ethernet/intel/idpf/idpf_ethtool.c
282
kfree(rule);
drivers/net/ethernet/intel/idpf/idpf_ethtool.c
299
struct virtchnl2_flow_rule_add_del *rule;
drivers/net/ethernet/intel/idpf/idpf_ethtool.c
310
rule = kzalloc_flex(*rule, rule_info, 1);
drivers/net/ethernet/intel/idpf/idpf_ethtool.c
311
if (!rule)
drivers/net/ethernet/intel/idpf/idpf_ethtool.c
314
rule->vport_id = cpu_to_le32(vport->vport_id);
drivers/net/ethernet/intel/idpf/idpf_ethtool.c
315
rule->count = cpu_to_le32(1);
drivers/net/ethernet/intel/idpf/idpf_ethtool.c
316
info = &rule->rule_info[0];
drivers/net/ethernet/intel/idpf/idpf_ethtool.c
319
err = idpf_add_del_fsteer_filters(vport->adapter, rule,
drivers/net/ethernet/intel/idpf/idpf_ethtool.c
344
kfree(rule);
drivers/net/ethernet/intel/idpf/idpf_virtchnl.c
1160
struct virtchnl2_flow_rule_add_del *rule,
drivers/net/ethernet/intel/idpf/idpf_virtchnl.c
1163
int rule_count = le32_to_cpu(rule->count);
drivers/net/ethernet/intel/idpf/idpf_virtchnl.c
1174
xn_params.send_buf.iov_base = rule;
drivers/net/ethernet/intel/idpf/idpf_virtchnl.c
1175
xn_params.send_buf.iov_len = struct_size(rule, rule_info, rule_count);
drivers/net/ethernet/intel/idpf/idpf_virtchnl.c
1176
xn_params.recv_buf.iov_base = rule;
drivers/net/ethernet/intel/idpf/idpf_virtchnl.c
1177
xn_params.recv_buf.iov_len = struct_size(rule, rule_info, rule_count);
drivers/net/ethernet/intel/igb/igb_ethtool.c
2431
struct igb_nfc_filter *rule = NULL;
drivers/net/ethernet/intel/igb/igb_ethtool.c
2436
hlist_for_each_entry(rule, &adapter->nfc_filter_list, nfc_node) {
drivers/net/ethernet/intel/igb/igb_ethtool.c
2437
if (fsp->location <= rule->sw_idx)
drivers/net/ethernet/intel/igb/igb_ethtool.c
2441
if (!rule || fsp->location != rule->sw_idx)
drivers/net/ethernet/intel/igb/igb_ethtool.c
2444
if (rule->filter.match_flags) {
drivers/net/ethernet/intel/igb/igb_ethtool.c
2446
fsp->ring_cookie = rule->action;
drivers/net/ethernet/intel/igb/igb_ethtool.c
2447
if (rule->filter.match_flags & IGB_FILTER_FLAG_ETHER_TYPE) {
drivers/net/ethernet/intel/igb/igb_ethtool.c
2448
fsp->h_u.ether_spec.h_proto = rule->filter.etype;
drivers/net/ethernet/intel/igb/igb_ethtool.c
2451
if (rule->filter.match_flags & IGB_FILTER_FLAG_VLAN_TCI) {
drivers/net/ethernet/intel/igb/igb_ethtool.c
2453
fsp->h_ext.vlan_tci = rule->filter.vlan_tci;
drivers/net/ethernet/intel/igb/igb_ethtool.c
2456
if (rule->filter.match_flags & IGB_FILTER_FLAG_DST_MAC_ADDR) {
drivers/net/ethernet/intel/igb/igb_ethtool.c
2458
rule->filter.dst_addr);
drivers/net/ethernet/intel/igb/igb_ethtool.c
2464
if (rule->filter.match_flags & IGB_FILTER_FLAG_SRC_MAC_ADDR) {
drivers/net/ethernet/intel/igb/igb_ethtool.c
2466
rule->filter.src_addr);
drivers/net/ethernet/intel/igb/igb_ethtool.c
2482
struct igb_nfc_filter *rule;
drivers/net/ethernet/intel/igb/igb_ethtool.c
2488
hlist_for_each_entry(rule, &adapter->nfc_filter_list, nfc_node) {
drivers/net/ethernet/intel/igb/igb_ethtool.c
2491
rule_locs[cnt] = rule->sw_idx;
drivers/net/ethernet/intel/igb/igb_ethtool.c
2848
struct igb_nfc_filter *rule, *parent;
drivers/net/ethernet/intel/igb/igb_ethtool.c
2852
rule = NULL;
drivers/net/ethernet/intel/igb/igb_ethtool.c
2854
hlist_for_each_entry(rule, &adapter->nfc_filter_list, nfc_node) {
drivers/net/ethernet/intel/igb/igb_ethtool.c
2856
if (rule->sw_idx >= sw_idx)
drivers/net/ethernet/intel/igb/igb_ethtool.c
2858
parent = rule;
drivers/net/ethernet/intel/igb/igb_ethtool.c
2862
if (rule && (rule->sw_idx == sw_idx)) {
drivers/net/ethernet/intel/igb/igb_ethtool.c
2864
err = igb_erase_filter(adapter, rule);
drivers/net/ethernet/intel/igb/igb_ethtool.c
2866
hlist_del(&rule->nfc_node);
drivers/net/ethernet/intel/igb/igb_ethtool.c
2867
kfree(rule);
drivers/net/ethernet/intel/igb/igb_ethtool.c
2898
struct igb_nfc_filter *input, *rule;
drivers/net/ethernet/intel/igb/igb_ethtool.c
2959
hlist_for_each_entry(rule, &adapter->nfc_filter_list, nfc_node) {
drivers/net/ethernet/intel/igb/igb_ethtool.c
2960
if (!memcmp(&input->filter, &rule->filter,
drivers/net/ethernet/intel/igb/igb_main.c
10274
struct igb_nfc_filter *rule;
drivers/net/ethernet/intel/igb/igb_main.c
10278
hlist_for_each_entry(rule, &adapter->nfc_filter_list, nfc_node)
drivers/net/ethernet/intel/igb/igb_main.c
10279
igb_erase_filter(adapter, rule);
drivers/net/ethernet/intel/igb/igb_main.c
10281
hlist_for_each_entry(rule, &adapter->cls_flower_list, nfc_node)
drivers/net/ethernet/intel/igb/igb_main.c
10282
igb_erase_filter(adapter, rule);
drivers/net/ethernet/intel/igb/igb_main.c
10289
struct igb_nfc_filter *rule;
drivers/net/ethernet/intel/igb/igb_main.c
10293
hlist_for_each_entry(rule, &adapter->nfc_filter_list, nfc_node)
drivers/net/ethernet/intel/igb/igb_main.c
10294
igb_add_filter(adapter, rule);
drivers/net/ethernet/intel/igb/igb_main.c
2496
struct igb_nfc_filter *rule;
drivers/net/ethernet/intel/igb/igb_main.c
2499
hlist_for_each_entry_safe(rule, node2,
drivers/net/ethernet/intel/igb/igb_main.c
2501
igb_erase_filter(adapter, rule);
drivers/net/ethernet/intel/igb/igb_main.c
2502
hlist_del(&rule->nfc_node);
drivers/net/ethernet/intel/igb/igb_main.c
2503
kfree(rule);
drivers/net/ethernet/intel/igb/igb_main.c
2619
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/intel/igb/igb_main.c
2620
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/intel/igb/igb_main.c
2633
if (flow_rule_match_has_control_flags(rule, extack))
drivers/net/ethernet/intel/igb/igb_main.c
2636
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/intel/igb/igb_main.c
2639
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/intel/igb/igb_main.c
2663
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/intel/igb/igb_main.c
2666
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/intel/igb/igb_main.c
2678
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/intel/igb/igb_main.c
2681
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/intel/igc/igc.h
767
int igc_add_nfc_rule(struct igc_adapter *adapter, struct igc_nfc_rule *rule);
drivers/net/ethernet/intel/igc/igc.h
768
void igc_del_nfc_rule(struct igc_adapter *adapter, struct igc_nfc_rule *rule);
drivers/net/ethernet/intel/igc/igc_ethtool.c
1003
if (rule->filter.match_flags & IGC_FILTER_FLAG_SRC_MAC_ADDR) {
drivers/net/ethernet/intel/igc/igc_ethtool.c
1005
rule->filter.src_addr);
drivers/net/ethernet/intel/igc/igc_ethtool.c
1009
if (rule->filter.match_flags & IGC_FILTER_FLAG_USER_DATA) {
drivers/net/ethernet/intel/igc/igc_ethtool.c
1011
memcpy(fsp->h_ext.data, rule->filter.user_data, sizeof(fsp->h_ext.data));
drivers/net/ethernet/intel/igc/igc_ethtool.c
1012
memcpy(fsp->m_ext.data, rule->filter.user_mask, sizeof(fsp->m_ext.data));
drivers/net/ethernet/intel/igc/igc_ethtool.c
1027
struct igc_nfc_rule *rule;
drivers/net/ethernet/intel/igc/igc_ethtool.c
1034
list_for_each_entry(rule, &adapter->nfc_rule_list, list) {
drivers/net/ethernet/intel/igc/igc_ethtool.c
1039
rule_locs[cnt] = rule->location;
drivers/net/ethernet/intel/igc/igc_ethtool.c
1225
static void igc_ethtool_init_nfc_rule(struct igc_nfc_rule *rule,
drivers/net/ethernet/intel/igc/igc_ethtool.c
1228
INIT_LIST_HEAD(&rule->list);
drivers/net/ethernet/intel/igc/igc_ethtool.c
1230
rule->action = fsp->ring_cookie;
drivers/net/ethernet/intel/igc/igc_ethtool.c
1231
rule->location = fsp->location;
drivers/net/ethernet/intel/igc/igc_ethtool.c
1234
rule->filter.vlan_tci = ntohs(fsp->h_ext.vlan_tci);
drivers/net/ethernet/intel/igc/igc_ethtool.c
1235
rule->filter.vlan_tci_mask = ntohs(fsp->m_ext.vlan_tci);
drivers/net/ethernet/intel/igc/igc_ethtool.c
1236
rule->filter.match_flags |= IGC_FILTER_FLAG_VLAN_TCI;
drivers/net/ethernet/intel/igc/igc_ethtool.c
1240
rule->filter.etype = ntohs(fsp->h_u.ether_spec.h_proto);
drivers/net/ethernet/intel/igc/igc_ethtool.c
1241
rule->filter.match_flags = IGC_FILTER_FLAG_ETHER_TYPE;
drivers/net/ethernet/intel/igc/igc_ethtool.c
1248
rule->filter.match_flags |= IGC_FILTER_FLAG_SRC_MAC_ADDR;
drivers/net/ethernet/intel/igc/igc_ethtool.c
1249
ether_addr_copy(rule->filter.src_addr,
drivers/net/ethernet/intel/igc/igc_ethtool.c
1254
rule->filter.match_flags |= IGC_FILTER_FLAG_DST_MAC_ADDR;
drivers/net/ethernet/intel/igc/igc_ethtool.c
1255
ether_addr_copy(rule->filter.dst_addr,
drivers/net/ethernet/intel/igc/igc_ethtool.c
1261
rule->filter.vlan_etype = ntohs(fsp->h_ext.vlan_etype);
drivers/net/ethernet/intel/igc/igc_ethtool.c
1262
rule->filter.match_flags |= IGC_FILTER_FLAG_VLAN_ETYPE;
drivers/net/ethernet/intel/igc/igc_ethtool.c
1268
rule->filter.match_flags |= IGC_FILTER_FLAG_USER_DATA;
drivers/net/ethernet/intel/igc/igc_ethtool.c
1269
memcpy(rule->filter.user_data, fsp->h_ext.data, sizeof(fsp->h_ext.data));
drivers/net/ethernet/intel/igc/igc_ethtool.c
1270
memcpy(rule->filter.user_mask, fsp->m_ext.data, sizeof(fsp->m_ext.data));
drivers/net/ethernet/intel/igc/igc_ethtool.c
1282
if ((rule->filter.match_flags & IGC_FILTER_FLAG_USER_DATA) ||
drivers/net/ethernet/intel/igc/igc_ethtool.c
1283
(rule->filter.match_flags & IGC_FILTER_FLAG_VLAN_ETYPE) ||
drivers/net/ethernet/intel/igc/igc_ethtool.c
1284
((rule->filter.match_flags & IGC_FILTER_FLAG_VLAN_TCI) &&
drivers/net/ethernet/intel/igc/igc_ethtool.c
1285
rule->filter.vlan_tci_mask == ntohs(VLAN_TCI_FULL_MASK)) ||
drivers/net/ethernet/intel/igc/igc_ethtool.c
1286
(rule->filter.match_flags & (rule->filter.match_flags - 1)))
drivers/net/ethernet/intel/igc/igc_ethtool.c
1287
rule->flex = true;
drivers/net/ethernet/intel/igc/igc_ethtool.c
1289
rule->flex = false;
drivers/net/ethernet/intel/igc/igc_ethtool.c
1302
if (!rule->filter.match_flags &&
drivers/net/ethernet/intel/igc/igc_ethtool.c
1307
rule->filter.match_flags = IGC_FILTER_FLAG_DEFAULT_QUEUE;
drivers/net/ethernet/intel/igc/igc_ethtool.c
1326
struct igc_nfc_rule *rule)
drivers/net/ethernet/intel/igc/igc_ethtool.c
1329
u8 flags = rule->filter.match_flags;
drivers/net/ethernet/intel/igc/igc_ethtool.c
1338
if (!memcmp(&rule->filter, &tmp->filter,
drivers/net/ethernet/intel/igc/igc_ethtool.c
1339
sizeof(rule->filter)) &&
drivers/net/ethernet/intel/igc/igc_ethtool.c
1340
tmp->location != rule->location) {
drivers/net/ethernet/intel/igc/igc_ethtool.c
1355
struct igc_nfc_rule *rule, *old_rule;
drivers/net/ethernet/intel/igc/igc_ethtool.c
1398
rule = kzalloc_obj(*rule);
drivers/net/ethernet/intel/igc/igc_ethtool.c
1399
if (!rule)
drivers/net/ethernet/intel/igc/igc_ethtool.c
1402
igc_ethtool_init_nfc_rule(rule, fsp);
drivers/net/ethernet/intel/igc/igc_ethtool.c
1406
err = igc_ethtool_check_nfc_rule(adapter, rule);
drivers/net/ethernet/intel/igc/igc_ethtool.c
1414
err = igc_add_nfc_rule(adapter, rule);
drivers/net/ethernet/intel/igc/igc_ethtool.c
1423
kfree(rule);
drivers/net/ethernet/intel/igc/igc_ethtool.c
1432
struct igc_nfc_rule *rule;
drivers/net/ethernet/intel/igc/igc_ethtool.c
1436
rule = igc_get_nfc_rule(adapter, fsp->location);
drivers/net/ethernet/intel/igc/igc_ethtool.c
1437
if (!rule) {
drivers/net/ethernet/intel/igc/igc_ethtool.c
1442
igc_del_nfc_rule(adapter, rule);
drivers/net/ethernet/intel/igc/igc_ethtool.c
967
struct igc_nfc_rule *rule = NULL;
drivers/net/ethernet/intel/igc/igc_ethtool.c
973
rule = igc_get_nfc_rule(adapter, fsp->location);
drivers/net/ethernet/intel/igc/igc_ethtool.c
974
if (!rule)
drivers/net/ethernet/intel/igc/igc_ethtool.c
978
fsp->ring_cookie = rule->action;
drivers/net/ethernet/intel/igc/igc_ethtool.c
980
if (rule->filter.match_flags & IGC_FILTER_FLAG_ETHER_TYPE) {
drivers/net/ethernet/intel/igc/igc_ethtool.c
981
fsp->h_u.ether_spec.h_proto = htons(rule->filter.etype);
drivers/net/ethernet/intel/igc/igc_ethtool.c
985
if (rule->filter.match_flags & IGC_FILTER_FLAG_VLAN_ETYPE) {
drivers/net/ethernet/intel/igc/igc_ethtool.c
987
fsp->h_ext.vlan_etype = htons(rule->filter.vlan_etype);
drivers/net/ethernet/intel/igc/igc_ethtool.c
991
if (rule->filter.match_flags & IGC_FILTER_FLAG_VLAN_TCI) {
drivers/net/ethernet/intel/igc/igc_ethtool.c
993
fsp->h_ext.vlan_tci = htons(rule->filter.vlan_tci);
drivers/net/ethernet/intel/igc/igc_ethtool.c
994
fsp->m_ext.vlan_tci = htons(rule->filter.vlan_tci_mask);
drivers/net/ethernet/intel/igc/igc_ethtool.c
997
if (rule->filter.match_flags & IGC_FILTER_FLAG_DST_MAC_ADDR) {
drivers/net/ethernet/intel/igc/igc_ethtool.c
999
rule->filter.dst_addr);
drivers/net/ethernet/intel/igc/igc_main.c
3773
struct igc_nfc_rule *rule)
drivers/net/ethernet/intel/igc/igc_main.c
3775
struct igc_nfc_filter *filter = &rule->filter;
drivers/net/ethernet/intel/igc/igc_main.c
3796
flex.rx_queue = rule->action;
drivers/net/ethernet/intel/igc/igc_main.c
3798
vlan = rule->filter.vlan_tci || rule->filter.vlan_etype;
drivers/net/ethernet/intel/igc/igc_main.c
3803
if (rule->filter.match_flags & IGC_FILTER_FLAG_DST_MAC_ADDR)
drivers/net/ethernet/intel/igc/igc_main.c
3808
if (rule->filter.match_flags & IGC_FILTER_FLAG_SRC_MAC_ADDR)
drivers/net/ethernet/intel/igc/igc_main.c
3813
if (rule->filter.match_flags & IGC_FILTER_FLAG_VLAN_ETYPE) {
drivers/net/ethernet/intel/igc/igc_main.c
3821
if (rule->filter.match_flags & IGC_FILTER_FLAG_VLAN_TCI)
drivers/net/ethernet/intel/igc/igc_main.c
3826
if (rule->filter.match_flags & IGC_FILTER_FLAG_ETHER_TYPE) {
drivers/net/ethernet/intel/igc/igc_main.c
3834
if (rule->filter.match_flags & IGC_FILTER_FLAG_USER_DATA)
drivers/net/ethernet/intel/igc/igc_main.c
3898
struct igc_nfc_rule *rule)
drivers/net/ethernet/intel/igc/igc_main.c
3902
if (rule->flex) {
drivers/net/ethernet/intel/igc/igc_main.c
3903
return igc_add_flex_filter(adapter, rule);
drivers/net/ethernet/intel/igc/igc_main.c
3906
if (rule->filter.match_flags & IGC_FILTER_FLAG_ETHER_TYPE) {
drivers/net/ethernet/intel/igc/igc_main.c
3907
err = igc_add_etype_filter(adapter, rule->filter.etype,
drivers/net/ethernet/intel/igc/igc_main.c
3908
rule->action);
drivers/net/ethernet/intel/igc/igc_main.c
3913
if (rule->filter.match_flags & IGC_FILTER_FLAG_SRC_MAC_ADDR) {
drivers/net/ethernet/intel/igc/igc_main.c
3915
rule->filter.src_addr, rule->action);
drivers/net/ethernet/intel/igc/igc_main.c
3920
if (rule->filter.match_flags & IGC_FILTER_FLAG_DST_MAC_ADDR) {
drivers/net/ethernet/intel/igc/igc_main.c
3922
rule->filter.dst_addr, rule->action);
drivers/net/ethernet/intel/igc/igc_main.c
3927
if (rule->filter.match_flags & IGC_FILTER_FLAG_VLAN_TCI) {
drivers/net/ethernet/intel/igc/igc_main.c
3928
int prio = FIELD_GET(VLAN_PRIO_MASK, rule->filter.vlan_tci);
drivers/net/ethernet/intel/igc/igc_main.c
3930
err = igc_add_vlan_prio_filter(adapter, prio, rule->action);
drivers/net/ethernet/intel/igc/igc_main.c
3935
if (rule->filter.match_flags & IGC_FILTER_FLAG_DEFAULT_QUEUE)
drivers/net/ethernet/intel/igc/igc_main.c
3936
igc_set_default_queue_filter(adapter, rule->action);
drivers/net/ethernet/intel/igc/igc_main.c
3942
const struct igc_nfc_rule *rule)
drivers/net/ethernet/intel/igc/igc_main.c
3944
if (rule->flex) {
drivers/net/ethernet/intel/igc/igc_main.c
3945
igc_del_flex_filter(adapter, rule->filter.flex_index);
drivers/net/ethernet/intel/igc/igc_main.c
3949
if (rule->filter.match_flags & IGC_FILTER_FLAG_ETHER_TYPE)
drivers/net/ethernet/intel/igc/igc_main.c
3950
igc_del_etype_filter(adapter, rule->filter.etype);
drivers/net/ethernet/intel/igc/igc_main.c
3952
if (rule->filter.match_flags & IGC_FILTER_FLAG_VLAN_TCI) {
drivers/net/ethernet/intel/igc/igc_main.c
3953
int prio = FIELD_GET(VLAN_PRIO_MASK, rule->filter.vlan_tci);
drivers/net/ethernet/intel/igc/igc_main.c
3958
if (rule->filter.match_flags & IGC_FILTER_FLAG_SRC_MAC_ADDR)
drivers/net/ethernet/intel/igc/igc_main.c
3960
rule->filter.src_addr);
drivers/net/ethernet/intel/igc/igc_main.c
3962
if (rule->filter.match_flags & IGC_FILTER_FLAG_DST_MAC_ADDR)
drivers/net/ethernet/intel/igc/igc_main.c
3964
rule->filter.dst_addr);
drivers/net/ethernet/intel/igc/igc_main.c
3966
if (rule->filter.match_flags & IGC_FILTER_FLAG_DEFAULT_QUEUE)
drivers/net/ethernet/intel/igc/igc_main.c
3982
struct igc_nfc_rule *rule;
drivers/net/ethernet/intel/igc/igc_main.c
3984
list_for_each_entry(rule, &adapter->nfc_rule_list, list) {
drivers/net/ethernet/intel/igc/igc_main.c
3985
if (rule->location == location)
drivers/net/ethernet/intel/igc/igc_main.c
3986
return rule;
drivers/net/ethernet/intel/igc/igc_main.c
3987
if (rule->location > location)
drivers/net/ethernet/intel/igc/igc_main.c
4003
void igc_del_nfc_rule(struct igc_adapter *adapter, struct igc_nfc_rule *rule)
drivers/net/ethernet/intel/igc/igc_main.c
4005
igc_disable_nfc_rule(adapter, rule);
drivers/net/ethernet/intel/igc/igc_main.c
4007
list_del(&rule->list);
drivers/net/ethernet/intel/igc/igc_main.c
4010
kfree(rule);
drivers/net/ethernet/intel/igc/igc_main.c
4015
struct igc_nfc_rule *rule, *tmp;
drivers/net/ethernet/intel/igc/igc_main.c
4019
list_for_each_entry_safe(rule, tmp, &adapter->nfc_rule_list, list)
drivers/net/ethernet/intel/igc/igc_main.c
4020
igc_del_nfc_rule(adapter, rule);
drivers/net/ethernet/intel/igc/igc_main.c
4036
int igc_add_nfc_rule(struct igc_adapter *adapter, struct igc_nfc_rule *rule)
drivers/net/ethernet/intel/igc/igc_main.c
4041
err = igc_enable_nfc_rule(adapter, rule);
drivers/net/ethernet/intel/igc/igc_main.c
4047
if (cur->location >= rule->location)
drivers/net/ethernet/intel/igc/igc_main.c
4052
list_add(&rule->list, pred ? &pred->list : &adapter->nfc_rule_list);
drivers/net/ethernet/intel/igc/igc_main.c
4059
struct igc_nfc_rule *rule;
drivers/net/ethernet/intel/igc/igc_main.c
4063
list_for_each_entry_reverse(rule, &adapter->nfc_rule_list, list)
drivers/net/ethernet/intel/igc/igc_main.c
4064
igc_enable_nfc_rule(adapter, rule);
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2673
struct ixgbe_fdir_filter *rule = NULL;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2678
hlist_for_each_entry_safe(rule, node2,
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2680
if (fsp->location <= rule->sw_idx)
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2684
if (!rule || fsp->location != rule->sw_idx)
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2690
switch (rule->filter.formatted.flow_type) {
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2710
fsp->h_u.tcp_ip4_spec.psrc = rule->filter.formatted.src_port;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2712
fsp->h_u.tcp_ip4_spec.pdst = rule->filter.formatted.dst_port;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2714
fsp->h_u.tcp_ip4_spec.ip4src = rule->filter.formatted.src_ip[0];
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2716
fsp->h_u.tcp_ip4_spec.ip4dst = rule->filter.formatted.dst_ip[0];
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2718
fsp->h_ext.vlan_tci = rule->filter.formatted.vlan_id;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2720
fsp->h_ext.vlan_etype = rule->filter.formatted.flex_bytes;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2722
fsp->h_ext.data[1] = htonl(rule->filter.formatted.vm_pool);
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2727
if (rule->action == IXGBE_FDIR_DROP_QUEUE)
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2730
fsp->ring_cookie = rule->action;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2740
struct ixgbe_fdir_filter *rule;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2746
hlist_for_each_entry_safe(rule, node2,
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2750
rule_locs[cnt] = rule->sw_idx;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2849
struct ixgbe_fdir_filter *rule, *parent;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2853
rule = NULL;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2855
hlist_for_each_entry_safe(rule, node2,
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2858
if (rule->sw_idx >= sw_idx)
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2860
parent = rule;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2864
if (rule && (rule->sw_idx == sw_idx)) {
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2865
if (!input || (rule->filter.formatted.bkt_hash !=
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2868
&rule->filter,
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2872
hlist_del(&rule->fdir_node);
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2873
kfree(rule);
drivers/net/ethernet/marvell/mvpp2/mvpp2.h
1184
struct mvpp2_rfs_rule rule;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1084
struct mvpp2_rfs_rule *rule)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1091
if (!flow_action_basic_hw_stats_check(&rule->flow->action, NULL))
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1096
index = mvpp2_cls_c2_port_flow_index(port, rule->loc);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1101
act = &rule->flow->action.entries[0];
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1103
rule->c2_index = c2.index;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1105
c2.tcam[3] = (rule->c2_tcam & 0xffff) |
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1106
((rule->c2_tcam_mask & 0xffff) << 16);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1107
c2.tcam[2] = ((rule->c2_tcam >> 16) & 0xffff) |
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1108
(((rule->c2_tcam_mask >> 16) & 0xffff) << 16);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1109
c2.tcam[1] = ((rule->c2_tcam >> 32) & 0xffff) |
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1110
(((rule->c2_tcam_mask >> 32) & 0xffff) << 16);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1111
c2.tcam[0] = ((rule->c2_tcam >> 48) & 0xffff) |
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1112
(((rule->c2_tcam_mask >> 48) & 0xffff) << 16);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1120
c2.tcam[4] |= MVPP22_CLS_C2_LU_TYPE(rule->loc);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1175
struct mvpp2_rfs_rule *rule)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1177
return mvpp2_port_c2_tcam_rule_add(port, rule);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1181
struct mvpp2_rfs_rule *rule)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1187
for_each_cls_flow_id_containing_type(i, rule->flow_type) {
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1192
index = MVPP2_CLS_FLT_C2_RFS(port->id, flow->flow_id, rule->loc);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1199
if (rule->c2_index >= 0)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1200
mvpp22_port_c2_lookup_disable(port, rule->c2_index);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1206
struct mvpp2_rfs_rule *rule)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1213
if (rule->engine != MVPP22_CLS_ENGINE_C2)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1216
ret = mvpp2_port_c2_rfs_rule_insert(port, rule);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1220
for_each_cls_flow_id_containing_type(i, rule->flow_type) {
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1225
if ((rule->hek_fields & flow->supported_hash_opts) != rule->hek_fields)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1228
index = MVPP2_CLS_FLT_C2_RFS(port->id, flow->flow_id, rule->loc);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1231
mvpp2_cls_flow_eng_set(&fe, rule->engine);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1233
mvpp2_flow_set_hek_fields(&fe, rule->hek_fields);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1234
mvpp2_cls_flow_lu_type_set(&fe, rule->loc);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1243
static int mvpp2_cls_c2_build_match(struct mvpp2_rfs_rule *rule)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1245
struct flow_rule *flow = rule->flow;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1256
rule->hek_fields |= MVPP22_CLS_HEK_OPT_VLAN;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1258
rule->c2_tcam |= ((u64)match.key->vlan_id) << offs;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1259
rule->c2_tcam_mask |= ((u64)match.mask->vlan_id) << offs;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1265
rule->hek_fields |= MVPP22_CLS_HEK_OPT_VLAN_PRI;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1270
rule->c2_tcam |= ((u64)match.key->vlan_priority) <<
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1272
rule->c2_tcam_mask |= ((u64)match.mask->vlan_priority) <<
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1290
rule->hek_fields |= MVPP22_CLS_HEK_OPT_L4SIP;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1292
rule->c2_tcam |= ((u64)ntohs(match.key->src)) << offs;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1293
rule->c2_tcam_mask |= ((u64)ntohs(match.mask->src)) << offs;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1298
rule->hek_fields |= MVPP22_CLS_HEK_OPT_L4DIP;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1300
rule->c2_tcam |= ((u64)ntohs(match.key->dst)) << offs;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1301
rule->c2_tcam_mask |= ((u64)ntohs(match.mask->dst)) << offs;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1306
if (hweight16(rule->hek_fields) > MVPP2_FLOW_N_FIELDS)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1312
static int mvpp2_cls_rfs_parse_rule(struct mvpp2_rfs_rule *rule)
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1314
struct flow_rule *flow = rule->flow;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1317
if (!flow_action_basic_hw_stats_check(&rule->flow->action, NULL))
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1334
rule->engine = MVPP22_CLS_ENGINE_C2;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1336
if (mvpp2_cls_c2_build_match(rule))
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1388
efs->rule.flow = ethtool_rule->rule;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1389
efs->rule.flow_type = mvpp2_cls_ethtool_flow_to_type(info->fs.flow_type);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1390
if (efs->rule.flow_type < 0) {
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1391
ret = efs->rule.flow_type;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1395
ret = mvpp2_cls_rfs_parse_rule(&efs->rule);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1399
efs->rule.loc = info->fs.location;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1402
if (port->rfs_rules[efs->rule.loc]) {
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1403
old_efs = port->rfs_rules[efs->rule.loc];
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1404
ret = mvpp2_port_cls_rfs_rule_remove(port, &old_efs->rule);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1411
ret = mvpp2_port_flt_rfs_rule_insert(port, &efs->rule);
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1416
efs->rule.flow = NULL;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1419
port->rfs_rules[efs->rule.loc] = efs;
drivers/net/ethernet/marvell/mvpp2/mvpp2_cls.c
1445
ret = mvpp2_port_cls_rfs_rule_remove(port, &efs->rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu.h
1076
struct rvu_npc_mcam_rule *rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu.h
1078
struct rvu_npc_mcam_rule *rule,
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3308
struct rvu_npc_mcam_rule *rule)
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3312
for_each_set_bit(bit, (unsigned long *)&rule->features, 64) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3316
if (rule->lxmb == 1)
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3322
seq_printf(s, "%pM ", rule->packet.dmac);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3323
seq_printf(s, "mask %pM\n", rule->mask.dmac);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3326
seq_printf(s, "%pM ", rule->packet.smac);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3327
seq_printf(s, "mask %pM\n", rule->mask.smac);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3330
seq_printf(s, "0x%x ", ntohs(rule->packet.etype));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3331
seq_printf(s, "mask 0x%x\n", ntohs(rule->mask.etype));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3334
seq_printf(s, "0x%x ", ntohs(rule->packet.vlan_tci));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3336
ntohs(rule->mask.vlan_tci));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3339
seq_printf(s, "0x%x ", ntohs(rule->packet.vlan_itci));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3341
ntohs(rule->mask.vlan_itci));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3344
seq_printf(s, "%d ", rule->packet.tos);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3345
seq_printf(s, "mask 0x%x\n", rule->mask.tos);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3348
seq_printf(s, "%pI4 ", &rule->packet.ip4src);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3349
seq_printf(s, "mask %pI4\n", &rule->mask.ip4src);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3352
seq_printf(s, "%pI4 ", &rule->packet.ip4dst);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3353
seq_printf(s, "mask %pI4\n", &rule->mask.ip4dst);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3356
seq_printf(s, "%pI6 ", rule->packet.ip6src);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3357
seq_printf(s, "mask %pI6\n", rule->mask.ip6src);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3360
seq_printf(s, "%pI6 ", rule->packet.ip6dst);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3361
seq_printf(s, "mask %pI6\n", rule->mask.ip6dst);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3364
seq_printf(s, "0x%x ", rule->packet.next_header);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3365
seq_printf(s, "mask 0x%x\n", rule->mask.next_header);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3368
seq_printf(s, "0x%x ", rule->packet.ip_flag);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3369
seq_printf(s, "mask 0x%x\n", rule->mask.ip_flag);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3374
seq_printf(s, "%d ", ntohs(rule->packet.sport));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3375
seq_printf(s, "mask 0x%x\n", ntohs(rule->mask.sport));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3380
seq_printf(s, "%d ", ntohs(rule->packet.dport));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3381
seq_printf(s, "mask 0x%x\n", ntohs(rule->mask.dport));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3384
seq_printf(s, "%d ", rule->packet.tcp_flags);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3385
seq_printf(s, "mask 0x%x\n", rule->mask.tcp_flags);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3388
seq_printf(s, "0x%x ", ntohl(rule->packet.spi));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3389
seq_printf(s, "mask 0x%x\n", ntohl(rule->mask.spi));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3392
RVU_DBG_PRINT_MPLS_LBTCBOS(rule->packet.mpls_lse[0],
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3393
rule->mask.mpls_lse[0]);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3396
RVU_DBG_PRINT_MPLS_TTL(rule->packet.mpls_lse[0],
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3397
rule->mask.mpls_lse[0]);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3400
RVU_DBG_PRINT_MPLS_LBTCBOS(rule->packet.mpls_lse[1],
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3401
rule->mask.mpls_lse[1]);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3404
RVU_DBG_PRINT_MPLS_TTL(rule->packet.mpls_lse[1],
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3405
rule->mask.mpls_lse[1]);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3408
RVU_DBG_PRINT_MPLS_LBTCBOS(rule->packet.mpls_lse[2],
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3409
rule->mask.mpls_lse[2]);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3412
RVU_DBG_PRINT_MPLS_TTL(rule->packet.mpls_lse[2],
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3413
rule->mask.mpls_lse[2]);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3416
RVU_DBG_PRINT_MPLS_LBTCBOS(rule->packet.mpls_lse[3],
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3417
rule->mask.mpls_lse[3]);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3420
RVU_DBG_PRINT_MPLS_TTL(rule->packet.mpls_lse[3],
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3421
rule->mask.mpls_lse[3]);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3424
seq_printf(s, "%d ", rule->packet.icmp_type);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3425
seq_printf(s, "mask 0x%x\n", rule->mask.icmp_type);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3428
seq_printf(s, "%d ", rule->packet.icmp_code);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3429
seq_printf(s, "mask 0x%x\n", rule->mask.icmp_code);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3439
struct rvu_npc_mcam_rule *rule)
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3441
if (is_npc_intf_tx(rule->intf)) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3442
switch (rule->tx_action.op) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3451
rule->tx_action.index);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3463
switch (rule->rx_action.op) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3469
rule->rx_action.index);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1160
struct rvu_npc_mcam_rule *rule, *tmp;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1164
list_for_each_entry_safe(rule, tmp, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1165
if (rule->intf != intf)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1168
if (rule->entry != entry)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1171
rule->enable = enable;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1199
struct rvu_npc_mcam_rule *rule, *tmp;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1209
list_for_each_entry_safe(rule, tmp, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1210
if (is_npc_intf_rx(rule->intf) &&
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1211
rule->rx_action.pf_func == pcifunc &&
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1212
rule->rx_action.op != NIX_RX_ACTIONOP_MCAST) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1214
rule->entry, false);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1215
rule->enable = false;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1217
if (rule->default_rule) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1219
list_del(&rule->list);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1220
kfree(rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1235
struct rvu_npc_mcam_rule *rule, *tmp;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1251
list_for_each_entry_safe(rule, tmp, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1252
if (rule->owner == pcifunc && !rule->default_rule) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1253
list_del(&rule->list);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1254
kfree(rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
2689
struct rvu_npc_mcam_rule *rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
2697
list_for_each_entry(rule, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
2698
if (!is_mcam_entry_enabled(rvu, mcam, blkaddr, rule->entry))
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
2700
if (!rule->default_rule)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
2702
if (enable && !rule->has_cntr) { /* Alloc and map new counter */
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
2703
__rvu_mcam_add_counter_to_rule(rvu, rule->owner,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
2704
rule, &rsp);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
2712
rule->entry, rsp.counter);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
2715
NPC_AF_MATCH_STATX(rule->cntr), 0x0);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
2719
if (!enable && rule->has_cntr)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
2720
__rvu_mcam_remove_counter_from_rule(rvu, rule->owner,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
2721
rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3144
struct rvu_npc_mcam_rule *rule)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3149
if (!rule->has_cntr)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3153
free_req.cntr = rule->cntr;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3156
rule->has_cntr = false;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3160
struct rvu_npc_mcam_rule *rule,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3177
rule->cntr = cntr_rsp.cntr;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3178
rule->has_cntr = true;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3179
rsp->counter = rule->cntr;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3586
struct rvu_npc_mcam_rule *rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3603
list_for_each_entry(rule, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3604
if (rule->entry == ucast_idx) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3605
list_del(&rule->list);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3606
kfree(rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
392
struct rvu_npc_mcam_rule *rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
415
list_for_each_entry(rule, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
416
if (rule->entry == index)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
935
struct rvu_npc_mcam_rule *rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
946
list_for_each_entry(rule, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
947
if (rule->entry == index)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1065
struct rvu_npc_mcam_rule *rule)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1072
if (iter->entry > rule->entry)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1077
list_add(&rule->list, head);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1082
struct rvu_npc_mcam_rule *rule)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1088
__rvu_mcam_remove_counter_from_rule(rvu, pcifunc, rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1094
struct rvu_npc_mcam_rule *rule,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1101
__rvu_mcam_add_counter_to_rule(rvu, pcifunc, rule, rsp);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1248
struct rvu_npc_mcam_rule *rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1298
rule = rvu_mcam_find_rule(mcam, entry_index);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1299
if (!rule) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1300
rule = kzalloc_obj(*rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1301
if (!rule)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1307
if (!req->default_rule && req->set_cntr && !rule->has_cntr)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1308
rvu_mcam_add_counter_to_rule(rvu, owner, rule, rsp);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1313
if (!req->set_cntr && rule->has_cntr)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1314
rvu_mcam_remove_counter_from_rule(rvu, owner, rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1328
if (req->set_cntr && rule->has_cntr) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1329
rvu_write64(rvu, blkaddr, NPC_AF_MATCH_STATX(rule->cntr), req->cntr_val);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1331
write_req.cntr = rule->cntr;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1335
memcpy(&rule->packet, &dummy.packet, sizeof(rule->packet));
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1336
memcpy(&rule->mask, &dummy.mask, sizeof(rule->mask));
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1337
rule->entry = entry_index;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1338
memcpy(&rule->rx_action, &entry->action, sizeof(struct nix_rx_action));
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1340
memcpy(&rule->tx_action, &entry->action,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1342
rule->vtag_action = entry->vtag_action;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1343
rule->features = installed_features;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1344
rule->default_rule = req->default_rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1345
rule->owner = owner;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1346
rule->enable = enable;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1347
rule->chan_mask = write_req.entry_data.kw_mask[0] & NPC_KEX_CHAN_MASK;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1348
rule->chan = write_req.entry_data.kw[0] & NPC_KEX_CHAN_MASK;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1349
rule->chan &= rule->chan_mask;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1350
rule->lxmb = dummy.lxmb;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1352
rule->intf = pfvf->nix_tx_intf;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1354
rule->intf = pfvf->nix_rx_intf;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1357
rvu_mcam_add_rule(mcam, rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1359
pfvf->def_ucast_rule = rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1365
rvu_mcam_remove_counter_from_rule(rvu, owner, rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1367
list_del(&rule->list);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1368
kfree(rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1382
rule->vfvlan_cfg = true;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1531
static int npc_delete_flow(struct rvu *rvu, struct rvu_npc_mcam_rule *rule,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1537
if (rule->default_rule)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1540
if (rule->has_cntr)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1541
rvu_mcam_remove_counter_from_rule(rvu, pcifunc, rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1544
dis_req.entry = rule->entry;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1546
list_del(&rule->list);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1547
kfree(rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1601
struct rvu_npc_mcam_rule *rule,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1611
ether_addr_copy(rule->packet.dmac, pfvf->mac_addr);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1613
npc_read_mcam_entry(rvu, mcam, npcblkaddr, rule->entry,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1620
write_req.hdr.pcifunc = rule->owner;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1621
write_req.entry = rule->entry;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1636
struct rvu_npc_mcam_rule *rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1647
list_for_each_entry(rule, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1648
if (is_npc_intf_rx(rule->intf) &&
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1649
rule->rx_action.pf_func == target && !rule->enable) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1650
if (rule->default_rule) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1652
rule->entry, true);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1653
rule->enable = true;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1657
if (rule->vfvlan_cfg)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1658
npc_update_dmac_value(rvu, blkaddr, rule, pfvf);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1660
if (rule->rx_action.op == NIX_RX_ACTION_DEFAULT) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1664
rule->rx_action = def_ucast_rule->rx_action;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1666
bank = npc_get_bank(mcam, rule->entry);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1669
(rule->entry, bank), def_action);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1673
rule->entry, true);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1674
rule->enable = true;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1717
struct rvu_npc_mcam_rule *rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1744
rule = kzalloc_obj(*rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1745
if (!rule)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1751
rule->enable = false;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1752
rule->chan = chan_val;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1753
rule->chan_mask = chan_mask;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1754
rule->entry = mcam_idx;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1755
rvu_mcam_add_rule(mcam, rule);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
1430
struct flow_action *actions = &cls->rule->action;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
1445
entry = &cls->rule->action.entries[0];
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
237
struct flow_action *actions = &cls->rule->action;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
251
entry = &cls->rule->action.entries[0];
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
254
err = otx2_policer_validate(&cls->rule->action, entry, extack);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
574
struct flow_msg *flow_mask, struct flow_rule *rule,
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
581
flow_rule_match_cvlan(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
583
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
595
flow_action_for_each(i, act, &rule->action) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
637
struct flow_rule *rule;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
640
rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
641
dissector = rule->match.dissector;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
662
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
665
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
704
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
708
flow_rule_match_control(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
732
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
735
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
749
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPSEC)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
752
flow_rule_match_ipsec(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
769
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IP)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
772
flow_rule_match_ip(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
787
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
790
ret = otx2_tc_process_vlan(nic, flow_spec, flow_mask, rule, req, false);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
795
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CVLAN)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
798
ret = otx2_tc_process_vlan(nic, flow_spec, flow_mask, rule, req, true);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
803
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV4_ADDRS)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
806
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
815
} else if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV6_ADDRS)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
818
flow_rule_match_ipv6_addrs(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
848
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
851
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
878
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_TCP)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
881
flow_rule_match_tcp(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
888
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_MPLS)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
892
flow_rule_match_mpls(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
943
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ICMP)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
946
flow_rule_match_icmp(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
956
return otx2_tc_parse_actions(nic, &rule->action, req, f, node);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
383
struct prestera_acl_rule *rule;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
388
list_for_each_entry(rule, &acl->rules, list) {
drivers/net/ethernet/marvell/prestera/prestera_acl.c
389
if (ruleset->ingress != rule->ruleset->ingress)
drivers/net/ethernet/marvell/prestera/prestera_acl.c
391
if (ruleset->ht_key.chain_index != rule->chain_index)
drivers/net/ethernet/marvell/prestera/prestera_acl.c
394
ruleset->prio.min = min(ruleset->prio.min, rule->priority);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
395
ruleset->prio.max = max(ruleset->prio.max, rule->priority);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
400
prestera_acl_rule_keymask_pcl_id_set(struct prestera_acl_rule *rule, u16 pcl_id)
drivers/net/ethernet/marvell/prestera/prestera_acl.c
402
struct prestera_acl_match *r_match = &rule->re_key.match;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
439
struct prestera_acl_rule *rule;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
441
rule = kzalloc_obj(*rule);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
442
if (!rule)
drivers/net/ethernet/marvell/prestera/prestera_acl.c
445
rule->ruleset = ruleset;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
446
rule->cookie = cookie;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
447
rule->chain_index = chain_index;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
451
return rule;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
454
void prestera_acl_rule_priority_set(struct prestera_acl_rule *rule,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
457
rule->priority = priority;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
460
void prestera_acl_rule_destroy(struct prestera_acl_rule *rule)
drivers/net/ethernet/marvell/prestera/prestera_acl.c
462
if (rule->jump_ruleset)
drivers/net/ethernet/marvell/prestera/prestera_acl.c
464
prestera_acl_ruleset_put(rule->jump_ruleset);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
466
prestera_acl_ruleset_put(rule->ruleset);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
467
kfree(rule);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
478
struct prestera_acl_rule *rule)
drivers/net/ethernet/marvell/prestera/prestera_acl.c
481
struct prestera_acl_ruleset *ruleset = rule->ruleset;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
485
err = rhashtable_insert_fast(&ruleset->rule_ht, &rule->ht_node,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
490
prestera_acl_rule_keymask_pcl_id_set(rule, ruleset->pcl_id);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
491
rule->re_arg.vtcam_id = ruleset->vtcam_id;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
492
rule->re_key.prio = rule->priority;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
494
rule->re = prestera_acl_rule_entry_find(sw->acl, &rule->re_key);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
495
err = WARN_ON(rule->re) ? -EEXIST : 0;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
499
rule->re = prestera_acl_rule_entry_create(sw->acl, &rule->re_key,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
500
&rule->re_arg);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
501
err = !rule->re ? -EINVAL : 0;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
514
list_add_tail(&rule->list, &sw->acl->rules);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
516
prestera_acl_ruleset_prio_update(ruleset, rule->priority);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
520
prestera_acl_rule_entry_destroy(sw->acl, rule->re);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
522
rule->re = NULL;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
523
rhashtable_remove_fast(&ruleset->rule_ht, &rule->ht_node,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
530
struct prestera_acl_rule *rule)
drivers/net/ethernet/marvell/prestera/prestera_acl.c
532
struct prestera_acl_ruleset *ruleset = rule->ruleset;
drivers/net/ethernet/marvell/prestera/prestera_acl.c
535
rhashtable_remove_fast(&ruleset->rule_ht, &rule->ht_node,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
538
list_del(&rule->list);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
540
prestera_acl_rule_entry_destroy(sw->acl, rule->re);
drivers/net/ethernet/marvell/prestera/prestera_acl.c
549
struct prestera_acl_rule *rule,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
557
rule->re->counter.block,
drivers/net/ethernet/marvell/prestera/prestera_acl.c
558
rule->re->counter.id,
drivers/net/ethernet/marvell/prestera/prestera_acl.h
158
void prestera_acl_rule_priority_set(struct prestera_acl_rule *rule,
drivers/net/ethernet/marvell/prestera/prestera_acl.h
160
void prestera_acl_rule_destroy(struct prestera_acl_rule *rule);
drivers/net/ethernet/marvell/prestera/prestera_acl.h
165
struct prestera_acl_rule *rule);
drivers/net/ethernet/marvell/prestera/prestera_acl.h
167
struct prestera_acl_rule *rule);
drivers/net/ethernet/marvell/prestera/prestera_acl.h
169
struct prestera_acl_rule *rule,
drivers/net/ethernet/marvell/prestera/prestera_acl.h
201
prestera_acl_rule_keymask_pcl_id_set(struct prestera_acl_rule *rule,
drivers/net/ethernet/marvell/prestera/prestera_flower.c
101
if (rule->re_arg.drop.valid)
drivers/net/ethernet/marvell/prestera/prestera_flower.c
104
rule->re_arg.drop.valid = 1;
drivers/net/ethernet/marvell/prestera/prestera_flower.c
107
if (rule->re_arg.trap.valid)
drivers/net/ethernet/marvell/prestera/prestera_flower.c
110
rule->re_arg.trap.valid = 1;
drivers/net/ethernet/marvell/prestera/prestera_flower.c
113
if (rule->re_arg.police.valid)
drivers/net/ethernet/marvell/prestera/prestera_flower.c
116
rule->re_arg.police.valid = 1;
drivers/net/ethernet/marvell/prestera/prestera_flower.c
117
rule->re_arg.police.rate =
drivers/net/ethernet/marvell/prestera/prestera_flower.c
119
rule->re_arg.police.burst = act->police.burst;
drivers/net/ethernet/marvell/prestera/prestera_flower.c
120
rule->re_arg.police.ingress = block->ingress;
drivers/net/ethernet/marvell/prestera/prestera_flower.c
123
err = prestera_flower_parse_goto_action(block, rule,
drivers/net/ethernet/marvell/prestera/prestera_flower.c
139
static int prestera_flower_parse_meta(struct prestera_acl_rule *rule,
drivers/net/ethernet/marvell/prestera/prestera_flower.c
144
struct prestera_acl_match *r_match = &rule->re_key.match;
drivers/net/ethernet/marvell/prestera/prestera_flower.c
192
struct prestera_acl_rule *rule,
drivers/net/ethernet/marvell/prestera/prestera_flower.c
197
struct prestera_acl_match *r_match = &rule->re_key.match;
drivers/net/ethernet/marvell/prestera/prestera_flower.c
219
prestera_acl_rule_priority_set(rule, f->common.prio);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
222
err = prestera_flower_parse_meta(rule, f, block);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
35
struct prestera_acl_rule *rule,
drivers/net/ethernet/marvell/prestera/prestera_flower.c
369
return prestera_flower_parse_actions(block, rule, &f->rule->action,
drivers/net/ethernet/marvell/prestera/prestera_flower.c
422
struct prestera_acl_rule *rule;
drivers/net/ethernet/marvell/prestera/prestera_flower.c
434
rule = prestera_acl_rule_create(ruleset, f->cookie,
drivers/net/ethernet/marvell/prestera/prestera_flower.c
436
if (IS_ERR(rule)) {
drivers/net/ethernet/marvell/prestera/prestera_flower.c
437
err = PTR_ERR(rule);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
441
err = prestera_flower_parse(block, rule, f);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
45
if (rule->re_arg.jump.valid)
drivers/net/ethernet/marvell/prestera/prestera_flower.c
451
err = prestera_acl_rule_add(block->sw, rule);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
460
prestera_acl_rule_destroy(rule);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
470
struct prestera_acl_rule *rule;
drivers/net/ethernet/marvell/prestera/prestera_flower.c
477
rule = prestera_acl_rule_lookup(ruleset, f->cookie);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
478
if (rule) {
drivers/net/ethernet/marvell/prestera/prestera_flower.c
479
prestera_acl_rule_del(block->sw, rule);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
480
prestera_acl_rule_destroy(rule);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
490
struct prestera_acl_rule rule;
drivers/net/ethernet/marvell/prestera/prestera_flower.c
493
memset(&rule, 0, sizeof(rule));
drivers/net/ethernet/marvell/prestera/prestera_flower.c
494
err = prestera_flower_parse(block, &rule, f);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
504
prestera_acl_rule_keymask_pcl_id_set(&rule, 0);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
513
err = prestera_acl_ruleset_keymask_set(ruleset, rule.re_key.match.mask);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
53
rule->re_arg.jump.valid = 1;
drivers/net/ethernet/marvell/prestera/prestera_flower.c
54
rule->re_arg.jump.i.index = prestera_acl_ruleset_index_get(ruleset);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
557
struct prestera_acl_rule *rule;
drivers/net/ethernet/marvell/prestera/prestera_flower.c
56
rule->jump_ruleset = ruleset;
drivers/net/ethernet/marvell/prestera/prestera_flower.c
568
rule = prestera_acl_rule_lookup(ruleset, f->cookie);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
569
if (!rule) {
drivers/net/ethernet/marvell/prestera/prestera_flower.c
574
err = prestera_acl_rule_get_stats(block->sw->acl, rule, &packets,
drivers/net/ethernet/marvell/prestera/prestera_flower.c
62
struct prestera_acl_rule *rule,
drivers/net/ethernet/marvell/prestera/prestera_flower.c
82
rule->re_arg.count.valid = true;
drivers/net/ethernet/marvell/prestera/prestera_flower.c
84
&rule->re_arg.count.client);
drivers/net/ethernet/marvell/prestera/prestera_flower.c
95
if (rule->re_arg.accept.valid)
drivers/net/ethernet/marvell/prestera/prestera_flower.c
98
rule->re_arg.accept.valid = 1;
drivers/net/ethernet/marvell/prestera/prestera_matchall.c
71
if (!flow_offload_has_one_action(&f->rule->action)) {
drivers/net/ethernet/marvell/prestera/prestera_matchall.c
77
act = &f->rule->action.entries[0];
drivers/net/ethernet/mediatek/mtk_ppe_offload.c
270
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mediatek/mtk_ppe_offload.c
286
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_META)) {
drivers/net/ethernet/mediatek/mtk_ppe_offload.c
289
flow_rule_match_meta(rule, &match);
drivers/net/ethernet/mediatek/mtk_ppe_offload.c
305
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/mediatek/mtk_ppe_offload.c
308
flow_rule_match_control(rule, &match);
drivers/net/ethernet/mediatek/mtk_ppe_offload.c
318
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/mediatek/mtk_ppe_offload.c
321
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/mediatek/mtk_ppe_offload.c
330
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/mediatek/mtk_ppe_offload.c
333
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/mediatek/mtk_ppe_offload.c
340
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/mediatek/mtk_ppe_offload.c
343
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/mediatek/mtk_ppe_offload.c
361
flow_action_for_each(i, act, &rule->action) {
drivers/net/ethernet/mediatek/mtk_ppe_offload.c
407
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/mediatek/mtk_ppe_offload.c
413
flow_rule_match_ports(rule, &ports);
drivers/net/ethernet/mediatek/mtk_ppe_offload.c
423
flow_rule_match_ipv4_addrs(rule, &addrs);
drivers/net/ethernet/mediatek/mtk_ppe_offload.c
434
flow_rule_match_ipv6_addrs(rule, &addrs);
drivers/net/ethernet/mediatek/mtk_ppe_offload.c
442
flow_action_for_each(i, act, &rule->action) {
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1602
struct mlx4_net_trans_rule rule = {
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1609
rule.port = priv->port;
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1610
rule.priority = MLX4_DOMAIN_ETHTOOL | cmd->fs.location;
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1611
INIT_LIST_HEAD(&rule.list);
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1631
rule.qpn = qpn;
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1632
err = mlx4_en_ethtool_to_net_trans_rule(dev, cmd, &rule.list);
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1649
err = mlx4_flow_attach(priv->mdev->dev, &rule, &reg_id);
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1661
list_for_each_entry_safe(spec, tmp_spec, &rule.list, list) {
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1672
struct ethtool_flow_id *rule;
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1678
rule = &priv->ethtool_rules[cmd->fs.location];
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1679
if (!rule->id) {
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1684
err = mlx4_flow_detach(priv->mdev->dev, rule->id);
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1687
cmd->fs.location, rule->id);
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1690
rule->id = 0;
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1691
memset(&rule->flow_spec, 0, sizeof(struct ethtool_rx_flow_spec));
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1692
list_del(&rule->list);
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1702
struct ethtool_flow_id *rule;
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1708
rule = &priv->ethtool_rules[loc];
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1709
if (rule->id)
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
1710
memcpy(&cmd->fs, &rule->flow_spec,
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
232
struct mlx4_net_trans_rule rule = {
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
233
.list = LIST_HEAD_INIT(rule.list),
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
249
list_add_tail(&spec_eth.list, &rule.list);
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
250
list_add_tail(&spec_ip.list, &rule.list);
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
251
list_add_tail(&spec_tcp_udp.list, &rule.list);
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
253
rule.qpn = priv->rss_map.qps[filter->rxq_index].qpn;
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
265
rc = mlx4_flow_attach(priv->mdev->dev, &rule, &filter->reg_id);
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
586
struct mlx4_net_trans_rule rule = {
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
594
rule.port = priv->port;
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
595
rule.qpn = *qpn;
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
596
INIT_LIST_HEAD(&rule.list);
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
601
list_add_tail(&spec_eth.list, &rule.list);
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
603
err = mlx4_flow_attach(dev, &rule, reg_id);
drivers/net/ethernet/mellanox/mlx4/mcg.c
1011
rule);
drivers/net/ethernet/mellanox/mlx4/mcg.c
1018
rule);
drivers/net/ethernet/mellanox/mlx4/mcg.c
1023
rule);
drivers/net/ethernet/mellanox/mlx4/mcg.c
1026
mlx4_err_rule(dev, "Fail to register network rule.\n", rule);
drivers/net/ethernet/mellanox/mlx4/mcg.c
1057
struct mlx4_net_trans_rule rule = {
drivers/net/ethernet/mellanox/mlx4/mcg.c
1066
rule.port = port;
drivers/net/ethernet/mellanox/mlx4/mcg.c
1067
rule.qpn = qpn;
drivers/net/ethernet/mellanox/mlx4/mcg.c
1068
rule.priority = prio;
drivers/net/ethernet/mellanox/mlx4/mcg.c
1069
INIT_LIST_HEAD(&rule.list);
drivers/net/ethernet/mellanox/mlx4/mcg.c
1078
list_add_tail(&spec_eth_outer.list, &rule.list);
drivers/net/ethernet/mellanox/mlx4/mcg.c
1079
list_add_tail(&spec_vxlan.list, &rule.list);
drivers/net/ethernet/mellanox/mlx4/mcg.c
1080
list_add_tail(&spec_eth_inner.list, &rule.list);
drivers/net/ethernet/mellanox/mlx4/mcg.c
1082
err = mlx4_flow_attach(dev, &rule, reg_id);
drivers/net/ethernet/mellanox/mlx4/mcg.c
1375
struct mlx4_net_trans_rule rule = {
drivers/net/ethernet/mellanox/mlx4/mcg.c
1382
rule.allow_loopback = !block_mcast_loopback;
drivers/net/ethernet/mellanox/mlx4/mcg.c
1383
rule.port = port;
drivers/net/ethernet/mellanox/mlx4/mcg.c
1384
rule.qpn = qp->qpn;
drivers/net/ethernet/mellanox/mlx4/mcg.c
1385
INIT_LIST_HEAD(&rule.list);
drivers/net/ethernet/mellanox/mlx4/mcg.c
1402
list_add_tail(&spec.list, &rule.list);
drivers/net/ethernet/mellanox/mlx4/mcg.c
1404
return mlx4_flow_attach(dev, &rule, reg_id);
drivers/net/ethernet/mellanox/mlx4/mcg.c
1469
struct mlx4_net_trans_rule rule = {
drivers/net/ethernet/mellanox/mlx4/mcg.c
1491
rule.promisc_mode = mode;
drivers/net/ethernet/mellanox/mlx4/mcg.c
1492
rule.port = port;
drivers/net/ethernet/mellanox/mlx4/mcg.c
1493
rule.qpn = qpn;
drivers/net/ethernet/mellanox/mlx4/mcg.c
1494
INIT_LIST_HEAD(&rule.list);
drivers/net/ethernet/mellanox/mlx4/mcg.c
1497
return mlx4_flow_attach(dev, &rule, regid_p);
drivers/net/ethernet/mellanox/mlx4/mcg.c
901
struct mlx4_net_trans_rule *rule)
drivers/net/ethernet/mellanox/mlx4/mcg.c
911
rule->port, rule->priority, rule->qpn);
drivers/net/ethernet/mellanox/mlx4/mcg.c
913
list_for_each_entry(cur, &rule->list, list) {
drivers/net/ethernet/mellanox/mlx4/mcg.c
978
struct mlx4_net_trans_rule *rule, u64 *reg_id)
drivers/net/ethernet/mellanox/mlx4/mcg.c
989
if (!mlx4_qp_lookup(dev, rule->qpn)) {
drivers/net/ethernet/mellanox/mlx4/mcg.c
990
mlx4_err_rule(dev, "QP doesn't exist\n", rule);
drivers/net/ethernet/mellanox/mlx4/mcg.c
995
trans_rule_ctrl_to_hw(rule, mailbox->buf);
drivers/net/ethernet/mellanox/mlx4/mcg.c
999
list_for_each_entry(cur, &rule->list, list) {
drivers/net/ethernet/mellanox/mlx5/core/diag/en_tc_tracepoint.h
30
__dynamic_array(int, ids, f->rule ?
drivers/net/ethernet/mellanox/mlx5/core/diag/en_tc_tracepoint.h
31
f->rule->action.num_entries : 0)
drivers/net/ethernet/mellanox/mlx5/core/diag/en_tc_tracepoint.h
34
__entry->num = (f->rule ?
drivers/net/ethernet/mellanox/mlx5/core/diag/en_tc_tracepoint.h
35
f->rule->action.num_entries : 0);
drivers/net/ethernet/mellanox/mlx5/core/diag/en_tc_tracepoint.h
38
f->rule->action.entries,
drivers/net/ethernet/mellanox/mlx5/core/diag/en_tc_tracepoint.h
39
f->rule->action.num_entries);
drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
274
TP_PROTO(const struct mlx5_flow_rule *rule),
drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
275
TP_ARGS(rule),
drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
277
__field(const struct mlx5_flow_rule *, rule)
drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
285
__entry->rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
286
fs_get_obj(__entry->fte, rule->node.parent);
drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
288
__entry->sw_action = rule->sw_action;
drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
290
&rule->dest_attr,
drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
292
if (rule->dest_attr.type &
drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
295
mlx5_fc_id(rule->dest_attr.counter);
drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
298
__entry->rule, __entry->fte, __entry->index,
drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
304
TP_PROTO(const struct mlx5_flow_rule *rule),
drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
305
TP_ARGS(rule),
drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
307
__field(const struct mlx5_flow_rule *, rule)
drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
311
__entry->rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
312
fs_get_obj(__entry->fte, rule->node.parent);
drivers/net/ethernet/mellanox/mlx5/core/diag/fs_tracepoint.h
315
__entry->rule, __entry->fte)
drivers/net/ethernet/mellanox/mlx5/core/en/fs.h
33
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/fs.h
40
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
103
rule = mlx5_add_flow_rules(ft, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
106
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
107
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
111
return rule;
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
121
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
127
rule = mlx5_add_flow_rules(fs_udp_t->t, NULL, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
128
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
129
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
135
fs_udp->default_rules[type] = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
371
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
385
rule = mlx5_add_flow_rules(ft, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
388
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
389
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
393
return rule;
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
403
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
408
rule = mlx5_add_flow_rules(fs_any_t->t, NULL, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
409
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
410
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
416
fs_any->default_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
58
void mlx5e_fs_tt_redirect_del_rule(struct mlx5_flow_handle *rule)
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
60
mlx5_del_flow_rules(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c
86
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.h
9
void mlx5e_fs_tt_redirect_del_rule(struct mlx5_flow_handle *rule);
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c
821
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c
833
rule = mlx5e_fs_tt_redirect_udp_add_rule(fs, MLX5_TT_IPV4_UDP,
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c
835
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c
836
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c
839
ptp_fs->udp_v4_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c
841
rule = mlx5e_fs_tt_redirect_udp_add_rule(fs, MLX5_TT_IPV6_UDP,
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c
843
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c
844
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c
847
ptp_fs->udp_v6_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c
853
rule = mlx5e_fs_tt_redirect_any_add_rule(fs, tirn, ETH_P_1588);
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c
854
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c
855
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c
858
ptp_fs->l2_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_dmfs.c
13
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_dmfs.c
41
dmfs_rule->rule = mlx5_tc_rule_insert(priv, spec, attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_dmfs.c
42
if (IS_ERR(dmfs_rule->rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_dmfs.c
43
err = PTR_ERR(dmfs_rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_dmfs.c
64
mlx5_tc_rule_delete(netdev_priv(fs->netdev), dmfs_rule->rule, dmfs_rule->attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_dmfs.c
75
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_dmfs.c
77
rule = mlx5_tc_rule_insert(priv, spec, attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_dmfs.c
78
if (IS_ERR(rule))
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_dmfs.c
79
return PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_dmfs.c
80
mlx5_tc_rule_delete(priv, dmfs_rule->rule, dmfs_rule->attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_dmfs.c
82
dmfs_rule->rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_smfs.c
230
struct mlx5dr_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_smfs.c
264
rule = mlx5_smfs_rule_create(smfs_matcher->dr_matcher, spec, num_actions, actions,
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_smfs.c
266
if (!rule) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_smfs.c
271
smfs_rule->rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_smfs.c
292
mlx5_smfs_rule_destroy(smfs_rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_smfs.c
306
struct mlx5dr_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_smfs.c
312
rule = mlx5_smfs_rule_create(smfs_rule->smfs_matcher->dr_matcher, spec,
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_smfs.c
314
if (!rule)
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_smfs.c
317
mlx5_smfs_rule_destroy(smfs_rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_smfs.c
318
smfs_rule->rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/ct_fs_smfs.c
40
struct mlx5dr_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_act.c
155
mlx5e_tc_rule_unoffload(post_act->priv, handle->rule, handle->attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_act.c
156
handle->rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_act.c
162
if (!IS_ERR_OR_NULL(handle->rule))
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_act.c
21
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_act.c
96
handle->rule = mlx5e_tc_rule_offload(post_act->priv, spec, handle->attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_act.c
97
if (IS_ERR(handle->rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_act.c
98
err = PTR_ERR(handle->rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
155
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
166
rule = mlx5e_post_meter_add_rule(priv, post_meter, spec, red_attr,
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
168
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
170
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
173
table->red_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
179
rule = mlx5e_post_meter_add_rule(priv, post_meter, spec, green_attr,
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
181
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
183
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
186
table->green_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
226
mlx5_del_flow_rules(mtu_tables->green_table.rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
227
mlx5_del_flow_rules(mtu_tables->red_table.rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
23
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
345
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
355
rule = mlx5e_post_meter_add_rule(priv, post_meter, &zero_spec, green_attr,
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
357
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
359
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
362
mtu_tables->green_table.rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
370
rule = mlx5e_post_meter_add_rule(priv, post_meter, &zero_spec, red_attr,
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
372
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
374
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
377
mtu_tables->red_table.rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/post_meter.c
385
mlx5_del_flow_rules(mtu_tables->green_table.rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/sample.c
290
restore->rule = esw_add_restore_rule(esw, obj_id);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/sample.c
291
if (IS_ERR(restore->rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc/sample.c
292
err = PTR_ERR(restore->rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/sample.c
320
mlx5_del_flow_rules(restore->rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc/sample.c
55
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc/sample.c
590
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/en/tc/sample.h
33
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/en/tc/sample.h
52
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1359
struct flow_rule *rule = flow_cls_offload_flow_rule(flow);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1366
!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_META))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1369
flow_rule_match_meta(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1487
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1495
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CT))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1504
flow_rule_match_ct(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1617
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1661
rule = mlx5_add_flow_rules(ft, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1662
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1663
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1667
pre_ct->flow_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1671
rule = mlx5_add_flow_rules(ft, NULL, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1672
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1673
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
1677
pre_ct->miss_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
2235
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
2256
rule = tc_ct_add_miss_rule(from, to);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
2257
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
2258
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
2263
*miss_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
239
mlx5_tc_ct_rule_to_tuple(struct mlx5_ct_tuple *tuple, struct flow_rule *rule)
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
244
flow_rule_match_basic(rule, &basic);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
245
flow_rule_match_control(rule, &control);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
254
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
260
flow_rule_match_ipv6_addrs(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
267
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
270
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
290
struct flow_rule *rule)
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
292
struct flow_action *flow_action = &rule->action;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
378
struct flow_rule *rule)
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
387
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
390
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
401
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
404
flow_rule_match_control(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
411
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
429
flow_rule_match_ipv6_addrs(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
445
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
448
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
478
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_TCP)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
481
flow_rule_match_tcp(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
488
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_META)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
491
flow_rule_match_meta(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
529
ct_priv->fs_ops->ct_rule_del(ct_priv->fs, zone_rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
854
zone_rule->rule = ct_priv->fs_ops->ct_rule_add(ct_priv->fs, spec, attr, flow_rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
855
if (IS_ERR(zone_rule->rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
856
err = PTR_ERR(zone_rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
89
struct mlx5_ct_fs_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c
911
err = ct_priv->fs_ops->ct_rule_update(ct_priv->fs, zone_rule->rule, spec, attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.h
160
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.h
162
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CT))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
124
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/en/tc_priv.h
81
struct mlx5_flow_handle *rule[MLX5E_TC_MAX_SPLITS + 1];
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
805
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
837
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_CONTROL)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
848
flow_rule_match_enc_control(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
861
flow_rule_match_enc_ipv4_addrs(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
882
flow_rule_match_enc_ipv6_addrs(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
907
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_IP)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
910
flow_rule_match_enc_ip(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
953
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
959
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_PORTS)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
967
flow_rule_match_enc_ports(rule, &enc_ports);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1514
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1556
rule = mlx5e_tc_offload_fdb_rules(esw, flow, spec, flow->attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1557
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1559
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1563
flow->rule[0] = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1567
rule = mlx5e_tc_offload_to_slow_path(esw, flow, spec);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1572
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1573
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1577
flow->rule[0] = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
158
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1638
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1654
rule = mlx5e_tc_offload_fdb_rules(esw, flow, spec, attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1655
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1656
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
1660
flow->rule[0] = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
205
rule = mlx5e_tc_offload_fdb_rules(esw, flow, spec, flow->attr);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
206
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
208
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
215
flow->rule[0] = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
227
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
252
rule = mlx5e_tc_offload_to_slow_path(esw, flow, spec);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
254
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
255
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c
263
flow->rule[0] = rule;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c
128
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c
136
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_KEYID))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c
139
flow_rule_match_enc_keyid(rule, &enc_keyid);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c
162
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c
175
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_OPTS))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c
178
flow_rule_match_enc_opts(rule, &enc_opts);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c
25
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c
29
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_PORTS))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_geneve.c
32
flow_rule_match_enc_ports(rule, &enc_ports);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_gre.c
67
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_gre.c
77
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_KEYID)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_gre.c
80
flow_rule_match_enc_keyid(rule, &enc_keyid);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_mplsoudp.c
61
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_mplsoudp.c
70
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_KEYID))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_mplsoudp.c
73
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_MPLS))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_mplsoudp.c
76
flow_rule_match_mpls(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_vxlan.c
114
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_vxlan.c
120
flow_rule_match_enc_opts(rule, &enc_opts);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_vxlan.c
163
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_vxlan.c
168
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_KEYID))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_vxlan.c
171
flow_rule_match_enc_keyid(rule, &enc_keyid);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_vxlan.c
176
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_OPTS)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_vxlan.c
22
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_vxlan.c
26
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_PORTS))
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_vxlan.c
29
flow_rule_match_enc_ports(rule, &enc_ports);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c
156
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c
162
rule = mlx5_add_flow_rules(accel_fs_t->t, NULL, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c
163
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c
164
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c
170
fs_tcp->default_rules[type] = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c
69
void mlx5e_accel_fs_del_sk(struct mlx5_flow_handle *rule)
drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c
71
mlx5_del_flow_rules(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.h
15
void mlx5e_accel_fs_del_sk(struct mlx5_flow_handle *rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.h
23
static inline void mlx5e_accel_fs_del_sk(struct mlx5_flow_handle *rule) {}
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h
204
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h
209
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.h
222
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
1000
rx->sa_sel.rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
1107
mlx5_del_flow_rules(rx->sa.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
1246
tx->status.rule = fte;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
1262
mlx5_del_flow_rules(tx->pol.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
1268
mlx5_del_flow_rules(tx->sa.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
1274
mlx5_del_flow_rules(tx->status.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
1372
mlx5_del_flow_rules(tx->pol.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
1378
mlx5_del_flow_rules(tx->sa.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
1386
mlx5_del_flow_rules(tx->status.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
167
mlx5_del_flow_rules(rx->status_checks.all.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
1961
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
1989
rule = mlx5_add_flow_rules(rx->ft.status, spec, &flow_act, dest, 2);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
1990
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
1991
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
1998
sa_entry->ipsec_rule.status_pass = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2011
rule = mlx5_add_flow_rules(rx->ft.sa_sel, spec, &flow_act, &dest[0], 1);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2012
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2013
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2020
sa_entry->ipsec_rule.sa_sel = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2039
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
206
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2105
rule = mlx5_add_flow_rules(rx->ft.sa, spec, &flow_act, dest, 2);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2106
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2107
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2129
sa_entry->ipsec_rule.rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2136
if (sa_entry->ipsec_rule.replay.rule) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2137
mlx5_del_flow_rules(sa_entry->ipsec_rule.replay.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2146
mlx5_del_flow_rules(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2169
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2228
rule = mlx5_add_flow_rules(tx->ft.sa, spec, &flow_act, dest, 2);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2229
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2230
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2236
sa_entry->ipsec_rule.rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2260
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2315
rule = mlx5_add_flow_rules(ft, spec, &flow_act, dest, dstn);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2316
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2317
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2323
pol_entry->ipsec_rule.rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2344
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
235
rule = mlx5_add_flow_rules(ft, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
236
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
237
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2392
rule = mlx5_add_flow_rules(ft, spec, &flow_act, dest, dstn);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2393
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2394
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2400
pol_entry->ipsec_rule.rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
242
sa_entry->ipsec_rule.auth.rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
255
rule = mlx5_add_flow_rules(ft, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
256
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
257
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
262
sa_entry->ipsec_rule.trailer.rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2649
mlx5_del_flow_rules(ipsec_rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2665
mlx5_del_flow_rules(ipsec_rule->trailer.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2668
mlx5_del_flow_rules(ipsec_rule->auth.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2676
if (ipsec_rule->replay.rule) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2677
mlx5_del_flow_rules(ipsec_rule->replay.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
270
mlx5_del_flow_rules(sa_entry->ipsec_rule.auth.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
2713
mlx5_del_flow_rules(ipsec_rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
285
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
313
rule = mlx5_add_flow_rules(ft, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
314
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
315
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
321
sa_entry->ipsec_rule.replay.rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
342
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
379
rule = mlx5_add_flow_rules(ft, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
380
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
381
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
388
rx->status_checks.all.rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
453
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
475
rule = mlx5_add_flow_rules(rx->ft.status, spec, &flow_act, dest, 2);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
476
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
477
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
484
return rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
504
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
515
rule = ipsec_rx_status_pass_create(ipsec, rx, dest,
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
517
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
518
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
521
rx->status_checks.crypto_offload_pass_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
526
rule = ipsec_rx_status_pass_create(ipsec, rx, pol_dest,
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
528
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
529
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
532
rx->status_checks.packet_offload_pass_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
575
miss->rule = mlx5_add_flow_rules(ft, spec, &flow_act, dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
576
if (IS_ERR(miss->rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
578
err = PTR_ERR(miss->rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
702
mlx5_del_flow_rules(rx->pol.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
716
mlx5_del_flow_rules(rx->sa_sel.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
730
mlx5_del_flow_rules(rx->sa.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
847
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
868
rule = mlx5_add_flow_rules(ft, NULL, &flow_act, dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
869
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
870
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
875
rx->pol_miss_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
943
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
989
rule = mlx5_add_flow_rules(ft, NULL, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
990
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c
991
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c
107
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c
110
priv_rx = container_of(accel_rule, struct mlx5e_ktls_offload_context_rx, rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c
114
rule = mlx5e_accel_fs_add_sk(accel_rule->priv->fs, priv_rx->sk,
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c
117
if (!IS_ERR_OR_NULL(rule))
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c
118
accel_rule->rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c
123
static void accel_rule_init(struct accel_rule *rule, struct mlx5e_priv *priv)
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c
125
INIT_WORK(&rule->work, accel_rule_handle_work);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c
126
rule->priv = priv;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c
14
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c
47
struct accel_rule rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c
614
struct accel_rule *rule = &priv_rx->rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c
620
queue_work(rule->priv->tls->rx_wq, &rule->work);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c
690
accel_rule_init(&priv_rx->rule, priv);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c
725
if (!cancel_work_sync(&priv_rx->rule.work))
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c
735
if (priv_rx->rule.rule)
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c
736
mlx5e_accel_fs_del_sk(priv_rx->rule.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
100
rx_err->rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
182
rx_err->rule = fte;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
248
mlx5_del_flow_rules(rx_err->rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
249
rx_err->rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
28
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
340
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
36
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
379
rule = mlx5_add_flow_rules(ft, spec, &flow_act, &fs_prot->default_dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
380
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
381
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
385
fs_prot->miss_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
414
rule = mlx5_add_flow_rules(fs_prot->ft, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
415
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
416
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
423
fs_prot->def_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
682
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
731
rule = mlx5_add_flow_rules(ft, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
732
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
733
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
740
tx_fs->rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
758
mlx5_del_flow_rules(tx_fs->rule);
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
98
if (rx_err->rule) {
drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.c
99
mlx5_del_flow_rules(rx_err->rule);
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
446
if (arfs_rule->rule) {
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
447
mlx5_del_flow_rules(arfs_rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
459
struct arfs_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
467
mlx5e_for_each_arfs_rule(rule, htmp, arfs->arfs_tables, i, j) {
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
468
hlist_del_init(&rule->hlist);
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
469
hlist_add_head(&rule->hlist, &del_list);
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
473
hlist_for_each_entry_safe(rule, htmp, &del_list, hlist) {
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
474
cancel_work_sync(&rule->arfs_work);
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
475
if (rule->rule)
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
476
mlx5_del_flow_rules(rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
477
hlist_del(&rule->hlist);
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
478
kfree(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
517
struct mlx5_flow_handle *rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
597
rule = mlx5_add_flow_rules(ft, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
598
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
599
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
609
return err ? ERR_PTR(err) : rule;
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
613
struct mlx5_flow_handle *rule, u16 rxq)
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
620
err = mlx5_modify_rule_destination(rule, &dst, NULL);
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
635
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
641
if (!arfs_rule->rule) {
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
642
rule = arfs_add_rule(priv, arfs_rule);
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
643
if (IS_ERR(rule))
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
645
arfs_rule->rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
648
arfs_modify_rule_rq(priv, arfs_rule->rule,
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
661
struct arfs_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
664
rule = kzalloc_obj(*rule, GFP_ATOMIC);
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
665
if (!rule) {
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
670
rule->priv = priv;
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
671
rule->rxq = rxq;
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
672
INIT_WORK(&rule->arfs_work, arfs_handle_work);
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
674
tuple = &rule->tuple;
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
689
rule->flow_id = flow_id;
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
690
rule->filter_id = arfs->last_filter_id++ % RPS_NO_FILTER;
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
692
hlist_add_head(&rule->hlist,
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
695
return rule;
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c
88
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
1013
ai->rule = mlx5_add_flow_rules(ft, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
1014
if (IS_ERR(ai->rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
1016
err = PTR_ERR(ai->rule);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
1017
ai->rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
372
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
383
rule = mlx5_add_flow_rules(ft, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
385
return rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
391
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
394
rule = mlx5e_add_trap_rule(ft, trap_id, tir_num);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
395
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
396
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
401
fs->vlan->trap_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
416
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
419
rule = mlx5e_add_trap_rule(ft, trap_id, tir_num);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
420
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
421
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
426
fs->l2.trap_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
763
rule_p = &fs->promisc.rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
808
if (WARN(!fs->promisc.rule, "Trying to remove non-existing promiscuous rule"))
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
810
mlx5_del_flow_rules(fs->promisc.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
811
fs->promisc.rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
970
if (!IS_ERR_OR_NULL(ai->rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
971
mlx5_del_flow_rules(ai->rule);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
972
ai->rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
396
struct mlx5e_ethtool_rule *rule)
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
403
if (iter->flow_spec.location > rule->flow_spec.location)
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
408
list_add(&rule->list, head);
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
464
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
495
rule = mlx5_add_flow_rules(ft, spec, &flow_act, dst, dst ? 1 : 0);
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
496
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
497
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
505
return err ? ERR_PTR(err) : rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
512
if (eth_rule->rule)
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
513
mlx5_del_flow_rules(eth_rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
64
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
729
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
753
rule = add_ethtool_flow_rule(priv, eth_rule, eth_ft->ft, fs, rss_context);
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
754
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
755
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
759
eth_rule->rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
1698
mlx5_eswitch_del_send_to_vport_rule(sq_peer->rule);
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
1730
sq_peer->rule = flow_rule;
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
1742
sq_peer->rule = flow_rule;
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
454
if (sq_peer->rule)
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
455
mlx5_eswitch_del_send_to_vport_rule(sq_peer->rule);
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
490
sq_peer->rule = flow_rule;
drivers/net/ethernet/mellanox/mlx5/core/en_rep.h
229
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1249
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1306
rule = ERR_CAST(tc->t);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1320
rule = ERR_CAST(ft);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1327
rule = mlx5_add_flow_rules(ft, spec,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1329
if (IS_ERR(rule))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1332
return rule;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1345
return ERR_CAST(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1393
flow->rule[0] = mlx5e_add_offloaded_nic_rule(priv, &parse_attr->spec, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1394
return PTR_ERR_OR_ZERO(flow->rule[0]);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1398
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1405
mlx5_del_flow_rules(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1424
if (!IS_ERR_OR_NULL(flow->rule[0]))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1425
mlx5e_del_offloaded_nic_rule(priv, flow->rule[0], attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1462
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1467
rule = mlx5e_tc_rule_offload(flow->priv, spec, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1469
if (IS_ERR(rule))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1470
return rule;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1473
flow->rule[1] = mlx5_eswitch_add_fwd_rule(esw, spec, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1474
if (IS_ERR(flow->rule[1]))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1478
return rule;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1481
mlx5e_tc_rule_unoffload(flow->priv, rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1482
return flow->rule[1];
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1492
return mlx5_eswitch_del_offloaded_rule(esw, flow->rule[0], attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1495
mlx5_eswitch_del_fwd_rule(esw, flow->rule[1], attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1497
mlx5e_tc_rule_unoffload(flow->priv, flow->rule[0], attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1508
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1546
rule = mlx5e_tc_offload_fdb_rules(esw, flow, spec, slow_attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1547
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1548
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1559
return rule;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2018
flow->rule[0] = mlx5e_tc_offload_to_slow_path(esw, flow, &parse_attr->spec);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2020
flow->rule[0] = mlx5e_tc_offload_fdb_rules(esw, flow, &parse_attr->spec, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2022
if (IS_ERR(flow->rule[0])) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2023
err = PTR_ERR(flow->rule[0]);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2183
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2184
struct flow_action *flow_action = &rule->action;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2239
#define COPY_DISSECTOR(rule, diss_key, dst)\
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2241
struct flow_rule *__rule = (rule);\
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2256
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2276
COPY_DISSECTOR(rule, FLOW_DISSECTOR_KEY_ENC_CONTROL,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2279
COPY_DISSECTOR(rule, FLOW_DISSECTOR_KEY_ENC_IPV4_ADDRS,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2282
COPY_DISSECTOR(rule, FLOW_DISSECTOR_KEY_ENC_IPV6_ADDRS,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2284
COPY_DISSECTOR(rule, FLOW_DISSECTOR_KEY_ENC_IP, &tunnel_key.enc_ip);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2285
COPY_DISSECTOR(rule, FLOW_DISSECTOR_KEY_ENC_PORTS,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2287
COPY_DISSECTOR(rule, FLOW_DISSECTOR_KEY_ENC_KEYID,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2295
flow_rule_match_enc_opts(rule, &enc_opts_match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2443
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2449
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_IP)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2450
flow_rule_match_enc_ip(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2455
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IP)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2456
flow_rule_match_ip(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2642
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2647
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_META))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2650
flow_rule_match_meta(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2716
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2717
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2783
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC) &&
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2787
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2795
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN) ||
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2810
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2839
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CVLAN) &&
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2859
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CVLAN)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2862
flow_rule_match_cvlan(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2899
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2902
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2922
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2925
flow_rule_match_control(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2946
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2949
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2964
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2985
flow_rule_match_ipv6_addrs(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3005
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IP)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3008
flow_rule_match_ip(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3040
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3043
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3080
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_TCP)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3083
flow_rule_match_tcp(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3092
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ICMP)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3095
flow_rule_match_icmp(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3142
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_MPLS) &&
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
417
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
423
mlx5_eswitch_del_offloaded_rule(esw, rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
427
mlx5e_del_offloaded_nic_rule(priv, rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4528
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4557
err = parse_tc_fdb_actions(priv, &rule->action, flow, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4683
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4716
err = parse_tc_nic_actions(priv, &rule->action, flow, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
512
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
5140
return scan_tc_matchall_fdb_actions(priv, &ma->rule->action, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
518
mlx5e_del_offloaded_nic_rule(priv, rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
523
mlx5e_tc_sample_unoffload(get_sample_priv(priv), rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
527
mlx5_eswitch_del_offloaded_rule(esw, rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.h
311
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.h
320
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.h
351
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c
103
struct mlx5_esw_indir_table_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c
114
rule = kzalloc_obj(*rule);
drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c
115
if (!rule)
drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c
153
rule->handle = handle;
drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c
154
rule->mh = flow_act.modify_hdr;
drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c
155
refcount_set(&rule->refcnt, 1);
drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c
156
e->recirc_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c
167
kfree(rule);
drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c
174
struct mlx5_esw_indir_table_rule *rule = e->recirc_rule;
drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c
177
if (!rule)
drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c
180
if (!refcount_dec_and_test(&rule->refcnt))
drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c
183
mlx5_del_flow_rules(rule->handle);
drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c
185
mlx5_modify_header_dealloc(esw->dev, rule->mh);
drivers/net/ethernet/mellanox/mlx5/core/esw/indir_table.c
186
kfree(rule);
drivers/net/ethernet/mellanox/mlx5/core/esw/ipsec_fs.c
148
err = mlx5_eswitch_restore_ipsec_rule(esw, flow->rule[0], esw_attr,
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
422
void mlx5_eswitch_del_send_to_vport_meta_rule(struct mlx5_flow_handle *rule);
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
467
void mlx5_eswitch_del_send_to_vport_rule(struct mlx5_flow_handle *rule);
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
508
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
512
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
928
int mlx5_eswitch_restore_ipsec_rule(struct mlx5_eswitch *esw, struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1028
void mlx5_eswitch_del_send_to_vport_rule(struct mlx5_flow_handle *rule)
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1030
mlx5_del_flow_rules(rule);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1033
void mlx5_eswitch_del_send_to_vport_meta_rule(struct mlx5_flow_handle *rule)
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1035
if (rule)
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1036
mlx5_del_flow_rules(rule);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
4764
mlx5_eswitch_restore_ipsec_rule(struct mlx5_eswitch *esw, struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
4776
return mlx5_modify_rule_destination(rule, &new_dest, &old_dest);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
670
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
707
rule = ERR_PTR(err);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
716
rule = ERR_PTR(-EINVAL);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
762
rule = ERR_CAST(fdb);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
772
rule = mlx5_eswitch_add_termtbl_rule(esw, fdb, spec, esw_attr,
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
775
rule = mlx5_add_flow_rules(fdb, spec, &flow_act, dest, i);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
776
if (IS_ERR(rule))
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
782
return rule;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
793
return rule;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
808
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
817
rule = ERR_CAST(fast_fdb);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
827
rule = ERR_CAST(fwd_fdb);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
842
rule = ERR_PTR(err);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
858
rule = mlx5_add_flow_rules(fast_fdb, spec, &flow_act, dest, i);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
860
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
868
return rule;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
875
return rule;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
880
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
890
mlx5_del_flow_rules(rule);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
923
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
926
__mlx5_eswitch_del_rule(esw, rule, attr, false);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
931
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
934
__mlx5_eswitch_del_rule(esw, rule, attr, true);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c
16
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c
172
mlx5_del_flow_rules(tt->rule);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c
253
struct mlx5_flow_handle *rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c
300
rule = mlx5_add_flow_rules(fdb, spec, flow_act, dest, num_dest);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c
301
if (IS_ERR(rule))
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c
332
rule = mlx5_add_flow_rules(fdb, spec, flow_act, dest, num_dest);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c
334
return rule;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c
94
tt->rule = mlx5_add_flow_rules(tt->termtbl, NULL, flow_act,
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c
96
if (IS_ERR(tt->rule)) {
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c
97
err = PTR_ERR(tt->rule);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c
98
esw_warn(dev, "Failed to create termination table rule, err %pe\n", tt->rule);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1185
static bool rule_is_pending(struct fs_fte *fte, struct mlx5_flow_rule *rule)
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1196
if (tmp_rule == rule)
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1203
static int _mlx5_modify_rule_destination(struct mlx5_flow_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1215
fs_get_obj(fte, rule->node.parent);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1217
pending = rule_is_pending(fte, rule);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1229
memcpy(&rule->dest_attr, dest, sizeof(*dest));
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1248
return _mlx5_modify_rule_destination(handle->rule[0],
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1253
if (mlx5_flow_dests_cmp(old_dest, &handle->rule[i]->dest_attr))
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1254
return _mlx5_modify_rule_destination(handle->rule[i],
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1531
struct mlx5_flow_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1533
rule = kzalloc_obj(*rule);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1534
if (!rule)
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1537
INIT_LIST_HEAD(&rule->next_ft);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1538
rule->node.type = FS_TYPE_FLOW_DEST;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1540
memcpy(&rule->dest_attr, dest, sizeof(*dest));
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1542
rule->dest_attr.type = MLX5_FLOW_DESTINATION_TYPE_NONE;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1544
return rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1551
handle = kzalloc_flex(*handle, rule, num_rules);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1564
list_del(&handle->rule[i]->node.list);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1565
kfree(handle->rule[i]);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1576
if (refcount_dec_and_test(&handle->rule[i]->node.refcount)) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1578
list_del(&handle->rule[i]->node.list);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1579
kfree(handle->rule[i]);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1593
struct mlx5_flow_rule *rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1603
rule = alloc_rule(dest + i);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1604
if (!rule)
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1610
tree_init_node(&rule->node, NULL, del_sw_hw_dup_rule);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1613
list_add(&rule->node.list, children);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1615
list_add_tail(&rule->node.list, children);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1627
handle->rule[i] = rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1648
struct mlx5_flow_rule *rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1660
rule = find_flow_rule(fte, dest + i);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1661
if (rule) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1662
refcount_inc(&rule->node.refcount);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1668
rule = alloc_rule(dest + i);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1669
if (!rule)
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1675
tree_init_node(&rule->node, NULL, del_sw_hw_rule);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1678
list_add(&rule->node.list, &fte->node.children);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1680
list_add_tail(&rule->node.list, &fte->node.children);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1692
handle->rule[i] = rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1903
struct mlx5_flow_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1905
list_for_each_entry(rule, &fte->node.children, node.list) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1906
if (mlx5_flow_dests_cmp(&rule->dest_attr, dest))
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1907
return rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2013
if (!handle->rule[i]->node.parent) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2014
tree_add_node(&handle->rule[i]->node, &fte->node);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2015
trace_mlx5_fs_add_rule(handle->rule[i]);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2212
tree_add_node(&handle->rule[i]->node, &fte->node);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2213
trace_mlx5_fs_add_rule(handle->rule[i]);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2231
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2260
rule = add_rule_dup_match_fte(fte_tmp, spec, flow_act, dest, dest_num);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2262
rule = add_rule_fg(g, spec, flow_act, dest, dest_num, fte_tmp);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2267
return rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2279
rule = ERR_PTR(-EAGAIN);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2315
rule = add_rule_fg(g, spec, flow_act, dest, dest_num, fte);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2317
if (IS_ERR(rule))
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2319
return rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2322
rule = ERR_PTR(err);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2325
return rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2337
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2376
rule = try_add_to_existing_fg(ft, &match_head.list, spec, flow_act, dest,
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2379
if (!IS_ERR(rule) ||
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2380
(PTR_ERR(rule) != -ENOENT && PTR_ERR(rule) != -EAGAIN)) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2383
return rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2391
if (PTR_ERR(rule) == -EAGAIN ||
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2397
rule = ERR_CAST(g);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2399
return rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2422
rule = add_rule_fg(g, spec, flow_act, dest, dest_num, fte);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2424
if (IS_ERR(rule))
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2427
return rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2493
if (list_empty(&handle->rule[num_dest - 1]->next_ft)) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2495
list_add(&handle->rule[num_dest - 1]->next_ft,
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2498
handle->rule[num_dest - 1]->sw_action = sw_action;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2499
handle->rule[num_dest - 1]->ft = ft;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2525
fs_get_obj(fte, handle->rule[0]->node.parent);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2528
tree_remove_node(&handle->rule[i]->node, true);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
623
struct mlx5_flow_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
626
fs_get_obj(rule, node);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
627
fs_get_obj(fte, rule->node.parent);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
628
trace_mlx5_fs_del_rule(rule);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
630
if (is_fwd_next_action(rule->sw_action)) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
631
mutex_lock(&rule->dest_attr.ft->lock);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
632
list_del(&rule->next_ft);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
633
mutex_unlock(&rule->dest_attr.ft->lock);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
643
kfree(rule);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
648
struct mlx5_flow_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
651
fs_get_obj(rule, node);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
652
fs_get_obj(fte, rule->node.parent);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
653
trace_mlx5_fs_del_rule(rule);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
654
if (is_fwd_next_action(rule->sw_action)) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
655
mutex_lock(&rule->dest_attr.ft->lock);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
656
list_del(&rule->next_ft);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
657
mutex_unlock(&rule->dest_attr.ft->lock);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
660
if (rule->dest_attr.type == MLX5_FLOW_DESTINATION_TYPE_COUNTER) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
666
mlx5_fc_local_put(rule->dest_attr.counter);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
670
if (rule->dest_attr.type == MLX5_FLOW_DESTINATION_TYPE_PORT) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
677
if (is_fwd_dest_type(rule->dest_attr.type)) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
689
kfree(rule);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.h
178
struct mlx5_flow_rule *rule[] __counted_by(num_rules);
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1022
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1045
rule = mlx5_add_flow_rules(ttc->t, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1046
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1047
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1052
return err ? ERR_PTR(err) : rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1063
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1090
rule = mlx5_add_flow_rules(ttc->t, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1091
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1092
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1097
return err ? ERR_PTR(err) : rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1103
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1115
rule = mlx5_ttc_create_ipsec_outer_rule(ttc, i);
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1116
if (IS_ERR(rule))
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1119
ttc->rules[i].rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1124
rule = mlx5_ttc_create_ipsec_inner_rule(ttc, inner_ttc, i);
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1125
if (IS_ERR(rule))
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1128
ttc->rules[i].rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
1139
return PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
358
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
388
rule = mlx5_add_flow_rules(ft, spec, &flow_act, dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
389
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
390
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
395
return err ? ERR_PTR(err) : rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
412
struct mlx5_ttc_rule *rule = &rules[tt];
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
419
rule->rule = mlx5_generate_ttc_rule(dev, ft, &params->dests[tt],
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
424
if (IS_ERR(rule->rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
425
err = PTR_ERR(rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
426
rule->rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
429
rule->default_dest = params->dests[tt];
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
54
if (!IS_ERR_OR_NULL(ttc->rules[i].rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
55
mlx5_del_flow_rules(ttc->rules[i].rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
56
ttc->rules[i].rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
628
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
655
rule = mlx5_add_flow_rules(ft, spec, &flow_act, dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
656
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
657
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
662
return err ? ERR_PTR(err) : rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
679
struct mlx5_ttc_rule *rule = &rules[tt];
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
686
rule->rule = mlx5_generate_inner_ttc_rule(dev, ft,
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
691
if (IS_ERR(rule->rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
692
err = PTR_ERR(rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
693
rule->rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
696
rule->default_dest = params->dests[tt];
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
927
return mlx5_modify_rule_destination(ttc->rules[type].rule, new_dest,
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
957
if (!ttc->rules[i].rule)
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
960
mlx5_del_flow_rules(ttc->rules[i].rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.c
961
ttc->rules[i].rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.h
44
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
13
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
138
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
156
rule = mlx5_add_flow_rules(roce->ft, spec, &flow_act, &dst, 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
157
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
158
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
164
roce->rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
169
rule = mlx5_add_flow_rules(roce->ft, spec, &flow_act, default_dst, 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
170
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
171
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
177
roce->roce_miss.rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
187
rule = mlx5_add_flow_rules(roce->nic_master_ft, NULL, &flow_act, &dst,
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
189
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
19
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
190
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
195
roce->nic_master_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
201
mlx5_del_flow_rules(roce->roce_miss.rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
203
mlx5_del_flow_rules(roce->rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
215
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
221
rule = mlx5_add_flow_rules(roce->ft, NULL, &flow_act, &dst,
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
223
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
224
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
229
roce->rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
241
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
257
rule = mlx5_add_flow_rules(roce->ft, spec, &flow_act, &dst, 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
258
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
259
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
264
roce->rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
35
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
577
mlx5_del_flow_rules(tx_roce->rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
697
mlx5_del_flow_rules(rx_roce->roce_miss.rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
698
mlx5_del_flow_rules(rx_roce->rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1144
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1200
rule = mlx5_add_flow_rules(rx_tables->ft_check, spec, flow_act, roce_dest, dstn + 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1202
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1203
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1208
rx_fs->check_rule[rule_index] = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1218
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1242
rule = mlx5_add_flow_rules(roce->ft_macsec_op_check, NULL, &flow_act, NULL, 0);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1243
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1244
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1249
roce->miss.rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
126
struct mlx5_flow_handle *rule[RX_NUM_OF_RULES_PER_SA];
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
132
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1326
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1361
rule = mlx5_add_flow_rules(roce->ft, spec, &flow_act, &dst, 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1362
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1363
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1368
roce->rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1373
rule = mlx5_add_flow_rules(roce->ft, NULL, &flow_act, NULL, 0);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1374
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1375
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1380
roce->nic_miss.rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1386
mlx5_del_flow_rules(roce->rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
139
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1504
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1552
rule = mlx5_add_flow_rules(ft_crypto->t, NULL, &flow_act, NULL, 0);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1553
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1554
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1560
rx_tables->crypto_miss_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1593
rule = mlx5_add_flow_rules(rx_tables->ft_check, NULL, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1594
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1595
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1599
rx_tables->check_miss_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1660
if (rx_rule->rule[i]) {
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1661
mlx5_del_flow_rules(rx_rule->rule[i]);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1662
rx_rule->rule[i] = NULL;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1738
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1788
rule = mlx5_add_flow_rules(ft_crypto->t, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1789
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1790
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1796
rx_rule->rule[0] = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1813
rule = mlx5_add_flow_rules(ft_crypto->t, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1814
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1815
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
1821
rx_rule->rule[1] = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
2011
mlx5_del_flow_rules(tx_rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
2246
tx_rule->rule = new_rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
398
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
449
rule = mlx5_add_flow_rules(ft_crypto->t, spec, &flow_act, NULL, 0);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
450
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
451
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
455
tx_fs->crypto_mke_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
460
rule = mlx5_add_flow_rules(ft_crypto->t, NULL, &flow_act, NULL, 0);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
461
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
462
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
466
tx_tables->crypto_miss_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
498
rule = mlx5_add_flow_rules(tx_tables->ft_check, NULL, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
499
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
500
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
504
tx_tables->check_miss_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
519
rule = mlx5_add_flow_rules(tx_tables->ft_check, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
520
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
521
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
525
tx_fs->check_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
63
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
68
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
773
if (tx_rule->rule) {
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
774
mlx5_del_flow_rules(tx_rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
775
tx_rule->rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
809
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
867
rule = mlx5_add_flow_rules(tx_tables->ft_crypto.t, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
868
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
869
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
873
tx_rule->rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
980
mlx5_del_flow_rules(miss->rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
989
mlx5_del_flow_rules(roce->nic_miss.rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/macsec_fs.c
990
mlx5_del_flow_rules(roce->rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/smfs.c
64
mlx5_smfs_rule_destroy(struct mlx5dr_rule *rule)
drivers/net/ethernet/mellanox/mlx5/core/lib/smfs.c
66
mlx5dr_rule_destroy(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/smfs.h
34
mlx5_smfs_rule_destroy(struct mlx5dr_rule *rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/action.c
1723
ste_attr.send_attr.rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
488
bwc_rule->rule = kzalloc_obj(*bwc_rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
489
if (unlikely(!bwc_rule->rule))
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
503
if (likely(bwc_rule->rule))
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
504
kfree(bwc_rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
525
return mlx5hws_rule_destroy(bwc_rule->rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
545
if (unlikely(bwc_rule->rule->status != MLX5HWS_RULE_STATUS_DELETED &&
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
546
bwc_rule->rule->status != MLX5HWS_RULE_STATUS_DELETING)) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
548
bwc_rule->rule->status);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
62
attr->size[MLX5HWS_MATCHER_SIZE_TYPE_RX].rule.num_log = size_log_rx;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
63
attr->size[MLX5HWS_MATCHER_SIZE_TYPE_TX].rule.num_log = size_log_tx;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
681
bwc_rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
717
ret = mlx5hws_rule_action_update(bwc_rule->rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
95
bwc_rule->rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.h
60
struct mlx5hws_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc_complex.c
1002
tmp_bwc_rule->rule->rtc_0 =
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc_complex.c
1004
tmp_bwc_rule->rule->rtc_1 =
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc_complex.c
1006
tmp_bwc_rule->rule->matcher =
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc_complex.c
1007
tmp_bwc_rule->rule->matcher->resize_dst;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc_complex.c
1014
tmp_rule = tmp_bwc_rule->rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc_complex.c
1054
tmp_bwc_rule->rule->rtc_0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc_complex.c
1056
tmp_bwc_rule->rule->rtc_1;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc_complex.c
816
bwc_rule->rule->skip_delete = !is_last_rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/fs_hws.c
1074
struct mlx5hws_bwc_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/fs_hws.c
1087
rule = mlx5hws_bwc_rule_create(group->fs_hws_matcher.matcher, &params,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/fs_hws.c
1091
if (!rule) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/fs_hws.c
1096
fte->fs_hws_rule.bwc_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/fs_hws.c
1111
struct mlx5_fs_hws_rule *rule = &fte->fs_hws_rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/fs_hws.c
1117
err = mlx5hws_bwc_rule_destroy(rule->bwc_rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/fs_hws.c
1118
rule->bwc_rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/fs_hws.c
1120
mlx5_fs_destroy_fs_actions(ns, &rule->hws_fs_actions,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/fs_hws.c
1121
&rule->num_fs_actions);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/matcher.c
1276
struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/matcher.c
1286
if (unlikely(src_matcher != rule->matcher)) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/matcher.c
1291
return mlx5hws_rule_move_hws_add(rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/matcher.c
836
hws_matcher_rules_to_tbl_depth(size_rx->rule.num_log);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/matcher.c
838
hws_matcher_rules_to_tbl_depth(size_tx->rule.num_log);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/matcher.c
911
if (!hws_matcher_requires_col_tbl(size_rx->rule.num_log) &&
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/matcher.c
912
!hws_matcher_requires_col_tbl(size_tx->rule.num_log))
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/matcher.c
933
dst->table.sz_row_log = src->rule.num_log;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/mlx5hws.h
111
} rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/mlx5hws.h
456
struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/mlx5hws.h
488
int mlx5hws_rule_destroy(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/mlx5hws.h
501
int mlx5hws_rule_action_update(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
103
if (rule->resize_info->rtc_1) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
111
struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
120
rule->status = rule_status_on_succ;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
123
rule->status = MLX5HWS_RULE_STATUS_FAILED;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
131
hws_rule_save_resize_info(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
134
if (!mlx5hws_matcher_is_resizable(rule->matcher))
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
138
if (likely(!rule->resize_info)) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
139
rule->resize_info = kzalloc_obj(*rule->resize_info);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
140
if (unlikely(!rule->resize_info)) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
146
memcpy(rule->resize_info->ctrl_seg, ste_attr->wqe_ctrl,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
147
sizeof(rule->resize_info->ctrl_seg));
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
148
memcpy(rule->resize_info->data_seg, ste_attr->wqe_data,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
149
sizeof(rule->resize_info->data_seg));
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
152
void mlx5hws_rule_clear_resize_info(struct mlx5hws_rule *rule)
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
154
if (mlx5hws_matcher_is_resizable(rule->matcher) &&
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
155
rule->resize_info) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
156
kfree(rule->resize_info);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
157
rule->resize_info = NULL;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
162
hws_rule_save_delete_info(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
165
struct mlx5hws_match_template *mt = rule->matcher->mt;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
168
if (mlx5hws_matcher_is_resizable(rule->matcher))
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
172
memcpy(&rule->tag.jumbo, ste_attr->wqe_data->jumbo, MLX5HWS_JUMBO_TAG_SZ);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
174
memcpy(&rule->tag.match, ste_attr->wqe_data->tag, MLX5HWS_MATCH_TAG_SZ);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
178
hws_rule_clear_delete_info(struct mlx5hws_rule *rule)
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
184
hws_rule_load_delete_info(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
187
if (unlikely(!mlx5hws_matcher_is_resizable(rule->matcher))) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
188
ste_attr->wqe_tag = &rule->tag;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
191
(struct mlx5hws_wqe_gta_data_seg_ste *)(void *)rule->resize_info->data_seg;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
198
static int mlx5hws_rule_alloc_action_ste(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
202
struct mlx5hws_matcher *matcher = rule->matcher;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
205
rule->action_ste.ste.order =
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
209
&rule->action_ste);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
224
static void hws_rule_create_init(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
229
struct mlx5hws_matcher *matcher = rule->matcher;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
236
rule->rtc_0 = 0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
237
rule->rtc_1 = 0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
239
rule->status = MLX5HWS_RULE_STATUS_CREATING;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
241
rule->status = MLX5HWS_RULE_STATUS_UPDATING;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
245
rule->old_action_ste = rule->action_ste;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
248
rule->pending_wqes = 0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
262
static void hws_rule_move_init(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
266
rule->resize_info->rtc_0 = rule->rtc_0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
267
rule->resize_info->rtc_1 = rule->rtc_1;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
268
rule->resize_info->rule_idx = attr->rule_idx;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
270
rule->rtc_0 = 0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
271
rule->rtc_1 = 0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
273
rule->pending_wqes = 0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
274
rule->status = MLX5HWS_RULE_STATUS_CREATING;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
275
rule->resize_info->state = MLX5HWS_RULE_RESIZE_STATE_WRITING;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
278
bool mlx5hws_rule_move_in_progress(struct mlx5hws_rule *rule)
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
280
return mlx5hws_matcher_is_in_resize(rule->matcher) &&
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
281
rule->resize_info &&
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
282
rule->resize_info->state != MLX5HWS_RULE_RESIZE_STATE_IDLE;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
285
static int hws_rule_create_hws(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
292
struct mlx5hws_action_template *at = &rule->matcher->at[at_idx];
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
293
struct mlx5hws_match_template *mt = &rule->matcher->mt[mt_idx];
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
295
struct mlx5hws_matcher *matcher = rule->matcher;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
316
hws_rule_create_init(rule, &ste_attr, &apply, is_update);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
323
hws_rule_init_dep_wqe(dep_wqe, rule, mt, attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
33
hws_rule_update_copy_tag(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
334
ret = mlx5hws_rule_alloc_action_ste(rule, attr->queue_id,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
343
rule->action_ste.action_tbl->stc.offset;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
346
rule->action_ste.action_tbl->rtc_0_id : 0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
348
rule->action_ste.action_tbl->rtc_1_id : 0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
351
rule->action_ste.ste.offset + action_stes;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
370
hws_rule_update_copy_tag(rule, &dep_wqe->wqe_data, is_jumbo);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
381
ste_attr.send_attr.rule = dep_wqe->rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
384
ste_attr.used_id_rtc_0 = &rule->rtc_0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
385
ste_attr.used_id_rtc_1 = &rule->rtc_1;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
39
if (!mlx5hws_matcher_is_resizable(rule->matcher)) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
40
tag = &rule->tag;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
400
hws_rule_save_delete_info(rule, &ste_attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
402
hws_rule_save_resize_info(rule, &ste_attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
411
static void hws_rule_destroy_failed_hws(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
414
struct mlx5hws_context *ctx = rule->matcher->tbl->ctx;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
419
hws_rule_gen_comp(queue, rule, false,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
423
mlx5hws_rule_free_action_ste(&rule->action_ste);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
426
mlx5hws_rule_free_action_ste(&rule->old_action_ste);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
429
hws_rule_clear_delete_info(rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
43
(struct mlx5hws_wqe_gta_data_seg_ste *)(void *)rule->resize_info->data_seg;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
432
mlx5hws_rule_clear_resize_info(rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
445
static int hws_rule_destroy_hws(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
448
bool is_jumbo = mlx5hws_matcher_mt_is_jumbo(rule->matcher->mt);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
449
struct mlx5hws_context *ctx = rule->matcher->tbl->ctx;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
450
struct mlx5hws_matcher *matcher = rule->matcher;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
458
hws_rule_destroy_failed_hws(rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
463
if (rule->status == MLX5HWS_RULE_STATUS_CREATING ||
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
464
rule->status == MLX5HWS_RULE_STATUS_UPDATING)
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
468
if (rule->status == MLX5HWS_RULE_STATUS_FAILED) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
469
hws_rule_destroy_failed_hws(rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
473
if (rule->skip_delete) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
478
hws_rule_gen_comp(queue, rule, false,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
481
mlx5hws_rule_free_action_ste(&rule->action_ste);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
482
mlx5hws_rule_clear_resize_info(rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
492
rule->status = MLX5HWS_RULE_STATUS_DELETING;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
498
ste_attr.send_attr.rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
502
ste_attr.rtc_0 = rule->rtc_0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
503
ste_attr.rtc_1 = rule->rtc_1;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
504
ste_attr.used_id_rtc_0 = &rule->rtc_0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
505
ste_attr.used_id_rtc_1 = &rule->rtc_1;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
512
hws_rule_load_delete_info(rule, &ste_attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
514
hws_rule_clear_delete_info(rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
519
static int hws_rule_enqueue_precheck(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
522
struct mlx5hws_context *ctx = rule->matcher->tbl->ctx;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
534
static int hws_rule_enqueue_precheck_move(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
537
if (unlikely(rule->status != MLX5HWS_RULE_STATUS_CREATED))
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
54
struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
540
return hws_rule_enqueue_precheck(rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
543
static int hws_rule_enqueue_precheck_create(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
546
if (unlikely(mlx5hws_matcher_is_in_resize(rule->matcher)))
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
550
return hws_rule_enqueue_precheck(rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
553
static int hws_rule_enqueue_precheck_update(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
556
struct mlx5hws_matcher *matcher = rule->matcher;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
558
if (unlikely(!mlx5hws_matcher_is_resizable(rule->matcher) &&
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
564
if (unlikely(rule->status != MLX5HWS_RULE_STATUS_CREATED))
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
567
return hws_rule_enqueue_precheck_create(rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
570
int mlx5hws_rule_move_hws_remove(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
574
bool is_jumbo = mlx5hws_matcher_mt_is_jumbo(rule->matcher->mt);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
576
struct mlx5hws_matcher *matcher = rule->matcher;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
58
struct mlx5hws_matcher *matcher = rule->matcher;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
582
rule->resize_info->state = MLX5HWS_RULE_RESIZE_STATE_DELETING;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
588
ste_attr.send_attr.rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
591
ste_attr.rtc_0 = rule->resize_info->rtc_0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
592
ste_attr.rtc_1 = rule->resize_info->rtc_1;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
593
ste_attr.used_id_rtc_0 = &rule->resize_info->rtc_0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
594
ste_attr.used_id_rtc_1 = &rule->resize_info->rtc_1;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
600
ste_attr.direct_index = rule->resize_info->rule_idx;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
602
hws_rule_load_delete_info(rule, &ste_attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
608
int mlx5hws_rule_move_hws_add(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
611
bool is_jumbo = mlx5hws_matcher_mt_is_jumbo(rule->matcher->mt);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
612
struct mlx5hws_context *ctx = rule->matcher->tbl->ctx;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
613
struct mlx5hws_matcher *matcher = rule->matcher;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
618
ret = hws_rule_enqueue_precheck_move(rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
62
dep_wqe->rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
628
hws_rule_move_init(rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
629
hws_rule_move_get_rtc(rule, &ste_attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
637
ste_attr.send_attr.rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
642
ste_attr.used_id_rtc_0 = &rule->rtc_0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
643
ste_attr.used_id_rtc_1 = &rule->rtc_1;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
644
ste_attr.wqe_ctrl = (struct mlx5hws_wqe_gta_ctrl_seg *)rule->resize_info->ctrl_seg;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
645
ste_attr.wqe_data = (struct mlx5hws_wqe_gta_data_seg_ste *)rule->resize_info->data_seg;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
813
int mlx5hws_rule_destroy(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
818
ret = hws_rule_enqueue_precheck(rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
822
ret = hws_rule_destroy_hws(rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
827
int mlx5hws_rule_action_update(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
834
ret = hws_rule_enqueue_precheck_update(rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
838
ret = hws_rule_create_hws(rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
93
static void hws_rule_move_get_rtc(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
96
struct mlx5hws_matcher *dst_matcher = rule->matcher->resize_dst;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.c
98
if (rule->resize_info->rtc_0) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.h
77
int mlx5hws_rule_move_hws_remove(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.h
80
int mlx5hws_rule_move_hws_add(struct mlx5hws_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.h
83
bool mlx5hws_rule_move_in_progress(struct mlx5hws_rule *rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/rule.h
85
void mlx5hws_rule_clear_resize_info(struct mlx5hws_rule *rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
1291
struct mlx5hws_rule *rule = send_attr->rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
1342
if (likely(rule))
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
1343
rule->status++;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
1350
if (likely(rule))
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
1351
rule->status = !rule->rtc_0 && !rule->rtc_1 ?
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
165
sq->wr_priv[idx].rule = attr->rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
169
if (attr->rule) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
170
sq->wr_priv[idx].rule->pending_wqes++;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
265
send_attr.rule = priv->rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
312
switch (priv->rule->resize_info->state) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
314
if (priv->rule->status == MLX5HWS_RULE_STATUS_FAILING) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
316
u32 orig_rtc_0 = priv->rule->resize_info->rtc_0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
317
u32 orig_rtc_1 = priv->rule->resize_info->rtc_1;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
320
priv->rule->resize_info->rtc_0 = priv->rule->rtc_0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
321
priv->rule->resize_info->rtc_1 = priv->rule->rtc_1;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
324
priv->rule->rtc_0 = orig_rtc_0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
325
priv->rule->rtc_1 = orig_rtc_1;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
328
mlx5hws_rule_move_hws_remove(priv->rule, queue, priv->user_data);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
332
if (priv->rule->status == MLX5HWS_RULE_STATUS_FAILING) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
336
priv->rule->matcher = priv->rule->matcher->resize_dst;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
338
priv->rule->resize_info->state = MLX5HWS_RULE_RESIZE_STATE_IDLE;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
339
priv->rule->status = MLX5HWS_RULE_STATUS_CREATED;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
352
struct mlx5hws_context *ctx = priv->rule->matcher->tbl->ctx;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
354
struct mlx5hws_rule *rule = priv->rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
365
if (mlx5hws_rule_move_in_progress(rule))
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
368
HWS_PTR_TO_ID(rule),
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
369
rule->resize_info->state ==
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
371
rule->resize_info->state ==
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
374
rule->pending_wqes);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
378
HWS_PTR_TO_ID(rule),
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
379
rule->status ==
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
381
rule->status ==
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
383
rule->status ==
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
385
rule->status ==
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
387
rule->status,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
388
rule->pending_wqes);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
391
HWS_PTR_TO_ID(rule),
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
392
HWS_PTR_TO_ID(rule->matcher),
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
393
(rule->matcher->flags & MLX5HWS_MATCHER_FLAGS_ISOLATED) ?
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
398
HWS_PTR_TO_ID(rule));
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
403
HWS_PTR_TO_ID(rule), opcode,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
412
HWS_PTR_TO_ID(rule),
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
416
HWS_PTR_TO_ID(rule),
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
420
HWS_PTR_TO_ID(rule),
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
424
HWS_PTR_TO_ID(rule),
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
430
HWS_PTR_TO_ID(rule), be32_to_cpu(cqe->byte_cnt));
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
433
HWS_PTR_TO_ID(rule),
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
438
HWS_PTR_TO_ID(rule),
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
445
HWS_PTR_TO_ID(rule), be32_to_cpu(cqe->sop_drop_qpn));
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
448
HWS_PTR_TO_ID(rule), wqe_opcode,
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
45
ste_attr.send_attr.rule = dep_wqe->rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
453
HWS_PTR_TO_ID(rule),
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
463
priv->rule->pending_wqes--;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
475
priv->rule->status = MLX5HWS_RULE_STATUS_FAILING;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
482
if (!priv->rule->pending_wqes) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
483
if (unlikely(mlx5hws_rule_move_in_progress(priv->rule))) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
488
if (unlikely(priv->rule->status == MLX5HWS_RULE_STATUS_FAILING)) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
490
if (!priv->rule->rtc_0 && !priv->rule->rtc_1)
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
491
priv->rule->status = MLX5HWS_RULE_STATUS_FAILED;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
501
priv->rule->status++;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
503
if (priv->rule->status == MLX5HWS_RULE_STATUS_DELETED) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
507
mlx5hws_rule_free_action_ste(&priv->rule->action_ste);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
508
mlx5hws_rule_clear_resize_info(priv->rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
509
} else if (priv->rule->status == MLX5HWS_RULE_STATUS_UPDATED) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
51
ste_attr.used_id_rtc_0 = &dep_wqe->rule->rtc_0;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
511
mlx5hws_rule_free_action_ste(&priv->rule->old_action_ste);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
513
priv->rule->status = MLX5HWS_RULE_STATUS_CREATED;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
52
ste_attr.used_id_rtc_1 = &dep_wqe->rule->rtc_1;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
537
if (priv->rule) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c
541
if (priv->rule->pending_wqes)
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.h
161
struct mlx5hws_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.h
84
struct mlx5hws_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.h
95
struct mlx5hws_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c
173
void mlx5dr_dbg_rule_add(struct mlx5dr_rule *rule)
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c
175
struct mlx5dr_domain *dmn = rule->matcher->tbl->dmn;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c
178
list_add_tail(&rule->dbg_node, &rule->matcher->dbg_rule_list);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c
182
void mlx5dr_dbg_rule_del(struct mlx5dr_rule *rule)
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c
184
struct mlx5dr_domain *dmn = rule->matcher->tbl->dmn;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c
187
list_del(&rule->dbg_node);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c
546
dr_dump_rule(struct seq_file *file, struct mlx5dr_rule *rule)
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c
549
const u64 rule_id = DR_DBG_PTR_TO_ID(rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c
551
struct mlx5dr_rule_rx_tx *rx = &rule->rx;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c
552
struct mlx5dr_rule_rx_tx *tx = &rule->tx;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c
556
format_ver = rule->matcher->tbl->dmn->info.caps.sw_format_ver;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c
560
rule_id, DR_DBG_PTR_TO_ID(rule->matcher));
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c
580
list_for_each_entry(action_mem, &rule->rule_actions_list, list) {
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c
789
struct mlx5dr_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c
796
list_for_each_entry(rule, &matcher->dbg_rule_list, dbg_node) {
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.c
797
ret = dr_dump_rule(file, rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.h
34
void mlx5dr_dbg_rule_add(struct mlx5dr_rule *rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_dbg.h
35
void mlx5dr_dbg_rule_del(struct mlx5dr_rule *rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1022
static int dr_rule_destroy_rule_nic(struct mlx5dr_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1032
dr_rule_clean_rule_members(rule, nic_rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1036
mlx5dr_matcher_remove_from_tbl_nic(rule->matcher->tbl->dmn,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1044
static int dr_rule_destroy_rule_fdb(struct mlx5dr_rule *rule)
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1046
dr_rule_destroy_rule_nic(rule, &rule->rx);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1047
dr_rule_destroy_rule_nic(rule, &rule->tx);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1051
static int dr_rule_destroy_rule(struct mlx5dr_rule *rule)
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1053
struct mlx5dr_domain *dmn = rule->matcher->tbl->dmn;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1055
mlx5dr_dbg_rule_del(rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1059
dr_rule_destroy_rule_nic(rule, &rule->rx);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1062
dr_rule_destroy_rule_nic(rule, &rule->tx);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1065
dr_rule_destroy_rule_fdb(rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1071
dr_rule_remove_action_members(rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1072
kfree(rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1113
dr_rule_create_rule_nic(struct mlx5dr_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1121
struct mlx5dr_matcher *matcher = rule->matcher;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1138
rule->flow_source))
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1189
ste = dr_rule_handle_ste_branch(rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1209
ret = dr_rule_handle_action_stes(rule, nic_rule, &send_ste_list,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1234
dr_rule_clean_rule_members(rule, nic_rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1256
dr_rule_create_rule_fdb(struct mlx5dr_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1269
ret = dr_rule_create_rule_nic(rule, &rule->rx, param,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1274
ret = dr_rule_create_rule_nic(rule, &rule->tx, &copy_param,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1282
dr_rule_destroy_rule_nic(rule, &rule->rx);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1295
struct mlx5dr_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1301
rule = kzalloc_obj(*rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1302
if (!rule)
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1305
rule->matcher = matcher;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1306
rule->flow_source = flow_source;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1307
INIT_LIST_HEAD(&rule->rule_actions_list);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1309
ret = dr_rule_add_action_members(rule, num_actions, actions);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1315
rule->rx.nic_matcher = &matcher->rx;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1316
ret = dr_rule_create_rule_nic(rule, &rule->rx, &param,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1320
rule->tx.nic_matcher = &matcher->tx;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1321
ret = dr_rule_create_rule_nic(rule, &rule->tx, &param,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1325
rule->rx.nic_matcher = &matcher->rx;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1326
rule->tx.nic_matcher = &matcher->tx;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1327
ret = dr_rule_create_rule_fdb(rule, &param,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1338
INIT_LIST_HEAD(&rule->dbg_node);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1339
mlx5dr_dbg_rule_add(rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1340
return rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1343
dr_rule_remove_action_members(rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1345
kfree(rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1356
struct mlx5dr_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1360
rule = dr_rule_create_rule(matcher, value, num_actions, actions, flow_source);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1361
if (!rule)
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1364
return rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1367
int mlx5dr_rule_destroy(struct mlx5dr_rule *rule)
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1369
struct mlx5dr_matcher *matcher = rule->matcher;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
1372
ret = dr_rule_destroy_rule(rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
394
dr_rule_rehash_htbl(struct mlx5dr_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
402
struct mlx5dr_matcher *matcher = rule->matcher;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
515
static struct mlx5dr_ste_htbl *dr_rule_rehash(struct mlx5dr_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
521
struct mlx5dr_domain *dmn = rule->matcher->tbl->dmn;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
530
return dr_rule_rehash_htbl(rule, nic_rule, cur_htbl, ste_location,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
576
static void dr_rule_remove_action_members(struct mlx5dr_rule *rule)
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
581
list_for_each_entry_safe(action_mem, tmp, &rule->rule_actions_list, list) {
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
588
static int dr_rule_add_action_members(struct mlx5dr_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
602
list_add_tail(&action_mem->list, &rule->rule_actions_list);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
609
dr_rule_remove_action_members(rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
661
static void dr_rule_clean_rule_members(struct mlx5dr_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
672
mlx5dr_ste_put(ste_arr[i], rule->matcher, nic_rule->nic_matcher);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
711
static int dr_rule_handle_action_stes(struct mlx5dr_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
721
struct mlx5dr_matcher *matcher = rule->matcher;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
832
dr_rule_handle_ste_branch(struct mlx5dr_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
840
struct mlx5dr_matcher *matcher = rule->matcher;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_rule.c
889
new_htbl = dr_rule_rehash(rule, nic_rule, cur_htbl,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/fs_dr.c
266
struct mlx5dr_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/fs_dr.c
597
rule = mlx5dr_rule_create(group->fs_dr_matcher.dr_matcher,
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/fs_dr.c
602
if (!rule) {
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/fs_dr.c
610
fte->fs_dr_rule.dr_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/fs_dr.c
736
struct mlx5_fs_dr_rule *rule = &fte->fs_dr_rule;
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/fs_dr.c
743
err = mlx5dr_rule_destroy(rule->dr_rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/fs_dr.c
748
for (i = rule->num_actions - 1; i >= 0; i--)
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/fs_dr.c
749
if (!IS_ERR_OR_NULL(rule->dr_actions[i]))
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/fs_dr.c
750
mlx5dr_action_destroy(rule->dr_actions[i]);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/fs_dr.c
752
kfree(rule->dr_actions);
drivers/net/ethernet/mellanox/mlx5/core/steering/sws/mlx5dr.h
78
int mlx5dr_rule_destroy(struct mlx5dr_rule *rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1063
struct mlxsw_sp_acl_rule *rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1065
struct mlxsw_sp_acl_rule *rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1067
struct mlxsw_sp_acl_rule *rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1069
struct mlxsw_sp_acl_rule *rule,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1076
mlxsw_sp_acl_rule_rulei(struct mlxsw_sp_acl_rule *rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
1078
struct mlxsw_sp_acl_rule *rule,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
193
mlxsw_sp2_mr_tcam_rule_parse(struct mlxsw_sp_acl_rule *rule,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
199
rulei = mlxsw_sp_acl_rule_rulei(rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
219
struct mlxsw_sp_acl_rule *rule;
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
227
rule = mlxsw_sp_acl_rule_create(mlxsw_sp, ruleset,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
230
if (IS_ERR(rule))
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
231
return PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
233
mlxsw_sp2_mr_tcam_rule_parse(rule, key, prio);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
234
err = mlxsw_sp_acl_rule_add(mlxsw_sp, rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
241
mlxsw_sp_acl_rule_destroy(mlxsw_sp, rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
252
struct mlxsw_sp_acl_rule *rule;
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
258
rule = mlxsw_sp_acl_rule_lookup(mlxsw_sp, ruleset,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
260
if (WARN_ON(!rule))
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
263
mlxsw_sp_acl_rule_del(mlxsw_sp, rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
264
mlxsw_sp_acl_rule_destroy(mlxsw_sp, rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
276
struct mlxsw_sp_acl_rule *rule;
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
282
rule = mlxsw_sp_acl_rule_lookup(mlxsw_sp, ruleset,
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
284
if (WARN_ON(!rule))
drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c
287
return mlxsw_sp_acl_rule_action_replace(mlxsw_sp, rule, afa_block);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1011
struct mlxsw_sp_acl_rule *rule,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1024
rulei = mlxsw_sp_acl_rule_rulei(rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1040
*packets = current_packets - rule->last_packets;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1041
*bytes = current_bytes - rule->last_bytes;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1042
*drops = current_drops - rule->last_drops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1043
*last_use = rule->last_used;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1045
rule->last_bytes = current_bytes;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1046
rule->last_packets = current_packets;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
1047
rule->last_drops = current_drops;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
821
struct mlxsw_sp_acl_rule *rule;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
825
rule = kzalloc(sizeof(*rule) + ops->rule_priv_size,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
827
if (!rule) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
831
rule->cookie = cookie;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
832
rule->ruleset = ruleset;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
834
rule->rulei = mlxsw_sp_acl_rulei_create(mlxsw_sp->acl, afa_block);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
835
if (IS_ERR(rule->rulei)) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
836
err = PTR_ERR(rule->rulei);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
840
return rule;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
843
kfree(rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
850
struct mlxsw_sp_acl_rule *rule)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
852
struct mlxsw_sp_acl_ruleset *ruleset = rule->ruleset;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
854
mlxsw_sp_acl_rulei_destroy(mlxsw_sp, rule->rulei);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
855
kfree(rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
860
struct mlxsw_sp_acl_rule *rule)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
862
struct mlxsw_sp_acl_ruleset *ruleset = rule->ruleset;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
867
err = ops->rule_add(mlxsw_sp, ruleset->priv, rule->priv, rule->rulei);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
871
err = rhashtable_insert_fast(&ruleset->rule_ht, &rule->ht_node,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
888
list_add_tail(&rule->list, &mlxsw_sp->acl->rules);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
891
block->ingress_blocker_rule_count += rule->rulei->ingress_bind_blocker;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
892
block->egress_blocker_rule_count += rule->rulei->egress_bind_blocker;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
896
rhashtable_remove_fast(&ruleset->rule_ht, &rule->ht_node,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
899
ops->rule_del(mlxsw_sp, rule->priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
904
struct mlxsw_sp_acl_rule *rule)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
906
struct mlxsw_sp_acl_ruleset *ruleset = rule->ruleset;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
910
block->egress_blocker_rule_count -= rule->rulei->egress_bind_blocker;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
911
block->ingress_blocker_rule_count -= rule->rulei->ingress_bind_blocker;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
914
list_del(&rule->list);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
919
rhashtable_remove_fast(&ruleset->rule_ht, &rule->ht_node,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
921
ops->rule_del(mlxsw_sp, rule->priv);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
925
struct mlxsw_sp_acl_rule *rule,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
928
struct mlxsw_sp_acl_ruleset *ruleset = rule->ruleset;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
932
rulei = mlxsw_sp_acl_rule_rulei(rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
935
return ops->rule_action_replace(mlxsw_sp, rule->priv, rule->rulei);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
948
mlxsw_sp_acl_rule_rulei(struct mlxsw_sp_acl_rule *rule)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
950
return rule->rulei;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
954
struct mlxsw_sp_acl_rule *rule)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
956
struct mlxsw_sp_acl_ruleset *ruleset = rule->ruleset;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
961
err = ops->rule_activity_get(mlxsw_sp, rule->priv, &active);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
965
rule->last_used = jiffies;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
971
struct mlxsw_sp_acl_rule *rule;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
975
list_for_each_entry(rule, &acl->rules, list) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
977
rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1752
struct mlxsw_sp_acl_tcam_flower_rule *rule = rule_priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1755
&rule->ventry, rulei);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1761
struct mlxsw_sp_acl_tcam_flower_rule *rule = rule_priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1763
mlxsw_sp_acl_tcam_ventry_del(mlxsw_sp, &rule->ventry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1778
struct mlxsw_sp_acl_tcam_flower_rule *rule = rule_priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1780
return mlxsw_sp_acl_tcam_ventry_activity_get(mlxsw_sp, &rule->ventry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1887
struct mlxsw_sp_acl_tcam_mr_rule *rule = rule_priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1890
&rule->ventry, rulei);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1896
struct mlxsw_sp_acl_tcam_mr_rule *rule = rule_priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1898
mlxsw_sp_acl_tcam_ventry_del(mlxsw_sp, &rule->ventry);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1906
struct mlxsw_sp_acl_tcam_mr_rule *rule = rule_priv;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
1908
return mlxsw_sp_acl_tcam_ventry_action_replace(mlxsw_sp, &rule->ventry,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
351
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
354
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_META))
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
357
flow_rule_match_meta(rule, &match);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
371
flow_rule_match_ipv4_addrs(f->rule, &match);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
386
flow_rule_match_ipv6_addrs(f->rule, &match);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
419
const struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
422
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS))
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
431
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
446
const struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
450
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS_RANGE))
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
458
flow_rule_match_ports_range(rule, &match);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
508
const struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
511
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_TCP))
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
520
flow_rule_match_tcp(rule, &match);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
539
const struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
542
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IP))
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
551
flow_rule_match_ip(rule, &match);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
572
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
573
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
603
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
606
flow_rule_match_control(rule, &match);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
614
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
617
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
636
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
639
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
658
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
661
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
708
&f->rule->action,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
746
struct mlxsw_sp_acl_rule *rule;
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
759
rule = mlxsw_sp_acl_rule_create(mlxsw_sp, ruleset, f->cookie, NULL,
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
761
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
762
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
766
rulei = mlxsw_sp_acl_rule_rulei(rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
775
err = mlxsw_sp_acl_rule_add(mlxsw_sp, rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
785
mlxsw_sp_acl_rule_destroy(mlxsw_sp, rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
796
struct mlxsw_sp_acl_rule *rule;
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
804
rule = mlxsw_sp_acl_rule_lookup(mlxsw_sp, ruleset, f->cookie);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
805
if (rule) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
806
mlxsw_sp_acl_rule_del(mlxsw_sp, rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
807
mlxsw_sp_acl_rule_destroy(mlxsw_sp, rule);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
819
struct mlxsw_sp_acl_rule *rule;
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
832
rule = mlxsw_sp_acl_rule_lookup(mlxsw_sp, ruleset, f->cookie);
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
833
if (!rule) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
838
err = mlxsw_sp_acl_rule_get_stats(mlxsw_sp, rule, &packets, &bytes,
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
213
if (!flow_offload_has_one_action(&f->rule->action)) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_matchall.c
266
act = &f->rule->action.entries[0];
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
2004
if (f->rule->action.num_entries != 1) {
drivers/net/ethernet/mellanox/mlxsw/spectrum_qdisc.c
2017
act = &f->rule->action.entries[0];
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8064
struct fib_rule *rule;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8072
rule = fr_info->rule;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8075
if (rule->iifindex == mlxsw_sp_net(mlxsw_sp)->loopback_dev->ifindex)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8080
if (!fib4_rule_default(rule) && !rule->l3mdev)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8084
if (!fib6_rule_default(rule) && !rule->l3mdev)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8088
if (!ipmr_rule_default(rule) && !rule->l3mdev)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8092
if (!ip6mr_rule_default(rule) && !rule->l3mdev)
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
264
struct flow_rule *rule = flow_cls_offload_flow_rule(fco);
drivers/net/ethernet/microchip/lan966x/lan966x_tc_flower.c
266
struct flow_action *act = &rule->action;
drivers/net/ethernet/microchip/lan966x/lan966x_tc_matchall.c
11
if (!flow_offload_has_one_action(&f->rule->action)) {
drivers/net/ethernet/microchip/lan966x/lan966x_tc_matchall.c
17
act = &f->rule->action.entries[0];
drivers/net/ethernet/microchip/lan966x/lan966x_tc_matchall.c
20
return lan966x_police_port_add(port, &f->rule->action, act,
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
270
struct vcap_rule *rule,
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
287
lookup = lan966x_vcap_is1_cid_to_lookup(rule->vcap_chain_id);
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
292
lookup = lan966x_vcap_is2_cid_to_lookup(rule->vcap_chain_id);
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
316
static bool lan966x_vcap_is2_is_first_chain(struct vcap_rule *rule)
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
318
return (rule->vcap_chain_id >= LAN966X_VCAP_CID_IS2_L0 &&
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
319
rule->vcap_chain_id < LAN966X_VCAP_CID_IS2_L1);
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
324
struct vcap_rule *rule)
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
329
if (vcap_rule_get_key_u32(rule, VCAP_KF_IF_IGR_PORT_MASK,
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
331
vcap_rule_add_key_u32(rule, VCAP_KF_IF_IGR_PORT_MASK, 0,
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
334
lookup = lan966x_vcap_is1_cid_to_lookup(rule->vcap_chain_id);
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
335
vcap_rule_add_key_u32(rule, VCAP_KF_LOOKUP_INDEX, lookup, 0x3);
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
340
struct vcap_rule *rule)
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
344
if (vcap_rule_get_key_u32(rule, VCAP_KF_IF_IGR_PORT_MASK,
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
346
vcap_rule_add_key_u32(rule, VCAP_KF_IF_IGR_PORT_MASK, 0,
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
349
if (lan966x_vcap_is2_is_first_chain(rule))
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
350
vcap_rule_add_key_bit(rule, VCAP_KF_LOOKUP_FIRST_IS,
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
353
vcap_rule_add_key_bit(rule, VCAP_KF_LOOKUP_FIRST_IS,
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
359
struct vcap_rule *rule)
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
361
vcap_rule_add_key_u32(rule, VCAP_KF_IF_EGR_PORT_NO,
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
367
struct vcap_rule *rule)
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
373
lan966x_vcap_is1_add_default_fields(port, admin, rule);
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
376
lan966x_vcap_is2_add_default_fields(port, admin, rule);
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c
379
lan966x_vcap_es0_add_default_fields(port, admin, rule);
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
28
struct sparx5_wildcard_rule rule[SPX5_MAX_RULE_SIZE];
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
288
struct flow_rule *rule = flow_cls_offload_flow_rule(fco);
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
290
struct flow_action *act = &rule->action;
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
443
mru = &multi->rule[kinfo->sw_per_item];
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
461
mru = &multi->rule[idx];
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
473
mru = &multi->rule[idx];
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
493
struct sparx5_wildcard_rule *rule)
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
514
err = vcap_set_rule_set_keyset(vrule, rule->keyset);
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
518
vcap_keyset_name(vctrl, rule->keyset),
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
524
vcap_rule_mod_key_u32(vrule, VCAP_KF_TYPE, rule->value, ~rule->mask);
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
561
if (!multi->rule[idx].selected)
drivers/net/ethernet/microchip/sparx5/sparx5_tc_flower.c
565
&multi->rule[idx]);
drivers/net/ethernet/microchip/sparx5/sparx5_tc_matchall.c
56
if (!flow_offload_has_one_action(&tmo->rule->action)) {
drivers/net/ethernet/microchip/sparx5/sparx5_tc_matchall.c
61
action = &tmo->rule->action.entries[0];
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
266
static bool sparx5_vcap_is0_is_first_chain(struct vcap_rule *rule)
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
268
return (rule->vcap_chain_id >= SPARX5_VCAP_CID_IS0_L0 &&
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
269
rule->vcap_chain_id < SPARX5_VCAP_CID_IS0_L1) ||
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
270
((rule->vcap_chain_id >= SPARX5_VCAP_CID_IS0_L2 &&
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
271
rule->vcap_chain_id < SPARX5_VCAP_CID_IS0_L3)) ||
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
272
((rule->vcap_chain_id >= SPARX5_VCAP_CID_IS0_L4 &&
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
273
rule->vcap_chain_id < SPARX5_VCAP_CID_IS0_L5));
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
277
static bool sparx5_vcap_is2_is_first_chain(struct vcap_rule *rule)
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
279
return (rule->vcap_chain_id >= SPARX5_VCAP_CID_IS2_L0 &&
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
280
rule->vcap_chain_id < SPARX5_VCAP_CID_IS2_L1) ||
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
281
((rule->vcap_chain_id >= SPARX5_VCAP_CID_IS2_L2 &&
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
282
rule->vcap_chain_id < SPARX5_VCAP_CID_IS2_L3));
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
285
static bool sparx5_vcap_es2_is_first_chain(struct vcap_rule *rule)
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
287
return (rule->vcap_chain_id >= SPARX5_VCAP_CID_ES2_L0 &&
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
288
rule->vcap_chain_id < SPARX5_VCAP_CID_ES2_L1);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
292
static void sparx5_vcap_add_ingress_range_port_mask(struct vcap_rule *rule,
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
302
vcap_rule_add_key_u32(rule, VCAP_KF_IF_IGR_PORT_MASK_SEL, 0, 0xf);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
303
vcap_rule_add_key_u32(rule, VCAP_KF_IF_IGR_PORT_MASK_RNG, range, 0xf);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
304
vcap_rule_add_key_u32(rule, VCAP_KF_IF_IGR_PORT_MASK, 0, port_mask);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
308
static void sparx5_vcap_add_wide_port_mask(struct vcap_rule *rule,
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
320
vcap_rule_add_key_u72(rule, VCAP_KF_IF_IGR_PORT_MASK, &port_mask);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
323
static void sparx5_vcap_add_egress_range_port_mask(struct vcap_rule *rule,
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
340
vcap_rule_add_key_u32(rule, VCAP_KF_IF_EGR_PORT_MASK_RNG, range, 0xf);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
341
vcap_rule_add_key_u32(rule, VCAP_KF_IF_EGR_PORT_MASK, 0, port_mask);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
746
struct vcap_rule *rule,
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
764
lookup = sparx5_vcap_is0_cid_to_lookup(rule->vcap_chain_id);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
769
lookup = sparx5_vcap_is2_cid_to_lookup(rule->vcap_chain_id);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
777
lookup = sparx5_vcap_es2_cid_to_lookup(rule->vcap_chain_id);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
802
struct vcap_rule *rule)
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
808
field = vcap_lookup_keyfield(rule, VCAP_KF_IF_IGR_PORT_MASK);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
810
sparx5_vcap_add_wide_port_mask(rule, ndev);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
812
sparx5_vcap_add_ingress_range_port_mask(rule, ndev);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
816
sparx5_vcap_keyset_name(ndev, rule->keyset));
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
819
is_first = sparx5_vcap_is0_is_first_chain(rule);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
821
is_first = sparx5_vcap_is2_is_first_chain(rule);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
825
vcap_rule_add_key_bit(rule, VCAP_KF_LOOKUP_FIRST_IS,
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
828
vcap_rule_add_key_bit(rule, VCAP_KF_LOOKUP_FIRST_IS,
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
834
struct vcap_rule *rule)
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
838
vcap_rule_add_key_u32(rule, VCAP_KF_IF_EGR_PORT_NO, port->portno, ~0);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
840
vcap_rule_add_key_u32(rule, VCAP_KF_8021Q_TPID, SPX5_TPID_SEL_UNTAGGED,
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
846
struct vcap_rule *rule)
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
852
field = vcap_lookup_keyfield(rule, VCAP_KF_IF_EGR_PORT_MASK);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
854
sparx5_vcap_add_egress_range_port_mask(rule, ndev);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
857
is_first = sparx5_vcap_es2_is_first_chain(rule);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
860
vcap_rule_add_key_bit(rule, VCAP_KF_LOOKUP_FIRST_IS,
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
863
vcap_rule_add_key_bit(rule, VCAP_KF_LOOKUP_FIRST_IS,
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
870
struct vcap_rule *rule)
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
878
sparx5_vcap_ingress_add_default_fields(ndev, admin, rule);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
881
sparx5_vcap_es0_add_default_fields(ndev, admin, rule);
drivers/net/ethernet/microchip/sparx5/sparx5_vcap_impl.c
884
sparx5_vcap_es2_add_default_fields(ndev, admin, rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
1711
static int vcap_add_type_keyfield(struct vcap_rule *rule)
drivers/net/ethernet/microchip/vcap/vcap_api.c
1713
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
1714
enum vcap_keyfield_set keyset = rule->keyset;
drivers/net/ethernet/microchip/vcap/vcap_api.c
1730
ret = vcap_rule_add_key_u32(rule, VCAP_KF_TYPE,
drivers/net/ethernet/microchip/vcap/vcap_api.c
1734
ret = vcap_rule_add_key_bit(rule, VCAP_KF_TYPE,
drivers/net/ethernet/microchip/vcap/vcap_api.c
1737
ret = vcap_rule_add_key_bit(rule, VCAP_KF_TYPE,
drivers/net/ethernet/microchip/vcap/vcap_api.c
1744
static int vcap_add_type_actionfield(struct vcap_rule *rule)
drivers/net/ethernet/microchip/vcap/vcap_api.c
1746
enum vcap_actionfield_set actionset = rule->actionset;
drivers/net/ethernet/microchip/vcap/vcap_api.c
1747
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
1763
ret = vcap_rule_add_action_u32(rule, VCAP_AF_TYPE,
drivers/net/ethernet/microchip/vcap/vcap_api.c
1767
ret = vcap_rule_add_action_bit(rule, VCAP_AF_TYPE,
drivers/net/ethernet/microchip/vcap/vcap_api.c
1770
ret = vcap_rule_add_action_bit(rule, VCAP_AF_TYPE,
drivers/net/ethernet/microchip/vcap/vcap_api.c
1908
bool vcap_rule_find_keysets(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
1911
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
1987
int vcap_val_rule(struct vcap_rule *rule, u16 l3_proto)
drivers/net/ethernet/microchip/vcap/vcap_api.c
1989
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2021
ret = ri->vctrl->ops->validate_keyset(ri->ndev, ri->admin, rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2030
ret = vcap_set_rule_set_keyset(rule, ret);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2048
ret = vcap_set_rule_set_actionset(rule, actionsets[0]);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2055
vcap_add_type_keyfield(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2056
vcap_add_type_actionfield(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2058
ri->vctrl->ops->add_default_fields(ri->ndev, ri->admin, rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2258
int vcap_add_rule(struct vcap_rule *rule)
drivers/net/ethernet/microchip/vcap/vcap_api.c
2260
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2385
void vcap_free_rule(struct vcap_rule *rule)
drivers/net/ethernet/microchip/vcap/vcap_api.c
2387
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2401
kfree(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2437
struct vcap_rule *rule;
drivers/net/ethernet/microchip/vcap/vcap_api.c
2448
rule = vcap_decode_rule(elem);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2450
return rule;
drivers/net/ethernet/microchip/vcap/vcap_api.c
2455
int vcap_mod_rule(struct vcap_rule *rule)
drivers/net/ethernet/microchip/vcap/vcap_api.c
2457
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2609
vcap_find_keyfield(struct vcap_rule *rule, enum vcap_key_field key)
drivers/net/ethernet/microchip/vcap/vcap_api.c
2611
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2621
const struct vcap_field *vcap_lookup_keyfield(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2624
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2625
enum vcap_keyfield_set keyset = rule->keyset;
drivers/net/ethernet/microchip/vcap/vcap_api.c
2639
static bool vcap_keyfield_unique(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2642
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2652
static bool vcap_keyfield_match_keyset(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2655
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2656
enum vcap_keyfield_set keyset = rule->keyset;
drivers/net/ethernet/microchip/vcap/vcap_api.c
2670
static int vcap_rule_add_key(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2675
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2678
if (!vcap_keyfield_unique(rule, key)) {
drivers/net/ethernet/microchip/vcap/vcap_api.c
2685
if (!vcap_keyfield_match_keyset(rule, key)) {
drivers/net/ethernet/microchip/vcap/vcap_api.c
2698
list_add_tail(&field->ctrl.list, &rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2721
int vcap_rule_add_key_bit(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2727
return vcap_rule_add_key(rule, key, VCAP_FIELD_BIT, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2732
int vcap_rule_add_key_u32(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2739
return vcap_rule_add_key(rule, key, VCAP_FIELD_U32, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2744
int vcap_rule_add_key_u48(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2750
return vcap_rule_add_key(rule, key, VCAP_FIELD_U48, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2755
int vcap_rule_add_key_u72(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2761
return vcap_rule_add_key(rule, key, VCAP_FIELD_U72, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2766
int vcap_rule_add_key_u128(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2772
return vcap_rule_add_key(rule, key, VCAP_FIELD_U128, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2776
int vcap_rule_get_key_u32(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2781
ckf = vcap_find_keyfield(rule, key);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2794
vcap_find_actionfield(struct vcap_rule *rule, enum vcap_action_field act)
drivers/net/ethernet/microchip/vcap/vcap_api.c
2796
struct vcap_rule_internal *ri = (struct vcap_rule_internal *)rule;
drivers/net/ethernet/microchip/vcap/vcap_api.c
2807
static bool vcap_actionfield_unique(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2810
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2820
static bool vcap_actionfield_match_actionset(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2823
enum vcap_actionfield_set actionset = rule->actionset;
drivers/net/ethernet/microchip/vcap/vcap_api.c
2824
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2838
static int vcap_rule_add_action(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2843
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2846
if (!vcap_actionfield_unique(rule, action)) {
drivers/net/ethernet/microchip/vcap/vcap_api.c
2853
if (!vcap_actionfield_match_actionset(rule, action)) {
drivers/net/ethernet/microchip/vcap/vcap_api.c
2866
list_add_tail(&field->ctrl.list, &rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2887
int vcap_rule_add_action_bit(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2894
return vcap_rule_add_action(rule, action, VCAP_FIELD_BIT, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2899
int vcap_rule_add_action_u32(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2906
return vcap_rule_add_action(rule, action, VCAP_FIELD_U32, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2911
int vcap_rule_add_action_u72(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2918
return vcap_rule_add_action(rule, action, VCAP_FIELD_U72, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3252
void vcap_rule_set_counter_id(struct vcap_rule *rule, u32 counter_id)
drivers/net/ethernet/microchip/vcap/vcap_api.c
3254
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3260
int vcap_rule_set_counter(struct vcap_rule *rule, struct vcap_counter *ctr)
drivers/net/ethernet/microchip/vcap/vcap_api.c
3262
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3281
int vcap_rule_get_counter(struct vcap_rule *rule, struct vcap_counter *ctr)
drivers/net/ethernet/microchip/vcap/vcap_api.c
3283
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3303
static int vcap_rule_get_key(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3309
field = vcap_find_keyfield(rule, key);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3425
static int vcap_rule_mod_key(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3432
field = vcap_find_keyfield(rule, key);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3434
return vcap_rule_add_key(rule, key, ftype, data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3440
int vcap_rule_mod_key_u32(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3447
return vcap_rule_mod_key(rule, key, VCAP_FIELD_U32, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3452
int vcap_rule_rem_key(struct vcap_rule *rule, enum vcap_key_field key)
drivers/net/ethernet/microchip/vcap/vcap_api.c
3454
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3457
field = vcap_find_keyfield(rule, key);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3470
static int vcap_rule_mod_action(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3477
field = vcap_find_actionfield(rule, action);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3479
return vcap_rule_add_action(rule, action, ftype, data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3485
int vcap_rule_mod_action_u32(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3492
return vcap_rule_mod_action(rule, action, VCAP_FIELD_U32, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3497
int vcap_filter_rule_keys(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3501
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3525
rule->keyset);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3571
struct vcap_rule *rule;
drivers/net/ethernet/microchip/vcap/vcap_api.c
3578
rule = vcap_alloc_rule(ri->vctrl, ri->ndev, ri->data.vcap_chain_id,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3580
if (IS_ERR(rule))
drivers/net/ethernet/microchip/vcap/vcap_api.c
3581
return rule;
drivers/net/ethernet/microchip/vcap/vcap_api.c
3585
err = vcap_rule_add_key(rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3595
err = vcap_rule_add_action(rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3602
return rule;
drivers/net/ethernet/microchip/vcap/vcap_api.c
3604
vcap_free_rule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
532
vcap_copy_from_client_keyfield(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
536
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
587
vcap_copy_from_client_actionfield(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
591
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
884
int vcap_set_rule_set_keyset(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
887
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
904
int vcap_set_rule_set_actionset(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
907
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.h
225
struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.h
232
struct vcap_rule *rule);
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
165
void vcap_free_rule(struct vcap_rule *rule);
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
167
int vcap_val_rule(struct vcap_rule *rule, u16 l3_proto);
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
169
int vcap_add_rule(struct vcap_rule *rule);
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
173
struct vcap_rule *vcap_copy_rule(struct vcap_rule *rule);
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
177
int vcap_mod_rule(struct vcap_rule *rule);
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
180
int vcap_set_rule_set_keyset(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
183
int vcap_set_rule_set_actionset(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
186
void vcap_rule_set_counter_id(struct vcap_rule *rule, u32 counter_id);
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
189
int vcap_rule_add_key_bit(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
191
int vcap_rule_add_key_u32(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
193
int vcap_rule_add_key_u48(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
195
int vcap_rule_add_key_u72(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
197
int vcap_rule_add_key_u128(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
199
int vcap_rule_add_action_bit(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
201
int vcap_rule_add_action_u32(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
203
int vcap_rule_add_action_u72(struct vcap_rule *rule, enum vcap_action_field action,
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
212
int vcap_rule_set_counter(struct vcap_rule *rule, struct vcap_counter *ctr);
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
213
int vcap_rule_get_counter(struct vcap_rule *rule, struct vcap_counter *ctr);
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
221
const struct vcap_field *vcap_lookup_keyfield(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
232
bool vcap_rule_find_keysets(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
251
int vcap_filter_rule_keys(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
263
int vcap_rule_mod_key_u32(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
266
int vcap_rule_mod_action_u32(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
271
int vcap_rule_get_key_u32(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
275
int vcap_rule_rem_key(struct vcap_rule *rule, enum vcap_key_field key);
drivers/net/ethernet/microchip/vcap/vcap_api_client.h
283
vcap_find_actionfield(struct vcap_rule *rule, enum vcap_action_field act);
drivers/net/ethernet/microchip/vcap/vcap_api_debugfs_kunit.c
37
struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api_debugfs_kunit.c
82
struct vcap_rule *rule)
drivers/net/ethernet/microchip/vcap/vcap_api_debugfs_kunit.c
85
vcap_rule_add_key_bit(rule, VCAP_KF_LOOKUP_FIRST_IS,
drivers/net/ethernet/microchip/vcap/vcap_api_debugfs_kunit.c
88
vcap_rule_add_key_bit(rule, VCAP_KF_LOOKUP_FIRST_IS,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1000
static void vcap_free_ckf(struct vcap_rule *rule)
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1004
list_for_each_entry_safe(ckf, next_ckf, &rule->keyfields, ctrl.list) {
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1022
struct vcap_rule *rule = (struct vcap_rule *)&ri;
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1031
INIT_LIST_HEAD(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1032
ret = vcap_rule_add_key_bit(rule, VCAP_KF_LOOKUP_FIRST_IS, VCAP_BIT_0);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1034
ret = list_empty(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1036
kf = list_first_entry(&rule->keyfields, struct vcap_client_keyfield,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1042
vcap_free_ckf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1044
INIT_LIST_HEAD(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1045
ret = vcap_rule_add_key_bit(rule, VCAP_KF_LOOKUP_FIRST_IS, VCAP_BIT_1);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1047
ret = list_empty(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1049
kf = list_first_entry(&rule->keyfields, struct vcap_client_keyfield,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1055
vcap_free_ckf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1057
INIT_LIST_HEAD(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1058
ret = vcap_rule_add_key_bit(rule, VCAP_KF_LOOKUP_FIRST_IS,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1061
ret = list_empty(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1063
kf = list_first_entry(&rule->keyfields, struct vcap_client_keyfield,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1069
vcap_free_ckf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1071
INIT_LIST_HEAD(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1072
ret = vcap_rule_add_key_u32(rule, VCAP_KF_TYPE, 0x98765432, 0xff00ffab);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1074
ret = list_empty(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1076
kf = list_first_entry(&rule->keyfields, struct vcap_client_keyfield,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1082
vcap_free_ckf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1084
INIT_LIST_HEAD(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1085
ret = vcap_rule_add_key_u128(rule, VCAP_KF_L3_IP6_SIP, &dip);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1087
ret = list_empty(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1089
kf = list_first_entry(&rule->keyfields, struct vcap_client_keyfield,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1097
vcap_free_ckf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1100
static void vcap_free_caf(struct vcap_rule *rule)
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1105
&rule->actionfields, ctrl.list) {
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1122
struct vcap_rule *rule = (struct vcap_rule *)&ri;
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1126
INIT_LIST_HEAD(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1127
ret = vcap_rule_add_action_bit(rule, VCAP_AF_POLICE_ENA, VCAP_BIT_0);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1129
ret = list_empty(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1131
af = list_first_entry(&rule->actionfields,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1136
vcap_free_caf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1138
INIT_LIST_HEAD(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1139
ret = vcap_rule_add_action_bit(rule, VCAP_AF_POLICE_ENA, VCAP_BIT_1);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1141
ret = list_empty(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1143
af = list_first_entry(&rule->actionfields,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1148
vcap_free_caf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1150
INIT_LIST_HEAD(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1151
ret = vcap_rule_add_action_bit(rule, VCAP_AF_POLICE_ENA, VCAP_BIT_ANY);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1153
ret = list_empty(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1155
af = list_first_entry(&rule->actionfields,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1160
vcap_free_caf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1162
INIT_LIST_HEAD(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1163
ret = vcap_rule_add_action_u32(rule, VCAP_AF_TYPE, 0x98765432);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1165
ret = list_empty(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1167
af = list_first_entry(&rule->actionfields,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1172
vcap_free_caf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1174
INIT_LIST_HEAD(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1175
ret = vcap_rule_add_action_u32(rule, VCAP_AF_MASK_MODE, 0xaabbccdd);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1177
ret = list_empty(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1179
af = list_first_entry(&rule->actionfields,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1184
vcap_free_caf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1354
struct vcap_rule *rule;
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1380
rule = vcap_alloc_rule(&test_vctrl, &test_netdev, vcap_chain_id, user,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1382
KUNIT_EXPECT_PTR_NE(test, NULL, rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1383
ri = (struct vcap_rule_internal *)rule;
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1386
ret = vcap_rule_add_key_u48(rule, VCAP_KF_L2_DMAC, &dmac);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1388
ret = vcap_rule_add_key_u48(rule, VCAP_KF_L2_SMAC, &smac);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1390
ret = vcap_rule_add_key_bit(rule, VCAP_KF_ETYPE_LEN_IS, VCAP_BIT_1);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1393
ret = vcap_rule_add_key_bit(rule, VCAP_KF_ETYPE_LEN_IS, VCAP_BIT_1);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1395
ret = vcap_rule_add_key_bit(rule, VCAP_KF_IF_IGR_PORT_MASK_L3,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1398
ret = vcap_rule_add_key_u32(rule, VCAP_KF_IF_IGR_PORT_MASK_RNG,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1401
ret = vcap_rule_add_key_u32(rule, VCAP_KF_IF_IGR_PORT_MASK,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1406
ret = vcap_rule_add_action_bit(rule, VCAP_AF_POLICE_ENA, VCAP_BIT_1);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1408
ret = vcap_rule_add_action_u32(rule, VCAP_AF_CNT_ID, id);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1410
ret = vcap_rule_add_action_u32(rule, VCAP_AF_MATCH_ID, 1);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1412
ret = vcap_rule_add_action_u32(rule, VCAP_AF_MATCH_ID_MASK, 1);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1416
ret = vcap_set_rule_set_actionset(rule, VCAP_AFS_BASE_TYPE);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1420
ret = vcap_val_rule(rule, ETH_P_ALL);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1422
KUNIT_EXPECT_EQ(test, VCAP_KFS_MAC_ETYPE, rule->keyset);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1423
KUNIT_EXPECT_EQ(test, VCAP_AFS_BASE_TYPE, rule->actionset);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1430
rule->vcap_chain_id, rule->cookie, true);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1434
ret = vcap_add_rule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1446
rule->cookie, false);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1451
vcap_free_rule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
250
struct vcap_rule *rule;
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
288
rule = vcap_alloc_rule(&test_vctrl, &test_netdev, cid, user, priority,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
290
KUNIT_EXPECT_PTR_NE(test, NULL, rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
292
ri = (struct vcap_rule_internal *)rule;
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
295
ret = vcap_set_rule_set_keyset(rule, keyset);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
298
ret = vcap_rule_add_action_u32(rule, VCAP_AF_ISDX_VAL, 0);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
301
ret = vcap_set_rule_set_actionset(rule, actionset);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
303
ret = vcap_val_rule(rule, ETH_P_ALL);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
305
KUNIT_EXPECT_EQ(test, keyset, rule->keyset);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
306
KUNIT_EXPECT_EQ(test, actionset, rule->actionset);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
310
ret = vcap_add_rule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
313
vcap_free_rule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
33
struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
592
struct vcap_rule_internal rule = {
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
618
vcap_encode_keyfield(&rule, &ckf, &rf, tgt);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
653
struct vcap_rule_internal rule = {
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
696
vcap_encode_keyfield(&rule, &ckf, &rf, tgt);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
716
struct vcap_rule_internal rule = {
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
741
vcap_encode_actionfield(&rule, &caf, &rf, tgt);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
75
struct vcap_rule *rule)
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
78
vcap_rule_add_key_bit(rule, VCAP_KF_LOOKUP_FIRST_IS, VCAP_BIT_1);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
80
vcap_rule_add_key_bit(rule, VCAP_KF_LOOKUP_FIRST_IS, VCAP_BIT_0);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
837
struct vcap_rule_internal rule = {
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
899
INIT_LIST_HEAD(&rule.data.keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
900
ret = vcap_encode_rule_keyset(&rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
904
list_add_tail(&ckf[idx].ctrl.list, &rule.data.keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
905
ret = vcap_encode_rule_keyset(&rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
947
struct vcap_rule_internal rule = {
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
975
INIT_LIST_HEAD(&rule.data.actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
976
ret = vcap_encode_rule_actionset(&rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
981
list_add_tail(&caf[idx].ctrl.list, &rule.data.actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
982
ret = vcap_encode_rule_actionset(&rule);
drivers/net/ethernet/microchip/vcap/vcap_api_private.h
14
#define to_intrule(rule) container_of((rule), struct vcap_rule_internal, data)
drivers/net/ethernet/mscc/ocelot_flower.c
261
const struct flow_action *action = &f->rule->action;
drivers/net/ethernet/mscc/ocelot_flower.c
271
if (!flow_action_basic_hw_stats_check(&f->rule->action,
drivers/net/ethernet/mscc/ocelot_flower.c
554
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mscc/ocelot_flower.c
562
flow_rule_match_meta(rule, &match);
drivers/net/ethernet/mscc/ocelot_flower.c
606
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mscc/ocelot_flower.c
607
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/mscc/ocelot_flower.c
625
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_META)) {
drivers/net/ethernet/mscc/ocelot_flower.c
628
flow_rule_match_meta(rule, &match);
drivers/net/ethernet/mscc/ocelot_flower.c
642
if (flow_rule_match_has_control_flags(rule, extack))
drivers/net/ethernet/mscc/ocelot_flower.c
645
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/mscc/ocelot_flower.c
648
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/mscc/ocelot_flower.c
657
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/mscc/ocelot_flower.c
679
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/mscc/ocelot_flower.c
700
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/mscc/ocelot_flower.c
703
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/mscc/ocelot_flower.c
734
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV4_ADDRS) &&
drivers/net/ethernet/mscc/ocelot_flower.c
745
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/mscc/ocelot_flower.c
767
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV6_ADDRS) &&
drivers/net/ethernet/mscc/ocelot_flower.c
772
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/mscc/ocelot_flower.c
781
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/mscc/ocelot_net.c
224
struct flow_action_entry *action = &f->rule->action.entries[0];
drivers/net/ethernet/mscc/ocelot_net.c
241
err = ocelot_policer_validate(&f->rule->action, action, extack);
drivers/net/ethernet/mscc/ocelot_net.c
265
struct flow_action *action = &f->rule->action;
drivers/net/ethernet/mscc/ocelot_net.c
350
if (!flow_offload_has_one_action(&f->rule->action)) {
drivers/net/ethernet/mscc/ocelot_net.c
362
action = &f->rule->action.entries[0];
drivers/net/ethernet/mscc/ocelot_net.c
381
action = &f->rule->action.entries[0];
drivers/net/ethernet/mscc/ocelot_vcap.h
16
struct ocelot_vcap_filter *rule);
drivers/net/ethernet/netronome/nfp/flower/action.c
1042
struct flow_rule *rule,
drivers/net/ethernet/netronome/nfp/flower/action.c
1111
*tun_type = nfp_fl_get_tun_from_act(app, rule, act, act_idx);
drivers/net/ethernet/netronome/nfp/flower/action.c
1273
struct flow_rule *rule,
drivers/net/ethernet/netronome/nfp/flower/action.c
1285
if (!flow_action_hw_stats_check(&rule->action, extack,
drivers/net/ethernet/netronome/nfp/flower/action.c
1297
flow_action_for_each(i, act, &rule->action) {
drivers/net/ethernet/netronome/nfp/flower/action.c
1298
if (nfp_fl_check_mangle_start(&rule->action, i))
drivers/net/ethernet/netronome/nfp/flower/action.c
1300
err = nfp_flower_loop_action(app, act, rule, nfp_flow, &act_len,
drivers/net/ethernet/netronome/nfp/flower/action.c
1307
if (nfp_fl_check_mangle_end(&rule->action, i))
drivers/net/ethernet/netronome/nfp/flower/action.c
1308
nfp_fl_commit_mangle(rule,
drivers/net/ethernet/netronome/nfp/flower/action.c
266
nfp_flower_tun_is_gre(struct flow_rule *rule, int start_idx)
drivers/net/ethernet/netronome/nfp/flower/action.c
268
struct flow_action_entry *act = rule->action.entries;
drivers/net/ethernet/netronome/nfp/flower/action.c
269
int num_act = rule->action.num_entries;
drivers/net/ethernet/netronome/nfp/flower/action.c
284
struct flow_rule *rule,
drivers/net/ethernet/netronome/nfp/flower/action.c
293
if (nfp_flower_tun_is_gre(rule, act_idx))
drivers/net/ethernet/netronome/nfp/flower/action.c
809
nfp_fl_commit_mangle(struct flow_rule *rule, char *nfp_action,
drivers/net/ethernet/netronome/nfp/flower/action.c
816
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/netronome/nfp/flower/action.c
819
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
103
flow_action_for_each(i, act, &flow->rule->action) {
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
135
static void *get_mangled_key(struct flow_rule *rule, void *buf,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1401
static struct net_device *get_netdev_from_rule(struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1403
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_META)) {
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1406
flow_rule_match_meta(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
144
flow_action_for_each(i, act, &rule->action) {
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1494
entry->rule = flow_rule_alloc(flow->rule->action.num_entries);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1495
if (!entry->rule) {
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1509
memcpy(&nft_match->dissector, flow->rule->match.dissector,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1511
memcpy(&nft_match->mask, flow->rule->match.mask,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1513
memcpy(&nft_match->key, flow->rule->match.key,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1515
entry->rule->match.dissector = &nft_match->dissector;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1516
entry->rule->match.mask = &nft_match->mask;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1517
entry->rule->match.key = &nft_match->key;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1520
netdev = get_netdev_from_rule(entry->rule);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1522
entry->rule->match.dissector = flow->rule->match.dissector;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1523
entry->rule->match.mask = flow->rule->match.mask;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1524
entry->rule->match.key = flow->rule->match.key;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1538
entry->rule->action.num_entries = flow->rule->action.num_entries;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1539
flow_action_for_each(i, act, &flow->rule->action) {
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1542
new_act = &entry->rule->action.entries[i];
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1598
kfree(entry->rule->action.entries[entry->tun_offset].tunnel);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1602
kfree(entry->rule);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
172
static void *get_mangled_tos_ttl(struct flow_rule *rule, void *buf,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1721
kfree(entry->rule->action.entries[entry->tun_offset].tunnel);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1726
nft_match = container_of(entry->rule->match.dissector,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1731
kfree(entry->rule);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1735
static struct flow_action_entry *get_flow_act_ct(struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1743
flow_action_for_each(i, act, &rule->action) {
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1751
static struct flow_action_entry *get_flow_act(struct flow_rule *rule,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1757
flow_action_for_each(i, act, &rule->action) {
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
180
flow_rule_match_ip(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1816
ct_act = get_flow_act_ct(flow->rule);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1823
ct_goto = get_flow_act(flow->rule, FLOW_ACTION_GOTO);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1885
struct flow_rule *rule = flow_cls_offload_flow_rule(flow);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1894
flow_action_for_each(i, act, &rule->action) {
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1912
flow_rule_match_ct(rule, &ct);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1935
ct_goto = get_flow_act(flow->rule, FLOW_ACTION_GOTO);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
196
get_mangled_key(rule, ip_hdr, 0, hdr_len,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
1977
new_pre_ct_flow.rule = post_ct_entry->rule;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
2149
struct flow_rule *flow_rule = flow->rule;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
242
ovlp_keys = entry1->rule->match.dissector->used_keys &
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
243
entry2->rule->match.dissector->used_keys;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
26
static struct flow_action_entry *get_flow_act(struct flow_rule *rule,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
264
flow_rule_match_control(entry1->rule, &match1);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
265
flow_rule_match_control(entry2->rule, &match2);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
274
flow_rule_match_basic(entry1->rule, &match1);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
275
flow_rule_match_basic(entry2->rule, &match2);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
297
flow_rule_match_ipv4_addrs(entry1->rule, &match1);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
298
flow_rule_match_ipv4_addrs(entry2->rule, &match2);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
301
match1.key = get_mangled_key(entry1->rule, buf,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
319
flow_rule_match_ipv6_addrs(entry1->rule, &match1);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
320
flow_rule_match_ipv6_addrs(entry2->rule, &match2);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
323
match1.key = get_mangled_key(entry1->rule, buf,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
342
flow_rule_match_ports(entry1->rule, &match1);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
343
flow_rule_match_ports(entry2->rule, &match2);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
351
match1.key = get_mangled_key(entry1->rule, buf, 0,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
362
flow_rule_match_eth_addrs(entry1->rule, &match1);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
363
flow_rule_match_eth_addrs(entry2->rule, &match2);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
366
match1.key = get_mangled_key(entry1->rule, buf, 0,
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
378
flow_rule_match_vlan(entry1->rule, &match1);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
379
flow_rule_match_vlan(entry2->rule, &match2);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
388
flow_rule_match_mpls(entry1->rule, &match1);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
389
flow_rule_match_mpls(entry2->rule, &match2);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
398
flow_rule_match_tcp(entry1->rule, &match1);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
399
flow_rule_match_tcp(entry2->rule, &match2);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
408
flow_rule_match_ip(entry1->rule, &match1);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
409
flow_rule_match_ip(entry2->rule, &match2);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
411
match1.key = get_mangled_tos_ttl(entry1->rule, buf, is_v6);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
420
flow_rule_match_enc_keyid(entry1->rule, &match1);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
421
flow_rule_match_enc_keyid(entry2->rule, &match2);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
430
flow_rule_match_enc_ipv4_addrs(entry1->rule, &match1);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
431
flow_rule_match_enc_ipv4_addrs(entry2->rule, &match2);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
440
flow_rule_match_enc_ipv6_addrs(entry1->rule, &match1);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
441
flow_rule_match_enc_ipv6_addrs(entry2->rule, &match2);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
450
flow_rule_match_enc_control(entry1->rule, &match1);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
451
flow_rule_match_enc_control(entry2->rule, &match2);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
460
flow_rule_match_enc_ip(entry1->rule, &match1);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
461
flow_rule_match_enc_ip(entry2->rule, &match2);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
470
flow_rule_match_enc_opts(entry1->rule, &match1);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
471
flow_rule_match_enc_opts(entry2->rule, &match2);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
484
struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
488
if (unlikely(flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CVLAN)))
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
492
if (likely(!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)))
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
502
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
549
flow_action_for_each(i, act, &pre_ct_entry->rule->action) {
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
554
err = nfp_ct_check_vlan_merge(act, post_ct_entry->rule);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
568
flow_action_for_each(i, act, &nft_entry->rule->action) {
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
58
struct flow_rule *rule = flow_cls_offload_flow_rule(flow);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
587
struct flow_dissector *dissector = post_ct_entry->rule->match.dissector;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
59
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
592
ct_met = get_flow_act(nft_entry->rule, FLOW_ACTION_CT_METADATA);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
597
flow_rule_match_ct(post_ct_entry->rule, &ct);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
65
flow_rule_match_ct(rule, &ct);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
73
flow_action_for_each(i, act, &flow->rule->action) {
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
836
rules[j++] = pre_ct_entry->prev_m_entries[i]->tc_m_parent->pre_ct_parent->rule;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
837
rules[j++] = pre_ct_entry->prev_m_entries[i]->nft_parent->rule;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
840
rules[j++] = m_entry->tc_m_parent->pre_ct_parent->rule;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
841
rules[j++] = m_entry->nft_parent->rule;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
842
rules[j++] = m_entry->tc_m_parent->post_ct_parent->rule;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
90
struct flow_rule *rule = flow_cls_offload_flow_rule(flow);
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
91
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/netronome/nfp/flower/conntrack.c
98
flow_rule_match_ct(rule, &ct);
drivers/net/ethernet/netronome/nfp/flower/conntrack.h
138
struct flow_rule *rule;
drivers/net/ethernet/netronome/nfp/flower/main.h
561
struct flow_rule *rule);
drivers/net/ethernet/netronome/nfp/flower/main.h
571
struct flow_rule *rule);
drivers/net/ethernet/netronome/nfp/flower/main.h
575
struct flow_rule *rule,
drivers/net/ethernet/netronome/nfp/flower/main.h
580
struct flow_rule *rule);
drivers/net/ethernet/netronome/nfp/flower/main.h
584
struct flow_rule *rule);
drivers/net/ethernet/netronome/nfp/flower/main.h
587
struct nfp_flower_ipv4 *msk, struct flow_rule *rule);
drivers/net/ethernet/netronome/nfp/flower/main.h
590
struct nfp_flower_ipv6 *msk, struct flow_rule *rule);
drivers/net/ethernet/netronome/nfp/flower/main.h
592
nfp_flower_compile_geneve_opt(u8 *ext, u8 *msk, struct flow_rule *rule);
drivers/net/ethernet/netronome/nfp/flower/main.h
596
struct flow_rule *rule);
drivers/net/ethernet/netronome/nfp/flower/main.h
600
struct flow_rule *rule);
drivers/net/ethernet/netronome/nfp/flower/main.h
604
struct flow_rule *rule);
drivers/net/ethernet/netronome/nfp/flower/main.h
608
struct flow_rule *rule);
drivers/net/ethernet/netronome/nfp/flower/main.h
610
struct flow_rule *rule,
drivers/net/ethernet/netronome/nfp/flower/main.h
617
struct flow_rule *rule,
drivers/net/ethernet/netronome/nfp/flower/match.c
104
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
121
struct flow_rule *rule,
drivers/net/ethernet/netronome/nfp/flower/match.c
124
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_MPLS)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
128
flow_rule_match_mpls(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
155
} else if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
162
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
176
struct flow_rule *rule,
drivers/net/ethernet/netronome/nfp/flower/match.c
182
nfp_flower_compile_mac(ext, msk, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
184
return nfp_flower_compile_mpls(ext, msk, rule, extack);
drivers/net/ethernet/netronome/nfp/flower/match.c
190
struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/match.c
192
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
196
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
210
struct nfp_flower_ip_ext *msk, struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/match.c
212
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
215
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
220
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IP)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
224
flow_rule_match_ip(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
235
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_TCP)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
239
flow_rule_match_tcp(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
25
struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/match.c
269
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
272
flow_rule_match_control(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
29
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
32
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
320
struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/match.c
324
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
325
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
328
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CVLAN)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
329
flow_rule_match_cvlan(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
336
struct nfp_flower_ipv4 *msk, struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/match.c
338
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV4_ADDRS)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
342
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
353
nfp_flower_compile_ip_ext(&ext->ip_ext, &msk->ip_ext, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
358
struct nfp_flower_ipv6 *msk, struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/match.c
360
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV6_ADDRS)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
365
flow_rule_match_ipv6_addrs(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
381
nfp_flower_compile_ip_ext(&ext->ip_ext, &msk->ip_ext, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
385
nfp_flower_compile_geneve_opt(u8 *ext, u8 *msk, struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/match.c
390
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_OPTS)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
391
flow_rule_match_enc_opts(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
403
struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/match.c
405
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_IPV4_ADDRS)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
408
flow_rule_match_enc_ipv4_addrs(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
419
struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/match.c
421
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_IPV6_ADDRS)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
425
flow_rule_match_enc_ipv6_addrs(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
440
struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/match.c
442
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_IP)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
445
flow_rule_match_enc_ip(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
455
struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/match.c
457
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_KEYID)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
461
flow_rule_match_enc_keyid(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
472
__be16 *flags_msk, struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/match.c
474
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_KEYID)) {
drivers/net/ethernet/netronome/nfp/flower/match.c
477
flow_rule_match_enc_keyid(rule, &match);
drivers/net/ethernet/netronome/nfp/flower/match.c
489
struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/match.c
495
nfp_flower_compile_tun_ipv4_addrs(&ext->ipv4, &msk->ipv4, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
496
nfp_flower_compile_tun_ip_ext(&ext->ip_ext, &msk->ip_ext, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
498
&ext->tun_flags, &msk->tun_flags, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
504
struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/match.c
506
nfp_flower_compile_tun_ipv4_addrs(&ext->ipv4, &msk->ipv4, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
507
nfp_flower_compile_tun_ip_ext(&ext->ip_ext, &msk->ip_ext, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
508
nfp_flower_compile_tun_udp_key(&ext->tun_id, &msk->tun_id, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
514
struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/match.c
516
nfp_flower_compile_tun_ipv6_addrs(&ext->ipv6, &msk->ipv6, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
517
nfp_flower_compile_tun_ip_ext(&ext->ip_ext, &msk->ip_ext, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
518
nfp_flower_compile_tun_udp_key(&ext->tun_id, &msk->tun_id, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
524
struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/match.c
530
nfp_flower_compile_tun_ipv6_addrs(&ext->ipv6, &msk->ipv6, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
531
nfp_flower_compile_tun_ip_ext(&ext->ip_ext, &msk->ip_ext, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
533
&ext->tun_flags, &msk->tun_flags, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
537
struct flow_rule *rule,
drivers/net/ethernet/netronome/nfp/flower/match.c
54
struct flow_rule *rule, u8 key_type, bool qinq_sup)
drivers/net/ethernet/netronome/nfp/flower/match.c
564
rule, key_ls->key_layer, qinq_sup);
drivers/net/ethernet/netronome/nfp/flower/match.c
596
rule, extack);
drivers/net/ethernet/netronome/nfp/flower/match.c
607
rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
615
rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
62
nfp_flower_compile_tci(ext, msk, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
623
rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
631
rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
643
(void *)msk, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
658
(void *)msk, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
679
(void *)msk, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
694
(void *)msk, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
707
nfp_flower_compile_geneve_opt(ext, msk, rule);
drivers/net/ethernet/netronome/nfp/flower/match.c
97
struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/match.c
99
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/netronome/nfp/flower/offload.c
1304
struct flow_rule *rule = flow_cls_offload_flow_rule(flow);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1305
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/netronome/nfp/flower/offload.c
1309
flow_rule_match_ct(rule, &ct);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1335
struct flow_rule *rule = flow_cls_offload_flow_rule(flow);
drivers/net/ethernet/netronome/nfp/flower/offload.c
1361
err = nfp_flower_calculate_key_layers(app, netdev, key_layer, rule,
drivers/net/ethernet/netronome/nfp/flower/offload.c
1372
err = nfp_flower_compile_flow_match(app, rule, key_layer, netdev,
drivers/net/ethernet/netronome/nfp/flower/offload.c
1377
err = nfp_flower_compile_action(app, rule, netdev, flow_pay, extack);
drivers/net/ethernet/netronome/nfp/flower/offload.c
139
static bool nfp_flower_check_higher_than_mac(struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/offload.c
141
return flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV4_ADDRS) ||
drivers/net/ethernet/netronome/nfp/flower/offload.c
142
flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV6_ADDRS) ||
drivers/net/ethernet/netronome/nfp/flower/offload.c
143
flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS) ||
drivers/net/ethernet/netronome/nfp/flower/offload.c
144
flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ICMP);
drivers/net/ethernet/netronome/nfp/flower/offload.c
147
static bool nfp_flower_check_higher_than_l3(struct flow_rule *rule)
drivers/net/ethernet/netronome/nfp/flower/offload.c
149
return flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS) ||
drivers/net/ethernet/netronome/nfp/flower/offload.c
150
flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ICMP);
drivers/net/ethernet/netronome/nfp/flower/offload.c
241
struct flow_rule *rule,
drivers/net/ethernet/netronome/nfp/flower/offload.c
245
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/netronome/nfp/flower/offload.c
273
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS) ||
drivers/net/ethernet/netronome/nfp/flower/offload.c
274
flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_MPLS)) {
drivers/net/ethernet/netronome/nfp/flower/offload.c
279
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/netronome/nfp/flower/offload.c
282
flow_rule_match_vlan(rule, &vlan);
drivers/net/ethernet/netronome/nfp/flower/offload.c
297
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CVLAN)) {
drivers/net/ethernet/netronome/nfp/flower/offload.c
305
flow_rule_match_vlan(rule, &cvlan);
drivers/net/ethernet/netronome/nfp/flower/offload.c
314
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_CONTROL)) {
drivers/net/ethernet/netronome/nfp/flower/offload.c
322
flow_rule_match_enc_control(rule, &enc_ctl);
drivers/net/ethernet/netronome/nfp/flower/offload.c
348
flow_rule_match_enc_ipv6_addrs(rule, &ipv6_addrs);
drivers/net/ethernet/netronome/nfp/flower/offload.c
355
flow_rule_match_enc_ipv4_addrs(rule, &ipv4_addrs);
drivers/net/ethernet/netronome/nfp/flower/offload.c
362
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_OPTS))
drivers/net/ethernet/netronome/nfp/flower/offload.c
363
flow_rule_match_enc_opts(rule, &enc_op);
drivers/net/ethernet/netronome/nfp/flower/offload.c
365
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_PORTS)) {
drivers/net/ethernet/netronome/nfp/flower/offload.c
391
flow_rule_match_enc_ports(rule, &enc_ports);
drivers/net/ethernet/netronome/nfp/flower/offload.c
417
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC))
drivers/net/ethernet/netronome/nfp/flower/offload.c
418
flow_rule_match_basic(rule, &basic);
drivers/net/ethernet/netronome/nfp/flower/offload.c
456
} else if (nfp_flower_check_higher_than_mac(rule)) {
drivers/net/ethernet/netronome/nfp/flower/offload.c
475
nfp_flower_check_higher_than_l3(rule)) {
drivers/net/ethernet/netronome/nfp/flower/offload.c
480
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_TCP)) {
drivers/net/ethernet/netronome/nfp/flower/offload.c
484
flow_rule_match_tcp(rule, &tcp);
drivers/net/ethernet/netronome/nfp/flower/offload.c
530
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/netronome/nfp/flower/offload.c
533
flow_rule_match_control(rule, &ctl);
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
169
struct flow_action_entry *paction = &flow->rule->action.entries[0];
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
170
u32 action_num = flow->rule->action.num_entries;
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
210
if (!flow_offload_has_one_action(&flow->rule->action)) {
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c
230
err = nfp_policer_validate(&flow->rule->action, action, extack, true);
drivers/net/ethernet/qlogic/qed/qed_debug.c
3721
const struct dbg_idle_chk_rule *rule,
drivers/net/ethernet/qlogic/qed/qed_debug.c
3735
rule->reg_offset;
drivers/net/ethernet/qlogic/qed/qed_debug.c
3737
info_regs = &regs[rule->num_cond_regs].info_reg;
drivers/net/ethernet/qlogic/qed/qed_debug.c
3744
hdr->severity = rule->severity;
drivers/net/ethernet/qlogic/qed/qed_debug.c
3745
hdr->num_dumped_cond_regs = rule->num_cond_regs;
drivers/net/ethernet/qlogic/qed/qed_debug.c
3751
for (reg_id = 0; reg_id < rule->num_cond_regs; reg_id++) {
drivers/net/ethernet/qlogic/qed/qed_debug.c
3781
for (reg_id = 0; reg_id < rule->num_info_regs; reg_id++) {
drivers/net/ethernet/qlogic/qed/qed_debug.c
3833
rule->num_cond_regs + reg_id);
drivers/net/ethernet/qlogic/qed/qed_debug.c
3866
const struct dbg_idle_chk_rule *rule;
drivers/net/ethernet/qlogic/qed/qed_debug.c
3872
rule = &input_rules[i];
drivers/net/ethernet/qlogic/qed/qed_debug.c
3875
rule->reg_offset;
drivers/net/ethernet/qlogic/qed/qed_debug.c
3879
rule->imm_offset;
drivers/net/ethernet/qlogic/qed/qed_debug.c
3885
for (reg_id = 0; reg_id < rule->num_cond_regs && check_rule;
drivers/net/ethernet/qlogic/qed/qed_debug.c
3910
rule->rule_id,
drivers/net/ethernet/qlogic/qed/qed_debug.c
3911
rule,
drivers/net/ethernet/qlogic/qed/qed_debug.c
3927
for (reg_id = 0; reg_id < rule->num_cond_regs;
drivers/net/ethernet/qlogic/qed/qed_debug.c
3973
if ((*cond_arr[rule->cond_id]) (cond_reg_values,
drivers/net/ethernet/qlogic/qed/qed_debug.c
3979
rule->rule_id,
drivers/net/ethernet/qlogic/qed/qed_debug.c
3980
rule,
drivers/net/ethernet/qlogic/qed/qed_debug.c
4034
const struct dbg_idle_chk_rule *rule =
drivers/net/ethernet/qlogic/qed/qed_debug.c
4046
rule,
drivers/net/ethernet/qlogic/qede/qede_filter.c
1701
qede_flow_parse_ports(struct flow_rule *rule, struct qede_arfs_tuple *t,
drivers/net/ethernet/qlogic/qede/qede_filter.c
1704
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/qlogic/qede/qede_filter.c
1707
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/qlogic/qede/qede_filter.c
1723
qede_flow_parse_v6_common(struct flow_rule *rule,
drivers/net/ethernet/qlogic/qede/qede_filter.c
1733
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV6_ADDRS)) {
drivers/net/ethernet/qlogic/qede/qede_filter.c
1736
flow_rule_match_ipv6_addrs(rule, &match);
drivers/net/ethernet/qlogic/qede/qede_filter.c
1750
err = qede_flow_parse_ports(rule, t, extack);
drivers/net/ethernet/qlogic/qede/qede_filter.c
1758
qede_flow_parse_v4_common(struct flow_rule *rule,
drivers/net/ethernet/qlogic/qede/qede_filter.c
1764
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV4_ADDRS)) {
drivers/net/ethernet/qlogic/qede/qede_filter.c
1767
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/qlogic/qede/qede_filter.c
1779
err = qede_flow_parse_ports(rule, t, extack);
drivers/net/ethernet/qlogic/qede/qede_filter.c
1787
qede_flow_parse_tcp_v6(struct flow_rule *rule, struct qede_arfs_tuple *tuple,
drivers/net/ethernet/qlogic/qede/qede_filter.c
1793
return qede_flow_parse_v6_common(rule, tuple, extack);
drivers/net/ethernet/qlogic/qede/qede_filter.c
1797
qede_flow_parse_tcp_v4(struct flow_rule *rule, struct qede_arfs_tuple *tuple,
drivers/net/ethernet/qlogic/qede/qede_filter.c
1803
return qede_flow_parse_v4_common(rule, tuple, extack);
drivers/net/ethernet/qlogic/qede/qede_filter.c
1807
qede_flow_parse_udp_v6(struct flow_rule *rule, struct qede_arfs_tuple *tuple,
drivers/net/ethernet/qlogic/qede/qede_filter.c
1813
return qede_flow_parse_v6_common(rule, tuple, extack);
drivers/net/ethernet/qlogic/qede/qede_filter.c
1817
qede_flow_parse_udp_v4(struct flow_rule *rule, struct qede_arfs_tuple *tuple,
drivers/net/ethernet/qlogic/qede/qede_filter.c
1823
return qede_flow_parse_v4_common(rule, tuple, extack);
drivers/net/ethernet/qlogic/qede/qede_filter.c
1827
qede_parse_flow_attr(__be16 proto, struct flow_rule *rule,
drivers/net/ethernet/qlogic/qede/qede_filter.c
1831
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/qlogic/qede/qede_filter.c
1848
if (flow_rule_match_has_control_flags(rule, extack))
drivers/net/ethernet/qlogic/qede/qede_filter.c
1858
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/qlogic/qede/qede_filter.c
1861
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/qlogic/qede/qede_filter.c
1866
rc = qede_flow_parse_tcp_v4(rule, tuple, extack);
drivers/net/ethernet/qlogic/qede/qede_filter.c
1868
rc = qede_flow_parse_tcp_v6(rule, tuple, extack);
drivers/net/ethernet/qlogic/qede/qede_filter.c
1870
rc = qede_flow_parse_udp_v4(rule, tuple, extack);
drivers/net/ethernet/qlogic/qede/qede_filter.c
1872
rc = qede_flow_parse_udp_v6(rule, tuple, extack);
drivers/net/ethernet/qlogic/qede/qede_filter.c
1895
rc = qede_parse_flow_attr(proto, f->rule, &t, extack);
drivers/net/ethernet/qlogic/qede/qede_filter.c
1910
rc = qede_parse_actions(edev, &f->rule->action, extack);
drivers/net/ethernet/qlogic/qede/qede_filter.c
2023
err = qede_parse_flow_attr(proto, flow->rule, t, &extack);
drivers/net/ethernet/qlogic/qede/qede_filter.c
2028
err = qede_flow_spec_validate(edev, &flow->rule->action, t,
drivers/net/ethernet/rocker/rocker_main.c
2118
struct fib_rule *rule;
drivers/net/ethernet/rocker/rocker_main.c
2136
rule = fib_work->fr_info.rule;
drivers/net/ethernet/rocker/rocker_main.c
2137
if (!fib4_rule_default(rule))
drivers/net/ethernet/rocker/rocker_main.c
2139
fib_rule_put(rule);
drivers/net/ethernet/rocker/rocker_main.c
2192
fib_rule_get(fib_work->fr_info.rule);
drivers/net/ethernet/sfc/ethtool_common.c
1110
if ((rule->flow_type & FLOW_EXT) && rule->m_ext.vlan_tci) {
drivers/net/ethernet/sfc/ethtool_common.c
1111
if (rule->m_ext.vlan_tci != htons(0xfff))
drivers/net/ethernet/sfc/ethtool_common.c
1114
spec.outer_vid = rule->h_ext.vlan_tci;
drivers/net/ethernet/sfc/ethtool_common.c
1121
rule->location = rc;
drivers/net/ethernet/sfc/ethtool_common.c
638
struct ethtool_rx_flow_spec *rule,
drivers/net/ethernet/sfc/ethtool_common.c
641
struct ethtool_tcpip4_spec *ip_entry = &rule->h_u.tcp_ip4_spec;
drivers/net/ethernet/sfc/ethtool_common.c
642
struct ethtool_tcpip4_spec *ip_mask = &rule->m_u.tcp_ip4_spec;
drivers/net/ethernet/sfc/ethtool_common.c
643
struct ethtool_usrip4_spec *uip_entry = &rule->h_u.usr_ip4_spec;
drivers/net/ethernet/sfc/ethtool_common.c
644
struct ethtool_usrip4_spec *uip_mask = &rule->m_u.usr_ip4_spec;
drivers/net/ethernet/sfc/ethtool_common.c
645
struct ethtool_tcpip6_spec *ip6_entry = &rule->h_u.tcp_ip6_spec;
drivers/net/ethernet/sfc/ethtool_common.c
646
struct ethtool_tcpip6_spec *ip6_mask = &rule->m_u.tcp_ip6_spec;
drivers/net/ethernet/sfc/ethtool_common.c
647
struct ethtool_usrip6_spec *uip6_entry = &rule->h_u.usr_ip6_spec;
drivers/net/ethernet/sfc/ethtool_common.c
648
struct ethtool_usrip6_spec *uip6_mask = &rule->m_u.usr_ip6_spec;
drivers/net/ethernet/sfc/ethtool_common.c
649
struct ethhdr *mac_entry = &rule->h_u.ether_spec;
drivers/net/ethernet/sfc/ethtool_common.c
650
struct ethhdr *mac_mask = &rule->m_u.ether_spec;
drivers/net/ethernet/sfc/ethtool_common.c
655
rule->location, &spec);
drivers/net/ethernet/sfc/ethtool_common.c
660
rule->ring_cookie = RX_CLS_FLOW_DISC;
drivers/net/ethernet/sfc/ethtool_common.c
662
rule->ring_cookie = spec.dmaq_id;
drivers/net/ethernet/sfc/ethtool_common.c
673
rule->flow_type = ((spec.ip_proto == IPPROTO_TCP) ?
drivers/net/ethernet/sfc/ethtool_common.c
700
rule->flow_type = ((spec.ip_proto == IPPROTO_TCP) ?
drivers/net/ethernet/sfc/ethtool_common.c
724
rule->flow_type = ETHER_FLOW;
drivers/net/ethernet/sfc/ethtool_common.c
748
rule->flow_type = IPV4_USER_FLOW;
drivers/net/ethernet/sfc/ethtool_common.c
768
rule->flow_type = IPV6_USER_FLOW;
drivers/net/ethernet/sfc/ethtool_common.c
790
rule->flow_type |= FLOW_EXT;
drivers/net/ethernet/sfc/ethtool_common.c
791
rule->h_ext.vlan_tci = spec.outer_vid;
drivers/net/ethernet/sfc/ethtool_common.c
792
rule->m_ext.vlan_tci = htons(0xfff);
drivers/net/ethernet/sfc/ethtool_common.c
796
rule->flow_type |= FLOW_RSS;
drivers/net/ethernet/sfc/ethtool_common.c
914
struct ethtool_rx_flow_spec *rule,
drivers/net/ethernet/sfc/ethtool_common.c
917
struct ethtool_tcpip4_spec *ip_entry = &rule->h_u.tcp_ip4_spec;
drivers/net/ethernet/sfc/ethtool_common.c
918
struct ethtool_tcpip4_spec *ip_mask = &rule->m_u.tcp_ip4_spec;
drivers/net/ethernet/sfc/ethtool_common.c
919
struct ethtool_usrip4_spec *uip_entry = &rule->h_u.usr_ip4_spec;
drivers/net/ethernet/sfc/ethtool_common.c
920
struct ethtool_usrip4_spec *uip_mask = &rule->m_u.usr_ip4_spec;
drivers/net/ethernet/sfc/ethtool_common.c
921
struct ethtool_tcpip6_spec *ip6_entry = &rule->h_u.tcp_ip6_spec;
drivers/net/ethernet/sfc/ethtool_common.c
922
struct ethtool_tcpip6_spec *ip6_mask = &rule->m_u.tcp_ip6_spec;
drivers/net/ethernet/sfc/ethtool_common.c
923
struct ethtool_usrip6_spec *uip6_entry = &rule->h_u.usr_ip6_spec;
drivers/net/ethernet/sfc/ethtool_common.c
924
struct ethtool_usrip6_spec *uip6_mask = &rule->m_u.usr_ip6_spec;
drivers/net/ethernet/sfc/ethtool_common.c
925
u32 flow_type = rule->flow_type & ~(FLOW_EXT | FLOW_RSS);
drivers/net/ethernet/sfc/ethtool_common.c
926
struct ethhdr *mac_entry = &rule->h_u.ether_spec;
drivers/net/ethernet/sfc/ethtool_common.c
927
struct ethhdr *mac_mask = &rule->m_u.ether_spec;
drivers/net/ethernet/sfc/ethtool_common.c
933
if (rule->location != RX_CLS_LOC_ANY)
drivers/net/ethernet/sfc/ethtool_common.c
937
if (rule->ring_cookie >= efx->n_rx_channels &&
drivers/net/ethernet/sfc/ethtool_common.c
938
rule->ring_cookie != RX_CLS_FLOW_DISC)
drivers/net/ethernet/sfc/ethtool_common.c
942
if ((rule->flow_type & FLOW_EXT) &&
drivers/net/ethernet/sfc/ethtool_common.c
943
(rule->m_ext.vlan_etype || rule->m_ext.data[0] ||
drivers/net/ethernet/sfc/ethtool_common.c
944
rule->m_ext.data[1]))
drivers/net/ethernet/sfc/ethtool_common.c
949
if (rule->flow_type & FLOW_RSS)
drivers/net/ethernet/sfc/ethtool_common.c
953
(rule->ring_cookie == RX_CLS_FLOW_DISC) ?
drivers/net/ethernet/sfc/ethtool_common.c
954
EFX_FILTER_RX_DMAQ_ID_DROP : rule->ring_cookie);
drivers/net/ethernet/sfc/ethtool_common.c
956
if (rule->flow_type & FLOW_RSS)
drivers/net/ethernet/sfc/falcon/ethtool.c
1034
struct ethtool_rx_flow_spec *rule)
drivers/net/ethernet/sfc/falcon/ethtool.c
1036
struct ethtool_tcpip4_spec *ip_entry = &rule->h_u.tcp_ip4_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
1037
struct ethtool_tcpip4_spec *ip_mask = &rule->m_u.tcp_ip4_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
1038
struct ethtool_usrip4_spec *uip_entry = &rule->h_u.usr_ip4_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
1039
struct ethtool_usrip4_spec *uip_mask = &rule->m_u.usr_ip4_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
1040
struct ethtool_tcpip6_spec *ip6_entry = &rule->h_u.tcp_ip6_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
1041
struct ethtool_tcpip6_spec *ip6_mask = &rule->m_u.tcp_ip6_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
1042
struct ethtool_usrip6_spec *uip6_entry = &rule->h_u.usr_ip6_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
1043
struct ethtool_usrip6_spec *uip6_mask = &rule->m_u.usr_ip6_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
1044
struct ethhdr *mac_entry = &rule->h_u.ether_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
1045
struct ethhdr *mac_mask = &rule->m_u.ether_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
1050
if (rule->location != RX_CLS_LOC_ANY)
drivers/net/ethernet/sfc/falcon/ethtool.c
1054
if (rule->ring_cookie >= efx->n_rx_channels &&
drivers/net/ethernet/sfc/falcon/ethtool.c
1055
rule->ring_cookie != RX_CLS_FLOW_DISC)
drivers/net/ethernet/sfc/falcon/ethtool.c
1059
if ((rule->flow_type & FLOW_EXT) &&
drivers/net/ethernet/sfc/falcon/ethtool.c
1060
(rule->m_ext.vlan_etype || rule->m_ext.data[0] ||
drivers/net/ethernet/sfc/falcon/ethtool.c
1061
rule->m_ext.data[1]))
drivers/net/ethernet/sfc/falcon/ethtool.c
1066
(rule->ring_cookie == RX_CLS_FLOW_DISC) ?
drivers/net/ethernet/sfc/falcon/ethtool.c
1067
EF4_FILTER_RX_DMAQ_ID_DROP : rule->ring_cookie);
drivers/net/ethernet/sfc/falcon/ethtool.c
1069
switch (rule->flow_type & ~FLOW_EXT) {
drivers/net/ethernet/sfc/falcon/ethtool.c
1075
spec.ip_proto = ((rule->flow_type & ~FLOW_EXT) == TCP_V4_FLOW ?
drivers/net/ethernet/sfc/falcon/ethtool.c
1110
spec.ip_proto = ((rule->flow_type & ~FLOW_EXT) == TCP_V6_FLOW ?
drivers/net/ethernet/sfc/falcon/ethtool.c
1220
if ((rule->flow_type & FLOW_EXT) && rule->m_ext.vlan_tci) {
drivers/net/ethernet/sfc/falcon/ethtool.c
1221
if (rule->m_ext.vlan_tci != htons(0xfff))
drivers/net/ethernet/sfc/falcon/ethtool.c
1224
spec.outer_vid = rule->h_ext.vlan_tci;
drivers/net/ethernet/sfc/falcon/ethtool.c
1231
rule->location = rc;
drivers/net/ethernet/sfc/falcon/ethtool.c
787
struct ethtool_rx_flow_spec *rule)
drivers/net/ethernet/sfc/falcon/ethtool.c
789
struct ethtool_tcpip4_spec *ip_entry = &rule->h_u.tcp_ip4_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
790
struct ethtool_tcpip4_spec *ip_mask = &rule->m_u.tcp_ip4_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
791
struct ethtool_usrip4_spec *uip_entry = &rule->h_u.usr_ip4_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
792
struct ethtool_usrip4_spec *uip_mask = &rule->m_u.usr_ip4_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
793
struct ethtool_tcpip6_spec *ip6_entry = &rule->h_u.tcp_ip6_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
794
struct ethtool_tcpip6_spec *ip6_mask = &rule->m_u.tcp_ip6_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
795
struct ethtool_usrip6_spec *uip6_entry = &rule->h_u.usr_ip6_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
796
struct ethtool_usrip6_spec *uip6_mask = &rule->m_u.usr_ip6_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
797
struct ethhdr *mac_entry = &rule->h_u.ether_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
798
struct ethhdr *mac_mask = &rule->m_u.ether_spec;
drivers/net/ethernet/sfc/falcon/ethtool.c
803
rule->location, &spec);
drivers/net/ethernet/sfc/falcon/ethtool.c
808
rule->ring_cookie = RX_CLS_FLOW_DISC;
drivers/net/ethernet/sfc/falcon/ethtool.c
810
rule->ring_cookie = spec.dmaq_id;
drivers/net/ethernet/sfc/falcon/ethtool.c
821
rule->flow_type = ((spec.ip_proto == IPPROTO_TCP) ?
drivers/net/ethernet/sfc/falcon/ethtool.c
848
rule->flow_type = ((spec.ip_proto == IPPROTO_TCP) ?
drivers/net/ethernet/sfc/falcon/ethtool.c
872
rule->flow_type = ETHER_FLOW;
drivers/net/ethernet/sfc/falcon/ethtool.c
896
rule->flow_type = IPV4_USER_FLOW;
drivers/net/ethernet/sfc/falcon/ethtool.c
916
rule->flow_type = IPV6_USER_FLOW;
drivers/net/ethernet/sfc/falcon/ethtool.c
938
rule->flow_type |= FLOW_EXT;
drivers/net/ethernet/sfc/falcon/ethtool.c
939
rule->h_ext.vlan_tci = spec.outer_vid;
drivers/net/ethernet/sfc/falcon/ethtool.c
940
rule->m_ext.vlan_tci = htons(0xfff);
drivers/net/ethernet/sfc/mae.c
1682
struct efx_tc_lhs_rule *rule, u32 prio)
drivers/net/ethernet/sfc/mae.c
1694
rc = efx_mae_populate_lhs_match_criteria(match_crit, &rule->match);
drivers/net/ethernet/sfc/mae.c
1699
act = &rule->lhs_act;
drivers/net/ethernet/sfc/mae.c
1727
rule->fw_id = MCDI_DWORD(outbuf, MAE_OUTER_RULE_INSERT_OUT_OR_ID);
drivers/net/ethernet/sfc/mae.c
1735
struct efx_tc_lhs_rule *rule,
drivers/net/ethernet/sfc/mae.c
1740
struct efx_tc_lhs_action *act = &rule->lhs_act;
drivers/net/ethernet/sfc/mae.c
1766
rc = efx_mae_populate_match_criteria(match_crit, &rule->match);
drivers/net/ethernet/sfc/mae.c
1776
rule->fw_id = MCDI_DWORD(outbuf, MAE_ACTION_RULE_INSERT_OUT_AR_ID);
drivers/net/ethernet/sfc/mae.c
1780
int efx_mae_insert_lhs_rule(struct efx_nic *efx, struct efx_tc_lhs_rule *rule,
drivers/net/ethernet/sfc/mae.c
1783
if (rule->is_ar)
drivers/net/ethernet/sfc/mae.c
1784
return efx_mae_insert_lhs_action_rule(efx, rule, prio);
drivers/net/ethernet/sfc/mae.c
1785
return efx_mae_insert_lhs_outer_rule(efx, rule, prio);
drivers/net/ethernet/sfc/mae.c
1789
struct efx_tc_lhs_rule *rule)
drivers/net/ethernet/sfc/mae.c
1796
MCDI_SET_DWORD(inbuf, MAE_OUTER_RULE_REMOVE_IN_OR_ID, rule->fw_id);
drivers/net/ethernet/sfc/mae.c
1807
if (WARN_ON(MCDI_DWORD(outbuf, MAE_OUTER_RULE_REMOVE_OUT_REMOVED_OR_ID) != rule->fw_id))
drivers/net/ethernet/sfc/mae.c
1812
rule->fw_id = MC_CMD_MAE_OUTER_RULE_INSERT_OUT_OUTER_RULE_ID_NULL;
drivers/net/ethernet/sfc/mae.c
1816
int efx_mae_remove_lhs_rule(struct efx_nic *efx, struct efx_tc_lhs_rule *rule)
drivers/net/ethernet/sfc/mae.c
1818
if (rule->is_ar)
drivers/net/ethernet/sfc/mae.c
1819
return efx_mae_delete_rule(efx, rule->fw_id);
drivers/net/ethernet/sfc/mae.c
1820
return efx_mae_remove_lhs_outer_rule(efx, rule);
drivers/net/ethernet/sfc/mae.h
121
int efx_mae_insert_lhs_rule(struct efx_nic *efx, struct efx_tc_lhs_rule *rule,
drivers/net/ethernet/sfc/mae.h
123
int efx_mae_remove_lhs_rule(struct efx_nic *efx, struct efx_tc_lhs_rule *rule);
drivers/net/ethernet/sfc/mcdi_filters.c
1784
struct efx_arfs_rule *rule = NULL;
drivers/net/ethernet/sfc/mcdi_filters.c
1801
rule = efx_rps_hash_find(efx, spec);
drivers/net/ethernet/sfc/mcdi_filters.c
1802
if (!rule)
drivers/net/ethernet/sfc/mcdi_filters.c
1805
arfs_id = rule->arfs_id;
drivers/net/ethernet/sfc/mcdi_filters.c
1806
ret = efx_rps_check_rule(rule, filter_idx, &force);
drivers/net/ethernet/sfc/mcdi_filters.c
1816
else if (rule)
drivers/net/ethernet/sfc/mcdi_filters.c
1817
rule->filter_id = EFX_ARFS_FILTER_ID_REMOVING;
drivers/net/ethernet/sfc/mcdi_filters.c
1835
if (ret && rule) {
drivers/net/ethernet/sfc/rx_common.c
636
bool efx_rps_check_rule(struct efx_arfs_rule *rule, unsigned int filter_idx,
drivers/net/ethernet/sfc/rx_common.c
639
if (rule->filter_id == EFX_ARFS_FILTER_ID_PENDING) {
drivers/net/ethernet/sfc/rx_common.c
643
if (rule->filter_id == EFX_ARFS_FILTER_ID_ERROR) {
drivers/net/ethernet/sfc/rx_common.c
647
rule->filter_id = EFX_ARFS_FILTER_ID_REMOVING;
drivers/net/ethernet/sfc/rx_common.c
650
} else if (WARN_ON(rule->filter_id != filter_idx)) { /* can't happen */
drivers/net/ethernet/sfc/rx_common.c
677
struct efx_arfs_rule *rule;
drivers/net/ethernet/sfc/rx_common.c
685
rule = container_of(node, struct efx_arfs_rule, node);
drivers/net/ethernet/sfc/rx_common.c
686
if (efx_filter_spec_equal(spec, &rule->spec))
drivers/net/ethernet/sfc/rx_common.c
687
return rule;
drivers/net/ethernet/sfc/rx_common.c
696
struct efx_arfs_rule *rule;
drivers/net/ethernet/sfc/rx_common.c
704
rule = container_of(node, struct efx_arfs_rule, node);
drivers/net/ethernet/sfc/rx_common.c
705
if (efx_filter_spec_equal(spec, &rule->spec)) {
drivers/net/ethernet/sfc/rx_common.c
707
return rule;
drivers/net/ethernet/sfc/rx_common.c
710
rule = kmalloc_obj(*rule, GFP_ATOMIC);
drivers/net/ethernet/sfc/rx_common.c
712
if (rule) {
drivers/net/ethernet/sfc/rx_common.c
713
memcpy(&rule->spec, spec, sizeof(rule->spec));
drivers/net/ethernet/sfc/rx_common.c
714
hlist_add_head(&rule->node, head);
drivers/net/ethernet/sfc/rx_common.c
716
return rule;
drivers/net/ethernet/sfc/rx_common.c
721
struct efx_arfs_rule *rule;
drivers/net/ethernet/sfc/rx_common.c
729
rule = container_of(node, struct efx_arfs_rule, node);
drivers/net/ethernet/sfc/rx_common.c
730
if (efx_filter_spec_equal(spec, &rule->spec)) {
drivers/net/ethernet/sfc/rx_common.c
737
if (rule->filter_id != EFX_ARFS_FILTER_ID_REMOVING)
drivers/net/ethernet/sfc/rx_common.c
740
kfree(rule);
drivers/net/ethernet/sfc/rx_common.c
819
struct efx_arfs_rule *rule;
drivers/net/ethernet/sfc/rx_common.c
829
rule = efx_rps_hash_find(efx, &req->spec);
drivers/net/ethernet/sfc/rx_common.c
836
if (rule) {
drivers/net/ethernet/sfc/rx_common.c
838
rule->filter_id = EFX_ARFS_FILTER_ID_ERROR;
drivers/net/ethernet/sfc/rx_common.c
840
rule->filter_id = rc;
drivers/net/ethernet/sfc/rx_common.c
841
arfs_id = rule->arfs_id;
drivers/net/ethernet/sfc/rx_common.c
903
struct efx_arfs_rule *rule;
drivers/net/ethernet/sfc/rx_common.c
962
rule = efx_rps_hash_add(efx, &req->spec, &new);
drivers/net/ethernet/sfc/rx_common.c
963
if (!rule) {
drivers/net/ethernet/sfc/rx_common.c
968
rule->arfs_id = efx->rps_next_id++ % RPS_NO_FILTER;
drivers/net/ethernet/sfc/rx_common.c
969
rc = rule->arfs_id;
drivers/net/ethernet/sfc/rx_common.c
971
if (!new && rule->rxq_index == rxq_index &&
drivers/net/ethernet/sfc/rx_common.c
972
rule->filter_id >= EFX_ARFS_FILTER_ID_PENDING)
drivers/net/ethernet/sfc/rx_common.c
974
rule->rxq_index = rxq_index;
drivers/net/ethernet/sfc/rx_common.c
975
rule->filter_id = EFX_ARFS_FILTER_ID_PENDING;
drivers/net/ethernet/sfc/rx_common.h
97
bool efx_rps_check_rule(struct efx_arfs_rule *rule, unsigned int filter_idx,
drivers/net/ethernet/sfc/siena/ethtool_common.c
1101
if ((rule->flow_type & FLOW_EXT) && rule->m_ext.vlan_tci) {
drivers/net/ethernet/sfc/siena/ethtool_common.c
1102
if (rule->m_ext.vlan_tci != htons(0xfff))
drivers/net/ethernet/sfc/siena/ethtool_common.c
1105
spec.outer_vid = rule->h_ext.vlan_tci;
drivers/net/ethernet/sfc/siena/ethtool_common.c
1112
rule->location = rc;
drivers/net/ethernet/sfc/siena/ethtool_common.c
639
struct ethtool_rx_flow_spec *rule,
drivers/net/ethernet/sfc/siena/ethtool_common.c
642
struct ethtool_tcpip4_spec *ip_entry = &rule->h_u.tcp_ip4_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
643
struct ethtool_tcpip4_spec *ip_mask = &rule->m_u.tcp_ip4_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
644
struct ethtool_usrip4_spec *uip_entry = &rule->h_u.usr_ip4_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
645
struct ethtool_usrip4_spec *uip_mask = &rule->m_u.usr_ip4_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
646
struct ethtool_tcpip6_spec *ip6_entry = &rule->h_u.tcp_ip6_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
647
struct ethtool_tcpip6_spec *ip6_mask = &rule->m_u.tcp_ip6_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
648
struct ethtool_usrip6_spec *uip6_entry = &rule->h_u.usr_ip6_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
649
struct ethtool_usrip6_spec *uip6_mask = &rule->m_u.usr_ip6_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
650
struct ethhdr *mac_entry = &rule->h_u.ether_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
651
struct ethhdr *mac_mask = &rule->m_u.ether_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
656
rule->location, &spec);
drivers/net/ethernet/sfc/siena/ethtool_common.c
661
rule->ring_cookie = RX_CLS_FLOW_DISC;
drivers/net/ethernet/sfc/siena/ethtool_common.c
663
rule->ring_cookie = spec.dmaq_id;
drivers/net/ethernet/sfc/siena/ethtool_common.c
674
rule->flow_type = ((spec.ip_proto == IPPROTO_TCP) ?
drivers/net/ethernet/sfc/siena/ethtool_common.c
701
rule->flow_type = ((spec.ip_proto == IPPROTO_TCP) ?
drivers/net/ethernet/sfc/siena/ethtool_common.c
725
rule->flow_type = ETHER_FLOW;
drivers/net/ethernet/sfc/siena/ethtool_common.c
749
rule->flow_type = IPV4_USER_FLOW;
drivers/net/ethernet/sfc/siena/ethtool_common.c
769
rule->flow_type = IPV6_USER_FLOW;
drivers/net/ethernet/sfc/siena/ethtool_common.c
791
rule->flow_type |= FLOW_EXT;
drivers/net/ethernet/sfc/siena/ethtool_common.c
792
rule->h_ext.vlan_tci = spec.outer_vid;
drivers/net/ethernet/sfc/siena/ethtool_common.c
793
rule->m_ext.vlan_tci = htons(0xfff);
drivers/net/ethernet/sfc/siena/ethtool_common.c
797
rule->flow_type |= FLOW_RSS;
drivers/net/ethernet/sfc/siena/ethtool_common.c
905
struct ethtool_rx_flow_spec *rule,
drivers/net/ethernet/sfc/siena/ethtool_common.c
908
struct ethtool_tcpip4_spec *ip_entry = &rule->h_u.tcp_ip4_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
909
struct ethtool_tcpip4_spec *ip_mask = &rule->m_u.tcp_ip4_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
910
struct ethtool_usrip4_spec *uip_entry = &rule->h_u.usr_ip4_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
911
struct ethtool_usrip4_spec *uip_mask = &rule->m_u.usr_ip4_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
912
struct ethtool_tcpip6_spec *ip6_entry = &rule->h_u.tcp_ip6_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
913
struct ethtool_tcpip6_spec *ip6_mask = &rule->m_u.tcp_ip6_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
914
struct ethtool_usrip6_spec *uip6_entry = &rule->h_u.usr_ip6_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
915
struct ethtool_usrip6_spec *uip6_mask = &rule->m_u.usr_ip6_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
916
u32 flow_type = rule->flow_type & ~(FLOW_EXT | FLOW_RSS);
drivers/net/ethernet/sfc/siena/ethtool_common.c
917
struct ethhdr *mac_entry = &rule->h_u.ether_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
918
struct ethhdr *mac_mask = &rule->m_u.ether_spec;
drivers/net/ethernet/sfc/siena/ethtool_common.c
924
if (rule->location != RX_CLS_LOC_ANY)
drivers/net/ethernet/sfc/siena/ethtool_common.c
928
if (rule->ring_cookie >= efx->n_rx_channels &&
drivers/net/ethernet/sfc/siena/ethtool_common.c
929
rule->ring_cookie != RX_CLS_FLOW_DISC)
drivers/net/ethernet/sfc/siena/ethtool_common.c
933
if ((rule->flow_type & FLOW_EXT) &&
drivers/net/ethernet/sfc/siena/ethtool_common.c
934
(rule->m_ext.vlan_etype || rule->m_ext.data[0] ||
drivers/net/ethernet/sfc/siena/ethtool_common.c
935
rule->m_ext.data[1]))
drivers/net/ethernet/sfc/siena/ethtool_common.c
940
if (rule->flow_type & FLOW_RSS)
drivers/net/ethernet/sfc/siena/ethtool_common.c
944
(rule->ring_cookie == RX_CLS_FLOW_DISC) ?
drivers/net/ethernet/sfc/siena/ethtool_common.c
945
EFX_FILTER_RX_DMAQ_ID_DROP : rule->ring_cookie);
drivers/net/ethernet/sfc/siena/ethtool_common.c
947
if (rule->flow_type & FLOW_RSS)
drivers/net/ethernet/sfc/siena/farch.c
2916
struct efx_arfs_rule *rule = NULL;
drivers/net/ethernet/sfc/siena/farch.c
2926
rule = efx_siena_rps_hash_find(efx, &spec);
drivers/net/ethernet/sfc/siena/farch.c
2927
if (!rule) {
drivers/net/ethernet/sfc/siena/farch.c
2931
arfs_id = rule->arfs_id;
drivers/net/ethernet/sfc/siena/farch.c
2932
if (!efx_siena_rps_check_rule(rule, index,
drivers/net/ethernet/sfc/siena/farch.c
2939
if (rule)
drivers/net/ethernet/sfc/siena/farch.c
2940
rule->filter_id = EFX_ARFS_FILTER_ID_REMOVING;
drivers/net/ethernet/sfc/siena/rx_common.c
623
bool efx_siena_rps_check_rule(struct efx_arfs_rule *rule,
drivers/net/ethernet/sfc/siena/rx_common.c
626
if (rule->filter_id == EFX_ARFS_FILTER_ID_PENDING) {
drivers/net/ethernet/sfc/siena/rx_common.c
630
if (rule->filter_id == EFX_ARFS_FILTER_ID_ERROR) {
drivers/net/ethernet/sfc/siena/rx_common.c
634
rule->filter_id = EFX_ARFS_FILTER_ID_REMOVING;
drivers/net/ethernet/sfc/siena/rx_common.c
637
} else if (WARN_ON(rule->filter_id != filter_idx)) { /* can't happen */
drivers/net/ethernet/sfc/siena/rx_common.c
664
struct efx_arfs_rule *rule;
drivers/net/ethernet/sfc/siena/rx_common.c
672
rule = container_of(node, struct efx_arfs_rule, node);
drivers/net/ethernet/sfc/siena/rx_common.c
673
if (efx_siena_filter_spec_equal(spec, &rule->spec))
drivers/net/ethernet/sfc/siena/rx_common.c
674
return rule;
drivers/net/ethernet/sfc/siena/rx_common.c
683
struct efx_arfs_rule *rule;
drivers/net/ethernet/sfc/siena/rx_common.c
691
rule = container_of(node, struct efx_arfs_rule, node);
drivers/net/ethernet/sfc/siena/rx_common.c
692
if (efx_siena_filter_spec_equal(spec, &rule->spec)) {
drivers/net/ethernet/sfc/siena/rx_common.c
694
return rule;
drivers/net/ethernet/sfc/siena/rx_common.c
697
rule = kmalloc_obj(*rule, GFP_ATOMIC);
drivers/net/ethernet/sfc/siena/rx_common.c
699
if (rule) {
drivers/net/ethernet/sfc/siena/rx_common.c
700
memcpy(&rule->spec, spec, sizeof(rule->spec));
drivers/net/ethernet/sfc/siena/rx_common.c
701
hlist_add_head(&rule->node, head);
drivers/net/ethernet/sfc/siena/rx_common.c
703
return rule;
drivers/net/ethernet/sfc/siena/rx_common.c
709
struct efx_arfs_rule *rule;
drivers/net/ethernet/sfc/siena/rx_common.c
717
rule = container_of(node, struct efx_arfs_rule, node);
drivers/net/ethernet/sfc/siena/rx_common.c
718
if (efx_siena_filter_spec_equal(spec, &rule->spec)) {
drivers/net/ethernet/sfc/siena/rx_common.c
725
if (rule->filter_id != EFX_ARFS_FILTER_ID_REMOVING)
drivers/net/ethernet/sfc/siena/rx_common.c
728
kfree(rule);
drivers/net/ethernet/sfc/siena/rx_common.c
809
struct efx_arfs_rule *rule;
drivers/net/ethernet/sfc/siena/rx_common.c
819
rule = efx_siena_rps_hash_find(efx, &req->spec);
drivers/net/ethernet/sfc/siena/rx_common.c
826
if (rule) {
drivers/net/ethernet/sfc/siena/rx_common.c
828
rule->filter_id = EFX_ARFS_FILTER_ID_ERROR;
drivers/net/ethernet/sfc/siena/rx_common.c
830
rule->filter_id = rc;
drivers/net/ethernet/sfc/siena/rx_common.c
831
arfs_id = rule->arfs_id;
drivers/net/ethernet/sfc/siena/rx_common.c
894
struct efx_arfs_rule *rule;
drivers/net/ethernet/sfc/siena/rx_common.c
953
rule = efx_rps_hash_add(efx, &req->spec, &new);
drivers/net/ethernet/sfc/siena/rx_common.c
954
if (!rule) {
drivers/net/ethernet/sfc/siena/rx_common.c
959
rule->arfs_id = efx->rps_next_id++ % RPS_NO_FILTER;
drivers/net/ethernet/sfc/siena/rx_common.c
960
rc = rule->arfs_id;
drivers/net/ethernet/sfc/siena/rx_common.c
962
if (!new && rule->rxq_index == rxq_index &&
drivers/net/ethernet/sfc/siena/rx_common.c
963
rule->filter_id >= EFX_ARFS_FILTER_ID_PENDING)
drivers/net/ethernet/sfc/siena/rx_common.c
965
rule->rxq_index = rxq_index;
drivers/net/ethernet/sfc/siena/rx_common.c
966
rule->filter_id = EFX_ARFS_FILTER_ID_PENDING;
drivers/net/ethernet/sfc/siena/rx_common.h
90
bool efx_siena_rps_check_rule(struct efx_arfs_rule *rule,
drivers/net/ethernet/sfc/tc.c
1459
struct efx_tc_lhs_rule *rule, *old;
drivers/net/ethernet/sfc/tc.c
1508
rule = kzalloc_obj(*rule, GFP_USER);
drivers/net/ethernet/sfc/tc.c
1509
if (!rule) {
drivers/net/ethernet/sfc/tc.c
1513
rule->cookie = tc->cookie;
drivers/net/ethernet/sfc/tc.c
1514
rule->is_ar = true;
drivers/net/ethernet/sfc/tc.c
1516
&rule->linkage,
drivers/net/ethernet/sfc/tc.c
1527
rc = efx_tc_flower_handle_lhs_actions(efx, tc, fr, net_dev, rule);
drivers/net/ethernet/sfc/tc.c
1531
rule->match = *match;
drivers/net/ethernet/sfc/tc.c
1532
rule->lhs_act.tun_type = type;
drivers/net/ethernet/sfc/tc.c
1534
rc = efx_mae_insert_lhs_rule(efx, rule, EFX_TC_PRIO_TC);
drivers/net/ethernet/sfc/tc.c
1545
efx_tc_flower_release_lhs_actions(efx, &rule->lhs_act);
drivers/net/ethernet/sfc/tc.c
1547
rhashtable_remove_fast(&efx->tc->lhs_rule_ht, &rule->linkage,
drivers/net/ethernet/sfc/tc.c
1549
kfree(rule);
drivers/net/ethernet/sfc/tc.c
1563
struct efx_tc_lhs_rule *rule, *old;
drivers/net/ethernet/sfc/tc.c
1621
rule = kzalloc_obj(*rule, GFP_USER);
drivers/net/ethernet/sfc/tc.c
1622
if (!rule) {
drivers/net/ethernet/sfc/tc.c
1626
rule->cookie = tc->cookie;
drivers/net/ethernet/sfc/tc.c
1628
&rule->linkage,
drivers/net/ethernet/sfc/tc.c
1639
rc = efx_tc_flower_handle_lhs_actions(efx, tc, fr, net_dev, rule);
drivers/net/ethernet/sfc/tc.c
1643
rule->match = *match;
drivers/net/ethernet/sfc/tc.c
1644
rule->lhs_act.tun_type = type;
drivers/net/ethernet/sfc/tc.c
1646
rc = efx_mae_insert_lhs_rule(efx, rule, EFX_TC_PRIO_TC);
drivers/net/ethernet/sfc/tc.c
1657
efx_tc_flower_release_lhs_actions(efx, &rule->lhs_act);
drivers/net/ethernet/sfc/tc.c
1659
rhashtable_remove_fast(&efx->tc->lhs_rule_ht, &rule->linkage,
drivers/net/ethernet/sfc/tc.c
1661
kfree(rule);
drivers/net/ethernet/sfc/tc.c
1674
struct efx_tc_flow_rule *rule = NULL, *old = NULL;
drivers/net/ethernet/sfc/tc.c
1797
rule = kzalloc_obj(*rule, GFP_USER);
drivers/net/ethernet/sfc/tc.c
1798
if (!rule) {
drivers/net/ethernet/sfc/tc.c
1802
INIT_LIST_HEAD(&rule->acts.list);
drivers/net/ethernet/sfc/tc.c
1803
rule->cookie = tc->cookie;
drivers/net/ethernet/sfc/tc.c
1805
&rule->linkage,
drivers/net/ethernet/sfc/tc.c
1899
list_add_tail(&act->list, &rule->acts.list);
drivers/net/ethernet/sfc/tc.c
1945
list_add_tail(&act->list, &rule->acts.list);
drivers/net/ethernet/sfc/tc.c
1949
rule->match = match;
drivers/net/ethernet/sfc/tc.c
1955
rc = efx_mae_alloc_action_set_list(efx, &rule->acts);
drivers/net/ethernet/sfc/tc.c
1960
rc = efx_mae_insert_rule(efx, &rule->match, EFX_TC_PRIO_TC,
drivers/net/ethernet/sfc/tc.c
1961
rule->acts.fw_id, &rule->fw_id);
drivers/net/ethernet/sfc/tc.c
1969
efx_mae_free_action_set_list(efx, &rule->acts);
drivers/net/ethernet/sfc/tc.c
1978
if (rule) {
drivers/net/ethernet/sfc/tc.c
1981
&rule->linkage,
drivers/net/ethernet/sfc/tc.c
1983
efx_tc_free_action_set_list(efx, &rule->acts, false);
drivers/net/ethernet/sfc/tc.c
1985
kfree(rule);
drivers/net/ethernet/sfc/tc.c
1999
struct efx_tc_lhs_rule *rule, *old;
drivers/net/ethernet/sfc/tc.c
2019
rule = kzalloc_obj(*rule, GFP_USER);
drivers/net/ethernet/sfc/tc.c
2020
if (!rule)
drivers/net/ethernet/sfc/tc.c
2022
rule->cookie = tc->cookie;
drivers/net/ethernet/sfc/tc.c
2024
&rule->linkage,
drivers/net/ethernet/sfc/tc.c
2041
rc = efx_tc_flower_handle_lhs_actions(efx, tc, fr, efx->net_dev, rule);
drivers/net/ethernet/sfc/tc.c
2045
rule->match = *match;
drivers/net/ethernet/sfc/tc.c
2047
rc = efx_mae_insert_lhs_rule(efx, rule, EFX_TC_PRIO_TC);
drivers/net/ethernet/sfc/tc.c
2058
efx_tc_flower_release_lhs_actions(efx, &rule->lhs_act);
drivers/net/ethernet/sfc/tc.c
2060
rhashtable_remove_fast(&efx->tc->lhs_rule_ht, &rule->linkage,
drivers/net/ethernet/sfc/tc.c
2062
kfree(rule);
drivers/net/ethernet/sfc/tc.c
2074
struct efx_tc_flow_rule *rule = NULL, *old;
drivers/net/ethernet/sfc/tc.c
2180
rule = kzalloc_obj(*rule, GFP_USER);
drivers/net/ethernet/sfc/tc.c
2181
if (!rule) {
drivers/net/ethernet/sfc/tc.c
2185
INIT_LIST_HEAD(&rule->acts.list);
drivers/net/ethernet/sfc/tc.c
2186
rule->cookie = tc->cookie;
drivers/net/ethernet/sfc/tc.c
2188
&rule->linkage,
drivers/net/ethernet/sfc/tc.c
226
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_##_name)) { \
drivers/net/ethernet/sfc/tc.c
229
flow_rule_match_##_tcget(rule, &fm); \
drivers/net/ethernet/sfc/tc.c
2292
list_add_tail(&act->list, &rule->acts.list);
drivers/net/ethernet/sfc/tc.c
2336
list_add_tail(&act->list, &rule->acts.list);
drivers/net/ethernet/sfc/tc.c
2337
act->user = &rule->acts;
drivers/net/ethernet/sfc/tc.c
2377
list_add_tail(&act->list, &rule->acts.list);
drivers/net/ethernet/sfc/tc.c
239
struct flow_rule *rule,
drivers/net/ethernet/sfc/tc.c
243
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/sfc/tc.c
2495
list_add_tail(&act->list, &rule->acts.list);
drivers/net/ethernet/sfc/tc.c
2503
rule->match = match;
drivers/net/ethernet/sfc/tc.c
2505
rc = efx_mae_alloc_action_set_list(efx, &rule->acts);
drivers/net/ethernet/sfc/tc.c
2512
rule->fallback = &efx->tc->facts.pf;
drivers/net/ethernet/sfc/tc.c
2515
rule->fallback = &efx->tc->facts.reps;
drivers/net/ethernet/sfc/tc.c
2516
if (!efx_tc_check_ready(efx, rule)) {
drivers/net/ethernet/sfc/tc.c
2518
acts_id = rule->fallback->fw_id;
drivers/net/ethernet/sfc/tc.c
252
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/sfc/tc.c
2521
acts_id = rule->acts.fw_id;
drivers/net/ethernet/sfc/tc.c
2523
rc = efx_mae_insert_rule(efx, &rule->match, EFX_TC_PRIO_TC,
drivers/net/ethernet/sfc/tc.c
2524
acts_id, &rule->fw_id);
drivers/net/ethernet/sfc/tc.c
2532
efx_mae_free_action_set_list(efx, &rule->acts);
drivers/net/ethernet/sfc/tc.c
2541
if (rule) {
drivers/net/ethernet/sfc/tc.c
2544
&rule->linkage,
drivers/net/ethernet/sfc/tc.c
2546
efx_tc_free_action_set_list(efx, &rule->acts, false);
drivers/net/ethernet/sfc/tc.c
2548
kfree(rule);
drivers/net/ethernet/sfc/tc.c
255
flow_rule_match_control(rule, &fm);
drivers/net/ethernet/sfc/tc.c
2558
struct efx_tc_flow_rule *rule;
drivers/net/ethernet/sfc/tc.c
2577
rule = rhashtable_lookup_fast(&efx->tc->match_action_ht, &tc->cookie,
drivers/net/ethernet/sfc/tc.c
2579
if (!rule) {
drivers/net/ethernet/sfc/tc.c
2593
efx_tc_delete_rule(efx, rule);
drivers/net/ethernet/sfc/tc.c
2595
rhashtable_remove_fast(&efx->tc->match_action_ht, &rule->linkage,
drivers/net/ethernet/sfc/tc.c
2597
netif_dbg(efx, drv, efx->net_dev, "Removed filter %lx\n", rule->cookie);
drivers/net/ethernet/sfc/tc.c
2598
kfree(rule);
drivers/net/ethernet/sfc/tc.c
2666
u32 eg_port, struct efx_tc_flow_rule *rule)
drivers/net/ethernet/sfc/tc.c
2668
struct efx_tc_action_set_list *acts = &rule->acts;
drivers/net/ethernet/sfc/tc.c
2669
struct efx_tc_match *match = &rule->match;
drivers/net/ethernet/sfc/tc.c
2689
acts->fw_id, &rule->fw_id);
drivers/net/ethernet/sfc/tc.c
2705
struct efx_tc_flow_rule *rule = &efx->tc->dflt.pf;
drivers/net/ethernet/sfc/tc.c
2710
return efx_tc_configure_default_rule(efx, ing_port, eg_port, rule);
drivers/net/ethernet/sfc/tc.c
2715
struct efx_tc_flow_rule *rule = &efx->tc->dflt.wire;
drivers/net/ethernet/sfc/tc.c
2720
return efx_tc_configure_default_rule(efx, ing_port, eg_port, rule);
drivers/net/ethernet/sfc/tc.c
2725
struct efx_tc_flow_rule *rule = &efv->dflt;
drivers/net/ethernet/sfc/tc.c
2731
return efx_tc_configure_default_rule(efx, ing_port, eg_port, rule);
drivers/net/ethernet/sfc/tc.c
2735
struct efx_tc_flow_rule *rule)
drivers/net/ethernet/sfc/tc.c
2737
if (rule->fw_id != MC_CMD_MAE_ACTION_RULE_INSERT_OUT_ACTION_RULE_ID_NULL)
drivers/net/ethernet/sfc/tc.c
2738
efx_tc_delete_rule(efx, rule);
drivers/net/ethernet/sfc/tc.c
2739
rule->fw_id = MC_CMD_MAE_ACTION_RULE_INSERT_OUT_ACTION_RULE_ID_NULL;
drivers/net/ethernet/sfc/tc.c
2945
struct efx_tc_lhs_rule *rule = ptr;
drivers/net/ethernet/sfc/tc.c
2950
rule->cookie);
drivers/net/ethernet/sfc/tc.c
2952
if (rule->lhs_act.zone)
drivers/net/ethernet/sfc/tc.c
2953
efx_tc_ct_unregister_zone(efx, rule->lhs_act.zone);
drivers/net/ethernet/sfc/tc.c
2954
if (rule->lhs_act.count)
drivers/net/ethernet/sfc/tc.c
2955
efx_tc_flower_put_counter_index(efx, rule->lhs_act.count);
drivers/net/ethernet/sfc/tc.c
2956
efx_mae_remove_lhs_rule(efx, rule);
drivers/net/ethernet/sfc/tc.c
2958
kfree(rule);
drivers/net/ethernet/sfc/tc.c
2971
struct efx_tc_flow_rule *rule = ptr;
drivers/net/ethernet/sfc/tc.c
2976
rule->cookie);
drivers/net/ethernet/sfc/tc.c
2979
efx_tc_delete_rule(efx, rule);
drivers/net/ethernet/sfc/tc.c
2981
kfree(rule);
drivers/net/ethernet/sfc/tc.c
321
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/sfc/tc.c
324
flow_rule_match_vlan(rule, &fm);
drivers/net/ethernet/sfc/tc.c
335
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CVLAN)) {
drivers/net/ethernet/sfc/tc.c
338
flow_rule_match_cvlan(rule, &fm);
drivers/net/ethernet/sfc/tc.c
349
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/sfc/tc.c
352
flow_rule_match_eth_addrs(rule, &fm);
drivers/net/ethernet/sfc/tc.c
386
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_CONTROL)) {
drivers/net/ethernet/sfc/tc.c
389
flow_rule_match_enc_control(rule, &fm);
drivers/net/ethernet/sfc/tc.c
435
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CT)) {
drivers/net/ethernet/sfc/tc.c
438
flow_rule_match_ct(rule, &fm);
drivers/net/ethernet/sfc/tc.c
743
static void efx_tc_delete_rule(struct efx_nic *efx, struct efx_tc_flow_rule *rule)
drivers/net/ethernet/sfc/tc.c
745
efx_mae_delete_rule(efx, rule->fw_id);
drivers/net/ethernet/sfc/tc.c
748
efx_tc_free_action_set_list(efx, &rule->acts, true);
drivers/net/ethernet/sfc/tc.c
749
if (rule->match.rid)
drivers/net/ethernet/sfc/tc.c
750
efx_tc_put_recirc_id(efx, rule->match.rid);
drivers/net/ethernet/sfc/tc.c
751
if (rule->match.encap)
drivers/net/ethernet/sfc/tc.c
752
efx_tc_flower_release_encap_match(efx, rule->match.encap);
drivers/net/ethernet/sfc/tc.c
753
rule->fw_id = MC_CMD_MAE_ACTION_RULE_INSERT_OUT_ACTION_RULE_ID_NULL;
drivers/net/ethernet/sfc/tc.c
971
struct efx_tc_lhs_rule *rule)
drivers/net/ethernet/sfc/tc.c
975
struct efx_tc_lhs_action *act = &rule->lhs_act;
drivers/net/ethernet/sfc/tc.c
981
ctype = rule->is_ar ? EFX_TC_COUNTER_TYPE_AR : EFX_TC_COUNTER_TYPE_OR;
drivers/net/ethernet/sfc/tc.h
346
struct efx_tc_flow_rule *rule);
drivers/net/ethernet/sfc/tc_encap_actions.c
434
struct efx_tc_flow_rule *rule;
drivers/net/ethernet/sfc/tc_encap_actions.c
444
rule = container_of(acts, struct efx_tc_flow_rule, acts);
drivers/net/ethernet/sfc/tc_encap_actions.c
445
if (rule->fallback)
drivers/net/ethernet/sfc/tc_encap_actions.c
446
fallback = rule->fallback;
drivers/net/ethernet/sfc/tc_encap_actions.c
450
rule->fw_id);
drivers/net/ethernet/sfc/tc_encap_actions.c
454
rule->fw_id, rc);
drivers/net/ethernet/sfc/tc_encap_actions.c
457
rule->fw_id);
drivers/net/ethernet/sfc/tc_encap_actions.c
492
rule = container_of(acts, struct efx_tc_flow_rule, acts);
drivers/net/ethernet/sfc/tc_encap_actions.c
493
if (!efx_tc_check_ready(efx, rule))
drivers/net/ethernet/sfc/tc_encap_actions.c
495
rc = efx_mae_update_rule(efx, acts->fw_id, rule->fw_id);
drivers/net/ethernet/sfc/tc_encap_actions.c
499
rule->fw_id, rc);
drivers/net/ethernet/sfc/tc_encap_actions.c
502
rule->fw_id);
drivers/net/ethernet/sfc/tc_encap_actions.c
587
bool efx_tc_check_ready(struct efx_nic *efx, struct efx_tc_flow_rule *rule)
drivers/net/ethernet/sfc/tc_encap_actions.c
594
list_for_each_entry(act, &rule->acts.list, list)
drivers/net/ethernet/sfc/tc_encap_actions.h
92
bool efx_tc_check_ready(struct efx_nic *efx, struct efx_tc_flow_rule *rule);
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1339
struct flow_rule *rule;
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1371
rule = kzalloc_flex(*rule, action.entries, 1);
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1372
if (!rule) {
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1377
rule->match.dissector = dissector;
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1378
rule->match.key = (void *)&key;
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1379
rule->match.mask = (void *)&mask;
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1386
cls->rule = rule;
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1388
rule->action.entries[0].id = FLOW_ACTION_DROP;
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1389
rule->action.entries[0].hw_stats = FLOW_ACTION_HW_STATS_ANY;
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1390
rule->action.num_entries = 1;
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1412
kfree(rule);
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1465
struct flow_rule *rule;
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1499
rule = kzalloc_flex(*rule, action.entries, 1);
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1500
if (!rule) {
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1505
rule->match.dissector = dissector;
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1506
rule->match.key = (void *)&keys;
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1507
rule->match.mask = (void *)&masks;
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1515
cls->rule = rule;
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1517
rule->action.entries[0].id = FLOW_ACTION_DROP;
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1518
rule->action.entries[0].hw_stats = FLOW_ACTION_HW_STATS_ANY;
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1519
rule->action.num_entries = 1;
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
1543
kfree(rule);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
454
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
455
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
462
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
472
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
473
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
483
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
507
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
508
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
530
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
583
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
592
ret = tc_parse_flow_actions(priv, &rule->action, entry,
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
657
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
658
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
681
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
728
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
729
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
748
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/ti/am65-cpsw-qos.c
1028
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/ti/am65-cpsw-qos.c
1029
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/ti/am65-cpsw-qos.c
1044
if (flow_rule_match_has_control_flags(rule, extack))
drivers/net/ethernet/ti/am65-cpsw-qos.c
1047
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/ti/am65-cpsw-qos.c
1052
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/ti/am65-cpsw-qos.c
1121
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/ti/am65-cpsw-qos.c
1126
flow_action_for_each(i, act, &rule->action) {
drivers/net/ethernet/ti/am65-cpsw-qos.c
1129
ret = am65_cpsw_qos_clsflower_policer_validate(&rule->action, act, extack);
drivers/net/ethernet/ti/cpsw_priv.c
1371
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/ti/cpsw_priv.c
1372
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/ti/cpsw_priv.c
1387
if (flow_rule_match_has_control_flags(rule, extack))
drivers/net/ethernet/ti/cpsw_priv.c
1390
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/ti/cpsw_priv.c
1395
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/ti/cpsw_priv.c
1465
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/ti/cpsw_priv.c
1470
flow_action_for_each(i, act, &rule->action) {
drivers/net/ethernet/ti/cpsw_priv.c
1473
ret = cpsw_qos_clsflower_policer_validate(&rule->action, act, extack);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
113
struct txgbe_fdir_filter *rule = NULL;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
119
hlist_for_each_entry_safe(rule, node, &txgbe->fdir_filter_list,
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
121
if (fsp->location <= rule->sw_idx)
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
125
if (!rule || fsp->location != rule->sw_idx)
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
129
switch (rule->filter.formatted.flow_type) {
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
149
fsp->h_u.tcp_ip4_spec.psrc = rule->filter.formatted.src_port;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
151
fsp->h_u.tcp_ip4_spec.pdst = rule->filter.formatted.dst_port;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
153
fsp->h_u.tcp_ip4_spec.ip4src = rule->filter.formatted.src_ip[0];
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
155
fsp->h_u.tcp_ip4_spec.ip4dst = rule->filter.formatted.dst_ip[0];
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
157
fsp->h_ext.vlan_etype = rule->filter.formatted.flex_bytes;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
159
fsp->h_ext.data[1] = htonl(rule->filter.formatted.vm_pool);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
164
if (rule->action == TXGBE_RDB_FDIR_DROP_QUEUE)
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
167
fsp->ring_cookie = rule->action;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
176
struct txgbe_fdir_filter *rule;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
183
hlist_for_each_entry_safe(rule, node, &txgbe->fdir_filter_list,
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
187
rule_locs[cnt] = rule->sw_idx;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
272
struct txgbe_fdir_filter *rule = NULL;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
275
hlist_for_each_entry_safe(rule, node2, &txgbe->fdir_filter_list,
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
277
if (rule->filter.formatted.bkt_hash ==
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
279
rule->action == input->action) {
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
292
struct txgbe_fdir_filter *rule;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
297
hlist_for_each_entry_safe(rule, node, &txgbe->fdir_filter_list,
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
300
if (rule->sw_idx >= sw_idx)
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
306
if (rule && rule->sw_idx == sw_idx) {
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
312
(!input || rule->filter.formatted.bkt_hash !=
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
315
&rule->filter,
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
321
hlist_del(&rule->fdir_node);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
322
kfree(rule);
drivers/net/ipa/ipa_endpoint.c
1517
u32 rule;
drivers/net/ipa/ipa_endpoint.c
1529
rule = ipa_status_extract(ipa, data, STATUS_ROUTER_RULE_INDEX);
drivers/net/ipa/ipa_endpoint.c
1531
return rule == IPA_STATUS_RULE_MISS;
drivers/net/wireless/ath/ath11k/wmi.c
5426
const struct wmi_regulatory_ext_rule *rule)
drivers/net/wireless/ath/ath11k/wmi.c
5432
start_freq = u32_get_bits(rule[count].freq_info,
drivers/net/wireless/ath/ath12k/wmi.c
5780
static u8 ath12k_wmi_ignore_num_extra_rules(struct ath12k_wmi_reg_rule_ext_params *rule,
drivers/net/wireless/ath/ath12k/wmi.c
5787
start_freq = le32_get_bits(rule[count].freq_info, REG_RULE_START_FREQ);
drivers/net/wireless/broadcom/brcm80211/brcmsmac/channel.c
663
const struct ieee80211_reg_rule *rule;
drivers/net/wireless/broadcom/brcm80211/brcmsmac/channel.c
679
rule = freq_reg_info(wiphy,
drivers/net/wireless/broadcom/brcm80211/brcmsmac/channel.c
681
if (IS_ERR(rule))
drivers/net/wireless/broadcom/brcm80211/brcmsmac/channel.c
684
if (!(rule->flags & NL80211_RRF_NO_IR))
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1653
struct ieee80211_reg_rule *rule;
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1722
rule = &regd->reg_rules[valid_rules - 1];
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1725
rule->freq_range.start_freq_khz =
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1728
rule->freq_range.end_freq_khz = MHZ_TO_KHZ(center_freq + 10);
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1731
rule->power_rule.max_antenna_gain = DBI_TO_MBI(6);
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1732
rule->power_rule.max_eirp =
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1735
rule->flags = reg_rule_flags;
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1738
rule->flags |= NL80211_RRF_AUTO_BW;
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1739
rule->freq_range.max_bandwidth_khz = 0;
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1751
reg_query_regdb_wmm(regd->alpha2, center_freq, rule);
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1764
rule = &regd->reg_rules[valid_rules - 1];
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1765
rule->freq_range.start_freq_khz = MHZ_TO_KHZ(2412);
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1766
rule->freq_range.end_freq_khz = MHZ_TO_KHZ(2413);
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1767
rule->freq_range.max_bandwidth_khz = MHZ_TO_KHZ(1);
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1768
rule->power_rule.max_antenna_gain = DBI_TO_MBI(6);
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1769
rule->power_rule.max_eirp =
drivers/net/wireless/marvell/libertas/host.h
847
struct host_wol_rule rule[MAX_WOL_RULES];
drivers/net/wireless/marvell/mwifiex/cfg80211.c
3769
&coalesce_cfg.rule[i]);
drivers/net/wireless/marvell/mwifiex/ioctl.h
466
struct mwifiex_coalesce_rule rule[MWIFIEX_COALESCE_MAX_RULES];
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1733
struct coalesce_receive_filt_rule *rule;
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1740
rule = (void *)coalesce_cfg->rule_data;
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1743
rule->header.type = cpu_to_le16(TLV_TYPE_COALESCE_RULE);
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1744
rule->max_coalescing_delay =
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1745
cpu_to_le16(cfg->rule[cnt].max_coalescing_delay);
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1746
rule->pkt_type = cfg->rule[cnt].pkt_type;
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1747
rule->num_of_fields = cfg->rule[cnt].num_of_fields;
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1751
param = rule->params;
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1752
for (idx = 0; idx < cfg->rule[cnt].num_of_fields; idx++) {
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1753
param->operation = cfg->rule[cnt].params[idx].operation;
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1755
cfg->rule[cnt].params[idx].operand_len;
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1757
cpu_to_le16(cfg->rule[cnt].params[idx].offset);
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1759
cfg->rule[cnt].params[idx].operand_byte_stream,
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1771
rule->header.len = cpu_to_le16(length + sizeof(u16) +
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1776
le16_to_cpu(rule->header.len) +
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1779
rule = (void *)((u8 *)rule->params + length);
drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
1046
struct ieee80211_reg_rule *rule;
drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
1096
rule = &regd->reg_rules[valid_rules - 1];
drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
1098
rule->freq_range.end_freq_khz = MHZ_TO_KHZ(freq + 10);
drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
1107
rule->freq_range.start_freq_khz = MHZ_TO_KHZ(freq - 10);
drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
1108
rule->power_rule.max_eirp = DBM_TO_MBM(19);
drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
1111
rule->flags = NL80211_RRF_NO_IR;
drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
1114
rule->flags = NL80211_RRF_DFS;
drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
1116
rule->freq_range.max_bandwidth_khz = bw;
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
1352
struct mt7921_clc_rule *rule = (struct mt7921_clc_rule *)pos;
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
1353
u16 len = le16_to_cpu(rule->len);
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
1354
u16 offset = len + sizeof(*rule);
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
1358
if (rule->alpha2[0] != alpha2[0] ||
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
1359
rule->alpha2[1] != alpha2[1])
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
1362
memcpy(req.alpha2, rule->alpha2, 2);
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
1363
memcpy(req.type, rule->type, 2);
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
1371
skb_put_data(skb, rule->data, len);
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3393
struct mt7925_clc_rule *rule = (struct mt7925_clc_rule *)pos;
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3395
pos += sizeof(*rule);
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3396
if (rule->alpha2[0] != alpha2[0] ||
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3397
rule->alpha2[1] != alpha2[1])
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3401
+ rule->seg_idx - 1;
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3403
memcpy(req.alpha2, rule->alpha2, 2);
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3404
memcpy(req.type, rule->type, 2);
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3407
dev->phy.clc_chan_conf = clc->ver == 1 ? 0xff : rule->flag;
drivers/net/wireless/mediatek/mt76/mt7925/regd.c
24
struct mt7925_clc_rule_v2 *rule;
drivers/net/wireless/mediatek/mt76/mt7925/regd.c
43
rule = (struct mt7925_clc_rule_v2 *)pos;
drivers/net/wireless/mediatek/mt76/mt7925/regd.c
45
if (rule->alpha2[0] == alpha2[0] &&
drivers/net/wireless/mediatek/mt76/mt7925/regd.c
46
rule->alpha2[1] == alpha2[1]) {
drivers/net/wireless/mediatek/mt76/mt7925/regd.c
52
if (rule->flag & BIT(0))
drivers/net/wireless/mediatek/mt76/mt7925/regd.c
55
pos += sizeof(*rule);
drivers/net/wireless/quantenna/qtnfmac/commands.c
1027
struct ieee80211_reg_rule *rule;
drivers/net/wireless/quantenna/qtnfmac/commands.c
1157
rule = &mac->rd->reg_rules[rule_idx++];
drivers/net/wireless/quantenna/qtnfmac/commands.c
1158
qlink_utils_regrule_q2nl(rule, tlv_rule);
drivers/net/wireless/quantenna/qtnfmac/qlink_util.c
292
void qlink_utils_regrule_q2nl(struct ieee80211_reg_rule *rule,
drivers/net/wireless/quantenna/qtnfmac/qlink_util.c
295
rule->freq_range.start_freq_khz = le32_to_cpu(tlv->start_freq_khz);
drivers/net/wireless/quantenna/qtnfmac/qlink_util.c
296
rule->freq_range.end_freq_khz = le32_to_cpu(tlv->end_freq_khz);
drivers/net/wireless/quantenna/qtnfmac/qlink_util.c
297
rule->freq_range.max_bandwidth_khz =
drivers/net/wireless/quantenna/qtnfmac/qlink_util.c
299
rule->power_rule.max_antenna_gain = le32_to_cpu(tlv->max_antenna_gain);
drivers/net/wireless/quantenna/qtnfmac/qlink_util.c
300
rule->power_rule.max_eirp = le32_to_cpu(tlv->max_eirp);
drivers/net/wireless/quantenna/qtnfmac/qlink_util.c
301
rule->dfs_cac_ms = le32_to_cpu(tlv->dfs_cac_ms);
drivers/net/wireless/quantenna/qtnfmac/qlink_util.c
302
rule->flags = qtnf_reg_rule_flags_parse(le32_to_cpu(tlv->flags));
drivers/net/wireless/quantenna/qtnfmac/qlink_util.h
57
void qlink_utils_regrule_q2nl(struct ieee80211_reg_rule *rule,
drivers/net/wireless/realtek/rtw89/debug.c
4687
const void *rule, *rule_end;
drivers/net/wireless/realtek/rtw89/debug.c
4709
rule = &elm->u.diag_mac.rules_and_msgs[0];
drivers/net/wireless/realtek/rtw89/debug.c
4713
for (limit = 0; limit < 5000 && rule < rule_end; limit++) {
drivers/net/wireless/realtek/rtw89/debug.c
4714
const struct __diag_mac_rule_header *rh = rule;
drivers/net/wireless/realtek/rtw89/debug.c
4742
p += rtw89_mac_diag_do_equalv(rtwdev, p, end - p, rule,
drivers/net/wireless/realtek/rtw89/debug.c
4746
p += rtw89_mac_diag_do_increment(rtwdev, p, end - p, rule,
drivers/net/wireless/realtek/rtw89/debug.c
4756
rule += rh->len * 4;
drivers/net/wireless/ti/wl12xx/main.c
212
.rule = CONF_BCN_RULE_PASS_ON_APPEARANCE,
drivers/net/wireless/ti/wl12xx/main.c
216
.rule = CONF_BCN_RULE_PASS_ON_CHANGE,
drivers/net/wireless/ti/wl12xx/main.c
220
.rule = CONF_BCN_RULE_PASS_ON_CHANGE,
drivers/net/wireless/ti/wl18xx/main.c
353
.rule = CONF_BCN_RULE_PASS_ON_APPEARANCE,
drivers/net/wireless/ti/wl18xx/main.c
357
.rule = CONF_BCN_RULE_PASS_ON_CHANGE,
drivers/net/wireless/ti/wl18xx/main.c
361
.rule = CONF_BCN_RULE_PASS_ON_CHANGE,
drivers/net/wireless/ti/wlcore/acx.c
402
ie_table->table[idx++] = r->rule;
drivers/net/wireless/ti/wlcore/conf.h
507
u8 rule;
drivers/pnp/manager.c
101
if (rule->flags & IORESOURCE_MEM_RANGELENGTH)
drivers/pnp/manager.c
103
if (rule->flags & IORESOURCE_MEM_SHADOWABLE)
drivers/pnp/manager.c
106
if (!rule->size) {
drivers/pnp/manager.c
112
res->start = rule->min;
drivers/pnp/manager.c
113
res->end = res->start + rule->size - 1;
drivers/pnp/manager.c
116
res->start += rule->align;
drivers/pnp/manager.c
117
res->end = res->start + rule->size - 1;
drivers/pnp/manager.c
118
if (res->start > rule->max || !rule->align) {
drivers/pnp/manager.c
121
(unsigned long long) rule->min,
drivers/pnp/manager.c
122
(unsigned long long) rule->max);
drivers/pnp/manager.c
132
static int pnp_assign_irq(struct pnp_dev *dev, struct pnp_irq *rule, int idx)
drivers/pnp/manager.c
142
res = pnp_find_resource(dev, rule->flags, IORESOURCE_IRQ, idx);
drivers/pnp/manager.c
150
res->flags = rule->flags | IORESOURCE_AUTO;
drivers/pnp/manager.c
154
if (bitmap_empty(rule->map.bits, PNP_IRQ_NR)) {
drivers/pnp/manager.c
161
res->start = find_next_bit(rule->map.bits, PNP_IRQ_NR, 16);
drivers/pnp/manager.c
167
if (test_bit(xtab[i], rule->map.bits)) {
drivers/pnp/manager.c
174
if (rule->flags & IORESOURCE_IRQ_OPTIONAL) {
drivers/pnp/manager.c
191
static int pnp_assign_dma(struct pnp_dev *dev, struct pnp_dma *rule, int idx)
drivers/pnp/manager.c
201
res = pnp_find_resource(dev, rule->flags, IORESOURCE_DMA, idx);
drivers/pnp/manager.c
209
res->flags = rule->flags | IORESOURCE_AUTO;
drivers/pnp/manager.c
213
if (!rule->map) {
drivers/pnp/manager.c
220
if (rule->map & (1 << xtab[i])) {
drivers/pnp/manager.c
23
unsigned char rule,
drivers/pnp/manager.c
32
res->flags |= rule & IORESOURCE_BITS;
drivers/pnp/manager.c
38
static int pnp_assign_port(struct pnp_dev *dev, struct pnp_port *rule, int idx)
drivers/pnp/manager.c
42
res = pnp_find_resource(dev, rule->flags, IORESOURCE_IO, idx);
drivers/pnp/manager.c
51
res->flags = rule->flags | IORESOURCE_AUTO;
drivers/pnp/manager.c
55
if (!rule->size) {
drivers/pnp/manager.c
61
res->start = rule->min;
drivers/pnp/manager.c
62
res->end = res->start + rule->size - 1;
drivers/pnp/manager.c
65
res->start += rule->align;
drivers/pnp/manager.c
66
res->end = res->start + rule->size - 1;
drivers/pnp/manager.c
67
if (res->start > rule->max || !rule->align) {
drivers/pnp/manager.c
70
(unsigned long long) rule->min,
drivers/pnp/manager.c
71
(unsigned long long) rule->max);
drivers/pnp/manager.c
81
static int pnp_assign_mem(struct pnp_dev *dev, struct pnp_mem *rule, int idx)
drivers/pnp/manager.c
85
res = pnp_find_resource(dev, rule->flags, IORESOURCE_MEM, idx);
drivers/pnp/manager.c
94
res->flags = rule->flags | IORESOURCE_AUTO;
drivers/pnp/manager.c
99
if (!(rule->flags & IORESOURCE_MEM_WRITEABLE))
drivers/s390/crypto/zcrypt_msgtype6.c
1290
char rule[8];
drivers/s390/crypto/zcrypt_msgtype6.h
128
char rule[8];
drivers/s390/crypto/zcrypt_msgtype6.h
155
memcpy(msg->rule, "RANDOM ", 8);
fs/ceph/locks.c
121
req->r_args.filelock_change.rule = lock_type;
fs/ceph/locks.c
168
if (req->r_args.filelock_change.rule == CEPH_LOCK_FCNTL)
fs/ceph/locks.c
170
else if (req->r_args.filelock_change.rule == CEPH_LOCK_FLOCK)
fs/ceph/locks.c
215
intr_req->r_args.filelock_change.rule = lock_type;
fs/ntfs3/fslog.c
2676
root->rule != NTFS_COLLATION_TYPE_FILENAME) ||
fs/ntfs3/fsntfs.c
1901
root_sdh->rule != NTFS_COLLATION_TYPE_SECURITY_HASH ||
fs/ntfs3/fsntfs.c
1921
root_sii->rule != NTFS_COLLATION_TYPE_UINT ||
fs/ntfs3/fsntfs.c
2307
root_r->rule != NTFS_COLLATION_TYPE_UINTS) {
fs/ntfs3/fsntfs.c
2345
root->rule != NTFS_COLLATION_TYPE_UINTS) {
fs/ntfs3/index.c
172
if (root->rule == NTFS_COLLATION_TYPE_FILENAME)
fs/ntfs3/index.c
176
switch (root->rule) {
fs/ntfs3/inode.c
284
root->rule != NTFS_COLLATION_TYPE_FILENAME)
fs/ntfs3/ntfs.h
798
enum COLLATION_RULE rule; // 0x04: The rule.
fs/ntfs3/ntfs.h
834
enum COLLATION_RULE rule; // 0x88:
include/linux/ceph/ceph_fs.h
465
__u8 rule; /* currently fcntl or flock */
include/linux/ethtool.h
1311
struct flow_rule *rule;
include/linux/ethtool.h
1322
void ethtool_rx_flow_rule_destroy(struct ethtool_rx_flow_rule *rule);
include/linux/mlx4/device.h
1450
struct mlx4_net_trans_rule *rule, u64 *reg_id);
include/linux/mroute.h
24
bool ipmr_rule_default(const struct fib_rule *rule);
include/linux/mroute.h
54
static inline bool ipmr_rule_default(const struct fib_rule *rule)
include/linux/mroute6.h
75
bool ip6mr_rule_default(const struct fib_rule *rule);
include/linux/mroute6.h
77
static inline bool ip6mr_rule_default(const struct fib_rule *rule)
include/net/cfg80211.h
7734
struct ieee80211_reg_rule *rule);
include/net/fib_rules.h
106
struct fib_rule *rule;
include/net/fib_rules.h
109
static inline void fib_rule_get(struct fib_rule *rule)
include/net/fib_rules.h
111
refcount_inc(&rule->refcnt);
include/net/fib_rules.h
114
static inline void fib_rule_put(struct fib_rule *rule)
include/net/fib_rules.h
116
if (refcount_dec_and_test(&rule->refcnt))
include/net/fib_rules.h
117
kfree_rcu(rule, rcu);
include/net/fib_rules.h
121
static inline u32 fib_rule_get_table(struct fib_rule *rule,
include/net/fib_rules.h
124
return rule->l3mdev ? arg->table : rule->table;
include/net/fib_rules.h
127
static inline u32 fib_rule_get_table(struct fib_rule *rule,
include/net/fib_rules.h
130
return rule->table;
include/net/fib_rules.h
183
static inline bool fib_rule_requires_fldissect(struct fib_rule *rule)
include/net/fib_rules.h
185
return rule->iifindex != LOOPBACK_IFINDEX && (rule->ip_proto ||
include/net/fib_rules.h
186
fib_rule_port_range_set(&rule->sport_range) ||
include/net/fib_rules.h
187
fib_rule_port_range_set(&rule->dport_range));
include/net/fib_rules.h
197
bool fib_rule_matchall(const struct fib_rule *rule);
include/net/fib_rules.h
207
INDIRECT_CALLABLE_DECLARE(int fib6_rule_match(struct fib_rule *rule,
include/net/fib_rules.h
209
INDIRECT_CALLABLE_DECLARE(int fib4_rule_match(struct fib_rule *rule,
include/net/fib_rules.h
212
INDIRECT_CALLABLE_DECLARE(int fib6_rule_action(struct fib_rule *rule,
include/net/fib_rules.h
215
INDIRECT_CALLABLE_DECLARE(int fib4_rule_action(struct fib_rule *rule,
include/net/fib_rules.h
219
INDIRECT_CALLABLE_DECLARE(bool fib6_rule_suppress(struct fib_rule *rule,
include/net/fib_rules.h
222
INDIRECT_CALLABLE_DECLARE(bool fib4_rule_suppress(struct fib_rule *rule,
include/net/fib_rules.h
57
struct fib_rule *rule;
include/net/flow_offload.h
101
void flow_rule_match_control(const struct flow_rule *rule,
include/net/flow_offload.h
103
void flow_rule_match_eth_addrs(const struct flow_rule *rule,
include/net/flow_offload.h
105
void flow_rule_match_vlan(const struct flow_rule *rule,
include/net/flow_offload.h
107
void flow_rule_match_cvlan(const struct flow_rule *rule,
include/net/flow_offload.h
109
void flow_rule_match_arp(const struct flow_rule *rule,
include/net/flow_offload.h
111
void flow_rule_match_ipv4_addrs(const struct flow_rule *rule,
include/net/flow_offload.h
113
void flow_rule_match_ipv6_addrs(const struct flow_rule *rule,
include/net/flow_offload.h
115
void flow_rule_match_ip(const struct flow_rule *rule,
include/net/flow_offload.h
117
void flow_rule_match_ports(const struct flow_rule *rule,
include/net/flow_offload.h
119
void flow_rule_match_ports_range(const struct flow_rule *rule,
include/net/flow_offload.h
121
void flow_rule_match_tcp(const struct flow_rule *rule,
include/net/flow_offload.h
123
void flow_rule_match_ipsec(const struct flow_rule *rule,
include/net/flow_offload.h
125
void flow_rule_match_icmp(const struct flow_rule *rule,
include/net/flow_offload.h
127
void flow_rule_match_mpls(const struct flow_rule *rule,
include/net/flow_offload.h
129
void flow_rule_match_enc_control(const struct flow_rule *rule,
include/net/flow_offload.h
131
void flow_rule_match_enc_ipv4_addrs(const struct flow_rule *rule,
include/net/flow_offload.h
133
void flow_rule_match_enc_ipv6_addrs(const struct flow_rule *rule,
include/net/flow_offload.h
135
void flow_rule_match_enc_ip(const struct flow_rule *rule,
include/net/flow_offload.h
137
void flow_rule_match_enc_ports(const struct flow_rule *rule,
include/net/flow_offload.h
139
void flow_rule_match_enc_keyid(const struct flow_rule *rule,
include/net/flow_offload.h
141
void flow_rule_match_enc_opts(const struct flow_rule *rule,
include/net/flow_offload.h
143
void flow_rule_match_ct(const struct flow_rule *rule,
include/net/flow_offload.h
145
void flow_rule_match_pppoe(const struct flow_rule *rule,
include/net/flow_offload.h
147
void flow_rule_match_l2tpv3(const struct flow_rule *rule,
include/net/flow_offload.h
448
static inline bool flow_rule_match_key(const struct flow_rule *rule,
include/net/flow_offload.h
451
return dissector_uses_key(rule->match.dissector, key);
include/net/flow_offload.h
531
static inline bool flow_rule_match_has_control_flags(const struct flow_rule *rule,
include/net/flow_offload.h
536
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL))
include/net/flow_offload.h
539
flow_rule_match_control(rule, &match);
include/net/flow_offload.h
699
struct flow_rule *rule;
include/net/flow_offload.h
725
return flow_cmd->rule;
include/net/flow_offload.h
97
void flow_rule_match_meta(const struct flow_rule *rule,
include/net/flow_offload.h
99
void flow_rule_match_basic(const struct flow_rule *rule,
include/net/ip6_fib.h
652
bool fib6_rule_default(const struct fib_rule *rule);
include/net/ip6_fib.h
690
static inline bool fib6_rule_default(const struct fib_rule *rule)
include/net/ip_fib.h
341
static inline bool fib4_rule_default(const struct fib_rule *rule)
include/net/ip_fib.h
413
bool fib4_rule_default(const struct fib_rule *rule);
include/net/netfilter/nf_flow_table.h
49
struct flow_rule *rule;
include/net/netfilter/nf_tables.h
1012
static inline struct nft_expr *nft_expr_first(const struct nft_rule *rule)
include/net/netfilter/nf_tables.h
1014
return (struct nft_expr *)&rule->data[0];
include/net/netfilter/nf_tables.h
1022
static inline struct nft_expr *nft_expr_last(const struct nft_rule *rule)
include/net/netfilter/nf_tables.h
1024
return (struct nft_expr *)&rule->data[rule->dlen];
include/net/netfilter/nf_tables.h
1027
static inline bool nft_expr_more(const struct nft_rule *rule,
include/net/netfilter/nf_tables.h
1030
return expr != nft_expr_last(rule) && expr->ops;
include/net/netfilter/nf_tables.h
1033
static inline struct nft_userdata *nft_userdata(const struct nft_rule *rule)
include/net/netfilter/nf_tables.h
1035
return (void *)&rule->data[rule->dlen];
include/net/netfilter/nf_tables.h
1038
void nft_rule_expr_activate(const struct nft_ctx *ctx, struct nft_rule *rule);
include/net/netfilter/nf_tables.h
1039
void nft_rule_expr_deactivate(const struct nft_ctx *ctx, struct nft_rule *rule,
include/net/netfilter/nf_tables.h
1041
void nf_tables_rule_destroy(const struct nft_ctx *ctx, struct nft_rule *rule);
include/net/netfilter/nf_tables.h
1066
#define nft_rule_for_each_expr(expr, last, rule) \
include/net/netfilter/nf_tables.h
1067
for ((expr) = nft_expr_first(rule), (last) = nft_expr_last(rule); \
include/net/netfilter/nf_tables.h
1088
static inline const struct nft_rule_dp *nft_rule_next(const struct nft_rule_dp *rule)
include/net/netfilter/nf_tables.h
1090
return (void *)rule + sizeof(*rule) + rule->dlen;
include/net/netfilter/nf_tables.h
1535
const struct nft_rule_dp *rule,
include/net/netfilter/nf_tables.h
1693
struct nft_rule *rule;
include/net/netfilter/nf_tables.h
1703
nft_trans_container_rule(trans)->rule
include/net/netfilter/nf_tables_offload.h
67
struct flow_rule *rule;
include/net/netfilter/nf_tables_offload.h
74
struct nft_flow_rule *nft_flow_rule_create(struct net *net, const struct nft_rule *rule);
include/net/netfilter/nf_tables_offload.h
75
int nft_flow_rule_stats(const struct nft_chain *chain, const struct nft_rule *rule);
include/net/pkt_cls.h
794
struct flow_rule *rule;
include/soc/mscc/ocelot_vcap.h
723
struct ocelot_vcap_filter *rule,
include/soc/mscc/ocelot_vcap.h
726
struct ocelot_vcap_filter *rule);
include/sound/pcm.h
245
struct snd_pcm_hw_rule *rule);
kernel/audit.h
298
extern int audit_make_tree(struct audit_krule *rule, char *pathname, u32 op);
kernel/audit.h
299
extern int audit_add_tree_rule(struct audit_krule *rule);
kernel/audit.h
300
extern int audit_remove_tree_rule(struct audit_krule *rule);
kernel/audit.h
329
#define audit_remove_tree_rule(rule) BUG()
kernel/audit.h
330
#define audit_add_tree_rule(rule) -EINVAL
kernel/audit.h
331
#define audit_make_tree(rule, str, op) -EINVAL
kernel/audit.h
335
#define audit_tree_path(rule) "" /* never called */
kernel/audit.h
53
struct audit_krule rule;
kernel/audit_fsnotify.c
102
audit_mark->rule = krule;
kernel/audit_fsnotify.c
119
struct audit_krule *rule = audit_mark->rule;
kernel/audit_fsnotify.c
129
audit_log_key(ab, rule->filterkey);
kernel/audit_fsnotify.c
130
audit_log_format(ab, " list=%d res=1", rule->listnr);
kernel/audit_fsnotify.c
149
struct audit_krule *rule = audit_mark->rule;
kernel/audit_fsnotify.c
150
struct audit_entry *entry = container_of(rule, struct audit_entry, rule);
kernel/audit_fsnotify.c
31
struct audit_krule *rule;
kernel/audit_tree.c
528
struct audit_krule *rule)
kernel/audit_tree.c
538
audit_log_untrustedstring(ab, rule->tree->pathname);
kernel/audit_tree.c
539
audit_log_key(ab, rule->filterkey);
kernel/audit_tree.c
540
audit_log_format(ab, " list=%d res=1", rule->listnr);
kernel/audit_tree.c
546
struct audit_krule *rule, *next;
kernel/audit_tree.c
549
list_for_each_entry_safe(rule, next, &tree->rules, rlist) {
kernel/audit_tree.c
550
entry = container_of(rule, struct audit_entry, rule);
kernel/audit_tree.c
552
list_del_init(&rule->rlist);
kernel/audit_tree.c
553
if (rule->tree) {
kernel/audit_tree.c
555
audit_tree_log_remove_rule(context, rule);
kernel/audit_tree.c
556
if (entry->rule.exe)
kernel/audit_tree.c
557
audit_remove_mark(entry->rule.exe);
kernel/audit_tree.c
558
rule->tree = NULL;
kernel/audit_tree.c
560
list_del(&entry->rule.list);
kernel/audit_tree.c
649
int audit_remove_tree_rule(struct audit_krule *rule)
kernel/audit_tree.c
652
tree = rule->tree;
kernel/audit_tree.c
655
list_del_init(&rule->rlist);
kernel/audit_tree.c
661
rule->tree = NULL;
kernel/audit_tree.c
666
rule->tree = NULL;
kernel/audit_tree.c
725
int audit_make_tree(struct audit_krule *rule, char *pathname, u32 op)
kernel/audit_tree.c
729
(rule->listnr != AUDIT_FILTER_EXIT &&
kernel/audit_tree.c
730
rule->listnr != AUDIT_FILTER_URING_EXIT) ||
kernel/audit_tree.c
732
rule->inode_f || rule->watch || rule->tree)
kernel/audit_tree.c
734
rule->tree = alloc_tree(pathname);
kernel/audit_tree.c
735
if (!rule->tree)
kernel/audit_tree.c
805
int audit_add_tree_rule(struct audit_krule *rule)
kernel/audit_tree.c
807
struct audit_tree *seed = rule->tree, *tree;
kernel/audit_tree.c
813
rule->tree = NULL;
kernel/audit_tree.c
817
rule->tree = tree;
kernel/audit_tree.c
818
list_add(&rule->rlist, &tree->rules);
kernel/audit_tree.c
824
list_add(&rule->rlist, &tree->rules);
kernel/audit_tree.c
860
if (list_empty(&rule->rlist)) {
kernel/audit_tree.c
864
rule->tree = tree;
kernel/audit_watch.c
279
oentry = container_of(r, struct audit_entry, rule);
kernel/audit_watch.c
280
list_del(&oentry->rule.rlist);
kernel/audit_watch.c
283
nentry = audit_dupe_rule(&oentry->rule);
kernel/audit_watch.c
285
list_del(&oentry->rule.list);
kernel/audit_watch.c
295
audit_put_watch(nentry->rule.watch);
kernel/audit_watch.c
297
nentry->rule.watch = nwatch;
kernel/audit_watch.c
298
list_add(&nentry->rule.rlist, &nwatch->rules);
kernel/audit_watch.c
300
list_replace(&oentry->rule.list,
kernel/audit_watch.c
301
&nentry->rule.list);
kernel/audit_watch.c
303
if (oentry->rule.exe)
kernel/audit_watch.c
304
audit_remove_mark(oentry->rule.exe);
kernel/audit_watch.c
331
e = container_of(r, struct audit_entry, rule);
kernel/audit_watch.c
333
if (e->rule.exe)
kernel/audit_watch.c
334
audit_remove_mark(e->rule.exe);
kernel/auditfilter.c
1000
if (entry->rule.flags & AUDIT_FILTER_PREPEND) {
kernel/auditfilter.c
1001
list_add(&entry->rule.list,
kernel/auditfilter.c
1002
&audit_rules_list[entry->rule.listnr]);
kernel/auditfilter.c
1004
entry->rule.flags &= ~AUDIT_FILTER_PREPEND;
kernel/auditfilter.c
1006
list_add_tail(&entry->rule.list,
kernel/auditfilter.c
1007
&audit_rules_list[entry->rule.listnr]);
kernel/auditfilter.c
1026
struct audit_tree *tree = entry->rule.tree;
kernel/auditfilter.c
1033
switch (entry->rule.listnr) {
kernel/auditfilter.c
1048
if (e->rule.watch)
kernel/auditfilter.c
1049
audit_remove_watch_rule(&e->rule);
kernel/auditfilter.c
1051
if (e->rule.tree)
kernel/auditfilter.c
1052
audit_remove_tree_rule(&e->rule);
kernel/auditfilter.c
1054
if (e->rule.exe)
kernel/auditfilter.c
1055
audit_remove_mark_rule(&e->rule);
kernel/auditfilter.c
1066
list_del(&e->rule.list);
kernel/auditfilter.c
1108
static void audit_log_rule_change(char *action, struct audit_krule *rule, int res)
kernel/auditfilter.c
1121
audit_log_key(ab, rule->filterkey);
kernel/auditfilter.c
1122
audit_log_format(ab, " list=%d res=%d", rule->listnr, res);
kernel/auditfilter.c
1144
audit_log_rule_change("add_rule", &entry->rule, !err);
kernel/auditfilter.c
1151
audit_log_rule_change("remove_rule", &entry->rule, !err);
kernel/auditfilter.c
1159
if (entry->rule.exe)
kernel/auditfilter.c
1160
audit_remove_mark(entry->rule.exe);
kernel/auditfilter.c
120
entry->rule.fields = fields;
kernel/auditfilter.c
1346
for (i = 0; i < e->rule.field_count; i++) {
kernel/auditfilter.c
1347
struct audit_field *f = &e->rule.fields[i];
kernel/auditfilter.c
1386
result = audit_exe_compare(current, e->rule.exe);
kernel/auditfilter.c
1399
if (e->rule.action == AUDIT_NEVER || listtype == AUDIT_FILTER_EXCLUDE)
kernel/auditfilter.c
1411
struct audit_entry *entry = container_of(r, struct audit_entry, rule);
kernel/auditfilter.c
1419
if (entry->rule.exe)
kernel/auditfilter.c
1420
audit_remove_mark(entry->rule.exe);
kernel/auditfilter.c
1432
list_replace_init(&r->rlist, &nentry->rule.rlist);
kernel/auditfilter.c
1434
list_replace(&r->list, &nentry->rule.list);
kernel/auditfilter.c
213
struct audit_field *arch = entry->rule.arch_f;
kernel/auditfilter.c
219
entry->rule.mask) &&
kernel/auditfilter.c
221
entry->rule.mask));
kernel/auditfilter.c
227
entry->rule.mask));
kernel/auditfilter.c
230
entry->rule.mask));
kernel/auditfilter.c
238
static inline struct audit_entry *audit_to_entry_common(struct audit_rule_data *rule)
kernel/auditfilter.c
245
listnr = rule->flags & ~AUDIT_FILTER_PREPEND;
kernel/auditfilter.c
262
if (unlikely(rule->action == AUDIT_POSSIBLE)) {
kernel/auditfilter.c
266
if (rule->action != AUDIT_NEVER && rule->action != AUDIT_ALWAYS)
kernel/auditfilter.c
268
if (rule->field_count > AUDIT_MAX_FIELDS)
kernel/auditfilter.c
272
entry = audit_init_entry(rule->field_count);
kernel/auditfilter.c
276
entry->rule.flags = rule->flags & AUDIT_FILTER_PREPEND;
kernel/auditfilter.c
277
entry->rule.listnr = listnr;
kernel/auditfilter.c
278
entry->rule.action = rule->action;
kernel/auditfilter.c
279
entry->rule.field_count = rule->field_count;
kernel/auditfilter.c
282
entry->rule.mask[i] = rule->mask[i];
kernel/auditfilter.c
286
__u32 *p = &entry->rule.mask[AUDIT_WORD(bit)];
kernel/auditfilter.c
296
entry->rule.mask[j] |= class[j];
kernel/auditfilter.c
331
if (entry->rule.listnr != AUDIT_FILTER_EXCLUDE &&
kernel/auditfilter.c
332
entry->rule.listnr != AUDIT_FILTER_USER)
kernel/auditfilter.c
336
if (entry->rule.listnr != AUDIT_FILTER_FS)
kernel/auditfilter.c
340
if (entry->rule.listnr == AUDIT_FILTER_URING_EXIT)
kernel/auditfilter.c
345
switch (entry->rule.listnr) {
kernel/auditfilter.c
466
struct audit_field *f = &entry->rule.fields[i];
kernel/auditfilter.c
482
entry->rule.pflags |= AUDIT_LOGINUID_LEGACY;
kernel/auditfilter.c
512
entry->rule.arch_f = f;
kernel/auditfilter.c
529
entry->rule.buflen += f_val;
kernel/auditfilter.c
549
err = audit_to_watch(&entry->rule, str, f_val, f->op);
kernel/auditfilter.c
554
entry->rule.buflen += f_val;
kernel/auditfilter.c
562
err = audit_make_tree(&entry->rule, str, f->op);
kernel/auditfilter.c
566
entry->rule.buflen += f_val;
kernel/auditfilter.c
570
err = audit_to_inode(&entry->rule, f);
kernel/auditfilter.c
575
if (entry->rule.filterkey || f_val > AUDIT_MAX_KEY_LEN)
kernel/auditfilter.c
582
entry->rule.buflen += f_val;
kernel/auditfilter.c
583
entry->rule.filterkey = str;
kernel/auditfilter.c
586
if (entry->rule.exe || f_val > PATH_MAX)
kernel/auditfilter.c
593
audit_mark = audit_alloc_mark(&entry->rule, str, f_val);
kernel/auditfilter.c
599
entry->rule.buflen += f_val;
kernel/auditfilter.c
600
entry->rule.exe = audit_mark;
kernel/auditfilter.c
608
if (entry->rule.inode_f && entry->rule.inode_f->op == Audit_not_equal)
kernel/auditfilter.c
609
entry->rule.inode_f = NULL;
kernel/auditfilter.c
615
if (entry->rule.tree)
kernel/auditfilter.c
616
audit_put_tree(entry->rule.tree); /* that's the temporary one */
kernel/auditfilter.c
617
if (entry->rule.exe)
kernel/auditfilter.c
618
audit_remove_mark(entry->rule.exe); /* that's the template one */
kernel/auditfilter.c
832
new = &entry->rule;
kernel/auditfilter.c
86
struct audit_krule *erule = &e->rule;
kernel/auditfilter.c
907
if (entry->rule.inode_f) {
kernel/auditfilter.c
908
h = audit_hash_ino(entry->rule.inode_f->val);
kernel/auditfilter.c
910
} else if (entry->rule.watch) {
kernel/auditfilter.c
915
if (!audit_compare_rule(&entry->rule, &e->rule)) {
kernel/auditfilter.c
922
*p = list = &audit_filter_list[entry->rule.listnr];
kernel/auditfilter.c
926
if (!audit_compare_rule(&entry->rule, &e->rule)) {
kernel/auditfilter.c
942
struct audit_watch *watch = entry->rule.watch;
kernel/auditfilter.c
943
struct audit_tree *tree = entry->rule.tree;
kernel/auditfilter.c
950
switch (entry->rule.listnr) {
kernel/auditfilter.c
971
err = audit_add_watch(&entry->rule, &list);
kernel/auditfilter.c
984
err = audit_add_tree_rule(&entry->rule);
kernel/auditfilter.c
991
entry->rule.prio = ~0ULL;
kernel/auditfilter.c
992
if (entry->rule.listnr == AUDIT_FILTER_EXIT ||
kernel/auditfilter.c
993
entry->rule.listnr == AUDIT_FILTER_URING_EXIT) {
kernel/auditfilter.c
994
if (entry->rule.flags & AUDIT_FILTER_PREPEND)
kernel/auditfilter.c
995
entry->rule.prio = ++prio_high;
kernel/auditfilter.c
997
entry->rule.prio = --prio_low;
kernel/auditsc.c
2261
for (i = 0; i < e->rule.field_count; i++) {
kernel/auditsc.c
2262
struct audit_field *f = &e->rule.fields[i];
kernel/auditsc.c
2267
&& e->rule.action == AUDIT_NEVER) {
kernel/auditsc.c
2379
for (i = 0; i < e->rule.field_count; i++) {
kernel/auditsc.c
2380
struct audit_field *f = &e->rule.fields[i];
kernel/auditsc.c
2385
&& e->rule.action == AUDIT_NEVER) {
kernel/auditsc.c
465
struct audit_krule *rule,
kernel/auditsc.c
476
if (ctx && rule->prio <= ctx->prio)
kernel/auditsc.c
481
for (i = 0; i < rule->field_count; i++) {
kernel/auditsc.c
482
struct audit_field *f = &rule->fields[i];
kernel/auditsc.c
500
result = audit_exe_compare(tsk, rule->exe);
kernel/auditsc.c
634
result = audit_watch_compare(rule->watch,
kernel/auditsc.c
643
result = match_tree_refs(ctx, rule->tree);
kernel/auditsc.c
757
if (rule->filterkey) {
kernel/auditsc.c
759
ctx->filterkey = kstrdup(rule->filterkey, GFP_ATOMIC);
kernel/auditsc.c
761
ctx->prio = rule->prio;
kernel/auditsc.c
763
switch (rule->action) {
kernel/auditsc.c
785
if (audit_filter_rules(tsk, &e->rule, NULL, NULL,
kernel/auditsc.c
788
*key = kstrdup(e->rule.filterkey, GFP_ATOMIC);
kernel/auditsc.c
797
static int audit_in_mask(const struct audit_krule *rule, unsigned long val)
kernel/auditsc.c
810
return rule->mask[word] & bit;
kernel/auditsc.c
837
if (audit_in_mask(&e->rule, op) &&
kernel/auditsc.c
838
audit_filter_rules(tsk, &e->rule, ctx, name,
net/ceph/crush/crush.c
139
void crush_destroy_rule(struct crush_rule *rule)
net/ceph/crush/crush.c
141
kfree(rule);
net/ceph/crush/mapper.c
912
const struct crush_rule *rule;
net/ceph/crush/mapper.c
938
rule = map->rules[ruleno];
net/ceph/crush/mapper.c
941
for (step = 0; step < rule->len; step++) {
net/ceph/crush/mapper.c
943
const struct crush_rule_step *curstep = &rule->steps[step];
net/core/fib_rules.c
100
static void notify_rule_change(int event, struct fib_rule *rule,
net/core/fib_rules.c
1005
struct fib_rule *rule = NULL, *nlrule = NULL;
net/core/fib_rules.c
1043
rule = rule_find(ops, frh, tb, nlrule, user_priority);
net/core/fib_rules.c
1044
if (!rule) {
net/core/fib_rules.c
1049
if (rule->flags & FIB_RULE_PERMANENT) {
net/core/fib_rules.c
1055
err = ops->delete(rule);
net/core/fib_rules.c
1060
if (rule->tun_id)
net/core/fib_rules.c
1063
list_del_rcu(&rule->list);
net/core/fib_rules.c
1065
if (rule->action == FR_ACT_GOTO) {
net/core/fib_rules.c
1067
if (rtnl_dereference(rule->ctarget) == NULL)
net/core/fib_rules.c
1081
n = list_next_entry(rule, list);
net/core/fib_rules.c
1082
if (&n->list == &ops->rules_list || n->pref != rule->pref)
net/core/fib_rules.c
1085
if (rtnl_dereference(r->ctarget) != rule)
net/core/fib_rules.c
1093
call_fib_rule_notifiers(net, FIB_EVENT_RULE_DEL, rule, ops, NULL);
net/core/fib_rules.c
1098
notify_rule_change(RTM_DELRULE, rule, ops, nlh, NETLINK_CB(skb).portid);
net/core/fib_rules.c
1099
fib_rule_put(rule);
net/core/fib_rules.c
1122
struct fib_rule *rule)
net/core/fib_rules.c
1143
payload += ops->nlmsg_payload(rule);
net/core/fib_rules.c
1148
static int fib_nl_fill_rule(struct sk_buff *skb, struct fib_rule *rule,
net/core/fib_rules.c
1161
frh->table = rule->table < 256 ? rule->table : RT_TABLE_COMPAT;
net/core/fib_rules.c
1162
if (nla_put_u32(skb, FRA_TABLE, rule->table))
net/core/fib_rules.c
1164
if (nla_put_u32(skb, FRA_SUPPRESS_PREFIXLEN, rule->suppress_prefixlen))
net/core/fib_rules.c
1168
frh->action = rule->action;
net/core/fib_rules.c
1169
frh->flags = rule->flags;
net/core/fib_rules.c
1171
if (nla_put_u8(skb, FRA_PROTOCOL, rule->proto))
net/core/fib_rules.c
1174
if (rule->action == FR_ACT_GOTO &&
net/core/fib_rules.c
1175
rcu_access_pointer(rule->ctarget) == NULL)
net/core/fib_rules.c
1178
if (rule->iifname[0]) {
net/core/fib_rules.c
1179
if (nla_put_string(skb, FRA_IIFNAME, rule->iifname))
net/core/fib_rules.c
1181
if (READ_ONCE(rule->iifindex) == -1)
net/core/fib_rules.c
1185
if (rule->oifname[0]) {
net/core/fib_rules.c
1186
if (nla_put_string(skb, FRA_OIFNAME, rule->oifname))
net/core/fib_rules.c
1188
if (READ_ONCE(rule->oifindex) == -1)
net/core/fib_rules.c
1192
if ((rule->pref &&
net/core/fib_rules.c
1193
nla_put_u32(skb, FRA_PRIORITY, rule->pref)) ||
net/core/fib_rules.c
1194
(rule->mark &&
net/core/fib_rules.c
1195
nla_put_u32(skb, FRA_FWMARK, rule->mark)) ||
net/core/fib_rules.c
1196
((rule->mark_mask || rule->mark) &&
net/core/fib_rules.c
1197
nla_put_u32(skb, FRA_FWMASK, rule->mark_mask)) ||
net/core/fib_rules.c
1198
(rule->target &&
net/core/fib_rules.c
1199
nla_put_u32(skb, FRA_GOTO, rule->target)) ||
net/core/fib_rules.c
1200
(rule->tun_id &&
net/core/fib_rules.c
1201
nla_put_be64(skb, FRA_TUN_ID, rule->tun_id, FRA_PAD)) ||
net/core/fib_rules.c
1202
(rule->l3mdev &&
net/core/fib_rules.c
1203
nla_put_u8(skb, FRA_L3MDEV, rule->l3mdev)) ||
net/core/fib_rules.c
1204
(uid_range_set(&rule->uid_range) &&
net/core/fib_rules.c
1205
nla_put_uid_range(skb, &rule->uid_range)) ||
net/core/fib_rules.c
1206
(fib_rule_port_range_set(&rule->sport_range) &&
net/core/fib_rules.c
1207
nla_put_port_range(skb, FRA_SPORT_RANGE, &rule->sport_range)) ||
net/core/fib_rules.c
1208
(rule->sport_mask && nla_put_u16(skb, FRA_SPORT_MASK,
net/core/fib_rules.c
1209
rule->sport_mask)) ||
net/core/fib_rules.c
1210
(fib_rule_port_range_set(&rule->dport_range) &&
net/core/fib_rules.c
1211
nla_put_port_range(skb, FRA_DPORT_RANGE, &rule->dport_range)) ||
net/core/fib_rules.c
1212
(rule->dport_mask && nla_put_u16(skb, FRA_DPORT_MASK,
net/core/fib_rules.c
1213
rule->dport_mask)) ||
net/core/fib_rules.c
1214
(rule->ip_proto && nla_put_u8(skb, FRA_IP_PROTO, rule->ip_proto)))
net/core/fib_rules.c
1217
if (rule->suppress_ifgroup != -1) {
net/core/fib_rules.c
1218
if (nla_put_u32(skb, FRA_SUPPRESS_IFGROUP, rule->suppress_ifgroup))
net/core/fib_rules.c
1222
if (ops->fill(rule, skb, frh) < 0)
net/core/fib_rules.c
1237
struct fib_rule *rule;
net/core/fib_rules.c
1241
list_for_each_entry_rcu(rule, &ops->rules_list, list) {
net/core/fib_rules.c
1245
err = fib_nl_fill_rule(skb, rule, NETLINK_CB(cb->skb).portid,
net/core/fib_rules.c
1330
static void notify_rule_change(int event, struct fib_rule *rule,
net/core/fib_rules.c
1339
skb = nlmsg_new(fib_rule_nlmsg_size(ops, rule), GFP_KERNEL);
net/core/fib_rules.c
1343
err = fib_nl_fill_rule(skb, rule, pid, nlh->nlmsg_seq, event, 0, ops);
net/core/fib_rules.c
1359
struct fib_rule *rule;
net/core/fib_rules.c
1361
list_for_each_entry(rule, rules, list) {
net/core/fib_rules.c
1362
if (rule->iifindex == -1 &&
net/core/fib_rules.c
1363
strcmp(dev->name, rule->iifname) == 0) {
net/core/fib_rules.c
1364
WRITE_ONCE(rule->iifindex, dev->ifindex);
net/core/fib_rules.c
1365
WRITE_ONCE(rule->iif_is_l3_master,
net/core/fib_rules.c
1368
if (rule->oifindex == -1 &&
net/core/fib_rules.c
1369
strcmp(dev->name, rule->oifname) == 0) {
net/core/fib_rules.c
1370
WRITE_ONCE(rule->oifindex, dev->ifindex);
net/core/fib_rules.c
1371
WRITE_ONCE(rule->oif_is_l3_master,
net/core/fib_rules.c
1379
struct fib_rule *rule;
net/core/fib_rules.c
1381
list_for_each_entry(rule, rules, list) {
net/core/fib_rules.c
1382
if (rule->iifindex == dev->ifindex) {
net/core/fib_rules.c
1383
WRITE_ONCE(rule->iifindex, -1);
net/core/fib_rules.c
1384
WRITE_ONCE(rule->iif_is_l3_master, false);
net/core/fib_rules.c
1386
if (rule->oifindex == dev->ifindex) {
net/core/fib_rules.c
1387
WRITE_ONCE(rule->oifindex, -1);
net/core/fib_rules.c
1388
WRITE_ONCE(rule->oif_is_l3_master, false);
net/core/fib_rules.c
189
struct fib_rule *rule, *tmp;
net/core/fib_rules.c
191
list_for_each_entry_safe(rule, tmp, &ops->rules_list, list) {
net/core/fib_rules.c
192
list_del_rcu(&rule->list);
net/core/fib_rules.c
194
ops->delete(rule);
net/core/fib_rules.c
195
fib_rule_put(rule);
net/core/fib_rules.c
260
static bool fib_rule_iif_match(const struct fib_rule *rule, int iifindex,
net/core/fib_rules.c
263
u8 iif_is_l3_master = READ_ONCE(rule->iif_is_l3_master);
net/core/fib_rules.c
269
static bool fib_rule_oif_match(const struct fib_rule *rule, int oifindex,
net/core/fib_rules.c
272
u8 oif_is_l3_master = READ_ONCE(rule->oif_is_l3_master);
net/core/fib_rules.c
278
static int fib_rule_match(struct fib_rule *rule, struct fib_rules_ops *ops,
net/core/fib_rules.c
284
iifindex = READ_ONCE(rule->iifindex);
net/core/fib_rules.c
285
if (iifindex && !fib_rule_iif_match(rule, iifindex, fl))
net/core/fib_rules.c
288
oifindex = READ_ONCE(rule->oifindex);
net/core/fib_rules.c
289
if (oifindex && !fib_rule_oif_match(rule, oifindex, fl))
net/core/fib_rules.c
292
if ((rule->mark ^ fl->flowi_mark) & rule->mark_mask)
net/core/fib_rules.c
295
if (rule->tun_id && (rule->tun_id != fl->flowi_tun_key.tun_id))
net/core/fib_rules.c
298
if (rule->l3mdev && !l3mdev_fib_rule_match(rule->fr_net, fl, arg))
net/core/fib_rules.c
301
if (uid_lt(fl->flowi_uid, rule->uid_range.start) ||
net/core/fib_rules.c
302
uid_gt(fl->flowi_uid, rule->uid_range.end))
net/core/fib_rules.c
308
rule, fl, flags);
net/core/fib_rules.c
310
return (rule->flags & FIB_RULE_INVERT) ? !ret : ret;
net/core/fib_rules.c
316
struct fib_rule *rule;
net/core/fib_rules.c
321
list_for_each_entry_rcu(rule, &ops->rules_list, list) {
net/core/fib_rules.c
323
if (!fib_rule_match(rule, ops, fl, flags, arg))
net/core/fib_rules.c
326
if (rule->action == FR_ACT_GOTO) {
net/core/fib_rules.c
329
target = rcu_dereference(rule->ctarget);
net/core/fib_rules.c
333
rule = target;
net/core/fib_rules.c
336
} else if (rule->action == FR_ACT_NOP)
net/core/fib_rules.c
342
rule, fl, flags, arg);
net/core/fib_rules.c
347
rule, flags, arg))
net/core/fib_rules.c
352
likely(refcount_inc_not_zero(&rule->refcnt))) {
net/core/fib_rules.c
353
arg->rule = rule;
net/core/fib_rules.c
370
struct fib_rule *rule, int family,
net/core/fib_rules.c
376
.rule = rule,
net/core/fib_rules.c
38
bool fib_rule_matchall(const struct fib_rule *rule)
net/core/fib_rules.c
384
struct fib_rule *rule,
net/core/fib_rules.c
391
.rule = rule,
net/core/fib_rules.c
40
if (READ_ONCE(rule->iifindex) || READ_ONCE(rule->oifindex) ||
net/core/fib_rules.c
406
struct fib_rule *rule;
net/core/fib_rules.c
41
rule->mark || rule->tun_id || rule->flags)
net/core/fib_rules.c
412
list_for_each_entry_rcu(rule, &ops->rules_list, list) {
net/core/fib_rules.c
414
rule, family, extack);
net/core/fib_rules.c
43
if (rule->suppress_ifgroup != -1 || rule->suppress_prefixlen != -1)
net/core/fib_rules.c
443
struct fib_rule *rule,
net/core/fib_rules.c
449
if (rule->action && r->action != rule->action)
net/core/fib_rules.c
45
if (!uid_eq(rule->uid_range.start, fib_kuid_range_unset.start) ||
net/core/fib_rules.c
452
if (rule->table && r->table != rule->table)
net/core/fib_rules.c
455
if (user_priority && r->pref != rule->pref)
net/core/fib_rules.c
458
if (rule->iifname[0] &&
net/core/fib_rules.c
459
memcmp(r->iifname, rule->iifname, IFNAMSIZ))
net/core/fib_rules.c
46
!uid_eq(rule->uid_range.end, fib_kuid_range_unset.end))
net/core/fib_rules.c
462
if (rule->oifname[0] &&
net/core/fib_rules.c
463
memcmp(r->oifname, rule->oifname, IFNAMSIZ))
net/core/fib_rules.c
466
if (rule->mark && r->mark != rule->mark)
net/core/fib_rules.c
469
if (rule->suppress_ifgroup != -1 &&
net/core/fib_rules.c
470
r->suppress_ifgroup != rule->suppress_ifgroup)
net/core/fib_rules.c
473
if (rule->suppress_prefixlen != -1 &&
net/core/fib_rules.c
474
r->suppress_prefixlen != rule->suppress_prefixlen)
net/core/fib_rules.c
477
if (rule->mark_mask && r->mark_mask != rule->mark_mask)
net/core/fib_rules.c
48
if (fib_rule_port_range_set(&rule->sport_range))
net/core/fib_rules.c
480
if (rule->tun_id && r->tun_id != rule->tun_id)
net/core/fib_rules.c
483
if (rule->l3mdev && r->l3mdev != rule->l3mdev)
net/core/fib_rules.c
486
if (uid_range_set(&rule->uid_range) &&
net/core/fib_rules.c
487
(!uid_eq(r->uid_range.start, rule->uid_range.start) ||
net/core/fib_rules.c
488
!uid_eq(r->uid_range.end, rule->uid_range.end)))
net/core/fib_rules.c
491
if (rule->ip_proto && r->ip_proto != rule->ip_proto)
net/core/fib_rules.c
494
if (rule->proto && r->proto != rule->proto)
net/core/fib_rules.c
497
if (fib_rule_port_range_set(&rule->sport_range) &&
net/core/fib_rules.c
499
&rule->sport_range))
net/core/fib_rules.c
50
if (fib_rule_port_range_set(&rule->dport_range))
net/core/fib_rules.c
502
if (rule->sport_mask && r->sport_mask != rule->sport_mask)
net/core/fib_rules.c
505
if (fib_rule_port_range_set(&rule->dport_range) &&
net/core/fib_rules.c
507
&rule->dport_range))
net/core/fib_rules.c
510
if (rule->dport_mask && r->dport_mask != rule->dport_mask)
net/core/fib_rules.c
573
struct fib_rule **rule,
net/core/fib_rules.c
729
*rule = nlrule;
net/core/fib_rules.c
777
struct nlattr **tb, struct fib_rule *rule)
net/core/fib_rules.c
782
if (r->action != rule->action)
net/core/fib_rules.c
785
if (r->table != rule->table)
net/core/fib_rules.c
788
if (r->pref != rule->pref)
net/core/fib_rules.c
791
if (memcmp(r->iifname, rule->iifname, IFNAMSIZ))
net/core/fib_rules.c
794
if (memcmp(r->oifname, rule->oifname, IFNAMSIZ))
net/core/fib_rules.c
797
if (r->mark != rule->mark)
net/core/fib_rules.c
800
if (r->suppress_ifgroup != rule->suppress_ifgroup)
net/core/fib_rules.c
803
if (r->suppress_prefixlen != rule->suppress_prefixlen)
net/core/fib_rules.c
806
if (r->mark_mask != rule->mark_mask)
net/core/fib_rules.c
809
if (r->tun_id != rule->tun_id)
net/core/fib_rules.c
812
if (r->l3mdev != rule->l3mdev)
net/core/fib_rules.c
815
if (!uid_eq(r->uid_range.start, rule->uid_range.start) ||
net/core/fib_rules.c
816
!uid_eq(r->uid_range.end, rule->uid_range.end))
net/core/fib_rules.c
819
if (r->ip_proto != rule->ip_proto)
net/core/fib_rules.c
822
if (r->proto != rule->proto)
net/core/fib_rules.c
826
&rule->sport_range))
net/core/fib_rules.c
829
if (r->sport_mask != rule->sport_mask)
net/core/fib_rules.c
833
&rule->dport_range))
net/core/fib_rules.c
836
if (r->dport_mask != rule->dport_mask)
net/core/fib_rules.c
86
struct fib_rule *rule;
net/core/fib_rules.c
876
struct fib_rule *rule = NULL, *r, *last = NULL;
net/core/fib_rules.c
903
err = fib_nl2rule(net, nlh, extack, ops, tb, &rule, &user_priority);
net/core/fib_rules.c
91
rule = list_entry(pos->next, struct fib_rule, list);
net/core/fib_rules.c
910
err = fib_nl2rule_rtnl(rule, ops, tb, extack);
net/core/fib_rules.c
915
rule_exists(ops, frh, tb, rule)) {
net/core/fib_rules.c
92
if (rule->pref)
net/core/fib_rules.c
920
err = ops->configure(rule, skb, frh, tb, extack);
net/core/fib_rules.c
924
err = call_fib_rule_notifiers(net, FIB_EVENT_RULE_ADD, rule, ops,
net/core/fib_rules.c
93
return rule->pref - 1;
net/core/fib_rules.c
930
if (r->pref == rule->target) {
net/core/fib_rules.c
931
RCU_INIT_POINTER(rule->ctarget, r);
net/core/fib_rules.c
936
if (rcu_dereference_protected(rule->ctarget, 1) == NULL)
net/core/fib_rules.c
940
if (r->pref > rule->pref)
net/core/fib_rules.c
946
list_add_rcu(&rule->list, &last->list);
net/core/fib_rules.c
948
list_add_rcu(&rule->list, &ops->rules_list);
net/core/fib_rules.c
957
r->target == rule->pref &&
net/core/fib_rules.c
959
rcu_assign_pointer(r->ctarget, rule);
net/core/fib_rules.c
966
if (rule->action == FR_ACT_GOTO)
net/core/fib_rules.c
972
if (rule->tun_id)
net/core/fib_rules.c
975
fib_rule_get(rule);
net/core/fib_rules.c
980
notify_rule_change(RTM_NEWRULE, rule, ops, nlh, NETLINK_CB(skb).portid);
net/core/fib_rules.c
981
fib_rule_put(rule);
net/core/fib_rules.c
989
kfree(rule);
net/core/flow_offload.c
101
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_ARP, out);
net/core/flow_offload.c
105
void flow_rule_match_ipv4_addrs(const struct flow_rule *rule,
net/core/flow_offload.c
108
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_IPV4_ADDRS, out);
net/core/flow_offload.c
112
void flow_rule_match_ipv6_addrs(const struct flow_rule *rule,
net/core/flow_offload.c
115
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_IPV6_ADDRS, out);
net/core/flow_offload.c
119
void flow_rule_match_ip(const struct flow_rule *rule,
net/core/flow_offload.c
12
struct flow_rule *rule;
net/core/flow_offload.c
122
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_IP, out);
net/core/flow_offload.c
126
void flow_rule_match_ports(const struct flow_rule *rule,
net/core/flow_offload.c
129
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_PORTS, out);
net/core/flow_offload.c
133
void flow_rule_match_ports_range(const struct flow_rule *rule,
net/core/flow_offload.c
136
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_PORTS_RANGE, out);
net/core/flow_offload.c
140
void flow_rule_match_tcp(const struct flow_rule *rule,
net/core/flow_offload.c
143
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_TCP, out);
net/core/flow_offload.c
147
void flow_rule_match_ipsec(const struct flow_rule *rule,
net/core/flow_offload.c
15
rule = kzalloc_flex(*rule, action.entries, num_actions);
net/core/flow_offload.c
150
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_IPSEC, out);
net/core/flow_offload.c
154
void flow_rule_match_icmp(const struct flow_rule *rule,
net/core/flow_offload.c
157
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_ICMP, out);
net/core/flow_offload.c
16
if (!rule)
net/core/flow_offload.c
161
void flow_rule_match_mpls(const struct flow_rule *rule,
net/core/flow_offload.c
164
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_MPLS, out);
net/core/flow_offload.c
168
void flow_rule_match_enc_control(const struct flow_rule *rule,
net/core/flow_offload.c
171
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_ENC_CONTROL, out);
net/core/flow_offload.c
175
void flow_rule_match_enc_ipv4_addrs(const struct flow_rule *rule,
net/core/flow_offload.c
178
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_ENC_IPV4_ADDRS, out);
net/core/flow_offload.c
182
void flow_rule_match_enc_ipv6_addrs(const struct flow_rule *rule,
net/core/flow_offload.c
185
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_ENC_IPV6_ADDRS, out);
net/core/flow_offload.c
189
void flow_rule_match_enc_ip(const struct flow_rule *rule,
net/core/flow_offload.c
19
rule->action.num_entries = num_actions;
net/core/flow_offload.c
192
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_ENC_IP, out);
net/core/flow_offload.c
196
void flow_rule_match_enc_ports(const struct flow_rule *rule,
net/core/flow_offload.c
199
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_ENC_PORTS, out);
net/core/flow_offload.c
203
void flow_rule_match_enc_keyid(const struct flow_rule *rule,
net/core/flow_offload.c
206
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_ENC_KEYID, out);
net/core/flow_offload.c
210
void flow_rule_match_enc_opts(const struct flow_rule *rule,
net/core/flow_offload.c
213
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_ENC_OPTS, out);
net/core/flow_offload.c
238
void flow_rule_match_ct(const struct flow_rule *rule,
net/core/flow_offload.c
24
rule->action.entries[i].hw_stats = FLOW_ACTION_HW_STATS_DONT_CARE;
net/core/flow_offload.c
241
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_CT, out);
net/core/flow_offload.c
245
void flow_rule_match_pppoe(const struct flow_rule *rule,
net/core/flow_offload.c
248
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_PPPOE, out);
net/core/flow_offload.c
252
void flow_rule_match_l2tpv3(const struct flow_rule *rule,
net/core/flow_offload.c
255
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_L2TPV3, out);
net/core/flow_offload.c
26
return rule;
net/core/flow_offload.c
56
void flow_rule_match_meta(const struct flow_rule *rule,
net/core/flow_offload.c
59
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_META, out);
net/core/flow_offload.c
63
void flow_rule_match_basic(const struct flow_rule *rule,
net/core/flow_offload.c
66
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_BASIC, out);
net/core/flow_offload.c
70
void flow_rule_match_control(const struct flow_rule *rule,
net/core/flow_offload.c
73
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_CONTROL, out);
net/core/flow_offload.c
77
void flow_rule_match_eth_addrs(const struct flow_rule *rule,
net/core/flow_offload.c
80
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS, out);
net/core/flow_offload.c
84
void flow_rule_match_vlan(const struct flow_rule *rule,
net/core/flow_offload.c
87
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_VLAN, out);
net/core/flow_offload.c
91
void flow_rule_match_cvlan(const struct flow_rule *rule,
net/core/flow_offload.c
94
FLOW_DISSECTOR_MATCH(rule, FLOW_DISSECTOR_KEY_CVLAN, out);
net/core/flow_offload.c
98
void flow_rule_match_arp(const struct flow_rule *rule,
net/dsa/user.c
1394
if (!flow_action_basic_hw_stats_check(&cls->rule->action, extack))
net/dsa/user.c
1397
act = &cls->rule->action.entries[0];
net/dsa/user.c
1480
if (!flow_action_basic_hw_stats_check(&cls->rule->action, extack))
net/dsa/user.c
1491
act = &cls->rule->action.entries[0];
net/dsa/user.c
1517
const struct flow_action *action = &cls->rule->action;
net/ethtool/ioctl.c
3634
flow->rule = flow_rule_alloc(1);
net/ethtool/ioctl.c
3635
if (!flow->rule) {
net/ethtool/ioctl.c
3641
flow->rule->match.dissector = &match->dissector;
net/ethtool/ioctl.c
3642
flow->rule->match.mask = &match->mask;
net/ethtool/ioctl.c
3643
flow->rule->match.key = &match->key;
net/ethtool/ioctl.c
3844
act = &flow->rule->action.entries[0];
net/ethtool/ioctl.c
3868
kfree(flow->rule);
net/ipv4/fib_rules.c
111
INDIRECT_CALLABLE_SCOPE int fib4_rule_action(struct fib_rule *rule,
net/ipv4/fib_rules.c
119
switch (rule->action) {
net/ipv4/fib_rules.c
136
tb_id = fib_rule_get_table(rule, arg);
net/ipv4/fib_rules.c
137
tbl = fib_get_table(rule->fr_net, tb_id);
net/ipv4/fib_rules.c
147
INDIRECT_CALLABLE_SCOPE bool fib4_rule_suppress(struct fib_rule *rule,
net/ipv4/fib_rules.c
163
if (result->prefixlen <= rule->suppress_prefixlen)
net/ipv4/fib_rules.c
169
if (rule->suppress_ifgroup != -1 && dev && dev->group == rule->suppress_ifgroup)
net/ipv4/fib_rules.c
180
INDIRECT_CALLABLE_SCOPE int fib4_rule_match(struct fib_rule *rule,
net/ipv4/fib_rules.c
183
struct fib4_rule *r = (struct fib4_rule *) rule;
net/ipv4/fib_rules.c
203
if (rule->ip_proto && (rule->ip_proto != fl4->flowi4_proto))
net/ipv4/fib_rules.c
206
if (!fib_rule_port_match(&rule->sport_range, rule->sport_mask,
net/ipv4/fib_rules.c
210
if (!fib_rule_port_match(&rule->dport_range, rule->dport_mask,
net/ipv4/fib_rules.c
269
static int fib4_rule_configure(struct fib_rule *rule, struct sk_buff *skb,
net/ipv4/fib_rules.c
274
struct fib4_rule *rule4 = (struct fib4_rule *)rule;
net/ipv4/fib_rules.c
275
struct net *net = rule->fr_net;
net/ipv4/fib_rules.c
309
if (rule->table == RT_TABLE_UNSPEC && !rule->l3mdev) {
net/ipv4/fib_rules.c
310
if (rule->action == FR_ACT_TO_TBL) {
net/ipv4/fib_rules.c
319
rule->table = table->tb_id;
net/ipv4/fib_rules.c
337
if (fib_rule_requires_fldissect(rule))
net/ipv4/fib_rules.c
352
static int fib4_rule_delete(struct fib_rule *rule)
net/ipv4/fib_rules.c
354
struct net *net = rule->fr_net;
net/ipv4/fib_rules.c
363
if (((struct fib4_rule *)rule)->tclassid)
net/ipv4/fib_rules.c
369
fib_rule_requires_fldissect(rule))
net/ipv4/fib_rules.c
375
static int fib4_rule_compare(struct fib_rule *rule, struct fib_rule_hdr *frh,
net/ipv4/fib_rules.c
378
struct fib4_rule *rule4 = (struct fib4_rule *) rule;
net/ipv4/fib_rules.c
421
static int fib4_rule_fill(struct fib_rule *rule, struct sk_buff *skb,
net/ipv4/fib_rules.c
424
struct fib4_rule *rule4 = (struct fib4_rule *) rule;
net/ipv4/fib_rules.c
456
static size_t fib4_rule_nlmsg_payload(struct fib_rule *rule)
net/ipv4/fib_rules.c
52
static bool fib4_rule_matchall(const struct fib_rule *rule)
net/ipv4/fib_rules.c
54
struct fib4_rule *r = container_of(rule, struct fib4_rule, common);
net/ipv4/fib_rules.c
58
return fib_rule_matchall(rule);
net/ipv4/fib_rules.c
61
bool fib4_rule_default(const struct fib_rule *rule)
net/ipv4/fib_rules.c
63
if (!fib4_rule_matchall(rule) || rule->action != FR_ACT_TO_TBL ||
net/ipv4/fib_rules.c
64
rule->l3mdev)
net/ipv4/fib_rules.c
66
if (rule->table != RT_TABLE_LOCAL && rule->table != RT_TABLE_MAIN &&
net/ipv4/fib_rules.c
67
rule->table != RT_TABLE_DEFAULT)
net/ipv4/fib_rules.c
98
if (arg.rule)
net/ipv4/fib_rules.c
99
res->tclassid = ((struct fib4_rule *)arg.rule)->tclassid;
net/ipv4/ipmr.c
183
static int ipmr_rule_action(struct fib_rule *rule, struct flowi *flp,
net/ipv4/ipmr.c
189
switch (rule->action) {
net/ipv4/ipmr.c
201
arg->table = fib_rule_get_table(rule, arg);
net/ipv4/ipmr.c
203
mrt = __ipmr_get_table(rule->fr_net, arg->table);
net/ipv4/ipmr.c
210
static int ipmr_rule_match(struct fib_rule *rule, struct flowi *fl, int flags)
net/ipv4/ipmr.c
215
static int ipmr_rule_configure(struct fib_rule *rule, struct sk_buff *skb,
net/ipv4/ipmr.c
222
static int ipmr_rule_compare(struct fib_rule *rule, struct fib_rule_hdr *frh,
net/ipv4/ipmr.c
228
static int ipmr_rule_fill(struct fib_rule *rule, struct sk_buff *skb,
net/ipv4/ipmr.c
307
bool ipmr_rule_default(const struct fib_rule *rule)
net/ipv4/ipmr.c
309
return fib_rule_matchall(rule) && rule->table == RT_TABLE_DEFAULT;
net/ipv4/ipmr.c
367
bool ipmr_rule_default(const struct fib_rule *rule)
net/ipv6/addrconf.c
1526
int rule;
net/ipv6/addrconf.c
1591
if (i <= score->rule) {
net/ipv6/addrconf.c
1713
score->rule = i;
net/ipv6/addrconf.c
1752
score->rule = -1;
net/ipv6/addrconf.c
1832
scores[hiscore_idx].rule = -1;
net/ipv6/fib6_rules.c
137
static int fib6_rule_saddr(struct net *net, struct fib_rule *rule, int flags,
net/ipv6/fib6_rules.c
140
struct fib6_rule *r = (struct fib6_rule *)rule;
net/ipv6/fib6_rules.c
145
if ((rule->flags & FIB_RULE_FIND_SADDR) &&
net/ipv6/fib6_rules.c
162
static int fib6_rule_action_alt(struct fib_rule *rule, struct flowi *flp,
net/ipv6/fib6_rules.c
167
struct net *net = rule->fr_net;
net/ipv6/fib6_rules.c
172
switch (rule->action) {
net/ipv6/fib6_rules.c
184
tb_id = fib_rule_get_table(rule, arg);
net/ipv6/fib6_rules.c
192
err = fib6_rule_saddr(net, rule, flags, flp6,
net/ipv6/fib6_rules.c
200
static int __fib6_rule_action(struct fib_rule *rule, struct flowi *flp,
net/ipv6/fib6_rules.c
207
struct net *net = rule->fr_net;
net/ipv6/fib6_rules.c
212
switch (rule->action) {
net/ipv6/fib6_rules.c
230
tb_id = fib_rule_get_table(rule, arg);
net/ipv6/fib6_rules.c
244
err = fib6_rule_saddr(net, rule, flags, flp6,
net/ipv6/fib6_rules.c
268
INDIRECT_CALLABLE_SCOPE int fib6_rule_action(struct fib_rule *rule,
net/ipv6/fib6_rules.c
273
return fib6_rule_action_alt(rule, flp, flags, arg);
net/ipv6/fib6_rules.c
275
return __fib6_rule_action(rule, flp, flags, arg);
net/ipv6/fib6_rules.c
278
INDIRECT_CALLABLE_SCOPE bool fib6_rule_suppress(struct fib_rule *rule,
net/ipv6/fib6_rules.c
295
if (rt->rt6i_dst.plen <= rule->suppress_prefixlen)
net/ipv6/fib6_rules.c
301
if (rule->suppress_ifgroup != -1 && dev && dev->group == rule->suppress_ifgroup)
net/ipv6/fib6_rules.c
311
INDIRECT_CALLABLE_SCOPE int fib6_rule_match(struct fib_rule *rule,
net/ipv6/fib6_rules.c
314
struct fib6_rule *r = (struct fib6_rule *) rule;
net/ipv6/fib6_rules.c
341
if (rule->ip_proto && (rule->ip_proto != fl6->flowi6_proto))
net/ipv6/fib6_rules.c
344
if (!fib_rule_port_match(&rule->sport_range, rule->sport_mask,
net/ipv6/fib6_rules.c
348
if (!fib_rule_port_match(&rule->dport_range, rule->dport_mask,
net/ipv6/fib6_rules.c
36
static bool fib6_rule_matchall(const struct fib_rule *rule)
net/ipv6/fib6_rules.c
38
struct fib6_rule *r = container_of(rule, struct fib6_rule, common);
net/ipv6/fib6_rules.c
42
return fib_rule_matchall(rule);
net/ipv6/fib6_rules.c
422
static int fib6_rule_configure(struct fib_rule *rule, struct sk_buff *skb,
net/ipv6/fib6_rules.c
427
struct fib6_rule *rule6 = (struct fib6_rule *)rule;
net/ipv6/fib6_rules.c
428
struct net *net = rule->fr_net;
net/ipv6/fib6_rules.c
45
bool fib6_rule_default(const struct fib_rule *rule)
net/ipv6/fib6_rules.c
450
if (rule->action == FR_ACT_TO_TBL && !rule->l3mdev) {
net/ipv6/fib6_rules.c
451
if (rule->table == RT6_TABLE_UNSPEC) {
net/ipv6/fib6_rules.c
456
if (fib6_new_table(net, rule->table) == NULL) {
net/ipv6/fib6_rules.c
47
if (!fib6_rule_matchall(rule) || rule->action != FR_ACT_TO_TBL ||
net/ipv6/fib6_rules.c
471
if (fib_rule_requires_fldissect(rule))
net/ipv6/fib6_rules.c
48
rule->l3mdev)
net/ipv6/fib6_rules.c
480
static int fib6_rule_delete(struct fib_rule *rule)
net/ipv6/fib6_rules.c
482
struct net *net = rule->fr_net;
net/ipv6/fib6_rules.c
485
fib_rule_requires_fldissect(rule))
net/ipv6/fib6_rules.c
491
static int fib6_rule_compare(struct fib_rule *rule, struct fib_rule_hdr *frh,
net/ipv6/fib6_rules.c
494
struct fib6_rule *rule6 = (struct fib6_rule *) rule;
net/ipv6/fib6_rules.c
50
if (rule->table != RT6_TABLE_LOCAL && rule->table != RT6_TABLE_MAIN)
net/ipv6/fib6_rules.c
542
static int fib6_rule_fill(struct fib_rule *rule, struct sk_buff *skb,
net/ipv6/fib6_rules.c
545
struct fib6_rule *rule6 = (struct fib6_rule *) rule;
net/ipv6/fib6_rules.c
577
static size_t fib6_rule_nlmsg_payload(struct fib_rule *rule)
net/ipv6/ip6mr.c
170
static int ip6mr_rule_action(struct fib_rule *rule, struct flowi *flp,
net/ipv6/ip6mr.c
176
switch (rule->action) {
net/ipv6/ip6mr.c
188
arg->table = fib_rule_get_table(rule, arg);
net/ipv6/ip6mr.c
190
mrt = __ip6mr_get_table(rule->fr_net, arg->table);
net/ipv6/ip6mr.c
197
static int ip6mr_rule_match(struct fib_rule *rule, struct flowi *flp, int flags)
net/ipv6/ip6mr.c
202
static int ip6mr_rule_configure(struct fib_rule *rule, struct sk_buff *skb,
net/ipv6/ip6mr.c
209
static int ip6mr_rule_compare(struct fib_rule *rule, struct fib_rule_hdr *frh,
net/ipv6/ip6mr.c
215
static int ip6mr_rule_fill(struct fib_rule *rule, struct sk_buff *skb,
net/ipv6/ip6mr.c
294
bool ip6mr_rule_default(const struct fib_rule *rule)
net/ipv6/ip6mr.c
296
return fib_rule_matchall(rule) && rule->action == FR_ACT_TO_TBL &&
net/ipv6/ip6mr.c
297
rule->table == RT6_TABLE_DFLT && !rule->l3mdev;
net/netfilter/nf_dup_netdev.c
98
entry = &flow->rule->action.entries[ctx->num_actions++];
net/netfilter/nf_flow_table_offload.c
223
if (unlikely(flow_rule->rule->action.num_entries >= NF_FLOW_RULE_ACTION_MAX))
net/netfilter/nf_flow_table_offload.c
226
i = flow_rule->rule->action.num_entries++;
net/netfilter/nf_flow_table_offload.c
228
return &flow_rule->rule->action.entries[i];
net/netfilter/nf_flow_table_offload.c
812
flow_rule->rule = flow_rule_alloc(NF_FLOW_RULE_ACTION_MAX);
net/netfilter/nf_flow_table_offload.c
813
if (!flow_rule->rule)
net/netfilter/nf_flow_table_offload.c
816
flow_rule->rule->match.dissector = &flow_rule->match.dissector;
net/netfilter/nf_flow_table_offload.c
817
flow_rule->rule->match.mask = &flow_rule->match.mask;
net/netfilter/nf_flow_table_offload.c
818
flow_rule->rule->match.key = &flow_rule->match.key;
net/netfilter/nf_flow_table_offload.c
829
flow_rule->rule->action.num_entries = 0;
net/netfilter/nf_flow_table_offload.c
836
kfree(flow_rule->rule);
net/netfilter/nf_flow_table_offload.c
848
for (i = 0; i < flow_rule->rule->action.num_entries; i++) {
net/netfilter/nf_flow_table_offload.c
849
entry = &flow_rule->rule->action.entries[i];
net/netfilter/nf_flow_table_offload.c
855
kfree(flow_rule->rule);
net/netfilter/nf_flow_table_offload.c
917
cls_flow.rule = flow_rule->rule;
net/netfilter/nf_tables_api.c
10192
struct nft_rule *rule;
net/netfilter/nf_tables_api.c
10199
list_for_each_entry(rule, &chain->rules, list) {
net/netfilter/nf_tables_api.c
10200
if (nft_is_active_next(net, rule)) {
net/netfilter/nf_tables_api.c
10201
data_size += sizeof(*prule) + rule->dlen;
net/netfilter/nf_tables_api.c
10215
list_for_each_entry(rule, &chain->rules, list) {
net/netfilter/nf_tables_api.c
10216
if (!nft_is_active_next(net, rule))
net/netfilter/nf_tables_api.c
10225
track.last = nft_expr_last(rule);
net/netfilter/nf_tables_api.c
10226
nft_rule_for_each_expr(expr, last, rule) {
net/netfilter/nf_tables_api.c
10243
prule->handle = rule->handle;
net/netfilter/nf_tables_api.c
11916
struct nft_rule *rule, *nr;
net/netfilter/nf_tables_api.c
11930
list_for_each_entry_safe(rule, nr, &chain->rules, list) {
net/netfilter/nf_tables_api.c
11931
list_del(&rule->list);
net/netfilter/nf_tables_api.c
11933
nf_tables_rule_release(&ctx, rule);
net/netfilter/nf_tables_api.c
3219
struct nft_rule *rule;
net/netfilter/nf_tables_api.c
3272
list_for_each_entry(rule, &chain->rules, list) {
net/netfilter/nf_tables_api.c
3273
if (!nft_is_active_next(net, rule))
net/netfilter/nf_tables_api.c
3277
err = nft_delrule(&ctx, rule);
net/netfilter/nf_tables_api.c
3646
struct nft_rule *rule;
net/netfilter/nf_tables_api.c
3649
list_for_each_entry_rcu(rule, &chain->rules, list,
net/netfilter/nf_tables_api.c
3651
if (handle == rule->handle)
net/netfilter/nf_tables_api.c
3652
return rule;
net/netfilter/nf_tables_api.c
3689
const struct nft_rule *rule, u64 handle,
net/netfilter/nf_tables_api.c
3706
if (nla_put_be64(skb, NFTA_RULE_HANDLE, cpu_to_be64(rule->handle),
net/netfilter/nf_tables_api.c
3717
nft_flow_rule_stats(chain, rule);
net/netfilter/nf_tables_api.c
3722
nft_rule_for_each_expr(expr, next, rule) {
net/netfilter/nf_tables_api.c
3728
if (rule->udata) {
net/netfilter/nf_tables_api.c
3729
struct nft_userdata *udata = nft_userdata(rule);
net/netfilter/nf_tables_api.c
3744
const struct nft_rule *rule, int event)
net/netfilter/nf_tables_api.c
3762
!list_is_first(&rule->list, &ctx->chain->rules) &&
net/netfilter/nf_tables_api.c
3763
!list_is_last(&rule->list, &ctx->chain->rules)) {
net/netfilter/nf_tables_api.c
3764
prule = list_prev_entry(rule, list);
net/netfilter/nf_tables_api.c
3774
ctx->chain, rule, handle, false);
net/netfilter/nf_tables_api.c
3813
const struct nft_rule *rule, *prule;
net/netfilter/nf_tables_api.c
3819
list_for_each_entry_rcu(rule, &chain->rules, list) {
net/netfilter/nf_tables_api.c
3820
if (!nft_is_active(net, rule))
net/netfilter/nf_tables_api.c
3834
table, chain, rule, handle, ctx->reset) < 0) {
net/netfilter/nf_tables_api.c
3841
prule = rule;
net/netfilter/nf_tables_api.c
3952
const struct nft_rule *rule;
net/netfilter/nf_tables_api.c
3970
rule = nft_rule_lookup(net, chain, nla[NFTA_RULE_HANDLE]);
net/netfilter/nf_tables_api.c
3971
if (IS_ERR(rule)) {
net/netfilter/nf_tables_api.c
3973
return ERR_CAST(rule);
net/netfilter/nf_tables_api.c
3982
family, table, chain, rule, 0, reset);
net/netfilter/nf_tables_api.c
4033
void nf_tables_rule_destroy(const struct nft_ctx *ctx, struct nft_rule *rule)
net/netfilter/nf_tables_api.c
4041
expr = nft_expr_first(rule);
net/netfilter/nf_tables_api.c
4042
while (nft_expr_more(rule, expr)) {
net/netfilter/nf_tables_api.c
4047
kfree(rule);
net/netfilter/nf_tables_api.c
4051
static void nf_tables_rule_release(const struct nft_ctx *ctx, struct nft_rule *rule)
net/netfilter/nf_tables_api.c
4055
nft_rule_expr_deactivate(ctx, rule, NFT_TRANS_RELEASE);
net/netfilter/nf_tables_api.c
4056
nf_tables_rule_destroy(ctx, rule);
net/netfilter/nf_tables_api.c
4094
struct nft_rule *rule;
net/netfilter/nf_tables_api.c
4110
list_for_each_entry(rule, &chain->rules, list) {
net/netfilter/nf_tables_api.c
4114
if (!nft_is_active_next(ctx->net, rule))
net/netfilter/nf_tables_api.c
4117
nft_rule_for_each_expr(expr, last, rule) {
net/netfilter/nf_tables_api.c
4233
struct nft_rule *rule, *old_rule = NULL;
net/netfilter/nf_tables_api.c
4281
rule = __nft_rule_lookup(net, chain, handle);
net/netfilter/nf_tables_api.c
4282
if (IS_ERR(rule)) {
net/netfilter/nf_tables_api.c
4284
return PTR_ERR(rule);
net/netfilter/nf_tables_api.c
4292
old_rule = rule;
net/netfilter/nf_tables_api.c
4354
rule = kzalloc(sizeof(*rule) + size + usize, GFP_KERNEL_ACCOUNT);
net/netfilter/nf_tables_api.c
4355
if (rule == NULL)
net/netfilter/nf_tables_api.c
4358
nft_activate_next(net, rule);
net/netfilter/nf_tables_api.c
4360
rule->handle = handle;
net/netfilter/nf_tables_api.c
4361
rule->dlen = size;
net/netfilter/nf_tables_api.c
4362
rule->udata = ulen ? 1 : 0;
net/netfilter/nf_tables_api.c
4365
udata = nft_userdata(rule);
net/netfilter/nf_tables_api.c
4370
expr = nft_expr_first(rule);
net/netfilter/nf_tables_api.c
4386
flow = nft_flow_rule_create(net, rule);
net/netfilter/nf_tables_api.c
4408
trans = nft_trans_rule_add(&ctx, NFT_MSG_NEWRULE, rule);
net/netfilter/nf_tables_api.c
4413
list_add_tail_rcu(&rule->list, &old_rule->list);
net/netfilter/nf_tables_api.c
4415
trans = nft_trans_rule_add(&ctx, NFT_MSG_NEWRULE, rule);
net/netfilter/nf_tables_api.c
4423
list_add_rcu(&rule->list, &old_rule->list);
net/netfilter/nf_tables_api.c
4425
list_add_tail_rcu(&rule->list, &chain->rules);
net/netfilter/nf_tables_api.c
4428
list_add_tail_rcu(&rule->list, &old_rule->list);
net/netfilter/nf_tables_api.c
4430
list_add_rcu(&rule->list, &chain->rules);
net/netfilter/nf_tables_api.c
4449
nft_rule_expr_deactivate(&ctx, rule, NFT_TRANS_PREPARE_ERROR);
net/netfilter/nf_tables_api.c
4450
nf_tables_rule_destroy(&ctx, rule);
net/netfilter/nf_tables_api.c
4490
struct nft_rule *rule;
net/netfilter/nf_tables_api.c
4520
rule = nft_rule_lookup(info->net, chain, nla[NFTA_RULE_HANDLE]);
net/netfilter/nf_tables_api.c
4521
if (IS_ERR(rule)) {
net/netfilter/nf_tables_api.c
4522
if (PTR_ERR(rule) == -ENOENT &&
net/netfilter/nf_tables_api.c
4527
return PTR_ERR(rule);
net/netfilter/nf_tables_api.c
4530
err = nft_delrule(&ctx, rule);
net/netfilter/nf_tables_api.c
4532
rule = nft_rule_lookup_byid(net, chain, nla[NFTA_RULE_ID]);
net/netfilter/nf_tables_api.c
4533
if (IS_ERR(rule)) {
net/netfilter/nf_tables_api.c
4535
return PTR_ERR(rule);
net/netfilter/nf_tables_api.c
4538
err = nft_delrule(&ctx, rule);
net/netfilter/nf_tables_api.c
653
void nft_rule_expr_activate(const struct nft_ctx *ctx, struct nft_rule *rule)
net/netfilter/nf_tables_api.c
657
expr = nft_expr_first(rule);
net/netfilter/nf_tables_api.c
658
while (nft_expr_more(rule, expr)) {
net/netfilter/nf_tables_api.c
666
void nft_rule_expr_deactivate(const struct nft_ctx *ctx, struct nft_rule *rule,
net/netfilter/nf_tables_api.c
671
expr = nft_expr_first(rule);
net/netfilter/nf_tables_api.c
672
while (nft_expr_more(rule, expr)) {
net/netfilter/nf_tables_api.c
681
nf_tables_delrule_deactivate(struct nft_ctx *ctx, struct nft_rule *rule)
net/netfilter/nf_tables_api.c
684
if (nft_is_active_next(ctx->net, rule)) {
net/netfilter/nf_tables_api.c
685
nft_deactivate_next(ctx->net, rule);
net/netfilter/nf_tables_api.c
693
struct nft_rule *rule)
net/netfilter/nf_tables_api.c
705
nft_trans_rule(trans) = rule;
net/netfilter/nf_tables_api.c
712
static int nft_delrule(struct nft_ctx *ctx, struct nft_rule *rule)
net/netfilter/nf_tables_api.c
718
trans = nft_trans_rule_add(ctx, NFT_MSG_DELRULE, rule);
net/netfilter/nf_tables_api.c
723
flow = nft_flow_rule_create(ctx->net, rule);
net/netfilter/nf_tables_api.c
732
err = nf_tables_delrule_deactivate(ctx, rule);
net/netfilter/nf_tables_api.c
737
nft_rule_expr_deactivate(ctx, rule, NFT_TRANS_PREPARE);
net/netfilter/nf_tables_api.c
744
struct nft_rule *rule;
net/netfilter/nf_tables_api.c
747
list_for_each_entry(rule, &ctx->chain->rules, list) {
net/netfilter/nf_tables_api.c
748
if (!nft_is_active_next(ctx->net, rule))
net/netfilter/nf_tables_api.c
751
err = nft_delrule(ctx, rule);
net/netfilter/nf_tables_core.c
110
const struct nft_rule_dp *rule,
net/netfilter/nf_tables_core.c
132
__nft_trace_packet(pkt, &regs->verdict, rule, info, type);
net/netfilter/nf_tables_core.c
137
const struct nft_rule_dp *rule,
net/netfilter/nf_tables_core.c
141
__nft_trace_verdict(pkt, info, rule, regs);
net/netfilter/nf_tables_core.c
200
const struct nft_rule_dp *rule;
net/netfilter/nf_tables_core.c
240
#define nft_rule_expr_first(rule) (struct nft_expr *)&rule->data[0]
net/netfilter/nf_tables_core.c
242
#define nft_rule_expr_last(rule) (struct nft_expr *)&rule->data[rule->dlen]
net/netfilter/nf_tables_core.c
244
#define nft_rule_dp_for_each_expr(expr, last, rule) \
net/netfilter/nf_tables_core.c
245
for ((expr) = nft_rule_expr_first(rule), (last) = nft_rule_expr_last(rule); \
net/netfilter/nf_tables_core.c
255
const struct nft_rule_dp *rule;
net/netfilter/nf_tables_core.c
272
rule = (struct nft_rule_dp *)blob->data;
net/netfilter/nf_tables_core.c
275
for (; !rule->is_last ; rule = nft_rule_next(rule)) {
net/netfilter/nf_tables_core.c
276
nft_rule_dp_for_each_expr(expr, last, rule) {
net/netfilter/nf_tables_core.c
297
nft_trace_packet(pkt, &regs.verdict, &info, rule,
net/netfilter/nf_tables_core.c
304
nft_trace_verdict(pkt, &info, rule, &regs);
net/netfilter/nf_tables_core.c
319
jumpstack[stackptr].rule = nft_rule_next(rule);
net/netfilter/nf_tables_core.c
334
rule = jumpstack[stackptr].rule;
net/netfilter/nf_tables_core.c
43
const struct nft_rule_dp *rule,
net/netfilter/nf_tables_core.c
52
nft_trace_notify(pkt, verdict, rule, info);
net/netfilter/nf_tables_core.c
58
const struct nft_rule_dp *rule,
net/netfilter/nf_tables_core.c
63
__nft_trace_packet(pkt, verdict, rule, info, type);
net/netfilter/nf_tables_offload.c
112
expr = nft_expr_first(rule);
net/netfilter/nf_tables_offload.c
122
while (nft_expr_more(rule, expr)) {
net/netfilter/nf_tables_offload.c
151
flow_action_for_each(i, entry, &flow->rule->action) {
net/netfilter/nf_tables_offload.c
161
kfree(flow->rule);
net/netfilter/nf_tables_offload.c
18
flow->rule = flow_rule_alloc(num_actions);
net/netfilter/nf_tables_offload.c
19
if (!flow->rule) {
net/netfilter/nf_tables_offload.c
24
flow->rule->match.dissector = &flow->match.dissector;
net/netfilter/nf_tables_offload.c
248
const struct nft_rule *rule,
net/netfilter/nf_tables_offload.c
25
flow->rule->match.mask = &flow->match.mask;
net/netfilter/nf_tables_offload.c
26
flow->rule->match.key = &flow->match.key;
net/netfilter/nf_tables_offload.c
263
cls_flow->cookie = (unsigned long) rule;
net/netfilter/nf_tables_offload.c
265
cls_flow->rule = flow->rule;
net/netfilter/nf_tables_offload.c
269
const struct nft_rule *rule,
net/netfilter/nf_tables_offload.c
281
nft_flow_cls_offload_setup(cls_flow, basechain, rule, flow, &extack,
net/netfilter/nf_tables_offload.c
289
struct nft_rule *rule,
net/netfilter/nf_tables_offload.c
295
return nft_flow_offload_cmd(chain, rule, flow, command, &cls_flow);
net/netfilter/nf_tables_offload.c
299
const struct nft_rule *rule)
net/netfilter/nf_tables_offload.c
305
err = nft_flow_offload_cmd(chain, rule, NULL, FLOW_CLS_STATS,
net/netfilter/nf_tables_offload.c
310
nft_rule_for_each_expr(expr, next, rule) {
net/netfilter/nf_tables_offload.c
332
struct nft_rule *rule;
net/netfilter/nf_tables_offload.c
335
list_for_each_entry(rule, &chain->rules, list) {
net/netfilter/nf_tables_offload.c
337
nft_flow_cls_offload_setup(&cls_flow, basechain, rule, NULL,
net/netfilter/nf_tables_offload.c
89
const struct nft_rule *rule)
net/netfilter/nf_tables_offload.c
96
expr = nft_expr_first(rule);
net/netfilter/nf_tables_offload.c
97
while (nft_expr_more(rule, expr)) {
net/netfilter/nf_tables_trace.c
175
const struct nft_rule_dp *rule,
net/netfilter/nf_tables_trace.c
178
if (!rule || rule->is_last)
net/netfilter/nf_tables_trace.c
191
cpu_to_be64(rule->handle),
net/netfilter/nf_tables_trace.c
217
static const struct nft_chain *nft_trace_get_chain(const struct nft_rule_dp *rule,
net/netfilter/nf_tables_trace.c
222
if (!rule)
net/netfilter/nf_tables_trace.c
225
while (!rule->is_last)
net/netfilter/nf_tables_trace.c
226
rule = nft_rule_next(rule);
net/netfilter/nf_tables_trace.c
228
last = (const struct nft_rule_dp_last *)rule;
net/netfilter/nf_tables_trace.c
238
const struct nft_rule_dp *rule,
net/netfilter/nf_tables_trace.c
251
chain = nft_trace_get_chain(rule, info);
net/netfilter/nf_tables_trace.c
304
if (nf_trace_fill_rule_info(skb, verdict, rule, info))
net/netfilter/nft_immediate.c
102
struct nft_rule *rule;
net/netfilter/nft_immediate.c
115
list_for_each_entry(rule, &chain->rules, list)
net/netfilter/nft_immediate.c
116
nft_rule_expr_activate(&chain_ctx, rule);
net/netfilter/nft_immediate.c
133
struct nft_rule *rule;
net/netfilter/nft_immediate.c
138
list_for_each_entry(rule, &chain->rules, list)
net/netfilter/nft_immediate.c
139
nft_rule_expr_deactivate(&chain_ctx, rule, phase);
net/netfilter/nft_immediate.c
191
struct nft_rule *rule, *n;
net/netfilter/nft_immediate.c
219
list_for_each_entry_safe(rule, n, &chain->rules, list) {
net/netfilter/nft_immediate.c
221
list_del(&rule->list);
net/netfilter/nft_immediate.c
222
nf_tables_rule_destroy(&chain_ctx, rule);
net/netfilter/nft_immediate.c
282
entry = &flow->rule->action.entries[ctx->num_actions++];
net/netfilter/nft_set_pipapo.c
1014
pipapo_bucket_set(f, rule, group, v);
net/netfilter/nft_set_pipapo.c
1018
pipapo_bucket_set(f, rule, group, i);
net/netfilter/nft_set_pipapo.c
1025
pipapo_bucket_set(f, rule, group, i);
net/netfilter/nft_set_pipapo.c
783
static void pipapo_bucket_set(struct nft_pipapo_field *f, int rule, int group,
net/netfilter/nft_set_pipapo.c
792
__set_bit(rule, pos);
net/netfilter/nft_set_pipapo.c
993
unsigned int rule = f->rules, group, ret, bit_offset = 0;
net/sched/act_ct.c
249
struct flow_action *action = &flow_rule->rule->action;
net/sched/cls_flower.c
2696
cls_flower.rule =
net/sched/cls_flower.c
2698
if (!cls_flower.rule) {
net/sched/cls_flower.c
2708
cls_flower.rule->match.dissector = &f->mask->dissector;
net/sched/cls_flower.c
2709
cls_flower.rule->match.mask = &f->mask->key;
net/sched/cls_flower.c
2710
cls_flower.rule->match.key = &f->mkey;
net/sched/cls_flower.c
2712
err = tc_setup_offload_action(&cls_flower.rule->action, &f->exts,
net/sched/cls_flower.c
2715
kfree(cls_flower.rule);
net/sched/cls_flower.c
2729
tc_cleanup_offload_action(&cls_flower.rule->action);
net/sched/cls_flower.c
2730
kfree(cls_flower.rule);
net/sched/cls_flower.c
2773
cls_flower.rule = flow_rule_alloc(0);
net/sched/cls_flower.c
2774
if (!cls_flower.rule)
net/sched/cls_flower.c
2780
cls_flower.rule->match.dissector = &tmplt->dissector;
net/sched/cls_flower.c
2781
cls_flower.rule->match.mask = &tmplt->mask;
net/sched/cls_flower.c
2782
cls_flower.rule->match.key = &tmplt->dummy_key;
net/sched/cls_flower.c
2788
kfree(cls_flower.rule);
net/sched/cls_flower.c
2867
cls_flower.rule = flow_rule_alloc(0);
net/sched/cls_flower.c
2868
if (!cls_flower.rule)
net/sched/cls_flower.c
2875
cls_flower.rule->match.dissector = &tmplt->dissector;
net/sched/cls_flower.c
2876
cls_flower.rule->match.mask = &tmplt->mask;
net/sched/cls_flower.c
2877
cls_flower.rule->match.key = &tmplt->dummy_key;
net/sched/cls_flower.c
2880
kfree(cls_flower.rule);
net/sched/cls_flower.c
472
cls_flower.rule = flow_rule_alloc(tcf_exts_num_actions(&f->exts));
net/sched/cls_flower.c
473
if (!cls_flower.rule)
net/sched/cls_flower.c
479
cls_flower.rule->match.dissector = &f->mask->dissector;
net/sched/cls_flower.c
480
cls_flower.rule->match.mask = &f->mask->key;
net/sched/cls_flower.c
481
cls_flower.rule->match.key = &f->mkey;
net/sched/cls_flower.c
484
err = tc_setup_offload_action(&cls_flower.rule->action, &f->exts,
net/sched/cls_flower.c
487
kfree(cls_flower.rule);
net/sched/cls_flower.c
494
tc_cleanup_offload_action(&cls_flower.rule->action);
net/sched/cls_flower.c
495
kfree(cls_flower.rule);
net/sched/cls_matchall.c
102
err = tc_setup_offload_action(&cls_mall.rule->action, &head->exts,
net/sched/cls_matchall.c
105
kfree(cls_mall.rule);
net/sched/cls_matchall.c
113
tc_cleanup_offload_action(&cls_mall.rule->action);
net/sched/cls_matchall.c
114
kfree(cls_mall.rule);
net/sched/cls_matchall.c
286
cls_mall.rule = flow_rule_alloc(tcf_exts_num_actions(&head->exts));
net/sched/cls_matchall.c
287
if (!cls_mall.rule)
net/sched/cls_matchall.c
295
err = tc_setup_offload_action(&cls_mall.rule->action, &head->exts,
net/sched/cls_matchall.c
298
kfree(cls_mall.rule);
net/sched/cls_matchall.c
306
tc_cleanup_offload_action(&cls_mall.rule->action);
net/sched/cls_matchall.c
307
kfree(cls_mall.rule);
net/sched/cls_matchall.c
94
cls_mall.rule = flow_rule_alloc(tcf_exts_num_actions(&head->exts));
net/sched/cls_matchall.c
95
if (!cls_mall.rule)
net/wireless/nl80211.c
1179
const struct ieee80211_reg_rule *rule)
net/wireless/nl80211.c
1195
rule->wmm_rule.client[j].cw_min) ||
net/wireless/nl80211.c
1197
rule->wmm_rule.client[j].cw_max) ||
net/wireless/nl80211.c
1199
rule->wmm_rule.client[j].aifsn) ||
net/wireless/nl80211.c
1201
rule->wmm_rule.client[j].cot))
net/wireless/nl80211.c
1343
const struct ieee80211_reg_rule *rule =
net/wireless/nl80211.c
1346
if (!IS_ERR_OR_NULL(rule) && rule->has_wmm) {
net/wireless/nl80211.c
1347
if (nl80211_msg_put_wmm_rules(msg, rule))
net/wireless/nl80211.c
15170
struct cfg80211_coalesce_rules *rule;
net/wireless/nl80211.c
15184
rule = &rdev->coalesce->rules[i];
net/wireless/nl80211.c
15186
rule->delay))
net/wireless/nl80211.c
15190
rule->condition))
net/wireless/nl80211.c
15198
for (j = 0; j < rule->n_patterns; j++) {
net/wireless/nl80211.c
15202
pat_len = rule->patterns[j].pattern_len;
net/wireless/nl80211.c
15205
rule->patterns[j].mask) ||
net/wireless/nl80211.c
15207
rule->patterns[j].pattern) ||
net/wireless/nl80211.c
15209
rule->patterns[j].pkt_offset))
net/wireless/nl80211.c
15253
struct cfg80211_coalesce_rules *rule;
net/wireless/nl80211.c
15259
rule = &coalesce->rules[i];
net/wireless/nl80211.c
15260
for (j = 0; j < rule->n_patterns; j++)
net/wireless/nl80211.c
15261
kfree(rule->patterns[j].mask);
net/wireless/nl80211.c
15262
kfree(rule->patterns);
net/wireless/nl80211.c
15268
struct nlattr *rule,
net/wireless/nl80211.c
15278
rule, nl80211_coalesce_policy, NULL);
net/wireless/nl80211.c
15361
struct nlattr *rule;
net/wireless/nl80211.c
15373
nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE],
net/wireless/nl80211.c
15386
nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE],
net/wireless/nl80211.c
15388
err = nl80211_parse_coalesce_rule(rdev, rule,
net/wireless/nl80211.c
1946
struct nl80211_coalesce_rule_support rule;
net/wireless/nl80211.c
1951
rule.max_rules = rdev->wiphy.coalesce->n_rules;
net/wireless/nl80211.c
1952
rule.max_delay = rdev->wiphy.coalesce->max_delay;
net/wireless/nl80211.c
1953
rule.pat.max_patterns = rdev->wiphy.coalesce->n_patterns;
net/wireless/nl80211.c
1954
rule.pat.min_pattern_len = rdev->wiphy.coalesce->pattern_min_len;
net/wireless/nl80211.c
1955
rule.pat.max_pattern_len = rdev->wiphy.coalesce->pattern_max_len;
net/wireless/nl80211.c
1956
rule.pat.max_pkt_offset = rdev->wiphy.coalesce->max_pkt_offset;
net/wireless/nl80211.c
1958
if (nla_put(msg, NL80211_ATTR_COALESCE_RULE, sizeof(rule), &rule))
net/wireless/reg.c
1161
const struct ieee80211_reg_rule *rule)
net/wireless/reg.c
1163
const struct ieee80211_freq_range *freq_range = &rule->freq_range;
net/wireless/reg.c
1169
if (rule == &rd->reg_rules[idx])
net/wireless/reg.c
1191
freq_range = &rule->freq_range;
net/wireless/reg.c
1210
const struct ieee80211_reg_rule *rule)
net/wireless/reg.c
1212
unsigned int bw = reg_get_max_bandwidth_from_range(rd, rule);
net/wireless/reg.c
1214
if (rule->flags & NL80211_RRF_NO_320MHZ)
net/wireless/reg.c
1216
if (rule->flags & NL80211_RRF_NO_160MHZ)
net/wireless/reg.c
1218
if (rule->flags & NL80211_RRF_NO_80MHZ)
net/wireless/reg.c
1225
if (rule->flags & NL80211_RRF_NO_HT40MINUS &&
net/wireless/reg.c
1226
rule->flags & NL80211_RRF_NO_HT40PLUS)
net/wireless/reg.c
1233
static bool is_valid_reg_rule(const struct ieee80211_reg_rule *rule)
net/wireless/reg.c
1235
const struct ieee80211_freq_range *freq_range = &rule->freq_range;
net/wireless/reg.c
1460
static void add_rule(struct ieee80211_reg_rule *rule,
net/wireless/reg.c
1469
if (rule_contains(tmp_rule, rule))
net/wireless/reg.c
1473
if (rule_contains(rule, tmp_rule)) {
net/wireless/reg.c
1474
memcpy(tmp_rule, rule, sizeof(*rule));
net/wireless/reg.c
1479
memcpy(&reg_rules[*n_rules], rule, sizeof(*rule));
net/wireless/reg.c
663
static bool valid_wmm(struct fwdb_wmm_rule *rule)
net/wireless/reg.c
665
struct fwdb_wmm_ac *ac = (struct fwdb_wmm_ac *)rule;
net/wireless/reg.c
685
struct fwdb_rule *rule = (void *)(data + (rule_ptr << 2));
net/wireless/reg.c
687
if ((u8 *)rule + sizeof(rule->len) > data + size)
net/wireless/reg.c
691
if (rule->len < offsetofend(struct fwdb_rule, max_bw))
net/wireless/reg.c
693
if (rule->len >= offsetofend(struct fwdb_rule, wmm_ptr)) {
net/wireless/reg.c
694
u32 wmm_ptr = be16_to_cpu(rule->wmm_ptr) << 2;
net/wireless/reg.c
845
const struct fwdb_rule *rule,
net/wireless/reg.c
852
wmm_ptr = be16_to_cpu(rule->wmm_ptr) << 2;
net/wireless/reg.c
857
be32_to_cpu(rule->start), be32_to_cpu(rule->end),
net/wireless/reg.c
889
struct fwdb_rule *rule = (void *)((u8 *)db + rule_ptr);
net/wireless/reg.c
891
if (rule->len < offsetofend(struct fwdb_rule, wmm_ptr))
net/wireless/reg.c
894
if (freq >= KHZ_TO_MHZ(be32_to_cpu(rule->start)) &&
net/wireless/reg.c
895
freq <= KHZ_TO_MHZ(be32_to_cpu(rule->end))) {
net/wireless/reg.c
896
set_wmm_rule(db, country, rule, rrule);
net/wireless/reg.c
904
int reg_query_regdb_wmm(char *alpha2, int freq, struct ieee80211_reg_rule *rule)
net/wireless/reg.c
918
return __regdb_query_wmm(regdb, country, freq, rule);
net/wireless/reg.c
947
struct fwdb_rule *rule = (void *)((u8 *)db + rule_ptr);
net/wireless/reg.c
950
rrule->freq_range.start_freq_khz = be32_to_cpu(rule->start);
net/wireless/reg.c
951
rrule->freq_range.end_freq_khz = be32_to_cpu(rule->end);
net/wireless/reg.c
952
rrule->freq_range.max_bandwidth_khz = be32_to_cpu(rule->max_bw);
net/wireless/reg.c
955
rrule->power_rule.max_eirp = be16_to_cpu(rule->max_eirp);
net/wireless/reg.c
958
if (rule->flags & FWDB_FLAG_NO_OFDM)
net/wireless/reg.c
960
if (rule->flags & FWDB_FLAG_NO_OUTDOOR)
net/wireless/reg.c
962
if (rule->flags & FWDB_FLAG_DFS)
net/wireless/reg.c
964
if (rule->flags & FWDB_FLAG_NO_IR)
net/wireless/reg.c
966
if (rule->flags & FWDB_FLAG_AUTO_BW)
net/wireless/reg.c
972
if (rule->len >= offsetofend(struct fwdb_rule, cac_timeout))
net/wireless/reg.c
974
1000 * be16_to_cpu(rule->cac_timeout);
net/wireless/reg.c
975
if (rule->len >= offsetofend(struct fwdb_rule, wmm_ptr))
net/wireless/reg.c
976
set_wmm_rule(db, country, rule, rrule);
net/wireless/reg.h
63
const struct ieee80211_reg_rule *rule);
scripts/gendwarfksyms/kabi.c
100
return rule_values_hash(rule->type, rule->target);
scripts/gendwarfksyms/kabi.c
210
struct rule *rule;
scripts/gendwarfksyms/kabi.c
231
rule = xmalloc(sizeof(*rule));
scripts/gendwarfksyms/kabi.c
233
rule->type = type;
scripts/gendwarfksyms/kabi.c
234
rule->target = xstrdup(get_rule_field(&rule_str, &left));
scripts/gendwarfksyms/kabi.c
235
rule->value = xstrdup(get_rule_field(&rule_str, &left));
scripts/gendwarfksyms/kabi.c
237
hash_add(rules, &rule->hash, rule_hash(rule));
scripts/gendwarfksyms/kabi.c
240
rule->target, rule->value);
scripts/gendwarfksyms/kabi.c
259
static struct rule *find_rule(enum kabi_rule_type type, const char *target)
scripts/gendwarfksyms/kabi.c
261
struct rule *rule;
scripts/gendwarfksyms/kabi.c
268
hash_for_each_possible(rules, rule, hash,
scripts/gendwarfksyms/kabi.c
270
if (rule->type == type && !strcmp(target, rule->target))
scripts/gendwarfksyms/kabi.c
271
return rule;
scripts/gendwarfksyms/kabi.c
277
static struct rule *find_enumerator_rule(enum kabi_rule_type type,
scripts/gendwarfksyms/kabi.c
280
struct rule *rule;
scripts/gendwarfksyms/kabi.c
289
rule = find_rule(type, target);
scripts/gendwarfksyms/kabi.c
292
return rule;
scripts/gendwarfksyms/kabi.c
323
struct rule *rule;
scripts/gendwarfksyms/kabi.c
325
rule = find_enumerator_rule(KABI_RULE_TYPE_ENUMERATOR_VALUE, fqn,
scripts/gendwarfksyms/kabi.c
327
if (rule) {
scripts/gendwarfksyms/kabi.c
328
*value = get_ulong_value(rule->value);
scripts/gendwarfksyms/kabi.c
337
struct rule *rule;
scripts/gendwarfksyms/kabi.c
339
rule = find_rule(KABI_RULE_TYPE_BYTE_SIZE, fqn);
scripts/gendwarfksyms/kabi.c
340
if (rule) {
scripts/gendwarfksyms/kabi.c
341
*value = get_ulong_value(rule->value);
scripts/gendwarfksyms/kabi.c
350
struct rule *rule;
scripts/gendwarfksyms/kabi.c
352
rule = find_rule(KABI_RULE_TYPE_TYPE_STRING, type);
scripts/gendwarfksyms/kabi.c
353
if (rule) {
scripts/gendwarfksyms/kabi.c
354
*str = rule->value;
scripts/gendwarfksyms/kabi.c
364
struct rule *rule;
scripts/gendwarfksyms/kabi.c
366
hash_for_each_safe(rules, rule, tmp, hash) {
scripts/gendwarfksyms/kabi.c
367
free((void *)rule->target);
scripts/gendwarfksyms/kabi.c
368
free((void *)rule->value);
scripts/gendwarfksyms/kabi.c
369
free(rule);
scripts/gendwarfksyms/kabi.c
98
static inline unsigned int rule_hash(const struct rule *rule)
security/apparmor/af_unix.c
173
struct aa_ruleset *rule, aa_state_t state,
security/apparmor/af_unix.c
184
state = aa_dfa_match(rule->policy->dfa, state,
security/apparmor/af_unix.c
191
return aa_do_perms(profile, rule->policy, state, request, p, ad);
security/apparmor/audit.c
211
struct aa_audit_rule *rule = vrule;
security/apparmor/audit.c
213
if (rule) {
security/apparmor/audit.c
214
if (!IS_ERR(rule->label))
security/apparmor/audit.c
215
aa_put_label(rule->label);
security/apparmor/audit.c
216
kfree(rule);
security/apparmor/audit.c
222
struct aa_audit_rule *rule;
security/apparmor/audit.c
233
rule = kzalloc_obj(struct aa_audit_rule, gfp);
security/apparmor/audit.c
235
if (!rule)
security/apparmor/audit.c
239
rule->label = aa_label_parse(&root_ns->unconfined->label, rulestr,
security/apparmor/audit.c
241
if (IS_ERR(rule->label)) {
security/apparmor/audit.c
242
int err = PTR_ERR(rule->label);
security/apparmor/audit.c
243
aa_audit_rule_free(rule);
security/apparmor/audit.c
247
*vrule = rule;
security/apparmor/audit.c
251
int aa_audit_rule_known(struct audit_krule *rule)
security/apparmor/audit.c
255
for (i = 0; i < rule->field_count; i++) {
security/apparmor/audit.c
256
struct audit_field *f = &rule->fields[i];
security/apparmor/audit.c
269
struct aa_audit_rule *rule = vrule;
security/apparmor/audit.c
278
if (aa_label_is_subset(label, rule->label))
security/apparmor/include/audit.h
209
int aa_audit_rule_known(struct audit_krule *rule);
security/integrity/ima/ima_policy.c
1149
if (entry->lsm[lsm_rule].rule)
security/integrity/ima/ima_policy.c
1159
&entry->lsm[lsm_rule].rule,
security/integrity/ima/ima_policy.c
1161
if (!entry->lsm[lsm_rule].rule) {
security/integrity/ima/ima_policy.c
119
void *rule; /* LSM file metadata specific */
security/integrity/ima/ima_policy.c
1424
static int ima_parse_rule(char *rule, struct ima_rule_entry *entry)
security/integrity/ima/ima_policy.c
1445
while ((p = strsep(&rule, " \t")) != NULL) {
security/integrity/ima/ima_policy.c
1963
ssize_t ima_parse_add_rule(char *rule)
security/integrity/ima/ima_policy.c
1971
p = strsep(&rule, "\n");
security/integrity/ima/ima_policy.c
2123
if (entry->lsm[i].args_p && !entry->lsm[i].rule) {
security/integrity/ima/ima_policy.c
2279
if (entry->lsm[i].rule) {
security/integrity/ima/ima_policy.c
388
ima_filter_rule_free(entry->lsm[i].rule);
security/integrity/ima/ima_policy.c
435
&nentry->lsm[i].rule,
security/integrity/ima/ima_policy.c
437
if (!nentry->lsm[i].rule)
security/integrity/ima/ima_policy.c
462
ima_filter_rule_free(entry->lsm[i].rule);
security/integrity/ima/ima_policy.c
519
static bool ima_match_rule_data(struct ima_rule_entry *rule,
security/integrity/ima/ima_policy.c
527
if ((rule->flags & IMA_UID) && !rule->uid_op(cred->uid, rule->uid))
security/integrity/ima/ima_policy.c
530
switch (rule->func) {
security/integrity/ima/ima_policy.c
532
if (!rule->keyrings)
security/integrity/ima/ima_policy.c
535
opt_list = rule->keyrings;
security/integrity/ima/ima_policy.c
538
if (!rule->label)
security/integrity/ima/ima_policy.c
541
opt_list = rule->label;
security/integrity/ima/ima_policy.c
573
static bool ima_match_rules(struct ima_rule_entry *rule,
security/integrity/ima/ima_policy.c
581
struct ima_rule_entry *lsm_rule = rule;
security/integrity/ima/ima_policy.c
584
if ((rule->flags & IMA_FUNC) &&
security/integrity/ima/ima_policy.c
585
(rule->func != func && func != POST_SETATTR))
security/integrity/ima/ima_policy.c
591
return ((rule->func == func) &&
security/integrity/ima/ima_policy.c
592
ima_match_rule_data(rule, func_data, cred));
security/integrity/ima/ima_policy.c
597
if ((rule->flags & IMA_MASK) &&
security/integrity/ima/ima_policy.c
598
(rule->mask != mask && func != POST_SETATTR))
security/integrity/ima/ima_policy.c
600
if ((rule->flags & IMA_INMASK) &&
security/integrity/ima/ima_policy.c
601
(!(rule->mask & mask) && func != POST_SETATTR))
security/integrity/ima/ima_policy.c
603
if ((rule->flags & IMA_FSMAGIC)
security/integrity/ima/ima_policy.c
604
&& rule->fsmagic != inode->i_sb->s_magic)
security/integrity/ima/ima_policy.c
606
if ((rule->flags & IMA_FSNAME)
security/integrity/ima/ima_policy.c
607
&& strcmp(rule->fsname, inode->i_sb->s_type->name))
security/integrity/ima/ima_policy.c
609
if (rule->flags & IMA_FS_SUBTYPE) {
security/integrity/ima/ima_policy.c
612
if (strcmp(rule->fs_subtype, inode->i_sb->s_subtype))
security/integrity/ima/ima_policy.c
615
if ((rule->flags & IMA_FSUUID) &&
security/integrity/ima/ima_policy.c
616
!uuid_equal(&rule->fsuuid, &inode->i_sb->s_uuid))
security/integrity/ima/ima_policy.c
618
if ((rule->flags & IMA_UID) && !rule->uid_op(cred->uid, rule->uid))
security/integrity/ima/ima_policy.c
620
if (rule->flags & IMA_EUID) {
security/integrity/ima/ima_policy.c
622
if (!rule->uid_op(cred->euid, rule->uid)
security/integrity/ima/ima_policy.c
623
&& !rule->uid_op(cred->suid, rule->uid)
security/integrity/ima/ima_policy.c
624
&& !rule->uid_op(cred->uid, rule->uid))
security/integrity/ima/ima_policy.c
626
} else if (!rule->uid_op(cred->euid, rule->uid))
security/integrity/ima/ima_policy.c
629
if ((rule->flags & IMA_GID) && !rule->gid_op(cred->gid, rule->gid))
security/integrity/ima/ima_policy.c
631
if (rule->flags & IMA_EGID) {
security/integrity/ima/ima_policy.c
633
if (!rule->gid_op(cred->egid, rule->gid)
security/integrity/ima/ima_policy.c
634
&& !rule->gid_op(cred->sgid, rule->gid)
security/integrity/ima/ima_policy.c
635
&& !rule->gid_op(cred->gid, rule->gid))
security/integrity/ima/ima_policy.c
637
} else if (!rule->gid_op(cred->egid, rule->gid))
security/integrity/ima/ima_policy.c
640
if ((rule->flags & IMA_FOWNER) &&
security/integrity/ima/ima_policy.c
641
!rule->fowner_op(i_uid_into_vfsuid(idmap, inode),
security/integrity/ima/ima_policy.c
642
rule->fowner))
security/integrity/ima/ima_policy.c
644
if ((rule->flags & IMA_FGROUP) &&
security/integrity/ima/ima_policy.c
645
!rule->fgroup_op(i_gid_into_vfsgid(idmap, inode),
security/integrity/ima/ima_policy.c
646
rule->fgroup))
security/integrity/ima/ima_policy.c
652
if (!lsm_rule->lsm[i].rule) {
security/integrity/ima/ima_policy.c
668
lsm_rule->lsm[i].rule);
security/integrity/ima/ima_policy.c
675
lsm_rule->lsm[i].rule);
security/integrity/ima/ima_policy.c
682
lsm_rule = ima_lsm_copy_rule(rule, GFP_ATOMIC);
security/integrity/ima/ima_policy.c
698
ima_filter_rule_free(lsm_rule->lsm[i].rule);
security/integrity/ima/ima_policy.c
708
static int get_subaction(struct ima_rule_entry *rule, enum ima_hooks func)
security/integrity/ima/ima_policy.c
710
if (!(rule->flags & IMA_FUNC))
security/integrity/ima/ima_policy.c
907
static int ima_parse_rule(char *rule, struct ima_rule_entry *entry);
security/integrity/ima/ima_policy.c
930
char rule[255];
security/integrity/ima/ima_policy.c
933
result = strscpy(rule, *rules, sizeof(rule));
security/integrity/ima/ima_policy.c
936
result = ima_parse_rule(rule, &arch_policy_entry[i]);
security/integrity/ima/ima_policy.c
939
rule);
security/ipe/eval.c
318
const struct ipe_rule *rule = NULL;
security/ipe/eval.c
347
list_for_each_entry(rule, &rules->rules, next) {
security/ipe/eval.c
350
list_for_each_entry(prop, &rule->props, next) {
security/ipe/eval.c
361
action = rule->action;
security/ipe/eval.c
372
ipe_audit_match(ctx, match_type, action, rule);
security/landlock/fs.c
367
const struct landlock_rule *rule;
security/landlock/fs.c
380
rule = landlock_find_rule(domain, id);
security/landlock/fs.c
382
return rule;
security/landlock/fs.c
824
const struct landlock_rule *rule;
security/landlock/fs.c
866
rule = find_rule(domain, walker_path.dentry);
security/landlock/fs.c
869
landlock_unmask_layers(rule, layer_masks_parent1);
security/landlock/fs.c
872
landlock_unmask_layers(rule, layer_masks_parent2);
security/landlock/net.c
190
rule = landlock_find_rule(subject->domain, id);
security/landlock/net.c
197
if (landlock_unmask_layers(rule, &layer_masks))
security/landlock/net.c
51
const struct landlock_rule *rule;
security/landlock/ruleset.c
165
static void free_rule(struct landlock_rule *const rule,
security/landlock/ruleset.c
169
if (!rule)
security/landlock/ruleset.c
172
landlock_put_object(rule->key.object);
security/landlock/ruleset.c
173
kfree(rule);
security/landlock/ruleset.c
628
bool landlock_unmask_layers(const struct landlock_rule *const rule,
security/landlock/ruleset.c
633
if (!rule)
security/landlock/ruleset.c
646
for (size_t i = 0; i < rule->num_layers; i++) {
security/landlock/ruleset.c
647
const struct landlock_layer *const layer = &rule->layers[i];
security/landlock/ruleset.c
80
const struct landlock_rule rule = {
security/landlock/ruleset.c
88
BUILD_BUG_ON(rule.num_layers < LANDLOCK_MAX_NUM_LAYERS);
security/landlock/ruleset.h
304
bool landlock_unmask_layers(const struct landlock_rule *const rule,
security/safesetid/lsm.c
36
struct setid_rule *rule;
security/safesetid/lsm.c
40
hash_for_each_possible(policy->rules, rule, next, __kuid_val(src.uid)) {
security/safesetid/lsm.c
41
if (!uid_eq(rule->src_id.uid, src.uid))
security/safesetid/lsm.c
43
if (uid_eq(rule->dst_id.uid, dst.uid))
security/safesetid/lsm.c
48
hash_for_each_possible(policy->rules, rule, next, __kgid_val(src.gid)) {
security/safesetid/lsm.c
49
if (!gid_eq(rule->src_id.gid, src.gid))
security/safesetid/lsm.c
51
if (gid_eq(rule->dst_id.gid, dst.gid)){
security/safesetid/securityfs.c
101
struct setid_rule *rule, *nrule;
security/safesetid/securityfs.c
104
hash_for_each(pol->rules, bucket, rule, next) {
security/safesetid/securityfs.c
105
if (_setid_policy_lookup(pol, rule->dst_id, INVALID_ID) == SIDPOL_DEFAULT) {
security/safesetid/securityfs.c
108
__kuid_val(rule->src_id.uid),
security/safesetid/securityfs.c
109
__kuid_val(rule->dst_id.uid));
security/safesetid/securityfs.c
112
__kgid_val(rule->src_id.gid),
security/safesetid/securityfs.c
113
__kgid_val(rule->dst_id.gid));
security/safesetid/securityfs.c
125
nrule->src_id.uid = rule->dst_id.uid;
security/safesetid/securityfs.c
126
nrule->dst_id.uid = rule->dst_id.uid;
security/safesetid/securityfs.c
129
nrule->src_id.gid = rule->dst_id.gid;
security/safesetid/securityfs.c
130
nrule->dst_id.gid = rule->dst_id.gid;
security/safesetid/securityfs.c
169
struct setid_rule *rule;
security/safesetid/securityfs.c
178
rule = kmalloc_obj(struct setid_rule);
security/safesetid/securityfs.c
179
if (!rule) {
security/safesetid/securityfs.c
184
rule->type = policy_type;
security/safesetid/securityfs.c
185
err = parse_policy_line(file, p, rule);
security/safesetid/securityfs.c
189
if (_setid_policy_lookup(pol, rule->src_id, rule->dst_id) == SIDPOL_ALLOWED) {
security/safesetid/securityfs.c
195
insert_rule(pol, rule);
security/safesetid/securityfs.c
200
kfree(rule);
security/safesetid/securityfs.c
32
struct setid_rule *rule)
security/safesetid/securityfs.c
53
if (rule->type == UID){
security/safesetid/securityfs.c
54
rule->src_id.uid = make_kuid(file->f_cred->user_ns, parsed_parent);
security/safesetid/securityfs.c
55
rule->dst_id.uid = make_kuid(file->f_cred->user_ns, parsed_child);
security/safesetid/securityfs.c
56
if (!uid_valid(rule->src_id.uid) || !uid_valid(rule->dst_id.uid))
security/safesetid/securityfs.c
58
} else if (rule->type == GID){
security/safesetid/securityfs.c
59
rule->src_id.gid = make_kgid(file->f_cred->user_ns, parsed_parent);
security/safesetid/securityfs.c
60
rule->dst_id.gid = make_kgid(file->f_cred->user_ns, parsed_child);
security/safesetid/securityfs.c
61
if (!gid_valid(rule->src_id.gid) || !gid_valid(rule->dst_id.gid))
security/safesetid/securityfs.c
75
struct setid_rule *rule;
security/safesetid/securityfs.c
78
hash_for_each_safe(pol->rules, bucket, tmp, rule, next)
security/safesetid/securityfs.c
79
kfree(rule);
security/safesetid/securityfs.c
88
static void insert_rule(struct setid_ruleset *pol, struct setid_rule *rule)
security/safesetid/securityfs.c
91
hash_add(pol->rules, &rule->next, __kuid_val(rule->src_id.uid));
security/safesetid/securityfs.c
93
hash_add(pol->rules, &rule->next, __kgid_val(rule->src_id.gid));
security/selinux/include/audit.h
39
int selinux_audit_rule_init(u32 field, u32 op, char *rulestr, void **rule,
security/selinux/include/audit.h
49
void selinux_audit_rule_free(void *rule);
security/selinux/include/audit.h
62
void *rule);
security/selinux/include/audit.h
69
int selinux_audit_rule_known(struct audit_krule *rule);
security/selinux/ss/services.c
3582
struct selinux_audit_rule *rule = vrule;
security/selinux/ss/services.c
3584
if (rule) {
security/selinux/ss/services.c
3585
context_destroy(&rule->au_ctxt);
security/selinux/ss/services.c
3586
kfree(rule);
security/selinux/ss/services.c
3600
struct selinux_audit_rule **rule = (struct selinux_audit_rule **)vrule;
security/selinux/ss/services.c
3603
*rule = NULL;
security/selinux/ss/services.c
3681
*rule = tmprule;
security/selinux/ss/services.c
3687
*rule = NULL;
security/selinux/ss/services.c
3692
int selinux_audit_rule_known(struct audit_krule *rule)
security/selinux/ss/services.c
3696
for (i = 0; i < rule->field_count; i++) {
security/selinux/ss/services.c
3697
struct audit_field *f = &rule->fields[i];
security/selinux/ss/services.c
3722
struct selinux_audit_rule *rule = vrule;
security/selinux/ss/services.c
3725
if (unlikely(!rule)) {
security/selinux/ss/services.c
3737
if (rule->au_seqno < policy->latest_granting) {
security/selinux/ss/services.c
3757
match = (ctxt->user == rule->au_ctxt.user);
security/selinux/ss/services.c
3760
match = (ctxt->user != rule->au_ctxt.user);
security/selinux/ss/services.c
3768
match = (ctxt->role == rule->au_ctxt.role);
security/selinux/ss/services.c
3771
match = (ctxt->role != rule->au_ctxt.role);
security/selinux/ss/services.c
3779
match = (ctxt->type == rule->au_ctxt.type);
security/selinux/ss/services.c
3782
match = (ctxt->type != rule->au_ctxt.type);
security/selinux/ss/services.c
3795
match = mls_level_eq(&rule->au_ctxt.range.level[0],
security/selinux/ss/services.c
3799
match = !mls_level_eq(&rule->au_ctxt.range.level[0],
security/selinux/ss/services.c
3803
match = (mls_level_dom(&rule->au_ctxt.range.level[0],
security/selinux/ss/services.c
3805
!mls_level_eq(&rule->au_ctxt.range.level[0],
security/selinux/ss/services.c
3809
match = mls_level_dom(&rule->au_ctxt.range.level[0],
security/selinux/ss/services.c
3814
&rule->au_ctxt.range.level[0]) &&
security/selinux/ss/services.c
3816
&rule->au_ctxt.range.level[0]));
security/selinux/ss/services.c
3820
&rule->au_ctxt.range.level[0]);
security/smack/smack_lsm.c
4781
char **rule = (char **)vrule;
security/smack/smack_lsm.c
4782
*rule = NULL;
security/smack/smack_lsm.c
4794
*rule = skp->smk_known;
security/smack/smack_lsm.c
4836
char *rule = vrule;
security/smack/smack_lsm.c
4838
if (unlikely(!rule)) {
security/smack/smack_lsm.c
4852
return (rule == skp->smk_known);
security/smack/smack_lsm.c
4854
return (rule != skp->smk_known);
security/smack/smackfs.c
2298
struct smack_parsed_rule rule;
security/smack/smackfs.c
2309
res = smk_parse_rule(data, &rule, 0);
security/smack/smackfs.c
2314
res = smk_parse_long_rule(data, &rule, 0, 3);
security/smack/smackfs.c
2318
res = smk_access(rule.smk_subject, rule.smk_object,
security/smack/smackfs.c
2319
rule.smk_access1, NULL);
security/smack/smackfs.c
318
struct smack_parsed_rule *rule, int import,
security/smack/smackfs.c
325
rule->smk_subject = smk_import_entry(subject, len);
security/smack/smackfs.c
326
if (IS_ERR(rule->smk_subject))
security/smack/smackfs.c
327
return PTR_ERR(rule->smk_subject);
security/smack/smackfs.c
329
rule->smk_object = smk_import_entry(object, len);
security/smack/smackfs.c
330
if (IS_ERR(rule->smk_object))
security/smack/smackfs.c
331
return PTR_ERR(rule->smk_object);
security/smack/smackfs.c
340
rule->smk_subject = skp;
security/smack/smackfs.c
349
rule->smk_object = skp;
security/smack/smackfs.c
352
rule->smk_access1 = smk_perm_from_str(access1);
security/smack/smackfs.c
354
rule->smk_access2 = smk_perm_from_str(access2);
security/smack/smackfs.c
356
rule->smk_access2 = ~rule->smk_access1;
security/smack/smackfs.c
369
static int smk_parse_rule(const char *data, struct smack_parsed_rule *rule,
security/smack/smackfs.c
375
data + SMK_LABELLEN + SMK_LABELLEN, NULL, rule,
security/smack/smackfs.c
389
static ssize_t smk_parse_long_rule(char *data, struct smack_parsed_rule *rule,
security/smack/smackfs.c
419
rc = smk_fill_rule(tok[0], tok[1], tok[2], tok[3], rule, import, 0);
security/smack/smackfs.c
450
struct smack_parsed_rule rule;
security/smack/smackfs.c
498
rc = smk_parse_rule(data, &rule, 1);
security/smack/smackfs.c
503
rc = smk_parse_long_rule(data + cnt, &rule, 1, tokens);
security/smack/smackfs.c
514
rc = smk_set_access(&rule, &rule.smk_subject->smk_rules,
security/smack/smackfs.c
515
&rule.smk_subject->smk_rules_lock);
security/smack/smackfs.c
517
rc = smk_set_access(&rule, rule_list, rule_lock);
security/smack/smackfs.c
844
char *rule;
security/smack/smackfs.c
867
rule = data;
security/smack/smackfs.c
874
skp = smk_import_entry(rule, 0);
security/smack/smackfs.c
881
rule += SMK_LABELLEN;
security/smack/smackfs.c
883
rule += strlen(skp->smk_known) + 1;
security/smack/smackfs.c
885
if (rule > data + count) {
security/smack/smackfs.c
890
ret = sscanf(rule, "%d", &maplevel);
security/smack/smackfs.c
894
rule += SMK_DIGITLEN;
security/smack/smackfs.c
895
if (rule > data + count) {
security/smack/smackfs.c
900
ret = sscanf(rule, "%d", &catlen);
security/smack/smackfs.c
911
rule += SMK_DIGITLEN;
security/smack/smackfs.c
912
if (rule > data + count) {
security/smack/smackfs.c
916
ret = sscanf(rule, "%u", &cat);
sound/arm/aaci.c
371
struct snd_pcm_hw_rule *rule)
sound/arm/aaci.c
374
struct aaci *aaci = rule->private;
sound/arm/aaci.c
385
return snd_interval_list(hw_param_interval(p, rule->var),
sound/core/pcm_drm_eld.c
101
const u8 *sad, *eld = rule->private;
sound/core/pcm_drm_eld.c
124
struct snd_pcm_hw_rule *rule)
sound/core/pcm_drm_eld.c
126
struct snd_interval *c = hw_param_interval(params, rule->var);
sound/core/pcm_drm_eld.c
130
const u8 *sad, *eld = rule->private;
sound/core/pcm_drm_eld.c
96
struct snd_pcm_hw_rule *rule)
sound/core/pcm_drm_eld.c
98
struct snd_interval *r = hw_param_interval(params, rule->var);
sound/core/pcm_lib.c
1298
struct snd_pcm_hw_rule *rule)
sound/core/pcm_lib.c
1300
struct snd_pcm_hw_constraint_list *list = rule->private;
sound/core/pcm_lib.c
1301
return snd_interval_list(hw_param_interval(params, rule->var), list->count, list->list, list->mask);
sound/core/pcm_lib.c
1328
struct snd_pcm_hw_rule *rule)
sound/core/pcm_lib.c
1330
struct snd_pcm_hw_constraint_ranges *r = rule->private;
sound/core/pcm_lib.c
1331
return snd_interval_ranges(hw_param_interval(params, rule->var),
sound/core/pcm_lib.c
1359
struct snd_pcm_hw_rule *rule)
sound/core/pcm_lib.c
1361
const struct snd_pcm_hw_constraint_ratnums *r = rule->private;
sound/core/pcm_lib.c
1364
err = snd_interval_ratnum(hw_param_interval(params, rule->var),
sound/core/pcm_lib.c
1366
if (err >= 0 && den && rule->var == SNDRV_PCM_HW_PARAM_RATE) {
sound/core/pcm_lib.c
1394
struct snd_pcm_hw_rule *rule)
sound/core/pcm_lib.c
1396
const struct snd_pcm_hw_constraint_ratdens *r = rule->private;
sound/core/pcm_lib.c
1398
int err = snd_interval_ratden(hw_param_interval(params, rule->var),
sound/core/pcm_lib.c
1400
if (err >= 0 && den && rule->var == SNDRV_PCM_HW_PARAM_RATE) {
sound/core/pcm_lib.c
1428
struct snd_pcm_hw_rule *rule)
sound/core/pcm_lib.c
1430
unsigned int l = (unsigned long) rule->private;
sound/core/pcm_lib.c
1474
struct snd_pcm_hw_rule *rule)
sound/core/pcm_lib.c
1476
unsigned long step = (unsigned long) rule->private;
sound/core/pcm_lib.c
1477
return snd_interval_step(hw_param_interval(params, rule->var), step);
sound/core/pcm_lib.c
1500
static int snd_pcm_hw_rule_pow2(struct snd_pcm_hw_params *params, struct snd_pcm_hw_rule *rule)
sound/core/pcm_lib.c
1508
return snd_interval_list(hw_param_interval(params, rule->var),
sound/core/pcm_lib.c
1531
struct snd_pcm_hw_rule *rule)
sound/core/pcm_lib.c
1533
unsigned int base_rate = (unsigned int)(uintptr_t)rule->private;
sound/core/pcm_native.c
2371
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2374
snd_interval_mul(hw_param_interval_c(params, rule->deps[0]),
sound/core/pcm_native.c
2375
hw_param_interval_c(params, rule->deps[1]), &t);
sound/core/pcm_native.c
2376
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/core/pcm_native.c
2380
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2383
snd_interval_div(hw_param_interval_c(params, rule->deps[0]),
sound/core/pcm_native.c
2384
hw_param_interval_c(params, rule->deps[1]), &t);
sound/core/pcm_native.c
2385
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/core/pcm_native.c
2389
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2392
snd_interval_muldivk(hw_param_interval_c(params, rule->deps[0]),
sound/core/pcm_native.c
2393
hw_param_interval_c(params, rule->deps[1]),
sound/core/pcm_native.c
2394
(unsigned long) rule->private, &t);
sound/core/pcm_native.c
2395
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/core/pcm_native.c
2399
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2402
snd_interval_mulkdiv(hw_param_interval_c(params, rule->deps[0]),
sound/core/pcm_native.c
2403
(unsigned long) rule->private,
sound/core/pcm_native.c
2404
hw_param_interval_c(params, rule->deps[1]), &t);
sound/core/pcm_native.c
2405
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/core/pcm_native.c
2409
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2413
hw_param_interval_c(params, rule->deps[0]);
sound/core/pcm_native.c
2431
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2453
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/core/pcm_native.c
2475
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2477
struct snd_pcm_hardware *hw = rule->private;
sound/core/pcm_native.c
2478
return snd_interval_list(hw_param_interval(params, rule->var),
sound/core/pcm_native.c
2484
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2487
struct snd_pcm_substream *substream = rule->private;
sound/core/pcm_native.c
2493
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/core/pcm_native.c
2497
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2501
u32 *subformats = rule->private;
sound/drivers/aloop.c
1001
struct loopback_pcm *dpcm = rule->private;
sound/drivers/aloop.c
1011
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/drivers/aloop.c
1015
struct snd_pcm_hw_rule *rule)
sound/drivers/aloop.c
1017
struct loopback_pcm *dpcm = rule->private;
sound/drivers/aloop.c
1027
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/drivers/aloop.c
1031
struct snd_pcm_hw_rule *rule)
sound/drivers/aloop.c
1033
struct loopback_pcm *dpcm = rule->private;
sound/drivers/aloop.c
1044
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/drivers/aloop.c
984
struct snd_pcm_hw_rule *rule)
sound/drivers/aloop.c
986
struct loopback_pcm *dpcm = rule->private;
sound/drivers/aloop.c
995
return snd_mask_refine(hw_param_mask(params, rule->var), &m);
sound/drivers/aloop.c
999
struct snd_pcm_hw_rule *rule)
sound/firewire/amdtp-stream.c
161
struct snd_pcm_hw_rule *rule)
sound/firewire/amdtp-stream.c
163
struct snd_interval *s = hw_param_interval(params, rule->var);
sound/firewire/bebob/bebob_pcm.c
11
hw_rule_rate(struct snd_pcm_hw_params *params, struct snd_pcm_hw_rule *rule)
sound/firewire/bebob/bebob_pcm.c
13
struct snd_bebob_stream_formation *formations = rule->private;
sound/firewire/bebob/bebob_pcm.c
39
hw_rule_channels(struct snd_pcm_hw_params *params, struct snd_pcm_hw_rule *rule)
sound/firewire/bebob/bebob_pcm.c
41
struct snd_bebob_stream_formation *formations = rule->private;
sound/firewire/dice/dice-pcm.c
12
struct snd_pcm_hw_rule *rule)
sound/firewire/dice/dice-pcm.c
14
struct snd_pcm_substream *substream = rule->private;
sound/firewire/dice/dice-pcm.c
50
struct snd_pcm_hw_rule *rule)
sound/firewire/dice/dice-pcm.c
52
struct snd_pcm_substream *substream = rule->private;
sound/firewire/digi00x/digi00x-pcm.c
11
struct snd_pcm_hw_rule *rule)
sound/firewire/digi00x/digi00x-pcm.c
35
struct snd_pcm_hw_rule *rule)
sound/firewire/fireface/ff-pcm.c
11
struct snd_pcm_hw_rule *rule)
sound/firewire/fireface/ff-pcm.c
13
const unsigned int *pcm_channels = rule->private;
sound/firewire/fireface/ff-pcm.c
42
struct snd_pcm_hw_rule *rule)
sound/firewire/fireface/ff-pcm.c
44
const unsigned int *pcm_channels = rule->private;
sound/firewire/fireworks/fireworks_pcm.c
64
hw_rule_rate(struct snd_pcm_hw_params *params, struct snd_pcm_hw_rule *rule)
sound/firewire/fireworks/fireworks_pcm.c
66
unsigned int *pcm_channels = rule->private;
sound/firewire/fireworks/fireworks_pcm.c
89
hw_rule_channels(struct snd_pcm_hw_params *params, struct snd_pcm_hw_rule *rule)
sound/firewire/fireworks/fireworks_pcm.c
91
unsigned int *pcm_channels = rule->private;
sound/firewire/motu/motu-pcm.c
12
struct snd_pcm_hw_rule *rule)
sound/firewire/motu/motu-pcm.c
14
struct snd_motu_packet_format *formats = rule->private;
sound/firewire/motu/motu-pcm.c
41
struct snd_pcm_hw_rule *rule)
sound/firewire/motu/motu-pcm.c
43
struct snd_motu_packet_format *formats = rule->private;
sound/firewire/oxfw/oxfw-pcm.c
11
struct snd_pcm_hw_rule *rule)
sound/firewire/oxfw/oxfw-pcm.c
13
u8 **formats = rule->private;
sound/firewire/oxfw/oxfw-pcm.c
42
struct snd_pcm_hw_rule *rule)
sound/firewire/oxfw/oxfw-pcm.c
44
u8 **formats = rule->private;
sound/isa/sb/sb8_main.c
63
struct snd_pcm_hw_rule *rule)
sound/isa/sb/sb8_main.c
80
struct snd_pcm_hw_rule *rule)
sound/mips/snd-n64.c
152
struct snd_pcm_hw_rule *rule)
sound/pci/ac97/ac97_pcm.c
680
struct snd_pcm_hw_rule *rule)
sound/pci/ac97/ac97_pcm.c
695
struct snd_pcm_hw_rule *rule)
sound/pci/echoaudio/echoaudio.c
125
struct snd_pcm_hw_rule *rule)
sound/pci/echoaudio/echoaudio.c
159
struct snd_pcm_hw_rule *rule)
sound/pci/echoaudio/echoaudio.c
194
struct snd_pcm_hw_rule *rule)
sound/pci/echoaudio/echoaudio.c
232
struct snd_pcm_hw_rule *rule)
sound/pci/echoaudio/echoaudio.c
236
struct echoaudio *chip = rule->private;
sound/pci/echoaudio/echoaudio.c
97
struct snd_pcm_hw_rule *rule)
sound/pci/rme9652/hdsp.c
4252
struct snd_pcm_hw_rule *rule)
sound/pci/rme9652/hdsp.c
4254
struct hdsp *hdsp = rule->private;
sound/pci/rme9652/hdsp.c
4271
struct snd_pcm_hw_rule *rule)
sound/pci/rme9652/hdsp.c
4274
struct hdsp *hdsp = rule->private;
sound/pci/rme9652/hdsp.c
4289
struct snd_pcm_hw_rule *rule)
sound/pci/rme9652/hdsp.c
4291
struct hdsp *hdsp = rule->private;
sound/pci/rme9652/hdsp.c
4320
struct snd_pcm_hw_rule *rule)
sound/pci/rme9652/hdsp.c
4322
struct hdsp *hdsp = rule->private;
sound/pci/rme9652/hdsp.c
4351
struct snd_pcm_hw_rule *rule)
sound/pci/rme9652/hdsp.c
4353
struct hdsp *hdsp = rule->private;
sound/pci/rme9652/hdsp.c
4382
struct snd_pcm_hw_rule *rule)
sound/pci/rme9652/hdsp.c
4384
struct hdsp *hdsp = rule->private;
sound/pci/rme9652/hdspm.c
5822
struct snd_pcm_hw_rule *rule)
sound/pci/rme9652/hdspm.c
5824
struct hdspm *hdspm = rule->private;
sound/pci/rme9652/hdspm.c
5857
struct snd_pcm_hw_rule * rule)
sound/pci/rme9652/hdspm.c
5859
struct hdspm *hdspm = rule->private;
sound/pci/rme9652/hdspm.c
5892
struct snd_pcm_hw_rule * rule)
sound/pci/rme9652/hdspm.c
5894
struct hdspm *hdspm = rule->private;
sound/pci/rme9652/hdspm.c
5926
struct snd_pcm_hw_rule *rule)
sound/pci/rme9652/hdspm.c
5928
struct hdspm *hdspm = rule->private;
sound/pci/rme9652/hdspm.c
5961
struct snd_pcm_hw_rule *rule)
sound/pci/rme9652/hdspm.c
5964
struct hdspm *hdspm = rule->private;
sound/pci/rme9652/hdspm.c
5975
struct snd_pcm_hw_rule *rule)
sound/pci/rme9652/hdspm.c
5978
struct hdspm *hdspm = rule->private;
sound/pci/rme9652/rme9652.c
2132
struct snd_pcm_hw_rule *rule)
sound/pci/rme9652/rme9652.c
2134
struct snd_rme9652 *rme9652 = rule->private;
sound/pci/rme9652/rme9652.c
2141
struct snd_pcm_hw_rule *rule)
sound/pci/rme9652/rme9652.c
2143
struct snd_rme9652 *rme9652 = rule->private;
sound/pci/rme9652/rme9652.c
2165
struct snd_pcm_hw_rule *rule)
sound/pci/rme9652/rme9652.c
2167
struct snd_rme9652 *rme9652 = rule->private;
sound/pci/sonicvibes.c
531
struct snd_pcm_hw_rule *rule)
sound/ppc/pmac.c
517
struct snd_pcm_hw_rule *rule)
sound/ppc/pmac.c
519
struct snd_pmac *chip = rule->private;
sound/ppc/pmac.c
520
struct pmac_stream *rec = snd_pmac_get_stream(chip, rule->deps[0]);
sound/ppc/pmac.c
531
return snd_interval_list(hw_param_interval(params, rule->var),
sound/ppc/pmac.c
536
struct snd_pcm_hw_rule *rule)
sound/ppc/pmac.c
538
struct snd_pmac *chip = rule->private;
sound/ppc/pmac.c
539
struct pmac_stream *rec = snd_pmac_get_stream(chip, rule->deps[0]);
sound/soc/atmel/atmel_ssc_dai.c
192
struct snd_pcm_hw_rule *rule)
sound/soc/atmel/atmel_ssc_dai.c
194
struct atmel_ssc_info *ssc_p = rule->private;
sound/soc/atmel/atmel_ssc_dai.c
196
struct snd_interval *i = hw_param_interval(params, rule->var);
sound/soc/atmel/atmel_ssc_dai.c
240
if (ret >= 0 && den && rule->var == SNDRV_PCM_HW_PARAM_RATE) {
sound/soc/codecs/cs4234.c
446
static int cs4234_dai_rule_rate(struct snd_pcm_hw_params *params, struct snd_pcm_hw_rule *rule)
sound/soc/codecs/cs4234.c
448
struct cs4234 *cs4234 = rule->private;
sound/soc/codecs/cs4234.c
461
return snd_interval_ranges(hw_param_interval(params, rule->var),
sound/soc/codecs/framer-codec.c
101
struct snd_pcm_hw_rule *rule)
sound/soc/codecs/framer-codec.c
103
struct snd_soc_dai *dai = rule->private;
sound/soc/codecs/framer-codec.c
138
struct snd_pcm_hw_rule *rule)
sound/soc/codecs/framer-codec.c
140
struct snd_soc_dai *dai = rule->private;
sound/soc/codecs/framer-codec.c
147
struct snd_pcm_hw_rule *rule)
sound/soc/codecs/framer-codec.c
149
struct snd_soc_dai *dai = rule->private;
sound/soc/codecs/framer-codec.c
92
struct snd_pcm_hw_rule *rule)
sound/soc/codecs/framer-codec.c
94
struct snd_soc_dai *dai = rule->private;
sound/soc/codecs/lochnagar-sc.c
58
struct snd_pcm_hw_rule *rule)
sound/soc/codecs/lochnagar-sc.c
62
.max = 24576000 / hw_param_interval(params, rule->deps[0])->max,
sound/soc/codecs/lochnagar-sc.c
65
return snd_interval_refine(hw_param_interval(params, rule->var),
sound/soc/codecs/pcm512x.c
552
struct snd_pcm_hw_rule *rule)
sound/soc/codecs/pcm512x.c
554
struct pcm512x_priv *pcm512x = rule->private;
sound/soc/codecs/pcm512x.c
581
return snd_interval_ranges(hw_param_interval(params, rule->var),
sound/soc/fsl/fsl_qmc_audio.c
403
struct snd_pcm_hw_rule *rule)
sound/soc/fsl/fsl_qmc_audio.c
405
struct qmc_dai *qmc_dai = rule->private;
sound/soc/fsl/fsl_qmc_audio.c
411
struct snd_pcm_hw_rule *rule)
sound/soc/fsl/fsl_qmc_audio.c
413
struct qmc_dai *qmc_dai = rule->private;
sound/soc/fsl/fsl_qmc_audio.c
448
struct snd_pcm_hw_rule *rule)
sound/soc/fsl/fsl_qmc_audio.c
450
struct qmc_dai *qmc_dai = rule->private;
sound/soc/fsl/fsl_qmc_audio.c
456
struct snd_pcm_hw_rule *rule)
sound/soc/fsl/fsl_qmc_audio.c
458
struct qmc_dai *qmc_dai = rule->private;
sound/soc/intel/avs/pcm.c
570
static int hw_rule_param_size(struct snd_pcm_hw_params *params, struct snd_pcm_hw_rule *rule)
sound/soc/intel/avs/pcm.c
572
struct snd_interval *interval = hw_param_interval(params, rule->var);
sound/soc/intel/avs/pcm.c
584
if (rule->var == SNDRV_PCM_HW_PARAM_PERIOD_SIZE)
sound/soc/intel/avs/pcm.c
83
static int hw_rule_param_size(struct snd_pcm_hw_params *params, struct snd_pcm_hw_rule *rule);
sound/soc/renesas/rcar/core.c
902
struct snd_pcm_hw_rule *rule)
sound/soc/renesas/rcar/core.c
907
struct rsnd_dai_stream *io = rule->private;
sound/soc/renesas/rcar/core.c
925
struct snd_pcm_hw_rule *rule)
sound/soc/renesas/rcar/core.c
930
struct rsnd_dai_stream *io = rule->private;
sound/soc/sti/sti_uniperif.c
165
struct snd_pcm_hw_rule *rule)
sound/soc/sti/sti_uniperif.c
167
struct uniperif *uni = rule->private;
sound/soc/sti/sti_uniperif.c
176
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/soc/sti/sti_uniperif.c
180
struct snd_pcm_hw_rule *rule)
sound/soc/sti/sti_uniperif.c
182
struct uniperif *uni = rule->private;
sound/soc/sti/sti_uniperif.c
183
struct snd_mask *maskp = hw_param_mask(params, rule->var);
sound/soc/sti/uniperif.h
1412
struct snd_pcm_hw_rule *rule);
sound/soc/sti/uniperif.h
1415
struct snd_pcm_hw_rule *rule);
sound/soc/tegra/tegra20_i2s.c
270
struct snd_pcm_hw_rule *rule)
sound/soc/tegra/tegra20_i2s.c
272
struct snd_interval *r = hw_param_interval(params, rule->var);
sound/soc/tegra/tegra20_i2s.c
273
struct snd_soc_dai *dai = rule->private;
sound/soc/tegra/tegra20_spdif.c
183
struct snd_pcm_hw_rule *rule)
sound/soc/tegra/tegra20_spdif.c
185
struct snd_interval *r = hw_param_interval(params, rule->var);
sound/soc/tegra/tegra20_spdif.c
186
struct snd_soc_dai *dai = rule->private;
sound/soc/ti/davinci-mcasp.c
1554
struct snd_pcm_hw_rule *rule)
sound/soc/ti/davinci-mcasp.c
1556
struct davinci_mcasp_ruledata *rd = rule->private;
sound/soc/ti/davinci-mcasp.c
1577
struct snd_pcm_hw_rule *rule)
sound/soc/ti/davinci-mcasp.c
1579
struct davinci_mcasp_ruledata *rd = rule->private;
sound/soc/ti/davinci-mcasp.c
1607
struct snd_pcm_hw_rule *rule)
sound/soc/ti/davinci-mcasp.c
1609
struct davinci_mcasp_ruledata *rd = rule->private;
sound/soc/ti/davinci-mcasp.c
1656
return snd_interval_refine(hw_param_interval(params, rule->var),
sound/soc/ti/davinci-mcasp.c
1661
struct snd_pcm_hw_rule *rule)
sound/soc/ti/davinci-mcasp.c
1663
struct davinci_mcasp_ruledata *rd = rule->private;
sound/soc/ti/davinci-mcasp.c
1709
struct snd_pcm_hw_params *params, struct snd_pcm_hw_rule *rule)
sound/soc/ti/davinci-mcasp.c
1713
u8 numevt = *((u8 *)rule->private);
sound/soc/ti/j721e-evm.c
247
struct snd_pcm_hw_rule *rule)
sound/soc/ti/j721e-evm.c
249
struct snd_interval *t = rule->private;
sound/soc/ti/j721e-evm.c
251
return snd_interval_refine(hw_param_interval(params, rule->var), t);
sound/soc/ti/omap-mcbsp.c
752
struct snd_pcm_hw_rule *rule)
sound/soc/ti/omap-mcbsp.c
758
struct omap_mcbsp *mcbsp = rule->private;
sound/sparc/dbri.c
2000
struct snd_pcm_hw_rule *rule)
sound/sparc/dbri.c
2016
struct snd_pcm_hw_rule *rule)
sound/usb/pcm.c
1019
struct snd_pcm_hw_rule *rule)
sound/usb/pcm.c
1021
struct snd_usb_substream *subs = rule->private;
sound/usb/pcm.c
1064
struct snd_pcm_hw_rule *rule)
sound/usb/pcm.c
1066
struct snd_usb_substream *subs = rule->private;
sound/usb/pcm.c
845
struct snd_pcm_hw_rule *rule)
sound/usb/pcm.c
847
struct snd_usb_substream *subs = rule->private;
sound/usb/pcm.c
911
struct snd_pcm_hw_rule *rule)
sound/usb/pcm.c
913
struct snd_usb_substream *subs = rule->private;
sound/usb/pcm.c
950
struct snd_pcm_hw_rule *rule)
sound/usb/pcm.c
952
struct snd_usb_substream *subs = rule->private;
sound/usb/pcm.c
991
struct snd_pcm_hw_rule *rule)
sound/usb/pcm.c
993
struct snd_usb_substream *subs = rule->private;
sound/xen/xen_snd_front_alsa.c
252
struct snd_pcm_hw_rule *rule)
sound/xen/xen_snd_front_alsa.c
254
struct xen_snd_front_pcm_stream_info *stream = rule->private;
tools/testing/selftests/bpf/progs/twfw.c
25
__type(value, struct rule);
tools/testing/selftests/bpf/progs/twfw.c
47
struct rule* rule = bpf_map_lookup_elem(&rules, &key);
tools/testing/selftests/bpf/progs/twfw.c
48
if (!rule)
tools/testing/selftests/bpf/progs/twfw.c
51
if (rule && rule->seqnum < TWFW_MAX_TIERS) {
tools/testing/selftests/bpf/progs/twfw.c
53
unsigned long mask = tier->mask[rule->seqnum / 64];
tools/testing/selftests/landlock/audit.h
147
.nlmsg_len = NLMSG_SPACE(sizeof(msg.rule)) +
tools/testing/selftests/landlock/audit.h
152
.rule = {
tools/testing/selftests/landlock/audit.h
166
memcpy(msg.rule.buf, filter->exe, filter->exe_len);
tools/testing/selftests/landlock/audit.h
174
.nlmsg_len = NLMSG_SPACE(sizeof(msg.rule)),
tools/testing/selftests/landlock/audit.h
178
.rule = {
tools/testing/selftests/landlock/audit.h
42
struct audit_rule_data rule;
tools/testing/selftests/landlock/fs_test.c
1006
const struct rule layer2[] = {
tools/testing/selftests/landlock/fs_test.c
1015
const struct rule layer3[] = {
tools/testing/selftests/landlock/fs_test.c
1101
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
1108
const struct rule layer2[] = {
tools/testing/selftests/landlock/fs_test.c
1164
const struct rule layer1_read[] = {
tools/testing/selftests/landlock/fs_test.c
1173
const struct rule layer2_read_write[] = {
tools/testing/selftests/landlock/fs_test.c
1187
const struct rule layer3_read[] = {
tools/testing/selftests/landlock/fs_test.c
1195
const struct rule layer4_read_write[] = {
tools/testing/selftests/landlock/fs_test.c
1206
const struct rule layer5_read[] = {
tools/testing/selftests/landlock/fs_test.c
1217
const struct rule layer6_execute[] = {
tools/testing/selftests/landlock/fs_test.c
1228
const struct rule layer7_read_write[] = {
tools/testing/selftests/landlock/fs_test.c
1335
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1452
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1490
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1547
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1576
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1609
struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1639
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1659
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1687
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1710
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1803
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1842
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
1889
const struct rule layer1_base[] = {
tools/testing/selftests/landlock/fs_test.c
1896
const struct rule layer2_subs[] = {
tools/testing/selftests/landlock/fs_test.c
2086
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
2203
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
2210
const struct rule layer2[] = {
tools/testing/selftests/landlock/fs_test.c
2288
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
2370
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
2434
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
2476
const struct rule layer1[],
tools/testing/selftests/landlock/fs_test.c
2478
const struct rule layer2[])
tools/testing/selftests/landlock/fs_test.c
2515
const struct rule layer_dir_s1d1_refer[] = {
tools/testing/selftests/landlock/fs_test.c
2523
const struct rule layer_dir_s1d1_execute[] = {
tools/testing/selftests/landlock/fs_test.c
2532
const struct rule layer_dir_s2d1_execute[] = {
tools/testing/selftests/landlock/fs_test.c
2622
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
2660
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
2738
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
2883
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
2915
const struct rule layer2[] = {
tools/testing/selftests/landlock/fs_test.c
3183
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
3245
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
3338
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3375
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3401
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3489
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3534
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3574
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3617
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3708
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3771
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3889
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
3897
const struct rule layer2[] = {
tools/testing/selftests/landlock/fs_test.c
3906
const struct rule layer3[] = {
tools/testing/selftests/landlock/fs_test.c
4025
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
4066
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
4457
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
4492
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
4537
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
4670
const struct rule layer1_parent[] = {
tools/testing/selftests/landlock/fs_test.c
4686
const struct rule layer2_mount_point[] = {
tools/testing/selftests/landlock/fs_test.c
4698
const struct rule layer3_source[] = {
tools/testing/selftests/landlock/fs_test.c
4706
const struct rule layer4_destination[] = {
tools/testing/selftests/landlock/fs_test.c
4802
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
4844
const struct rule layer1_allow_all[] = {
tools/testing/selftests/landlock/fs_test.c
4851
const struct rule layer2_allow_just_f1[] = {
tools/testing/selftests/landlock/fs_test.c
4858
const struct rule layer3_only_s1d2[] = {
tools/testing/selftests/landlock/fs_test.c
4943
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
4966
const struct rule layer2_only_s1d2[] = {
tools/testing/selftests/landlock/fs_test.c
5114
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
5640
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
6165
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
6505
const struct rule layer1_base[] = {
tools/testing/selftests/landlock/fs_test.c
6520
const struct rule layer2_data[] = {
tools/testing/selftests/landlock/fs_test.c
6536
const struct rule layer3_subdirs[] = {
tools/testing/selftests/landlock/fs_test.c
6568
const struct rule layer4_files[] = {
tools/testing/selftests/landlock/fs_test.c
6620
const struct rule layer5_merge_only[] = {
tools/testing/selftests/landlock/fs_test.c
6936
const struct rule layer1_allow_read_file[] = {
tools/testing/selftests/landlock/fs_test.c
7007
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
7557
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
761
const struct rule rules[])
tools/testing/selftests/landlock/fs_test.c
796
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
845
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
868
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
926
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
953
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
994
const struct rule layer1[] = {