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
14542
int rule, struct rsm_rule_data *rrd)
drivers/infiniband/hw/hfi1/chip.c
14545
dd_dev_err(dd, "Failed to update RMT for RSM%d rule\n", rule);
drivers/infiniband/hw/hfi1/chip.c
14549
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
252
struct mlx5_flow_handle *rule;
drivers/infiniband/hw/mlx5/mlx5_ib.h
807
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/mv88e6xxx/tcflower.c
110
flow_action_for_each(i, act, &rule->action) {
drivers/net/dsa/mv88e6xxx/tcflower.c
22
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/dsa/mv88e6xxx/tcflower.c
23
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/dsa/mv88e6xxx/tcflower.c
35
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/dsa/mv88e6xxx/tcflower.c
38
flow_rule_match_control(rule, &match);
drivers/net/dsa/mv88e6xxx/tcflower.c
45
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/dsa/mv88e6xxx/tcflower.c
48
flow_rule_match_basic(rule, &match);
drivers/net/dsa/mv88e6xxx/tcflower.c
60
flow_rule_match_ipv4_addrs(cls->rule, &match);
drivers/net/dsa/mv88e6xxx/tcflower.c
75
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
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
796
rule->vl.stats.pkts = pkts;
drivers/net/dsa/sja1105/sja1105_vl.c
797
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/dsa/yt921x.c
1671
const struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/dsa/yt921x.c
1683
dissector = rule->match.dissector;
drivers/net/dsa/yt921x.c
1699
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV4_ADDRS)) {
drivers/net/dsa/yt921x.c
1702
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/dsa/yt921x.c
1725
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV6_ADDRS)) {
drivers/net/dsa/yt921x.c
1728
flow_rule_match_ipv6_addrs(rule, &match);
drivers/net/dsa/yt921x.c
1759
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/dsa/yt921x.c
1767
flow_rule_match_ports(rule, &match);
drivers/net/dsa/yt921x.c
1778
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS_RANGE)) {
drivers/net/dsa/yt921x.c
1786
flow_rule_match_ports_range(rule, &match);
drivers/net/dsa/yt921x.c
1808
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/dsa/yt921x.c
1812
flow_rule_match_eth_addrs(rule, &match);
drivers/net/dsa/yt921x.c
1851
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/dsa/yt921x.c
1854
flow_rule_match_basic(rule, &match);
drivers/net/dsa/yt921x.c
1938
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/dsa/yt921x.c
1942
flow_rule_match_control(rule, &match);
drivers/net/dsa/yt921x.c
1966
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IP)) {
drivers/net/dsa/yt921x.c
1969
flow_rule_match_ip(rule, &match);
drivers/net/dsa/yt921x.c
1987
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_TCP)) {
drivers/net/dsa/yt921x.c
1990
flow_rule_match_tcp(rule, &match);
drivers/net/dsa/yt921x.c
2025
const struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/dsa/yt921x.c
2026
const struct flow_action *flow_action = &rule->action;
drivers/net/ethernet/airoha/airoha_eth.c
2897
const struct flow_action *actions = &f->rule->action;
drivers/net/ethernet/airoha/airoha_eth.c
2963
act = &f->rule->action.entries[0];
drivers/net/ethernet/airoha/airoha_ppe.c
1077
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/airoha/airoha_ppe.c
1091
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_META))
drivers/net/ethernet/airoha/airoha_ppe.c
1094
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/airoha/airoha_ppe.c
1097
flow_rule_match_control(rule, &match);
drivers/net/ethernet/airoha/airoha_ppe.c
1106
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/airoha/airoha_ppe.c
1109
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/airoha/airoha_ppe.c
1118
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/airoha/airoha_ppe.c
1121
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/airoha/airoha_ppe.c
1138
flow_action_for_each(i, act, &rule->action) {
drivers/net/ethernet/airoha/airoha_ppe.c
1184
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/airoha/airoha_ppe.c
1190
flow_rule_match_ports(rule, &ports);
drivers/net/ethernet/airoha/airoha_ppe.c
1200
flow_rule_match_ipv4_addrs(rule, &addrs);
drivers/net/ethernet/airoha/airoha_ppe.c
1209
flow_rule_match_ipv6_addrs(rule, &addrs);
drivers/net/ethernet/airoha/airoha_ppe.c
1216
flow_action_for_each(i, act, &rule->action) {
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
448
struct aq_rx_filter *rule = NULL;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
451
hlist_for_each_entry_safe(rule, aq_node2,
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
453
if (be16_to_cpu(rule->aq_fsp.h_ext.vlan_tci) == vlan_id)
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
456
if (rule && rule->type == aq_rx_filter_vlan &&
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
457
be16_to_cpu(rule->aq_fsp.h_ext.vlan_tci) == vlan_id) {
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
460
cmd.fs.location = rule->aq_fsp.location;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
660
struct aq_rx_filter *rule = NULL, *parent = NULL;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
664
hlist_for_each_entry_safe(rule, aq_node2,
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
666
if (rule->aq_fsp.location >= index)
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
668
parent = rule;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
671
if (rule && rule->aq_fsp.location == index) {
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
672
err = aq_add_del_rule(aq_nic, rule, false);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
673
hlist_del(&rule->aq_node);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
674
kfree(rule);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
70
struct aq_rx_filter *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
747
struct aq_rx_filter *rule = NULL;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
751
hlist_for_each_entry_safe(rule, aq_node2,
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
753
if (rule->aq_fsp.location == cmd->fs.location)
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
757
if (rule && rule->aq_fsp.location == cmd->fs.location) {
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
758
err = aq_add_del_rule(aq_nic, rule, false);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
759
hlist_del(&rule->aq_node);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
76
if (rule->aq_fsp.location == fsp->location)
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
760
kfree(rule);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
771
struct aq_rx_filter *rule = NULL;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
774
hlist_for_each_entry_safe(rule, aq_node2,
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
776
if (fsp->location <= rule->aq_fsp.location)
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
779
if (unlikely(!rule || fsp->location != 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
782
memcpy(fsp, &rule->aq_fsp, sizeof(*fsp));
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
792
struct aq_rx_filter *rule;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
797
hlist_for_each_entry_safe(rule, aq_node2,
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
802
rule_locs[count++] = rule->aq_fsp.location;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
814
struct aq_rx_filter *rule;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
817
hlist_for_each_entry_safe(rule, aq_node2,
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
819
err = aq_add_del_rule(aq_nic, rule, false);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
822
hlist_del(&rule->aq_node);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
823
kfree(rule);
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
835
struct aq_rx_filter *rule;
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
838
hlist_for_each_entry_safe(rule, aq_node2,
drivers/net/ethernet/aquantia/atlantic/aq_filters.c
840
err = aq_add_del_rule(aq_nic, rule, true);
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
15286
u32 param, rule;
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
15294
rule = port ? NIG_REG_P1_TLLH_PTP_RULE_MASK :
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
15300
REG_WR(bp, rule, BNX2X_PTP_TX_ON_RULE_MASK);
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
15310
rule = port ? NIG_REG_P1_LLH_PTP_RULE_MASK :
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
15326
REG_WR(bp, rule, BNX2X_PTP_V1_L4_RULE_MASK);
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
15334
REG_WR(bp, rule, BNX2X_PTP_V2_L4_RULE_MASK);
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
15342
REG_WR(bp, rule, BNX2X_PTP_V2_L2_RULE_MASK);
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
15351
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
1562
struct bcmgenet_rxnfc_rule *rule;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1568
rule = &priv->rxnfc_rules[cmd->fs.location];
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1569
if (rule->state == BCMGENET_RXNFC_STATE_UNUSED) {
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1574
if (rule->state == BCMGENET_RXNFC_STATE_ENABLED)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1576
if (rule->state != BCMGENET_RXNFC_STATE_UNUSED) {
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1577
list_del(&rule->list);
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1580
rule->state = BCMGENET_RXNFC_STATE_UNUSED;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1581
memset(&rule->fs, 0, sizeof(struct ethtool_rx_flow_spec));
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1612
struct bcmgenet_rxnfc_rule *rule;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1618
rule = &priv->rxnfc_rules[loc];
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1619
if (rule->state == BCMGENET_RXNFC_STATE_UNUSED)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1622
memcpy(&cmd->fs, &rule->fs,
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1650
struct bcmgenet_rxnfc_rule *rule;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1663
list_for_each_entry(rule, &priv->rxnfc_list, list)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
1665
rule_locs[i++] = rule->fs.location;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4219
struct bcmgenet_rxnfc_rule *rule;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4230
list_for_each_entry(rule, &priv->rxnfc_list, list)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4231
if (rule->state == BCMGENET_RXNFC_STATE_ENABLED)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4233
rule->fs.location + 1);
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->state != BCMGENET_RXNFC_STATE_UNUSED)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4278
bcmgenet_hfb_create_rxnfc_filter(priv, rule);
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4307
struct bcmgenet_rxnfc_rule *rule;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4320
list_for_each_entry(rule, &priv->rxnfc_list, list)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4321
if (rule->fs.ring_cookie == RX_CLS_FLOW_WAKE &&
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4322
rule->state == BCMGENET_RXNFC_STATE_ENABLED)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
4323
hfb_enable |= 1 << rule->fs.location;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
603
struct bcmgenet_rxnfc_rule *rule)
drivers/net/ethernet/broadcom/genet/bcmgenet.c
605
struct ethtool_rx_flow_spec *fs = &rule->fs;
drivers/net/ethernet/broadcom/genet/bcmgenet.c
703
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
1333
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
1338
.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_debugfs.c
2139
#define hclge_fd_dump_any(s, rule, type, name, fmt, key, mask) \
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2145
if (!((rule)->unused_tuple & BIT(type))) { \
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2154
struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2161
if (rule->unused_tuple & BIT(type) ||
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2162
rule->unused_tuple & BIT(INNER_ETH_TYPE))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2168
if (rule->tuples.ether_proto == ETH_P_IPV6)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2169
hclge_fd_dump_ptr(s, rule, type, name, "%pI6",
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2172
hclge_fd_dump_ptr(s, rule, type, name, "%pI4",
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2177
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2181
hclge_fd_dump_ptr(s, rule, INNER_DST_MAC, "dst_mac", "%pM",
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2182
rule->tuples.dst_mac, rule->tuples_mask.dst_mac);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2183
hclge_fd_dump_ptr(s, rule, INNER_SRC_MAC, "src_mac", "%pM",
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2184
rule->tuples.src_mac, rule->tuples_mask.src_mac);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2185
hclge_fd_dump_u32(s, rule, INNER_VLAN_TAG_FST, "vlan_tag", "0x%04x",
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2186
rule->tuples.vlan_tag1, rule->tuples_mask.vlan_tag1);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2187
hclge_fd_dump_u32(s, rule, INNER_ETH_TYPE, "ether_proto", "0x%04x",
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2188
rule->tuples.ether_proto,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2189
rule->tuples_mask.ether_proto);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2190
hclge_fd_dump_u32(s, rule, INNER_L2_RSV, "l2_user_def", "0x%04x",
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2191
rule->tuples.l2_user_def,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2192
rule->tuples_mask.l2_user_def);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2193
hclge_fd_dump_ip(s, rule, INNER_SRC_IP, "src_ip",
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2194
rule->tuples.src_ip, rule->tuples_mask.src_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2195
hclge_fd_dump_ip(s, rule, INNER_DST_IP, "dst_ip",
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2196
rule->tuples.dst_ip, rule->tuples_mask.dst_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2197
hclge_fd_dump_u32(s, rule, INNER_IP_TOS, "ip_tos", "0x%02x",
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2198
rule->tuples.ip_tos, rule->tuples_mask.ip_tos);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2199
hclge_fd_dump_u32(s, rule, INNER_IP_PROTO, "ip_proto", "0x%02x",
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2200
rule->tuples.ip_proto, rule->tuples_mask.ip_proto);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2201
hclge_fd_dump_u32(s, rule, INNER_L3_RSV, "l3_user_def", "0x%04x",
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2202
rule->tuples.l3_user_def,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2203
rule->tuples_mask.l3_user_def);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2204
hclge_fd_dump_u32(s, rule, INNER_SRC_PORT, "src_port", "0x%04x",
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2205
rule->tuples.src_port, rule->tuples_mask.src_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2206
hclge_fd_dump_u32(s, rule, INNER_DST_PORT, "dst_port", "0x%04x",
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2207
rule->tuples.dst_port, rule->tuples_mask.dst_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2208
hclge_fd_dump_u32(s, rule, INNER_L4_RSV, "l4_user_def", "0x%08x",
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2209
rule->tuples.l4_user_def,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2210
rule->tuples_mask.l4_user_def);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2211
hclge_fd_dump_u32(s, rule, OUTER_TUN_VNI, "outer_tun_vni", "0x%06x",
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2212
rule->tuples.outer_tun_vni,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2213
rule->tuples_mask.outer_tun_vni);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2217
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2225
if (rule->action <= HCLGE_FD_ACTION_SELECT_TC)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2226
seq_printf(s, "\taction: %s\n", action_str[rule->action]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2230
if (rule->action == HCLGE_FD_ACTION_SELECT_QUEUE)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2231
seq_printf(s, "\tqueue_id: %u\n", rule->queue_id);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2232
else if (rule->action == HCLGE_FD_ACTION_SELECT_TC)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2233
seq_printf(s, "\ttc: %u\n", rule->cls_flower.tc);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2254
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2261
hlist_for_each_entry(rule, &hdev->fd_rule_list, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2262
if (rule->state != HCLGE_FD_ACTIVE)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2265
seq_printf(s, "location: %u\n", rule->location);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2266
seq_printf(s, "vport_id: %u\n", rule->vf_id);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2267
hclge_dbg_dump_fd_action(s, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
2268
hclge_dbg_dump_fd_tuples(s, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
105
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
107
hlist_del(&rule->rule_node);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
108
kfree(rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1150
struct hclge_fd_rule *rule, u8 ip_proto)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1152
rule->tuples.src_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1154
rule->tuples_mask.src_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1157
rule->tuples.dst_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1159
rule->tuples_mask.dst_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1162
rule->tuples.src_port = be16_to_cpu(fs->h_u.tcp_ip4_spec.psrc);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1163
rule->tuples_mask.src_port = be16_to_cpu(fs->m_u.tcp_ip4_spec.psrc);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1165
rule->tuples.dst_port = be16_to_cpu(fs->h_u.tcp_ip4_spec.pdst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1166
rule->tuples_mask.dst_port = be16_to_cpu(fs->m_u.tcp_ip4_spec.pdst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1168
rule->tuples.ip_tos = fs->h_u.tcp_ip4_spec.tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1169
rule->tuples_mask.ip_tos = fs->m_u.tcp_ip4_spec.tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1171
rule->tuples.ether_proto = ETH_P_IP;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1172
rule->tuples_mask.ether_proto = 0xFFFF;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1174
rule->tuples.ip_proto = ip_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1175
rule->tuples_mask.ip_proto = 0xFF;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1179
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1181
rule->tuples.src_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1183
rule->tuples_mask.src_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1186
rule->tuples.dst_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1188
rule->tuples_mask.dst_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1191
rule->tuples.ip_tos = fs->h_u.usr_ip4_spec.tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1192
rule->tuples_mask.ip_tos = fs->m_u.usr_ip4_spec.tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1194
rule->tuples.ip_proto = fs->h_u.usr_ip4_spec.proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1195
rule->tuples_mask.ip_proto = fs->m_u.usr_ip4_spec.proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1197
rule->tuples.ether_proto = ETH_P_IP;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1198
rule->tuples_mask.ether_proto = 0xFFFF;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1202
struct hclge_fd_rule *rule, u8 ip_proto)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1204
ipv6_addr_be32_to_cpu(rule->tuples.src_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1206
ipv6_addr_be32_to_cpu(rule->tuples_mask.src_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1209
ipv6_addr_be32_to_cpu(rule->tuples.dst_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1211
ipv6_addr_be32_to_cpu(rule->tuples_mask.dst_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1214
rule->tuples.src_port = be16_to_cpu(fs->h_u.tcp_ip6_spec.psrc);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1215
rule->tuples_mask.src_port = be16_to_cpu(fs->m_u.tcp_ip6_spec.psrc);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1217
rule->tuples.dst_port = be16_to_cpu(fs->h_u.tcp_ip6_spec.pdst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1218
rule->tuples_mask.dst_port = be16_to_cpu(fs->m_u.tcp_ip6_spec.pdst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1220
rule->tuples.ether_proto = ETH_P_IPV6;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1221
rule->tuples_mask.ether_proto = 0xFFFF;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1223
rule->tuples.ip_tos = fs->h_u.tcp_ip6_spec.tclass;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1224
rule->tuples_mask.ip_tos = fs->m_u.tcp_ip6_spec.tclass;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1226
rule->tuples.ip_proto = ip_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1227
rule->tuples_mask.ip_proto = 0xFF;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1231
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1233
ipv6_addr_be32_to_cpu(rule->tuples.src_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1235
ipv6_addr_be32_to_cpu(rule->tuples_mask.src_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1238
ipv6_addr_be32_to_cpu(rule->tuples.dst_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1240
ipv6_addr_be32_to_cpu(rule->tuples_mask.dst_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1243
rule->tuples.ip_proto = fs->h_u.usr_ip6_spec.l4_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1244
rule->tuples_mask.ip_proto = fs->m_u.usr_ip6_spec.l4_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1246
rule->tuples.ip_tos = fs->h_u.tcp_ip6_spec.tclass;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1247
rule->tuples_mask.ip_tos = fs->m_u.tcp_ip6_spec.tclass;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1249
rule->tuples.ether_proto = ETH_P_IPV6;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1250
rule->tuples_mask.ether_proto = 0xFFFF;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1254
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1256
ether_addr_copy(rule->tuples.src_mac, fs->h_u.ether_spec.h_source);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1257
ether_addr_copy(rule->tuples_mask.src_mac, fs->m_u.ether_spec.h_source);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1259
ether_addr_copy(rule->tuples.dst_mac, fs->h_u.ether_spec.h_dest);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1260
ether_addr_copy(rule->tuples_mask.dst_mac, fs->m_u.ether_spec.h_dest);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1262
rule->tuples.ether_proto = be16_to_cpu(fs->h_u.ether_spec.h_proto);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1263
rule->tuples_mask.ether_proto = be16_to_cpu(fs->m_u.ether_spec.h_proto);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1267
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1271
rule->tuples.l2_user_def = info->data;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1272
rule->tuples_mask.l2_user_def = info->data_mask;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1275
rule->tuples.l3_user_def = info->data;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1276
rule->tuples_mask.l3_user_def = info->data_mask;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1279
rule->tuples.l4_user_def = (u32)info->data << 16;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1280
rule->tuples_mask.l4_user_def = (u32)info->data_mask << 16;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1286
rule->ep.user_def = *info;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1290
struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1297
hclge_fd_get_tcpip4_tuple(fs, rule, IPPROTO_SCTP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1300
hclge_fd_get_tcpip4_tuple(fs, rule, IPPROTO_TCP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1303
hclge_fd_get_tcpip4_tuple(fs, rule, IPPROTO_UDP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1306
hclge_fd_get_ip4_tuple(fs, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1309
hclge_fd_get_tcpip6_tuple(fs, rule, IPPROTO_SCTP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1312
hclge_fd_get_tcpip6_tuple(fs, rule, IPPROTO_TCP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1315
hclge_fd_get_tcpip6_tuple(fs, rule, IPPROTO_UDP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1318
hclge_fd_get_ip6_tuple(fs, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1321
hclge_fd_get_ether_tuple(fs, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1328
rule->tuples.vlan_tag1 = be16_to_cpu(fs->h_ext.vlan_tci);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1329
rule->tuples_mask.vlan_tag1 = be16_to_cpu(fs->m_ext.vlan_tci);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1330
hclge_fd_get_user_def_tuple(info, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1334
ether_addr_copy(rule->tuples.dst_mac, fs->h_ext.h_dest);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1335
ether_addr_copy(rule->tuples_mask.dst_mac, fs->m_ext.h_dest);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1342
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1346
ret = hclge_config_action(hdev, HCLGE_FD_STAGE_1, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1350
return hclge_config_key(hdev, HCLGE_FD_STAGE_1, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1354
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1360
if (hdev->fd_active_type != rule->rule_type &&
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1365
rule->rule_type, hdev->fd_active_type);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1370
ret = hclge_fd_check_user_def_refcnt(hdev, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1378
ret = hclge_fd_config_rule(hdev, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1382
rule->state = HCLGE_FD_ACTIVE;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1383
hdev->fd_active_type = rule->rule_type;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1384
hclge_update_fd_list(hdev, rule->state, rule->location, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1445
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1473
rule = kzalloc_obj(*rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1474
if (!rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1477
ret = hclge_fd_get_tuple(fs, rule, &info);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1479
kfree(rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1483
rule->flow_type = fs->flow_type;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1484
rule->location = fs->location;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1485
rule->unused_tuple = unused;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1486
rule->vf_id = dst_vport_id;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1487
rule->queue_id = q_index;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1488
rule->action = action;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1489
rule->rule_type = HCLGE_FD_EP_ACTIVE;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1491
ret = hclge_add_fd_entry_common(hdev, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1493
kfree(rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1537
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1549
hlist_for_each_entry_safe(rule, node, &hdev->fd_rule_list,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1551
hlist_del(&rule->rule_node);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1552
kfree(rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1576
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1591
hlist_for_each_entry_safe(rule, node, &hdev->fd_rule_list, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1592
if (rule->state == HCLGE_FD_ACTIVE)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1593
rule->state = HCLGE_FD_TO_ADD;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1617
static void hclge_fd_get_tcpip4_info(struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1621
spec->ip4src = cpu_to_be32(rule->tuples.src_ip[IPV4_INDEX]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1622
spec_mask->ip4src = rule->unused_tuple & BIT(INNER_SRC_IP) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1623
0 : cpu_to_be32(rule->tuples_mask.src_ip[IPV4_INDEX]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1625
spec->ip4dst = cpu_to_be32(rule->tuples.dst_ip[IPV4_INDEX]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1626
spec_mask->ip4dst = rule->unused_tuple & BIT(INNER_DST_IP) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1627
0 : cpu_to_be32(rule->tuples_mask.dst_ip[IPV4_INDEX]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1629
spec->psrc = cpu_to_be16(rule->tuples.src_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1630
spec_mask->psrc = rule->unused_tuple & BIT(INNER_SRC_PORT) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1631
0 : cpu_to_be16(rule->tuples_mask.src_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1633
spec->pdst = cpu_to_be16(rule->tuples.dst_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1634
spec_mask->pdst = rule->unused_tuple & BIT(INNER_DST_PORT) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1635
0 : cpu_to_be16(rule->tuples_mask.dst_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1637
spec->tos = rule->tuples.ip_tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1638
spec_mask->tos = rule->unused_tuple & BIT(INNER_IP_TOS) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1639
0 : rule->tuples_mask.ip_tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
164
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1642
static void hclge_fd_get_ip4_info(struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1646
spec->ip4src = cpu_to_be32(rule->tuples.src_ip[IPV4_INDEX]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1647
spec_mask->ip4src = rule->unused_tuple & BIT(INNER_SRC_IP) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1648
0 : cpu_to_be32(rule->tuples_mask.src_ip[IPV4_INDEX]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1650
spec->ip4dst = cpu_to_be32(rule->tuples.dst_ip[IPV4_INDEX]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1651
spec_mask->ip4dst = rule->unused_tuple & BIT(INNER_DST_IP) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1652
0 : cpu_to_be32(rule->tuples_mask.dst_ip[IPV4_INDEX]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1654
spec->tos = rule->tuples.ip_tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1655
spec_mask->tos = rule->unused_tuple & BIT(INNER_IP_TOS) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1656
0 : rule->tuples_mask.ip_tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1658
spec->proto = rule->tuples.ip_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1659
spec_mask->proto = rule->unused_tuple & BIT(INNER_IP_PROTO) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1660
0 : rule->tuples_mask.ip_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1665
static void hclge_fd_get_tcpip6_info(struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1669
ipv6_addr_cpu_to_be32(spec->ip6src, rule->tuples.src_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
167
hlist_for_each_entry_safe(rule, node, hlist, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1670
ipv6_addr_cpu_to_be32(spec->ip6dst, rule->tuples.dst_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1671
if (rule->unused_tuple & BIT(INNER_SRC_IP))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1675
rule->tuples_mask.src_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1677
if (rule->unused_tuple & BIT(INNER_DST_IP))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
168
if (rule->location == location)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1681
rule->tuples_mask.dst_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1683
spec->tclass = rule->tuples.ip_tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1684
spec_mask->tclass = rule->unused_tuple & BIT(INNER_IP_TOS) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1685
0 : rule->tuples_mask.ip_tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1687
spec->psrc = cpu_to_be16(rule->tuples.src_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1688
spec_mask->psrc = rule->unused_tuple & BIT(INNER_SRC_PORT) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1689
0 : cpu_to_be16(rule->tuples_mask.src_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
169
return rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1691
spec->pdst = cpu_to_be16(rule->tuples.dst_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1692
spec_mask->pdst = rule->unused_tuple & BIT(INNER_DST_PORT) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1693
0 : cpu_to_be16(rule->tuples_mask.dst_port);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1696
static void hclge_fd_get_ip6_info(struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
170
else if (rule->location > location)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1700
ipv6_addr_cpu_to_be32(spec->ip6src, rule->tuples.src_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1701
ipv6_addr_cpu_to_be32(spec->ip6dst, rule->tuples.dst_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1702
if (rule->unused_tuple & BIT(INNER_SRC_IP))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1706
rule->tuples_mask.src_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1708
if (rule->unused_tuple & BIT(INNER_DST_IP))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1712
rule->tuples_mask.dst_ip);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1714
spec->tclass = rule->tuples.ip_tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1715
spec_mask->tclass = rule->unused_tuple & BIT(INNER_IP_TOS) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1716
0 : rule->tuples_mask.ip_tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1718
spec->l4_proto = rule->tuples.ip_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1719
spec_mask->l4_proto = rule->unused_tuple & BIT(INNER_IP_PROTO) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1720
0 : rule->tuples_mask.ip_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1723
static void hclge_fd_get_ether_info(struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1727
ether_addr_copy(spec->h_source, rule->tuples.src_mac);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1728
ether_addr_copy(spec->h_dest, rule->tuples.dst_mac);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1730
if (rule->unused_tuple & BIT(INNER_SRC_MAC))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1733
ether_addr_copy(spec_mask->h_source, rule->tuples_mask.src_mac);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1735
if (rule->unused_tuple & BIT(INNER_DST_MAC))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1738
ether_addr_copy(spec_mask->h_dest, rule->tuples_mask.dst_mac);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1740
spec->h_proto = cpu_to_be16(rule->tuples.ether_proto);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1741
spec_mask->h_proto = rule->unused_tuple & BIT(INNER_ETH_TYPE) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1742
0 : cpu_to_be16(rule->tuples_mask.ether_proto);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1746
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1748
if ((rule->unused_tuple & HCLGE_FD_TUPLE_USER_DEF_TUPLES) ==
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
175
*parent = rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1755
fs->h_ext.data[0] = cpu_to_be32(rule->ep.user_def.offset);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1756
fs->h_ext.data[1] = cpu_to_be32(rule->ep.user_def.data);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1759
fs->m_ext.data[1] = cpu_to_be32(rule->ep.user_def.data_mask);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1764
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1767
fs->h_ext.vlan_tci = cpu_to_be16(rule->tuples.vlan_tag1);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1769
rule->unused_tuple & BIT(INNER_VLAN_TAG_FST) ?
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1770
0 : cpu_to_be16(rule->tuples_mask.vlan_tag1);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1772
hclge_fd_get_user_def_info(fs, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1776
ether_addr_copy(fs->h_ext.h_dest, rule->tuples.dst_mac);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1777
if (rule->unused_tuple & BIT(INNER_DST_MAC))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1781
rule->tuples_mask.dst_mac);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1788
struct hclge_fd_rule *rule = NULL;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1791
hlist_for_each_entry_safe(rule, node2, &hdev->fd_rule_list, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1792
if (rule->location == location)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1793
return rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1794
else if (rule->location > location)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1802
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1804
if (rule->action == HCLGE_FD_ACTION_DROP_PACKET) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1809
fs->ring_cookie = rule->queue_id;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1810
vf_id = rule->vf_id;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1820
struct hclge_fd_rule *rule = NULL;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
183
struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1831
rule = hclge_get_fd_rule(hdev, fs->location);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1832
if (!rule) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1837
fs->flow_type = rule->flow_type;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1842
hclge_fd_get_tcpip4_info(rule, &fs->h_u.tcp_ip4_spec,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1846
hclge_fd_get_ip4_info(rule, &fs->h_u.usr_ip4_spec,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1852
hclge_fd_get_tcpip6_info(rule, &fs->h_u.tcp_ip6_spec,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1856
hclge_fd_get_ip6_info(rule, &fs->h_u.usr_ip6_spec,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
186
INIT_HLIST_NODE(&rule->rule_node);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1864
hclge_fd_get_ether_info(rule, &fs->h_u.ether_spec,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1869
hclge_fd_get_ext_info(fs, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1871
hclge_fd_get_ring_cookie(fs, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1883
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
189
hlist_add_behind(&rule->rule_node, &parent->rule_node);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1893
hlist_for_each_entry_safe(rule, node2,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1900
if (rule->state == HCLGE_FD_TO_DEL)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1903
rule_locs[cnt] = rule->location;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
191
hlist_add_head(&rule->rule_node, hlist);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1942
struct hclge_fd_rule *rule = NULL;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1945
hlist_for_each_entry_safe(rule, node, &hdev->fd_rule_list, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1946
if (!memcmp(tuples, &rule->tuples, sizeof(*tuples)))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1947
return rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1954
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1956
rule->unused_tuple = BIT(INNER_SRC_MAC) | BIT(INNER_DST_MAC) |
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1959
rule->action = 0;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1960
rule->vf_id = 0;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1961
rule->rule_type = HCLGE_FD_ARFS_ACTIVE;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1962
rule->state = HCLGE_FD_TO_ADD;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1965
rule->flow_type = TCP_V4_FLOW;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1967
rule->flow_type = UDP_V4_FLOW;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1970
rule->flow_type = TCP_V6_FLOW;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1972
rule->flow_type = UDP_V6_FLOW;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1974
memcpy(&rule->tuples, tuples, sizeof(rule->tuples));
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1975
memset(&rule->tuples_mask, 0xFF, sizeof(rule->tuples_mask));
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
1984
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2007
rule = hclge_fd_search_flow_keys(hdev, &new_tuples);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2008
if (!rule) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2015
rule = kzalloc_obj(*rule, GFP_ATOMIC);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2016
if (!rule) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2021
rule->location = bit_id;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2022
rule->arfs.flow_id = flow_id;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2023
rule->queue_id = queue_id;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2024
hclge_fd_build_arfs_rule(&new_tuples, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2025
hclge_update_fd_list(hdev, rule->state, rule->location, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2027
} else if (rule->queue_id != queue_id) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2028
rule->queue_id = queue_id;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2029
rule->state = HCLGE_FD_TO_ADD;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2034
return rule->location;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2041
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2049
hlist_for_each_entry_safe(rule, node, &hdev->fd_rule_list, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2050
if (rule->state != HCLGE_FD_ACTIVE)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2052
if (rps_may_expire_flow(handle->netdev, rule->queue_id,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2053
rule->arfs.flow_id, rule->location)) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2054
rule->state = HCLGE_FD_TO_DEL;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2066
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2073
hlist_for_each_entry_safe(rule, node, &hdev->fd_rule_list, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2074
switch (rule->state) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2078
rule->location, NULL, false);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2083
hclge_fd_dec_rule_cnt(hdev, rule->location);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2084
hlist_del(&rule->rule_node);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2085
kfree(rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2098
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2112
rule->tuples.ether_proto = ethtype_key;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2113
rule->tuples_mask.ether_proto = ethtype_mask;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2114
rule->tuples.ip_proto = match.key->ip_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2115
rule->tuples_mask.ip_proto = match.mask->ip_proto;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2117
rule->unused_tuple |= BIT(INNER_IP_PROTO);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2118
rule->unused_tuple |= BIT(INNER_ETH_TYPE);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2123
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2129
ether_addr_copy(rule->tuples.dst_mac, match.key->dst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2130
ether_addr_copy(rule->tuples_mask.dst_mac, match.mask->dst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2131
ether_addr_copy(rule->tuples.src_mac, match.key->src);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2132
ether_addr_copy(rule->tuples_mask.src_mac, match.mask->src);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2134
rule->unused_tuple |= BIT(INNER_DST_MAC);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2136
rule->unused_tuple |= BIT(INNER_SRC_MAC);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2138
rule->unused_tuple |= BIT(INNER_DST_MAC);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2139
rule->unused_tuple |= BIT(INNER_SRC_MAC);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2144
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2150
rule->tuples.vlan_tag1 = match.key->vlan_id |
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2152
rule->tuples_mask.vlan_tag1 = match.mask->vlan_id |
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2155
rule->unused_tuple |= BIT(INNER_VLAN_TAG_FST);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2160
struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2179
rule->tuples.src_ip[IPV4_INDEX] = be32_to_cpu(match.key->src);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2180
rule->tuples_mask.src_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2182
rule->tuples.dst_ip[IPV4_INDEX] = be32_to_cpu(match.key->dst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2183
rule->tuples_mask.dst_ip[IPV4_INDEX] =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2186
rule->unused_tuple |= BIT(INNER_SRC_IP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2188
rule->unused_tuple |= BIT(INNER_DST_IP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2193
ipv6_addr_be32_to_cpu(rule->tuples.src_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2195
ipv6_addr_be32_to_cpu(rule->tuples_mask.src_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2197
ipv6_addr_be32_to_cpu(rule->tuples.dst_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2199
ipv6_addr_be32_to_cpu(rule->tuples_mask.dst_ip,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2202
rule->unused_tuple |= BIT(INNER_SRC_IP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2204
rule->unused_tuple |= BIT(INNER_DST_IP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2206
rule->unused_tuple |= BIT(INNER_SRC_IP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2207
rule->unused_tuple |= BIT(INNER_DST_IP);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2214
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2221
rule->tuples.src_port = be16_to_cpu(match.key->src);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2222
rule->tuples_mask.src_port = be16_to_cpu(match.mask->src);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2223
rule->tuples.dst_port = be16_to_cpu(match.key->dst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2224
rule->tuples_mask.dst_port = be16_to_cpu(match.mask->dst);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2226
rule->unused_tuple |= BIT(INNER_SRC_PORT);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2227
rule->unused_tuple |= BIT(INNER_DST_PORT);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2233
struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2252
rule->tuples.outer_tun_vni = be32_to_cpu(match.key->keyid);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2253
rule->tuples_mask.outer_tun_vni =
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2256
rule->unused_tuple |= BIT(OUTER_TUN_VNI);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2263
struct hclge_fd_rule *rule,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2276
rule->tuples.ip_tos = match.key->tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2277
rule->tuples_mask.ip_tos = match.mask->tos;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2278
if (!rule->tuples_mask.ip_tos)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2279
rule->unused_tuple |= BIT(INNER_IP_TOS);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2281
rule->unused_tuple |= BIT(INNER_IP_TOS);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2289
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2306
rule->action = HCLGE_FD_ACTION_SELECT_TC;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2307
rule->cls_flower.tc = tc;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2322
rule->queue_id = act->rx_queue;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2323
rule->action = HCLGE_FD_ACTION_SELECT_QUEUE;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2326
rule->action = HCLGE_FD_ACTION_DROP_PACKET;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2337
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2344
rule->unused_tuple |= HCLGE_FD_TUPLE_USER_DEF_TUPLES;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2346
hclge_get_cls_key_basic(flow, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2347
hclge_get_cls_key_mac(flow, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2348
hclge_get_cls_key_vlan(flow, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2350
ret = hclge_get_cls_key_ip(flow, rule, extack);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2354
hclge_get_cls_key_port(flow, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2355
ret = hclge_get_cls_key_ip_tos(flow, rule, extack);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2359
return hclge_get_cls_enc_keyid(hdev, flow, rule, extack);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2432
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2444
rule = kzalloc_obj(*rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2445
if (!rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2448
ret = hclge_parse_cls_flower(hdev, cls_flower, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2450
kfree(rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2454
ret = hclge_get_tc_flower_action(hdev, cls_flower, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2456
kfree(rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2460
rule->location = cls_flower->common.prio - 1;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2461
rule->vf_id = 0;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2462
rule->cls_flower.cookie = cls_flower->cookie;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2463
rule->rule_type = HCLGE_FD_TC_FLOWER_ACTIVE;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2465
ret = hclge_add_fd_entry_common(hdev, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2467
kfree(rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2475
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2478
hlist_for_each_entry_safe(rule, node, &hdev->fd_rule_list, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2479
if (rule->cls_flower.cookie == cookie)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2480
return rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
249
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2491
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2499
rule = hclge_find_cls_flower(hdev, cls_flower->cookie);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2500
if (!rule) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2505
ret = hclge_fd_tcam_config(hdev, HCLGE_FD_STAGE_1, true, rule->location,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2513
rule->location, NULL);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2519
hclge_update_fd_list(hdev, HCLGE_FD_DELETED, rule->location, NULL);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2527
struct hclge_fd_rule *rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2536
hlist_for_each_entry_safe(rule, node, hlist, rule_node) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2537
switch (rule->state) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2539
ret = hclge_fd_config_rule(hdev, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2542
rule->state = HCLGE_FD_ACTIVE;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2546
rule->location, NULL, false);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2549
hclge_fd_dec_rule_cnt(hdev, rule->location);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
2550
hclge_fd_free_node(hdev, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
256
if (!rule || rule->rule_type != HCLGE_FD_EP_ACTIVE ||
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
257
rule->ep.user_def.layer == HCLGE_FD_USER_DEF_NONE)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
261
cfg = &hdev->fd_cfg.user_def_cfg[rule->ep.user_def.layer - 1];
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
262
info = &rule->ep.user_def;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
270
fd_rule = hclge_find_fd_rule(hlist, rule->location, &parent);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
285
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
289
if (!rule || rule->rule_type != HCLGE_FD_EP_ACTIVE ||
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
290
rule->ep.user_def.layer == HCLGE_FD_USER_DEF_NONE)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
293
cfg = &hdev->fd_cfg.user_def_cfg[rule->ep.user_def.layer - 1];
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
295
cfg->offset = rule->ep.user_def.offset;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
302
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
306
if (!rule || rule->rule_type != HCLGE_FD_EP_ACTIVE ||
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
307
rule->ep.user_def.layer == HCLGE_FD_USER_DEF_NONE)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
310
cfg = &hdev->fd_cfg.user_def_cfg[rule->ep.user_def.layer - 1];
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
608
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
614
u8 *p = (u8 *)rule;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
618
if (rule->unused_tuple & BIT(tuple_bit))
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
680
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
697
rule->vf_id, 0);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
721
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
744
cur_key_y, rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
757
rule);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
759
ret = hclge_fd_tcam_config(hdev, stage, false, rule->location, key_y,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
764
rule->queue_id, ret);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
768
ret = hclge_fd_tcam_config(hdev, stage, true, rule->location, key_x,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
773
rule->queue_id, ret);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
778
struct hclge_fd_rule *rule)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
785
ad_data.ad_id = rule->location;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
787
if (rule->action == HCLGE_FD_ACTION_DROP_PACKET) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
789
} else if (rule->action == HCLGE_FD_ACTION_SELECT_TC) {
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
792
kinfo->tc_info.tqp_offset[rule->cls_flower.tc];
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
794
ilog2(kinfo->tc_info.tqp_count[rule->cls_flower.tc]);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
797
ad_data.queue_id = rule->queue_id;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
802
ad_data.counter_id = rule->vf_id %
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_fd.c
813
ad_data.rule_id = rule->location;
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
3745
struct i40e_fdir_filter *rule, *parent;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3751
rule = NULL;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3753
hlist_for_each_entry_safe(rule, node2,
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3756
if (rule->fd_id >= sw_idx)
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3758
parent = rule;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3762
if (rule && (rule->fd_id == sw_idx)) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3766
err = i40e_add_del_fdir(vsi, rule, false);
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3767
hlist_del(&rule->fdir_node);
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3768
kfree(rule);
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3805
struct i40e_fdir_filter *rule;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3811
hlist_for_each_entry(rule, &pf->fdir_filter_list, fdir_node) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3812
if (rule->flow_type != IP_USER_FLOW)
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3814
if (rule->flex_filter &&
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3815
rule->flex_offset == entry->src_offset) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3834
hlist_for_each_entry(rule, &pf->fdir_filter_list, fdir_node) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3838
if (rule->flow_type == IP_USER_FLOW)
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3840
if (rule->flex_filter &&
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
3841
rule->flex_offset == entry->src_offset) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
4755
struct i40e_fdir_filter *rule;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
4759
hlist_for_each_entry_safe(rule, node2,
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
4765
if (rule->fd_id == input->fd_id)
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
4771
if (i40e_match_fdir_filter(rule, input)) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
4774
rule->fd_id);
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
5021
struct i40e_fdir_filter *rule;
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
5051
hlist_for_each_entry_safe(rule, node2,
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
5053
if (rule->dest_ctl != drop && count <= rule->q_index) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
5056
rule->fd_id, rule->q_index);
drivers/net/ethernet/intel/i40e/i40e_main.c
8571
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/intel/i40e/i40e_main.c
8572
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/intel/i40e/i40e_main.c
8591
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_KEYID)) {
drivers/net/ethernet/intel/i40e/i40e_main.c
8594
flow_rule_match_enc_keyid(rule, &match);
drivers/net/ethernet/intel/i40e/i40e_main.c
8601
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/intel/i40e/i40e_main.c
8604
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/intel/i40e/i40e_main.c
8616
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/intel/i40e/i40e_main.c
8619
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/intel/i40e/i40e_main.c
8645
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/intel/i40e/i40e_main.c
8648
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/intel/i40e/i40e_main.c
8663
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/intel/i40e/i40e_main.c
8666
flow_rule_match_control(rule, &match);
drivers/net/ethernet/intel/i40e/i40e_main.c
8677
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/intel/i40e/i40e_main.c
8709
flow_rule_match_ipv6_addrs(rule, &match);
drivers/net/ethernet/intel/i40e/i40e_main.c
8730
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/intel/i40e/i40e_main.c
8733
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
3797
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/intel/iavf/iavf_main.c
3798
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/intel/iavf/iavf_main.c
3821
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_KEYID)) {
drivers/net/ethernet/intel/iavf/iavf_main.c
3824
flow_rule_match_enc_keyid(rule, &match);
drivers/net/ethernet/intel/iavf/iavf_main.c
3829
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/intel/iavf/iavf_main.c
3832
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/intel/iavf/iavf_main.c
3854
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/intel/iavf/iavf_main.c
3857
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/intel/iavf/iavf_main.c
3901
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/intel/iavf/iavf_main.c
3904
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/intel/iavf/iavf_main.c
3918
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/intel/iavf/iavf_main.c
3921
flow_rule_match_control(rule, &match);
drivers/net/ethernet/intel/iavf/iavf_main.c
3932
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/intel/iavf/iavf_main.c
3970
flow_rule_match_ipv6_addrs(rule, &match);
drivers/net/ethernet/intel/iavf/iavf_main.c
4001
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/intel/iavf/iavf_main.c
4004
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
8842
struct ice_rule_query_data rule;
drivers/net/ethernet/intel/ice/ice_main.c
8849
rule.rid = fltr->rid;
drivers/net/ethernet/intel/ice/ice_main.c
8850
rule.rule_id = fltr->rule_id;
drivers/net/ethernet/intel/ice/ice_main.c
8851
rule.vsi_handle = fltr->dest_vsi_handle;
drivers/net/ethernet/intel/ice/ice_main.c
8852
status = ice_rem_adv_rule_by_id(&pf->hw, &rule);
drivers/net/ethernet/intel/ice/ice_main.c
8856
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
768
int igc_add_nfc_rule(struct igc_adapter *adapter, struct igc_nfc_rule *rule);
drivers/net/ethernet/intel/igc/igc.h
769
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
2674
struct ixgbe_fdir_filter *rule = NULL;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2679
hlist_for_each_entry_safe(rule, node2,
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2681
if (fsp->location <= rule->sw_idx)
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2685
if (!rule || fsp->location != rule->sw_idx)
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2691
switch (rule->filter.formatted.flow_type) {
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2711
fsp->h_u.tcp_ip4_spec.psrc = rule->filter.formatted.src_port;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2713
fsp->h_u.tcp_ip4_spec.pdst = rule->filter.formatted.dst_port;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2715
fsp->h_u.tcp_ip4_spec.ip4src = rule->filter.formatted.src_ip[0];
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2717
fsp->h_u.tcp_ip4_spec.ip4dst = rule->filter.formatted.dst_ip[0];
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2719
fsp->h_ext.vlan_tci = rule->filter.formatted.vlan_id;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2721
fsp->h_ext.vlan_etype = rule->filter.formatted.flex_bytes;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2723
fsp->h_ext.data[1] = htonl(rule->filter.formatted.vm_pool);
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2728
if (rule->action == IXGBE_FDIR_DROP_QUEUE)
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2731
fsp->ring_cookie = rule->action;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2741
struct ixgbe_fdir_filter *rule;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2747
hlist_for_each_entry_safe(rule, node2,
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2751
rule_locs[cnt] = rule->sw_idx;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2850
struct ixgbe_fdir_filter *rule, *parent;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2854
rule = NULL;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2856
hlist_for_each_entry_safe(rule, node2,
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2859
if (rule->sw_idx >= sw_idx)
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2861
parent = rule;
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2865
if (rule && (rule->sw_idx == sw_idx)) {
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2866
if (!input || (rule->filter.formatted.bkt_hash !=
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2869
&rule->filter,
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2873
hlist_del(&rule->fdir_node);
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
2874
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/cn20k/npc.c
3674
struct rvu_npc_mcam_rule *rule, *tmp;
drivers/net/ethernet/marvell/octeontx2/af/cn20k/npc.c
3801
list_for_each_entry_safe(rule, tmp, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/cn20k/npc.c
3802
if (rule->entry != old_midx)
drivers/net/ethernet/marvell/octeontx2/af/cn20k/npc.c
3805
rule->entry = new_midx;
drivers/net/ethernet/marvell/octeontx2/af/cn20k/npc.c
4357
struct rvu_npc_mcam_rule *rule, *tmp;
drivers/net/ethernet/marvell/octeontx2/af/cn20k/npc.c
4443
list_for_each_entry_safe(rule, tmp, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/cn20k/npc.c
4445
if (ptr[i] != rule->entry)
drivers/net/ethernet/marvell/octeontx2/af/cn20k/npc.c
4448
list_del(&rule->list);
drivers/net/ethernet/marvell/octeontx2/af/cn20k/npc.c
4449
kfree(rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu.h
1086
struct rvu_npc_mcam_rule *rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu.h
1088
struct rvu_npc_mcam_rule *rule,
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3317
struct rvu_npc_mcam_rule *rule)
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3321
for_each_set_bit(bit, (unsigned long *)&rule->features, 64) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3325
if (rule->lxmb == 1)
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3331
seq_printf(s, "%pM ", rule->packet.dmac);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3332
seq_printf(s, "mask %pM\n", rule->mask.dmac);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3335
seq_printf(s, "%pM ", rule->packet.smac);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3336
seq_printf(s, "mask %pM\n", rule->mask.smac);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3339
seq_printf(s, "0x%x ", ntohs(rule->packet.etype));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3340
seq_printf(s, "mask 0x%x\n", ntohs(rule->mask.etype));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3343
seq_printf(s, "0x%x ", ntohs(rule->packet.vlan_tci));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3345
ntohs(rule->mask.vlan_tci));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3348
seq_printf(s, "0x%x ", ntohs(rule->packet.vlan_itci));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3350
ntohs(rule->mask.vlan_itci));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3353
seq_printf(s, "%d ", rule->packet.tos);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3354
seq_printf(s, "mask 0x%x\n", rule->mask.tos);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3357
seq_printf(s, "%pI4 ", &rule->packet.ip4src);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3358
seq_printf(s, "mask %pI4\n", &rule->mask.ip4src);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3361
seq_printf(s, "%pI4 ", &rule->packet.ip4dst);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3362
seq_printf(s, "mask %pI4\n", &rule->mask.ip4dst);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3365
seq_printf(s, "%pI6 ", rule->packet.ip6src);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3366
seq_printf(s, "mask %pI6\n", rule->mask.ip6src);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3369
seq_printf(s, "%pI6 ", rule->packet.ip6dst);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3370
seq_printf(s, "mask %pI6\n", rule->mask.ip6dst);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3373
seq_printf(s, "0x%x ", rule->packet.next_header);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3374
seq_printf(s, "mask 0x%x\n", rule->mask.next_header);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3377
seq_printf(s, "0x%x ", rule->packet.ip_flag);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3378
seq_printf(s, "mask 0x%x\n", rule->mask.ip_flag);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3383
seq_printf(s, "%d ", ntohs(rule->packet.sport));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3384
seq_printf(s, "mask 0x%x\n", ntohs(rule->mask.sport));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3389
seq_printf(s, "%d ", ntohs(rule->packet.dport));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3390
seq_printf(s, "mask 0x%x\n", ntohs(rule->mask.dport));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3393
seq_printf(s, "%d ", rule->packet.tcp_flags);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3394
seq_printf(s, "mask 0x%x\n", rule->mask.tcp_flags);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3397
seq_printf(s, "0x%x ", ntohl(rule->packet.spi));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3398
seq_printf(s, "mask 0x%x\n", ntohl(rule->mask.spi));
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3401
RVU_DBG_PRINT_MPLS_LBTCBOS(rule->packet.mpls_lse[0],
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3402
rule->mask.mpls_lse[0]);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3405
RVU_DBG_PRINT_MPLS_TTL(rule->packet.mpls_lse[0],
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3406
rule->mask.mpls_lse[0]);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3409
RVU_DBG_PRINT_MPLS_LBTCBOS(rule->packet.mpls_lse[1],
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3410
rule->mask.mpls_lse[1]);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3413
RVU_DBG_PRINT_MPLS_TTL(rule->packet.mpls_lse[1],
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3414
rule->mask.mpls_lse[1]);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3417
RVU_DBG_PRINT_MPLS_LBTCBOS(rule->packet.mpls_lse[2],
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3418
rule->mask.mpls_lse[2]);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3421
RVU_DBG_PRINT_MPLS_TTL(rule->packet.mpls_lse[2],
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3422
rule->mask.mpls_lse[2]);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3425
RVU_DBG_PRINT_MPLS_LBTCBOS(rule->packet.mpls_lse[3],
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3426
rule->mask.mpls_lse[3]);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3429
RVU_DBG_PRINT_MPLS_TTL(rule->packet.mpls_lse[3],
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3430
rule->mask.mpls_lse[3]);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3433
seq_printf(s, "%d ", rule->packet.icmp_type);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3434
seq_printf(s, "mask 0x%x\n", rule->mask.icmp_type);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3437
seq_printf(s, "%d ", rule->packet.icmp_code);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3438
seq_printf(s, "mask 0x%x\n", rule->mask.icmp_code);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3448
struct rvu_npc_mcam_rule *rule)
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3450
if (is_npc_intf_tx(rule->intf)) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3451
switch (rule->tx_action.op) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3460
rule->tx_action.index);
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3472
switch (rule->rx_action.op) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c
3478
rule->rx_action.index);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1111
struct rvu_npc_mcam_rule *rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1123
list_for_each_entry(rule, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1124
if (rule->entry == index)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1394
struct rvu_npc_mcam_rule *rule, *tmp;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1398
list_for_each_entry_safe(rule, tmp, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1399
if (rule->intf != intf)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1402
if (rule->entry != entry)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1405
rule->enable = enable;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1433
struct rvu_npc_mcam_rule *rule, *tmp;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1443
list_for_each_entry_safe(rule, tmp, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1444
if (is_npc_intf_rx(rule->intf) &&
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1445
rule->rx_action.pf_func == pcifunc &&
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1446
rule->rx_action.op != NIX_RX_ACTIONOP_MCAST) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1448
rule->entry, false);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1449
rule->enable = false;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1451
if (rule->default_rule) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1453
list_del(&rule->list);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1454
kfree(rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1469
struct rvu_npc_mcam_rule *rule, *tmp;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1485
list_for_each_entry_safe(rule, tmp, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1486
if (rule->owner == pcifunc && !rule->default_rule) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1487
list_del(&rule->list);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
1488
kfree(rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3401
struct rvu_npc_mcam_rule *rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3413
list_for_each_entry(rule, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3414
if (!is_mcam_entry_enabled(rvu, mcam, blkaddr, rule->entry))
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3416
if (!rule->default_rule)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3418
if (enable && !rule->has_cntr) { /* Alloc and map new counter */
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3419
__rvu_mcam_add_counter_to_rule(rvu, rule->owner,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3420
rule, &rsp);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3428
rule->entry, rsp.counter);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3431
NPC_AF_MATCH_STATX(rule->cntr), 0x0);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3435
if (!enable && rule->has_cntr)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3436
__rvu_mcam_remove_counter_from_rule(rvu, rule->owner,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3437
rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3884
struct rvu_npc_mcam_rule *rule)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3889
if (!rule->has_cntr)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3893
free_req.cntr = rule->cntr;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3896
rule->has_cntr = false;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3900
struct rvu_npc_mcam_rule *rule,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3917
rule->cntr = cntr_rsp.cntr;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3918
rule->has_cntr = true;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
3919
rsp->counter = rule->cntr;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
4367
struct rvu_npc_mcam_rule *rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
4388
list_for_each_entry(rule, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
4389
if (rule->entry == ucast_idx) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
4390
list_del(&rule->list);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
4391
kfree(rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
479
struct rvu_npc_mcam_rule *rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
502
list_for_each_entry(rule, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
503
if (rule->entry == index)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1231
struct rvu_npc_mcam_rule *rule)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1238
if (iter->entry > rule->entry)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1243
list_add(&rule->list, head);
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
1258
__rvu_mcam_remove_counter_from_rule(rvu, pcifunc, rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1264
struct rvu_npc_mcam_rule *rule,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1271
__rvu_mcam_add_counter_to_rule(rvu, pcifunc, rule, rsp);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1442
struct rvu_npc_mcam_rule *rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1505
rule = rvu_mcam_find_rule(mcam, entry_index);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1506
if (!rule) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1507
rule = kzalloc_obj(*rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1508
if (!rule)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1517
if (!req->default_rule && req->set_cntr && !rule->has_cntr)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1518
rvu_mcam_add_counter_to_rule(rvu, owner, rule, rsp);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1523
if (!req->set_cntr && rule->has_cntr)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1524
rvu_mcam_remove_counter_from_rule(rvu, owner, rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1536
if (req->set_cntr && rule->has_cntr) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1538
NPC_AF_MATCH_STATX(rule->cntr),
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1541
write_req.cntr = rule->cntr;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1560
memcpy(&rule->packet, &dummy.packet, sizeof(rule->packet));
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1561
memcpy(&rule->mask, &dummy.mask, sizeof(rule->mask));
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1562
rule->entry = entry_index;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1564
memcpy(&rule->rx_action, &cn20k_entry->action,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1567
memcpy(&rule->tx_action, &cn20k_entry->action,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1569
rule->vtag_action = cn20k_entry->vtag_action;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1571
memcpy(&rule->rx_action, &entry->action,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1574
memcpy(&rule->tx_action, &entry->action,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1576
rule->vtag_action = entry->vtag_action;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1579
rule->features = installed_features;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1580
rule->default_rule = req->default_rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1581
rule->owner = owner;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1582
rule->enable = enable;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1585
rule->chan_mask = cn20k_wreq.entry_data.kw_mask[0] &
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1587
rule->chan = cn20k_wreq.entry_data.kw[0] &
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1590
rule->chan_mask = write_req.entry_data.kw_mask[0] &
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1592
rule->chan = write_req.entry_data.kw[0] & NPC_KEX_CHAN_MASK;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1595
rule->chan &= rule->chan_mask;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1596
rule->lxmb = dummy.lxmb;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1597
rule->hw_prio = req->hw_prio;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1599
rule->intf = pfvf->nix_tx_intf;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1601
rule->intf = pfvf->nix_rx_intf;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1604
rvu_mcam_add_rule(mcam, rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1606
pfvf->def_ucast_rule = rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1618
rvu_mcam_remove_counter_from_rule(rvu, owner, rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1620
list_del(&rule->list);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1621
kfree(rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1635
rule->vfvlan_cfg = true;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1908
static int npc_delete_flow(struct rvu *rvu, struct rvu_npc_mcam_rule *rule,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1914
if (rule->default_rule)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1917
if (rule->has_cntr)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1918
rvu_mcam_remove_counter_from_rule(rvu, pcifunc, rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1921
dis_req.entry = rule->entry;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1923
list_del(&rule->list);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1924
kfree(rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1982
struct rvu_npc_mcam_rule *rule,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
1999
ether_addr_copy(rule->packet.dmac, pfvf->mac_addr);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2002
if (npc_cn20k_read_mcam_entry(rvu, npcblkaddr, rule->entry,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2007
npc_read_mcam_entry(rvu, mcam, npcblkaddr, rule->entry,
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2017
cn20k_wreq.hdr.pcifunc = rule->owner;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2018
cn20k_wreq.entry = rule->entry;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2024
write_req.hdr.pcifunc = rule->owner;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2025
write_req.entry = rule->entry;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2040
struct rvu_npc_mcam_rule *rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2051
list_for_each_entry(rule, &mcam->mcam_rules, list) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2052
if (is_npc_intf_rx(rule->intf) &&
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2053
rule->rx_action.pf_func == target && !rule->enable) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2054
if (rule->default_rule) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2056
rule->entry, true);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2057
rule->enable = true;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2061
if (rule->vfvlan_cfg) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2062
if (npc_update_dmac_value(rvu, blkaddr, rule, pfvf))
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2065
rule->entry, target);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2068
if (rule->rx_action.op == NIX_RX_ACTION_DEFAULT) {
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2072
rule->rx_action = def_ucast_rule->rx_action;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2074
bank = npc_get_bank(mcam, rule->entry);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2077
(rule->entry, bank), def_action);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2081
rule->entry, true);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2082
rule->enable = true;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2127
struct rvu_npc_mcam_rule *rule;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2154
rule = kzalloc_obj(*rule);
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2155
if (!rule)
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2161
rule->enable = false;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2162
rule->chan = chan_val;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2163
rule->chan_mask = chan_mask;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2164
rule->entry = mcam_idx;
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c
2165
rvu_mcam_add_rule(mcam, rule);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
1436
struct flow_action *actions = &cls->rule->action;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
1451
entry = &cls->rule->action.entries[0];
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
216
struct flow_action *actions = &cls->rule->action;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
230
entry = &cls->rule->action.entries[0];
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
233
err = otx2_policer_validate(&cls->rule->action, entry, extack);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
553
struct flow_msg *flow_mask, struct flow_rule *rule,
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
560
flow_rule_match_cvlan(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
562
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
574
flow_action_for_each(i, act, &rule->action) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
616
struct flow_rule *rule;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
619
rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
620
dissector = rule->match.dissector;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
641
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
644
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
683
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
687
flow_rule_match_control(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
711
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
714
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
728
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPSEC)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
731
flow_rule_match_ipsec(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
748
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IP)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
751
flow_rule_match_ip(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
766
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
769
ret = otx2_tc_process_vlan(nic, flow_spec, flow_mask, rule, req, false);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
774
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CVLAN)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
777
ret = otx2_tc_process_vlan(nic, flow_spec, flow_mask, rule, req, true);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
782
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV4_ADDRS)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
785
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
794
} else if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IPV6_ADDRS)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
797
flow_rule_match_ipv6_addrs(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
827
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
830
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
857
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_TCP)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
860
flow_rule_match_tcp(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
867
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_MPLS)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
871
flow_rule_match_mpls(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
922
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ICMP)) {
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
925
flow_rule_match_icmp(rule, &match);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c
935
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
131
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
804
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
836
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_CONTROL)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
847
flow_rule_match_enc_control(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
860
flow_rule_match_enc_ipv4_addrs(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
881
flow_rule_match_enc_ipv6_addrs(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
906
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_IP)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
909
flow_rule_match_enc_ip(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
952
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
958
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_PORTS)) {
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c
966
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
1032
ai->rule = mlx5_add_flow_rules(ft, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
1033
if (IS_ERR(ai->rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
1035
err = PTR_ERR(ai->rule);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
1036
ai->rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
371
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
382
rule = mlx5_add_flow_rules(ft, spec, &flow_act, &dest, 1);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
384
return rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
390
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
393
rule = mlx5e_add_trap_rule(ft, trap_id, tir_num);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
394
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
395
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
400
fs->vlan->trap_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
415
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
418
rule = mlx5e_add_trap_rule(ft, trap_id, tir_num);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
419
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
420
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
425
fs->l2.trap_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
770
rule_p = &fs->promisc.rule;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
815
if (WARN(!fs->promisc.rule, "Trying to remove non-existing promiscuous rule"))
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
817
mlx5_del_flow_rules(fs->promisc.rule);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
818
fs->promisc.rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
986
if (!IS_ERR_OR_NULL(ai->rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
987
mlx5_del_flow_rules(ai->rule);
drivers/net/ethernet/mellanox/mlx5/core/en_fs.c
988
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
1702
mlx5_eswitch_del_send_to_vport_rule(sq_peer->rule);
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
1734
sq_peer->rule = flow_rule;
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
1746
sq_peer->rule = flow_rule;
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
456
if (sq_peer->rule)
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
457
mlx5_eswitch_del_send_to_vport_rule(sq_peer->rule);
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
492
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
1250
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1307
rule = ERR_CAST(tc->t);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1321
rule = ERR_CAST(ft);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1328
rule = mlx5_add_flow_rules(ft, spec,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1330
if (IS_ERR(rule))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1333
return rule;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1346
return ERR_CAST(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1394
flow->rule[0] = mlx5e_add_offloaded_nic_rule(priv, &parse_attr->spec, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1395
return PTR_ERR_OR_ZERO(flow->rule[0]);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1399
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1406
mlx5_del_flow_rules(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1425
if (!IS_ERR_OR_NULL(flow->rule[0]))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1426
mlx5e_del_offloaded_nic_rule(priv, flow->rule[0], attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1463
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1468
rule = mlx5e_tc_rule_offload(flow->priv, spec, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1470
if (IS_ERR(rule))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1471
return rule;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1474
flow->rule[1] = mlx5_eswitch_add_fwd_rule(esw, spec, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1475
if (IS_ERR(flow->rule[1]))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1479
return rule;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1482
mlx5e_tc_rule_unoffload(flow->priv, rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1483
return flow->rule[1];
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1493
return mlx5_eswitch_del_offloaded_rule(esw, flow->rule[0], attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1496
mlx5_eswitch_del_fwd_rule(esw, flow->rule[1], attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1498
mlx5e_tc_rule_unoffload(flow->priv, flow->rule[0], attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1509
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1547
rule = mlx5e_tc_offload_fdb_rules(esw, flow, spec, slow_attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1548
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1549
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
1560
return rule;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2019
flow->rule[0] = mlx5e_tc_offload_to_slow_path(esw, flow, &parse_attr->spec);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2021
flow->rule[0] = mlx5e_tc_offload_fdb_rules(esw, flow, &parse_attr->spec, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2023
if (IS_ERR(flow->rule[0])) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2024
err = PTR_ERR(flow->rule[0]);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2179
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2180
struct flow_action *flow_action = &rule->action;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2235
#define COPY_DISSECTOR(rule, diss_key, dst)\
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2237
struct flow_rule *__rule = (rule);\
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2252
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2272
COPY_DISSECTOR(rule, FLOW_DISSECTOR_KEY_ENC_CONTROL,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2275
COPY_DISSECTOR(rule, FLOW_DISSECTOR_KEY_ENC_IPV4_ADDRS,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2278
COPY_DISSECTOR(rule, FLOW_DISSECTOR_KEY_ENC_IPV6_ADDRS,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2280
COPY_DISSECTOR(rule, FLOW_DISSECTOR_KEY_ENC_IP, &tunnel_key.enc_ip);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2281
COPY_DISSECTOR(rule, FLOW_DISSECTOR_KEY_ENC_PORTS,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2283
COPY_DISSECTOR(rule, FLOW_DISSECTOR_KEY_ENC_KEYID,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2291
flow_rule_match_enc_opts(rule, &enc_opts_match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2439
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2445
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_IP)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2446
flow_rule_match_enc_ip(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2451
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IP)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2452
flow_rule_match_ip(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2638
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2643
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_META))
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2646
flow_rule_match_meta(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2712
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2713
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2779
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC) &&
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2783
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2791
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_VLAN) ||
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2806
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2835
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CVLAN) &&
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2855
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CVLAN)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2858
flow_rule_match_cvlan(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2895
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2898
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2918
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_CONTROL)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2921
flow_rule_match_control(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2942
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2945
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2960
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
2981
flow_rule_match_ipv6_addrs(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3001
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_IP)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3004
flow_rule_match_ip(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3036
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3039
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3076
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_TCP)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3079
flow_rule_match_tcp(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3088
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ICMP)) {
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3091
flow_rule_match_icmp(rule, &match);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
3138
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_MPLS) &&
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
418
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
424
mlx5_eswitch_del_offloaded_rule(esw, rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
428
mlx5e_del_offloaded_nic_rule(priv, rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4551
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4580
err = parse_tc_fdb_actions(priv, &rule->action, flow, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4724
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
4757
err = parse_tc_nic_actions(priv, &rule->action, flow, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
513
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
5181
return scan_tc_matchall_fdb_actions(priv, &ma->rule->action, extack);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
519
mlx5e_del_offloaded_nic_rule(priv, rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
524
mlx5e_tc_sample_unoffload(get_sample_priv(priv), rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
528
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
149
err = mlx5_eswitch_restore_ipsec_rule(esw, flow->rule[0], esw_attr,
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
449
void mlx5_eswitch_del_send_to_vport_meta_rule(struct mlx5_flow_handle *rule);
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
494
void mlx5_eswitch_del_send_to_vport_rule(struct mlx5_flow_handle *rule);
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
535
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
539
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
987
int mlx5_eswitch_restore_ipsec_rule(struct mlx5_eswitch *esw, struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1030
void mlx5_eswitch_del_send_to_vport_rule(struct mlx5_flow_handle *rule)
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1032
mlx5_del_flow_rules(rule);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1035
void mlx5_eswitch_del_send_to_vport_meta_rule(struct mlx5_flow_handle *rule)
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1037
if (rule)
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
1038
mlx5_del_flow_rules(rule);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
5332
mlx5_eswitch_restore_ipsec_rule(struct mlx5_eswitch *esw, struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
5344
return mlx5_modify_rule_destination(rule, &new_dest, &old_dest);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
672
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
709
rule = ERR_PTR(err);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
718
rule = ERR_PTR(-EINVAL);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
764
rule = ERR_CAST(fdb);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
774
rule = mlx5_eswitch_add_termtbl_rule(esw, fdb, spec, esw_attr,
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
777
rule = mlx5_add_flow_rules(fdb, spec, &flow_act, dest, i);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
778
if (IS_ERR(rule))
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
784
return rule;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
795
return rule;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
810
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
819
rule = ERR_CAST(fast_fdb);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
829
rule = ERR_CAST(fwd_fdb);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
844
rule = ERR_PTR(err);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
860
rule = mlx5_add_flow_rules(fast_fdb, spec, &flow_act, dest, i);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
862
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
870
return rule;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
877
return rule;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
882
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
892
mlx5_del_flow_rules(rule);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
925
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
928
__mlx5_eswitch_del_rule(esw, rule, attr, false);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
933
struct mlx5_flow_handle *rule,
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
936
__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
1186
static bool rule_is_pending(struct fs_fte *fte, struct mlx5_flow_rule *rule)
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1197
if (tmp_rule == rule)
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1204
static int _mlx5_modify_rule_destination(struct mlx5_flow_rule *rule,
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1216
fs_get_obj(fte, rule->node.parent);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1218
pending = rule_is_pending(fte, rule);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1230
memcpy(&rule->dest_attr, dest, sizeof(*dest));
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1249
return _mlx5_modify_rule_destination(handle->rule[0],
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1254
if (mlx5_flow_dests_cmp(old_dest, &handle->rule[i]->dest_attr))
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1255
return _mlx5_modify_rule_destination(handle->rule[i],
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1526
struct mlx5_flow_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1528
rule = kzalloc_obj(*rule);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1529
if (!rule)
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1532
INIT_LIST_HEAD(&rule->next_ft);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1533
rule->node.type = FS_TYPE_FLOW_DEST;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1535
memcpy(&rule->dest_attr, dest, sizeof(*dest));
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1537
rule->dest_attr.type = MLX5_FLOW_DESTINATION_TYPE_NONE;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1539
return rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1546
handle = kzalloc_flex(*handle, rule, num_rules);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1559
list_del(&handle->rule[i]->node.list);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1560
kfree(handle->rule[i]);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1571
if (refcount_dec_and_test(&handle->rule[i]->node.refcount)) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1573
list_del(&handle->rule[i]->node.list);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1574
kfree(handle->rule[i]);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1588
struct mlx5_flow_rule *rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1598
rule = alloc_rule(dest + i);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1599
if (!rule)
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1605
tree_init_node(&rule->node, NULL, del_sw_hw_dup_rule);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1608
list_add(&rule->node.list, children);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1610
list_add_tail(&rule->node.list, children);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1622
handle->rule[i] = rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1643
struct mlx5_flow_rule *rule = NULL;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1655
rule = find_flow_rule(fte, dest + i);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1656
if (rule) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1657
refcount_inc(&rule->node.refcount);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1663
rule = alloc_rule(dest + i);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1664
if (!rule)
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1670
tree_init_node(&rule->node, NULL, del_sw_hw_rule);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1673
list_add(&rule->node.list, &fte->node.children);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1675
list_add_tail(&rule->node.list, &fte->node.children);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1687
handle->rule[i] = rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1900
struct mlx5_flow_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1902
list_for_each_entry(rule, &fte->node.children, node.list) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1903
if (mlx5_flow_dests_cmp(&rule->dest_attr, dest))
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
1904
return rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2010
if (!handle->rule[i]->node.parent) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2011
tree_add_node(&handle->rule[i]->node, &fte->node);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2012
trace_mlx5_fs_add_rule(handle->rule[i]);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2209
tree_add_node(&handle->rule[i]->node, &fte->node);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2210
trace_mlx5_fs_add_rule(handle->rule[i]);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2228
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2257
rule = add_rule_dup_match_fte(fte_tmp, spec, flow_act, dest, dest_num);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2259
rule = add_rule_fg(g, spec, flow_act, dest, dest_num, fte_tmp);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2264
return rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2276
rule = ERR_PTR(-EAGAIN);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2312
rule = add_rule_fg(g, spec, flow_act, dest, dest_num, fte);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2314
if (IS_ERR(rule))
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2316
return rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2319
rule = ERR_PTR(err);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2322
return rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2334
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2373
rule = try_add_to_existing_fg(ft, &match_head.list, spec, flow_act, dest,
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2376
if (!IS_ERR(rule) ||
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2377
(PTR_ERR(rule) != -ENOENT && PTR_ERR(rule) != -EAGAIN)) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2380
return rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2388
if (PTR_ERR(rule) == -EAGAIN ||
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2394
rule = ERR_CAST(g);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2396
return rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2419
rule = add_rule_fg(g, spec, flow_act, dest, dest_num, fte);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2421
if (IS_ERR(rule))
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2424
return rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2490
if (list_empty(&handle->rule[num_dest - 1]->next_ft)) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2492
list_add(&handle->rule[num_dest - 1]->next_ft,
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2495
handle->rule[num_dest - 1]->sw_action = sw_action;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2496
handle->rule[num_dest - 1]->ft = ft;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2522
fs_get_obj(fte, handle->rule[0]->node.parent);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
2525
tree_remove_node(&handle->rule[i]->node, true);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
624
struct mlx5_flow_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
627
fs_get_obj(rule, node);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
628
fs_get_obj(fte, rule->node.parent);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
629
trace_mlx5_fs_del_rule(rule);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
631
if (is_fwd_next_action(rule->sw_action)) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
632
mutex_lock(&rule->dest_attr.ft->lock);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
633
list_del(&rule->next_ft);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
634
mutex_unlock(&rule->dest_attr.ft->lock);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
644
kfree(rule);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
649
struct mlx5_flow_rule *rule;
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
652
fs_get_obj(rule, node);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
653
fs_get_obj(fte, rule->node.parent);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
654
trace_mlx5_fs_del_rule(rule);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
655
if (is_fwd_next_action(rule->sw_action)) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
656
mutex_lock(&rule->dest_attr.ft->lock);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
657
list_del(&rule->next_ft);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
658
mutex_unlock(&rule->dest_attr.ft->lock);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
661
if (rule->dest_attr.type == MLX5_FLOW_DESTINATION_TYPE_COUNTER) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
667
mlx5_fc_local_put(rule->dest_attr.counter);
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
671
if (rule->dest_attr.type == MLX5_FLOW_DESTINATION_TYPE_PORT) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
678
if (is_fwd_dest_type(rule->dest_attr.type)) {
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
690
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/lag/lag.c
1748
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
1761
xa_for_each(&pf->lag_demux_rules, vport_num, rule)
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
1762
mlx5_del_flow_rules(rule);
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
1790
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
1806
rule = mlx5_esw_lag_demux_rule_create(vport_dev->priv.eswitch,
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
1808
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
1809
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
1816
err = xa_err(xa_store(&master->lag_demux_rules, index, rule,
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
1819
mlx5_del_flow_rules(rule);
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
1831
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
1843
rule = xa_erase(&master_pf->lag_demux_rules, index);
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
1844
if (rule)
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c
1845
mlx5_del_flow_rules(rule);
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
148
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
166
rule = mlx5_add_flow_rules(roce->ft, spec, &flow_act, &dst, 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
167
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
168
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
174
roce->rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
179
rule = mlx5_add_flow_rules(roce->ft, spec, &flow_act, default_dst, 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
180
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
181
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
187
roce->roce_miss.rule = 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
197
rule = mlx5_add_flow_rules(roce->nic_master_ft, NULL, &flow_act, &dst,
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
199
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
200
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
205
roce->nic_master_rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
211
mlx5_del_flow_rules(roce->roce_miss.rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
213
mlx5_del_flow_rules(roce->rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
225
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
231
rule = mlx5_add_flow_rules(roce->ft, NULL, &flow_act, &dst,
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
233
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
234
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
239
roce->rule = rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
251
struct mlx5_flow_handle *rule;
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
267
rule = mlx5_add_flow_rules(roce->ft, spec, &flow_act, &dst, 1);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
268
if (IS_ERR(rule)) {
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
269
err = PTR_ERR(rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
274
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
587
mlx5_del_flow_rules(tx_roce->rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
707
mlx5_del_flow_rules(rx_roce->roce_miss.rule);
drivers/net/ethernet/mellanox/mlx5/core/lib/ipsec_fs_roce.c
708
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
501
bwc_rule->rule = kzalloc_obj(*bwc_rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
502
if (unlikely(!bwc_rule->rule))
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
516
if (likely(bwc_rule->rule))
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
517
kfree(bwc_rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
538
return mlx5hws_rule_destroy(bwc_rule->rule, attr);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
558
if (unlikely(bwc_rule->rule->status != MLX5HWS_RULE_STATUS_DELETED &&
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
559
bwc_rule->rule->status != MLX5HWS_RULE_STATUS_DELETING)) {
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
561
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
694
bwc_rule->rule);
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/bwc.c
730
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
8065
struct fib_rule *rule;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8073
rule = fr_info->rule;
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8076
if (rule->iifindex == mlxsw_sp_net(mlxsw_sp)->loopback_dev->ifindex)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8081
if (!fib4_rule_default(rule) && !rule->l3mdev)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8085
if (!fib6_rule_default(rule) && !rule->l3mdev)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8089
if (!ipmr_rule_default(rule) && !rule->l3mdev)
drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
8093
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
1721
static int vcap_add_type_keyfield(struct vcap_rule *rule)
drivers/net/ethernet/microchip/vcap/vcap_api.c
1723
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
1724
enum vcap_keyfield_set keyset = rule->keyset;
drivers/net/ethernet/microchip/vcap/vcap_api.c
1740
ret = vcap_rule_add_key_u32(rule, VCAP_KF_TYPE,
drivers/net/ethernet/microchip/vcap/vcap_api.c
1744
ret = vcap_rule_add_key_bit(rule, VCAP_KF_TYPE,
drivers/net/ethernet/microchip/vcap/vcap_api.c
1747
ret = vcap_rule_add_key_bit(rule, VCAP_KF_TYPE,
drivers/net/ethernet/microchip/vcap/vcap_api.c
1754
static int vcap_add_type_actionfield(struct vcap_rule *rule)
drivers/net/ethernet/microchip/vcap/vcap_api.c
1756
enum vcap_actionfield_set actionset = rule->actionset;
drivers/net/ethernet/microchip/vcap/vcap_api.c
1757
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
1773
ret = vcap_rule_add_action_u32(rule, VCAP_AF_TYPE,
drivers/net/ethernet/microchip/vcap/vcap_api.c
1777
ret = vcap_rule_add_action_bit(rule, VCAP_AF_TYPE,
drivers/net/ethernet/microchip/vcap/vcap_api.c
1780
ret = vcap_rule_add_action_bit(rule, VCAP_AF_TYPE,
drivers/net/ethernet/microchip/vcap/vcap_api.c
1918
bool vcap_rule_find_keysets(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
1921
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
1997
int vcap_val_rule(struct vcap_rule *rule, u16 l3_proto)
drivers/net/ethernet/microchip/vcap/vcap_api.c
1999
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2031
ret = ri->vctrl->ops->validate_keyset(ri->ndev, ri->admin, rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2040
ret = vcap_set_rule_set_keyset(rule, ret);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2058
ret = vcap_set_rule_set_actionset(rule, actionsets[0]);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2065
vcap_add_type_keyfield(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2066
vcap_add_type_actionfield(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2068
ri->vctrl->ops->add_default_fields(ri->ndev, ri->admin, rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2268
int vcap_add_rule(struct vcap_rule *rule)
drivers/net/ethernet/microchip/vcap/vcap_api.c
2270
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2395
void vcap_free_rule(struct vcap_rule *rule)
drivers/net/ethernet/microchip/vcap/vcap_api.c
2397
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2411
kfree(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2447
struct vcap_rule *rule;
drivers/net/ethernet/microchip/vcap/vcap_api.c
2458
rule = vcap_decode_rule(elem);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2460
return rule;
drivers/net/ethernet/microchip/vcap/vcap_api.c
2465
int vcap_mod_rule(struct vcap_rule *rule)
drivers/net/ethernet/microchip/vcap/vcap_api.c
2467
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2619
vcap_find_keyfield(struct vcap_rule *rule, enum vcap_key_field key)
drivers/net/ethernet/microchip/vcap/vcap_api.c
2621
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2631
const struct vcap_field *vcap_lookup_keyfield(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2634
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2635
enum vcap_keyfield_set keyset = rule->keyset;
drivers/net/ethernet/microchip/vcap/vcap_api.c
2649
static bool vcap_keyfield_unique(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2652
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2662
static bool vcap_keyfield_match_keyset(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2665
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2666
enum vcap_keyfield_set keyset = rule->keyset;
drivers/net/ethernet/microchip/vcap/vcap_api.c
2680
static int vcap_rule_add_key(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2685
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2688
if (!vcap_keyfield_unique(rule, key)) {
drivers/net/ethernet/microchip/vcap/vcap_api.c
2695
if (!vcap_keyfield_match_keyset(rule, key)) {
drivers/net/ethernet/microchip/vcap/vcap_api.c
2708
list_add_tail(&field->ctrl.list, &rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2731
int vcap_rule_add_key_bit(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2737
return vcap_rule_add_key(rule, key, VCAP_FIELD_BIT, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2742
int vcap_rule_add_key_u32(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2749
return vcap_rule_add_key(rule, key, VCAP_FIELD_U32, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2754
int vcap_rule_add_key_u48(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2760
return vcap_rule_add_key(rule, key, VCAP_FIELD_U48, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2765
int vcap_rule_add_key_u72(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2771
return vcap_rule_add_key(rule, key, VCAP_FIELD_U72, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2776
int vcap_rule_add_key_u128(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2782
return vcap_rule_add_key(rule, key, VCAP_FIELD_U128, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2786
int vcap_rule_get_key_u32(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2791
ckf = vcap_find_keyfield(rule, key);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2804
vcap_find_actionfield(struct vcap_rule *rule, enum vcap_action_field act)
drivers/net/ethernet/microchip/vcap/vcap_api.c
2806
struct vcap_rule_internal *ri = (struct vcap_rule_internal *)rule;
drivers/net/ethernet/microchip/vcap/vcap_api.c
2817
static bool vcap_actionfield_unique(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2820
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2830
static bool vcap_actionfield_match_actionset(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2833
enum vcap_actionfield_set actionset = rule->actionset;
drivers/net/ethernet/microchip/vcap/vcap_api.c
2834
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2848
static int vcap_rule_add_action(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2853
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2856
if (!vcap_actionfield_unique(rule, action)) {
drivers/net/ethernet/microchip/vcap/vcap_api.c
2863
if (!vcap_actionfield_match_actionset(rule, action)) {
drivers/net/ethernet/microchip/vcap/vcap_api.c
2876
list_add_tail(&field->ctrl.list, &rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2897
int vcap_rule_add_action_bit(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2904
return vcap_rule_add_action(rule, action, VCAP_FIELD_BIT, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2909
int vcap_rule_add_action_u32(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2916
return vcap_rule_add_action(rule, action, VCAP_FIELD_U32, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
2921
int vcap_rule_add_action_u72(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
2928
return vcap_rule_add_action(rule, action, VCAP_FIELD_U72, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3262
void vcap_rule_set_counter_id(struct vcap_rule *rule, u32 counter_id)
drivers/net/ethernet/microchip/vcap/vcap_api.c
3264
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3270
int vcap_rule_set_counter(struct vcap_rule *rule, struct vcap_counter *ctr)
drivers/net/ethernet/microchip/vcap/vcap_api.c
3272
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3291
int vcap_rule_get_counter(struct vcap_rule *rule, struct vcap_counter *ctr)
drivers/net/ethernet/microchip/vcap/vcap_api.c
3293
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3313
static int vcap_rule_get_key(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3319
field = vcap_find_keyfield(rule, key);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3435
static int vcap_rule_mod_key(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3442
field = vcap_find_keyfield(rule, key);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3444
return vcap_rule_add_key(rule, key, ftype, data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3450
int vcap_rule_mod_key_u32(struct vcap_rule *rule, enum vcap_key_field key,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3457
return vcap_rule_mod_key(rule, key, VCAP_FIELD_U32, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3462
int vcap_rule_rem_key(struct vcap_rule *rule, enum vcap_key_field key)
drivers/net/ethernet/microchip/vcap/vcap_api.c
3464
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3467
field = vcap_find_keyfield(rule, key);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3480
static int vcap_rule_mod_action(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3487
field = vcap_find_actionfield(rule, action);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3489
return vcap_rule_add_action(rule, action, ftype, data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3495
int vcap_rule_mod_action_u32(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3502
return vcap_rule_mod_action(rule, action, VCAP_FIELD_U32, &data);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3507
int vcap_filter_rule_keys(struct vcap_rule *rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3511
struct vcap_rule_internal *ri = to_intrule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3535
rule->keyset);
drivers/net/ethernet/microchip/vcap/vcap_api.c
3581
struct vcap_rule *rule;
drivers/net/ethernet/microchip/vcap/vcap_api.c
3588
rule = vcap_alloc_rule(ri->vctrl, ri->ndev, ri->data.vcap_chain_id,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3590
if (IS_ERR(rule))
drivers/net/ethernet/microchip/vcap/vcap_api.c
3591
return rule;
drivers/net/ethernet/microchip/vcap/vcap_api.c
3595
err = vcap_rule_add_key(rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3605
err = vcap_rule_add_action(rule,
drivers/net/ethernet/microchip/vcap/vcap_api.c
3612
return rule;
drivers/net/ethernet/microchip/vcap/vcap_api.c
3614
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
1001
static void vcap_free_ckf(struct vcap_rule *rule)
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1005
list_for_each_entry_safe(ckf, next_ckf, &rule->keyfields, ctrl.list) {
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1023
struct vcap_rule *rule = (struct vcap_rule *)&ri;
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1032
INIT_LIST_HEAD(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1033
ret = vcap_rule_add_key_bit(rule, VCAP_KF_LOOKUP_FIRST_IS, VCAP_BIT_0);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1035
ret = list_empty(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1037
kf = list_first_entry(&rule->keyfields, struct vcap_client_keyfield,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1043
vcap_free_ckf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1045
INIT_LIST_HEAD(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1046
ret = vcap_rule_add_key_bit(rule, VCAP_KF_LOOKUP_FIRST_IS, VCAP_BIT_1);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1048
ret = list_empty(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1050
kf = list_first_entry(&rule->keyfields, struct vcap_client_keyfield,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1056
vcap_free_ckf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1058
INIT_LIST_HEAD(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1059
ret = vcap_rule_add_key_bit(rule, VCAP_KF_LOOKUP_FIRST_IS,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1062
ret = list_empty(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1064
kf = list_first_entry(&rule->keyfields, struct vcap_client_keyfield,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1070
vcap_free_ckf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1072
INIT_LIST_HEAD(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1073
ret = vcap_rule_add_key_u32(rule, VCAP_KF_TYPE, 0x98765432, 0xff00ffab);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1075
ret = list_empty(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1077
kf = list_first_entry(&rule->keyfields, struct vcap_client_keyfield,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1083
vcap_free_ckf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1085
INIT_LIST_HEAD(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1086
ret = vcap_rule_add_key_u128(rule, VCAP_KF_L3_IP6_SIP, &dip);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1088
ret = list_empty(&rule->keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1090
kf = list_first_entry(&rule->keyfields, struct vcap_client_keyfield,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1098
vcap_free_ckf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1101
static void vcap_free_caf(struct vcap_rule *rule)
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1106
&rule->actionfields, ctrl.list) {
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1123
struct vcap_rule *rule = (struct vcap_rule *)&ri;
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1127
INIT_LIST_HEAD(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1128
ret = vcap_rule_add_action_bit(rule, VCAP_AF_POLICE_ENA, VCAP_BIT_0);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1130
ret = list_empty(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1132
af = list_first_entry(&rule->actionfields,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1137
vcap_free_caf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1139
INIT_LIST_HEAD(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1140
ret = vcap_rule_add_action_bit(rule, VCAP_AF_POLICE_ENA, VCAP_BIT_1);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1142
ret = list_empty(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1144
af = list_first_entry(&rule->actionfields,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1149
vcap_free_caf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1151
INIT_LIST_HEAD(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1152
ret = vcap_rule_add_action_bit(rule, VCAP_AF_POLICE_ENA, VCAP_BIT_ANY);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1154
ret = list_empty(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1156
af = list_first_entry(&rule->actionfields,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1161
vcap_free_caf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1163
INIT_LIST_HEAD(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1164
ret = vcap_rule_add_action_u32(rule, VCAP_AF_TYPE, 0x98765432);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1166
ret = list_empty(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1168
af = list_first_entry(&rule->actionfields,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1173
vcap_free_caf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1175
INIT_LIST_HEAD(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1176
ret = vcap_rule_add_action_u32(rule, VCAP_AF_MASK_MODE, 0xaabbccdd);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1178
ret = list_empty(&rule->actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1180
af = list_first_entry(&rule->actionfields,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1185
vcap_free_caf(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1355
struct vcap_rule *rule;
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1381
rule = vcap_alloc_rule(&test_vctrl, &test_netdev, vcap_chain_id, user,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1383
KUNIT_EXPECT_PTR_NE(test, NULL, rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1384
ri = (struct vcap_rule_internal *)rule;
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1387
ret = vcap_rule_add_key_u48(rule, VCAP_KF_L2_DMAC, &dmac);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1389
ret = vcap_rule_add_key_u48(rule, VCAP_KF_L2_SMAC, &smac);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1391
ret = vcap_rule_add_key_bit(rule, VCAP_KF_ETYPE_LEN_IS, VCAP_BIT_1);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1394
ret = vcap_rule_add_key_bit(rule, VCAP_KF_ETYPE_LEN_IS, VCAP_BIT_1);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1396
ret = vcap_rule_add_key_bit(rule, VCAP_KF_IF_IGR_PORT_MASK_L3,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1399
ret = vcap_rule_add_key_u32(rule, VCAP_KF_IF_IGR_PORT_MASK_RNG,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1402
ret = vcap_rule_add_key_u32(rule, VCAP_KF_IF_IGR_PORT_MASK,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1407
ret = vcap_rule_add_action_bit(rule, VCAP_AF_POLICE_ENA, VCAP_BIT_1);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1409
ret = vcap_rule_add_action_u32(rule, VCAP_AF_CNT_ID, id);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1411
ret = vcap_rule_add_action_u32(rule, VCAP_AF_MATCH_ID, 1);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1413
ret = vcap_rule_add_action_u32(rule, VCAP_AF_MATCH_ID_MASK, 1);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1417
ret = vcap_set_rule_set_actionset(rule, VCAP_AFS_BASE_TYPE);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1421
ret = vcap_val_rule(rule, ETH_P_ALL);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1423
KUNIT_EXPECT_EQ(test, VCAP_KFS_MAC_ETYPE, rule->keyset);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1424
KUNIT_EXPECT_EQ(test, VCAP_AFS_BASE_TYPE, rule->actionset);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1431
rule->vcap_chain_id, rule->cookie, true);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1435
ret = vcap_add_rule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1447
rule->cookie, false);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
1452
vcap_free_rule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
251
struct vcap_rule *rule;
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
289
rule = vcap_alloc_rule(&test_vctrl, &test_netdev, cid, user, priority,
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
291
KUNIT_EXPECT_PTR_NE(test, NULL, rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
293
ri = (struct vcap_rule_internal *)rule;
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
296
ret = vcap_set_rule_set_keyset(rule, keyset);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
299
ret = vcap_rule_add_action_u32(rule, VCAP_AF_ISDX_VAL, 0);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
302
ret = vcap_set_rule_set_actionset(rule, actionset);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
304
ret = vcap_val_rule(rule, ETH_P_ALL);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
306
KUNIT_EXPECT_EQ(test, keyset, rule->keyset);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
307
KUNIT_EXPECT_EQ(test, actionset, rule->actionset);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
311
ret = vcap_add_rule(rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
314
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
593
struct vcap_rule_internal rule = {
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
619
vcap_encode_keyfield(&rule, &ckf, &rf, tgt);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
654
struct vcap_rule_internal rule = {
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
697
vcap_encode_keyfield(&rule, &ckf, &rf, tgt);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
717
struct vcap_rule_internal rule = {
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
742
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
838
struct vcap_rule_internal rule = {
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
900
INIT_LIST_HEAD(&rule.data.keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
901
ret = vcap_encode_rule_keyset(&rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
905
list_add_tail(&ckf[idx].ctrl.list, &rule.data.keyfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
906
ret = vcap_encode_rule_keyset(&rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
948
struct vcap_rule_internal rule = {
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
976
INIT_LIST_HEAD(&rule.data.actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
977
ret = vcap_encode_rule_actionset(&rule);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
982
list_add_tail(&caf[idx].ctrl.list, &rule.data.actionfields);
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c
983
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
433
struct efx_tc_flow_rule *rule;
drivers/net/ethernet/sfc/tc_encap_actions.c
443
rule = container_of(acts, struct efx_tc_flow_rule, acts);
drivers/net/ethernet/sfc/tc_encap_actions.c
444
if (rule->fallback)
drivers/net/ethernet/sfc/tc_encap_actions.c
445
fallback = rule->fallback;
drivers/net/ethernet/sfc/tc_encap_actions.c
449
rule->fw_id);
drivers/net/ethernet/sfc/tc_encap_actions.c
453
rule->fw_id, rc);
drivers/net/ethernet/sfc/tc_encap_actions.c
456
rule->fw_id);
drivers/net/ethernet/sfc/tc_encap_actions.c
491
rule = container_of(acts, struct efx_tc_flow_rule, acts);
drivers/net/ethernet/sfc/tc_encap_actions.c
492
if (!efx_tc_check_ready(efx, rule))
drivers/net/ethernet/sfc/tc_encap_actions.c
494
rc = efx_mae_update_rule(efx, acts->fw_id, rule->fw_id);
drivers/net/ethernet/sfc/tc_encap_actions.c
498
rule->fw_id, rc);
drivers/net/ethernet/sfc/tc_encap_actions.c
501
rule->fw_id);
drivers/net/ethernet/sfc/tc_encap_actions.c
586
bool efx_tc_check_ready(struct efx_nic *efx, struct efx_tc_flow_rule *rule)
drivers/net/ethernet/sfc/tc_encap_actions.c
593
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
455
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
456
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
463
flow_rule_match_basic(rule, &match);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
504
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
505
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
515
flow_rule_match_ipv4_addrs(rule, &match);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
539
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
540
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
562
flow_rule_match_ports(rule, &match);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
615
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
624
ret = tc_parse_flow_actions(priv, &rule->action, entry,
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
692
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
693
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
716
flow_rule_match_vlan(rule, &match);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
763
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
764
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
783
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
1404
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/ti/cpsw_priv.c
1405
struct flow_dissector *dissector = rule->match.dissector;
drivers/net/ethernet/ti/cpsw_priv.c
1420
if (flow_rule_match_has_control_flags(rule, extack))
drivers/net/ethernet/ti/cpsw_priv.c
1423
if (!flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
drivers/net/ethernet/ti/cpsw_priv.c
1428
flow_rule_match_eth_addrs(rule, &match);
drivers/net/ethernet/ti/cpsw_priv.c
1498
struct flow_rule *rule = flow_cls_offload_flow_rule(cls);
drivers/net/ethernet/ti/cpsw_priv.c
1503
flow_action_for_each(i, act, &rule->action) {
drivers/net/ethernet/ti/cpsw_priv.c
1506
ret = cpsw_qos_clsflower_policer_validate(&rule->action, act, extack);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
100
struct txgbe_fdir_filter *rule = NULL;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
106
hlist_for_each_entry_safe(rule, node, &txgbe->fdir_filter_list,
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
108
if (fsp->location <= rule->sw_idx)
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
112
if (!rule || fsp->location != rule->sw_idx)
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
116
switch (rule->filter.formatted.flow_type) {
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
136
fsp->h_u.tcp_ip4_spec.psrc = rule->filter.formatted.src_port;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
138
fsp->h_u.tcp_ip4_spec.pdst = rule->filter.formatted.dst_port;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
140
fsp->h_u.tcp_ip4_spec.ip4src = rule->filter.formatted.src_ip[0];
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
142
fsp->h_u.tcp_ip4_spec.ip4dst = rule->filter.formatted.dst_ip[0];
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
144
fsp->h_ext.vlan_etype = rule->filter.formatted.flex_bytes;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
146
fsp->h_ext.data[1] = htonl(rule->filter.formatted.vm_pool);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
151
if (rule->action == TXGBE_RDB_FDIR_DROP_QUEUE)
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
154
fsp->ring_cookie = rule->action;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
163
struct txgbe_fdir_filter *rule;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
170
hlist_for_each_entry_safe(rule, node, &txgbe->fdir_filter_list,
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
174
rule_locs[cnt] = rule->sw_idx;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
259
struct txgbe_fdir_filter *rule = NULL;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
262
hlist_for_each_entry_safe(rule, node2, &txgbe->fdir_filter_list,
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
264
if (rule->filter.formatted.bkt_hash ==
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
266
rule->action == input->action) {
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
279
struct txgbe_fdir_filter *rule;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
284
hlist_for_each_entry_safe(rule, node, &txgbe->fdir_filter_list,
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
287
if (rule->sw_idx >= sw_idx)
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
293
if (rule && rule->sw_idx == sw_idx) {
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
299
(!input || rule->filter.formatted.bkt_hash !=
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
302
&rule->filter,
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
308
hlist_del(&rule->fdir_node);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
309
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
5902
static u8 ath12k_wmi_ignore_num_extra_rules(struct ath12k_wmi_reg_rule_ext_params *rule,
drivers/net/wireless/ath/ath12k/wmi.c
5909
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
1725
struct ieee80211_reg_rule *rule;
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1810
rule = &regd->reg_rules[valid_rules - 1];
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1813
rule->freq_range.start_freq_khz =
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1816
rule->freq_range.end_freq_khz = MHZ_TO_KHZ(center_freq + 10);
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1819
rule->power_rule.max_antenna_gain = DBI_TO_MBI(6);
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1820
rule->power_rule.max_eirp =
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1823
rule->flags = reg_rule_flags;
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1826
rule->flags |= NL80211_RRF_AUTO_BW;
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1827
rule->freq_range.max_bandwidth_khz = 0;
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1839
reg_query_regdb_wmm(regd->alpha2, center_freq, rule);
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1845
rule = &regd->reg_rules[valid_rules - 1];
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1846
rule->freq_range.start_freq_khz = MHZ_TO_KHZ(2412);
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1847
rule->freq_range.end_freq_khz = MHZ_TO_KHZ(2413);
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1848
rule->freq_range.max_bandwidth_khz = MHZ_TO_KHZ(1);
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1849
rule->power_rule.max_antenna_gain = DBI_TO_MBI(6);
drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
1850
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
3771
&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
1728
struct coalesce_receive_filt_rule *rule;
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1735
rule = (void *)coalesce_cfg->rule_data;
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1738
rule->header.type = cpu_to_le16(TLV_TYPE_COALESCE_RULE);
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1739
rule->max_coalescing_delay =
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1740
cpu_to_le16(cfg->rule[cnt].max_coalescing_delay);
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1741
rule->pkt_type = cfg->rule[cnt].pkt_type;
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1742
rule->num_of_fields = cfg->rule[cnt].num_of_fields;
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1746
param = rule->params;
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1747
for (idx = 0; idx < cfg->rule[cnt].num_of_fields; idx++) {
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1748
param->operation = cfg->rule[cnt].params[idx].operation;
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1750
cfg->rule[cnt].params[idx].operand_len;
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1752
cpu_to_le16(cfg->rule[cnt].params[idx].offset);
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1754
cfg->rule[cnt].params[idx].operand_byte_stream,
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1766
rule->header.len = cpu_to_le16(length + sizeof(u16) +
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1771
le16_to_cpu(rule->header.len) +
drivers/net/wireless/marvell/mwifiex/sta_cmd.c
1774
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
1350
struct mt7921_clc_rule *rule = (struct mt7921_clc_rule *)pos;
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
1351
u16 len = le16_to_cpu(rule->len);
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
1352
u16 offset = len + sizeof(*rule);
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
1359
if (rule->alpha2[0] != alpha2[0] ||
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
1360
rule->alpha2[1] != alpha2[1])
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
1363
memcpy(req.alpha2, rule->alpha2, 2);
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
1364
memcpy(req.type, rule->type, 2);
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
1372
skb_put_data(skb, rule->data, len);
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3494
struct mt7925_clc_rule *rule = (struct mt7925_clc_rule *)pos;
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3496
pos += sizeof(*rule);
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3497
if (rule->alpha2[0] != alpha2[0] ||
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3498
rule->alpha2[1] != alpha2[1])
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3502
+ rule->seg_idx - 1;
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3504
memcpy(req.alpha2, rule->alpha2, 2);
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3505
memcpy(req.type, rule->type, 2);
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
3509
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
5260
const void *rule, *rule_end;
drivers/net/wireless/realtek/rtw89/debug.c
5282
rule = &elm->u.diag_mac.rules_and_msgs[0];
drivers/net/wireless/realtek/rtw89/debug.c
5286
for (limit = 0; limit < 5000 && rule < rule_end; limit++) {
drivers/net/wireless/realtek/rtw89/debug.c
5287
const struct __diag_mac_rule_header *rh = rule;
drivers/net/wireless/realtek/rtw89/debug.c
5315
p += rtw89_mac_diag_do_equalv(rtwdev, p, end - p, rule,
drivers/net/wireless/realtek/rtw89/debug.c
5319
p += rtw89_mac_diag_do_increment(rtwdev, p, end - p, rule,
drivers/net/wireless/realtek/rtw89/debug.c
5329
rule += rh->len * 4;
drivers/net/wireless/ti/wl12xx/main.c
211
.rule = CONF_BCN_RULE_PASS_ON_APPEARANCE,
drivers/net/wireless/ti/wl12xx/main.c
215
.rule = CONF_BCN_RULE_PASS_ON_CHANGE,
drivers/net/wireless/ti/wl12xx/main.c
219
.rule = CONF_BCN_RULE_PASS_ON_CHANGE,
drivers/net/wireless/ti/wl18xx/main.c
352
.rule = CONF_BCN_RULE_PASS_ON_APPEARANCE,
drivers/net/wireless/ti/wl18xx/main.c
356
.rule = CONF_BCN_RULE_PASS_ON_CHANGE,
drivers/net/wireless/ti/wl18xx/main.c
360
.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
1268
char rule[8];
drivers/s390/crypto/zcrypt_msgtype6.c
1295
memcpy(msg->rule, "RANDOM ", 8);
drivers/s390/crypto/zcrypt_msgtype6.c
1344
char rule[8];
fs/ceph/locks.c
119
req->r_args.filelock_change.rule = lock_type;
fs/ceph/locks.c
166
if (req->r_args.filelock_change.rule == CEPH_LOCK_FCNTL)
fs/ceph/locks.c
168
else if (req->r_args.filelock_change.rule == CEPH_LOCK_FLOCK)
fs/ceph/locks.c
213
intr_req->r_args.filelock_change.rule = lock_type;
fs/ntfs3/fslog.c
2701
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
1361
struct flow_rule *rule;
include/linux/ethtool.h
1372
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
8179
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 bool fib_rule_get_safe(struct fib_rule *rule)
include/net/fib_rules.h
116
return refcount_inc_not_zero(&rule->refcnt);
include/net/fib_rules.h
119
static inline void fib_rule_put(struct fib_rule *rule)
include/net/fib_rules.h
121
if (refcount_dec_and_test(&rule->refcnt))
include/net/fib_rules.h
122
kfree_rcu(rule, rcu);
include/net/fib_rules.h
126
static inline u32 fib_rule_get_table(struct fib_rule *rule,
include/net/fib_rules.h
129
return rule->l3mdev ? arg->table : rule->table;
include/net/fib_rules.h
132
static inline u32 fib_rule_get_table(struct fib_rule *rule,
include/net/fib_rules.h
135
return rule->table;
include/net/fib_rules.h
188
static inline bool fib_rule_requires_fldissect(struct fib_rule *rule)
include/net/fib_rules.h
190
return rule->iifindex != LOOPBACK_IFINDEX && (rule->ip_proto ||
include/net/fib_rules.h
191
fib_rule_port_range_set(&rule->sport_range) ||
include/net/fib_rules.h
192
fib_rule_port_range_set(&rule->dport_range));
include/net/fib_rules.h
202
bool fib_rule_matchall(const struct fib_rule *rule);
include/net/fib_rules.h
212
INDIRECT_CALLABLE_DECLARE(int fib6_rule_match(struct fib_rule *rule,
include/net/fib_rules.h
214
INDIRECT_CALLABLE_DECLARE(int fib4_rule_match(struct fib_rule *rule,
include/net/fib_rules.h
217
INDIRECT_CALLABLE_DECLARE(int fib6_rule_action(struct fib_rule *rule,
include/net/fib_rules.h
220
INDIRECT_CALLABLE_DECLARE(int fib4_rule_action(struct fib_rule *rule,
include/net/fib_rules.h
224
INDIRECT_CALLABLE_DECLARE(bool fib6_rule_suppress(struct fib_rule *rule,
include/net/fib_rules.h
227
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
683
bool fib6_rule_default(const struct fib_rule *rule);
include/net/ip6_fib.h
721
static inline bool fib6_rule_default(const struct fib_rule *rule)
include/net/ip_fib.h
340
static inline bool fib4_rule_default(const struct fib_rule *rule)
include/net/ip_fib.h
411
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
1007
static inline struct nft_expr *nft_expr_first(const struct nft_rule *rule)
include/net/netfilter/nf_tables.h
1009
return (struct nft_expr *)&rule->data[0];
include/net/netfilter/nf_tables.h
1017
static inline struct nft_expr *nft_expr_last(const struct nft_rule *rule)
include/net/netfilter/nf_tables.h
1019
return (struct nft_expr *)&rule->data[rule->dlen];
include/net/netfilter/nf_tables.h
1022
static inline bool nft_expr_more(const struct nft_rule *rule,
include/net/netfilter/nf_tables.h
1025
return expr != nft_expr_last(rule) && expr->ops;
include/net/netfilter/nf_tables.h
1028
static inline struct nft_userdata *nft_userdata(const struct nft_rule *rule)
include/net/netfilter/nf_tables.h
1030
return (void *)&rule->data[rule->dlen];
include/net/netfilter/nf_tables.h
1033
void nft_rule_expr_activate(const struct nft_ctx *ctx, struct nft_rule *rule);
include/net/netfilter/nf_tables.h
1034
void nft_rule_expr_deactivate(const struct nft_ctx *ctx, struct nft_rule *rule,
include/net/netfilter/nf_tables.h
1036
void nf_tables_rule_destroy(const struct nft_ctx *ctx, struct nft_rule *rule);
include/net/netfilter/nf_tables.h
1061
#define nft_rule_for_each_expr(expr, last, rule) \
include/net/netfilter/nf_tables.h
1062
for ((expr) = nft_expr_first(rule), (last) = nft_expr_last(rule); \
include/net/netfilter/nf_tables.h
1083
static inline const struct nft_rule_dp *nft_rule_next(const struct nft_rule_dp *rule)
include/net/netfilter/nf_tables.h
1085
return (void *)rule + sizeof(*rule) + rule->dlen;
include/net/netfilter/nf_tables.h
1533
const struct nft_rule_dp *rule,
include/net/netfilter/nf_tables.h
1701
struct nft_rule *rule;
include/net/netfilter/nf_tables.h
1711
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
if (unlikely(ctx->num_actions >= flow->rule->action.num_entries))
include/net/netfilter/nf_tables_offload.h
77
return &flow->rule->action.entries[ctx->num_actions++];
include/net/netfilter/nf_tables_offload.h
84
struct nft_flow_rule *nft_flow_rule_create(struct net *net, const struct nft_rule *rule);
include/net/netfilter/nf_tables_offload.h
85
int nft_flow_rule_stats(const struct nft_chain *chain, const struct nft_rule *rule);
include/net/pkt_cls.h
806
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
304
extern int audit_make_tree(struct audit_krule *rule, char *pathname, u32 op);
kernel/audit.h
305
extern int audit_add_tree_rule(struct audit_krule *rule);
kernel/audit.h
306
extern int audit_remove_tree_rule(struct audit_krule *rule);
kernel/audit.h
335
#define audit_remove_tree_rule(rule) BUG()
kernel/audit.h
336
#define audit_add_tree_rule(rule) -EINVAL
kernel/audit.h
337
#define audit_make_tree(rule, str, op) -EINVAL
kernel/audit.h
341
#define audit_tree_path(rule) "" /* never called */
kernel/audit.h
53
struct audit_krule rule;
kernel/audit_fsnotify.c
108
audit_mark->rule = krule;
kernel/audit_fsnotify.c
129
struct audit_krule *rule = audit_mark->rule;
kernel/audit_fsnotify.c
139
audit_log_key(ab, rule->filterkey);
kernel/audit_fsnotify.c
140
audit_log_format(ab, " list=%d res=1", rule->listnr);
kernel/audit_fsnotify.c
159
struct audit_krule *rule = audit_mark->rule;
kernel/audit_fsnotify.c
160
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
280
oentry = container_of(r, struct audit_entry, rule);
kernel/audit_watch.c
281
list_del(&oentry->rule.rlist);
kernel/audit_watch.c
284
nentry = audit_dupe_rule(&oentry->rule, ctx);
kernel/audit_watch.c
286
list_del(&oentry->rule.list);
kernel/audit_watch.c
296
audit_put_watch(nentry->rule.watch);
kernel/audit_watch.c
298
nentry->rule.watch = nwatch;
kernel/audit_watch.c
299
list_add(&nentry->rule.rlist, &nwatch->rules);
kernel/audit_watch.c
301
list_replace(&oentry->rule.list,
kernel/audit_watch.c
302
&nentry->rule.list);
kernel/audit_watch.c
304
if (oentry->rule.exe)
kernel/audit_watch.c
305
audit_remove_mark(oentry->rule.exe);
kernel/audit_watch.c
332
e = container_of(r, struct audit_entry, rule);
kernel/audit_watch.c
334
if (e->rule.exe)
kernel/audit_watch.c
335
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
330
if (entry->rule.listnr != AUDIT_FILTER_EXCLUDE &&
kernel/auditfilter.c
331
entry->rule.listnr != AUDIT_FILTER_USER)
kernel/auditfilter.c
335
if (entry->rule.listnr != AUDIT_FILTER_FS)
kernel/auditfilter.c
339
if (entry->rule.listnr == AUDIT_FILTER_URING_EXIT)
kernel/auditfilter.c
344
switch (entry->rule.listnr) {
kernel/auditfilter.c
465
struct audit_field *f = &entry->rule.fields[i];
kernel/auditfilter.c
481
entry->rule.pflags |= AUDIT_LOGINUID_LEGACY;
kernel/auditfilter.c
511
entry->rule.arch_f = f;
kernel/auditfilter.c
528
entry->rule.buflen += f_val;
kernel/auditfilter.c
548
err = audit_to_watch(&entry->rule, str, f_val, f->op);
kernel/auditfilter.c
553
entry->rule.buflen += f_val;
kernel/auditfilter.c
561
err = audit_make_tree(&entry->rule, str, f->op);
kernel/auditfilter.c
565
entry->rule.buflen += f_val;
kernel/auditfilter.c
569
err = audit_to_inode(&entry->rule, f);
kernel/auditfilter.c
574
if (entry->rule.filterkey || f_val > AUDIT_MAX_KEY_LEN)
kernel/auditfilter.c
581
entry->rule.buflen += f_val;
kernel/auditfilter.c
582
entry->rule.filterkey = str;
kernel/auditfilter.c
585
if (entry->rule.exe || f_val > PATH_MAX)
kernel/auditfilter.c
592
audit_mark = audit_alloc_mark(&entry->rule, str, f_val, NULL);
kernel/auditfilter.c
598
entry->rule.buflen += f_val;
kernel/auditfilter.c
599
entry->rule.exe = audit_mark;
kernel/auditfilter.c
607
if (entry->rule.inode_f && entry->rule.inode_f->op == Audit_not_equal)
kernel/auditfilter.c
608
entry->rule.inode_f = NULL;
kernel/auditfilter.c
614
if (entry->rule.tree)
kernel/auditfilter.c
615
audit_put_tree(entry->rule.tree); /* that's the temporary one */
kernel/auditfilter.c
616
if (entry->rule.exe)
kernel/auditfilter.c
617
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
135
void crush_destroy_rule(struct crush_rule *rule)
net/ceph/crush/crush.c
137
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
1009
struct fib_rule *rule = NULL, *nlrule = NULL;
net/core/fib_rules.c
1047
rule = rule_find(ops, frh, tb, nlrule, user_priority);
net/core/fib_rules.c
1048
if (!rule) {
net/core/fib_rules.c
1053
if (rule->flags & FIB_RULE_PERMANENT) {
net/core/fib_rules.c
1059
err = ops->delete(rule);
net/core/fib_rules.c
1064
if (rule->tun_id)
net/core/fib_rules.c
1067
list_del_rcu(&rule->list);
net/core/fib_rules.c
1069
if (rule->action == FR_ACT_GOTO) {
net/core/fib_rules.c
1071
if (rtnl_dereference(rule->ctarget) == NULL)
net/core/fib_rules.c
1085
n = list_next_entry(rule, list);
net/core/fib_rules.c
1086
if (&n->list == &ops->rules_list || n->pref != rule->pref)
net/core/fib_rules.c
1089
if (rtnl_dereference(r->ctarget) != rule)
net/core/fib_rules.c
1097
call_fib_rule_notifiers(net, FIB_EVENT_RULE_DEL, rule, ops, NULL);
net/core/fib_rules.c
1102
notify_rule_change(RTM_DELRULE, rule, ops, nlh, NETLINK_CB(skb).portid);
net/core/fib_rules.c
1103
fib_rule_put(rule);
net/core/fib_rules.c
1126
struct fib_rule *rule)
net/core/fib_rules.c
1147
payload += ops->nlmsg_payload(rule);
net/core/fib_rules.c
1152
static int fib_nl_fill_rule(struct sk_buff *skb, struct fib_rule *rule,
net/core/fib_rules.c
1165
frh->table = rule->table < 256 ? rule->table : RT_TABLE_COMPAT;
net/core/fib_rules.c
1166
if (nla_put_u32(skb, FRA_TABLE, rule->table))
net/core/fib_rules.c
1168
if (nla_put_u32(skb, FRA_SUPPRESS_PREFIXLEN, rule->suppress_prefixlen))
net/core/fib_rules.c
1172
frh->action = rule->action;
net/core/fib_rules.c
1173
frh->flags = rule->flags;
net/core/fib_rules.c
1175
if (nla_put_u8(skb, FRA_PROTOCOL, rule->proto))
net/core/fib_rules.c
1178
if (rule->action == FR_ACT_GOTO &&
net/core/fib_rules.c
1179
rcu_access_pointer(rule->ctarget) == NULL)
net/core/fib_rules.c
1182
if (rule->iifname[0]) {
net/core/fib_rules.c
1183
if (nla_put_string(skb, FRA_IIFNAME, rule->iifname))
net/core/fib_rules.c
1185
if (READ_ONCE(rule->iifindex) == -1)
net/core/fib_rules.c
1189
if (rule->oifname[0]) {
net/core/fib_rules.c
1190
if (nla_put_string(skb, FRA_OIFNAME, rule->oifname))
net/core/fib_rules.c
1192
if (READ_ONCE(rule->oifindex) == -1)
net/core/fib_rules.c
1196
if ((rule->pref &&
net/core/fib_rules.c
1197
nla_put_u32(skb, FRA_PRIORITY, rule->pref)) ||
net/core/fib_rules.c
1198
(rule->mark &&
net/core/fib_rules.c
1199
nla_put_u32(skb, FRA_FWMARK, rule->mark)) ||
net/core/fib_rules.c
1200
((rule->mark_mask || rule->mark) &&
net/core/fib_rules.c
1201
nla_put_u32(skb, FRA_FWMASK, rule->mark_mask)) ||
net/core/fib_rules.c
1202
(rule->target &&
net/core/fib_rules.c
1203
nla_put_u32(skb, FRA_GOTO, rule->target)) ||
net/core/fib_rules.c
1204
(rule->tun_id &&
net/core/fib_rules.c
1205
nla_put_be64(skb, FRA_TUN_ID, rule->tun_id, FRA_PAD)) ||
net/core/fib_rules.c
1206
(rule->l3mdev &&
net/core/fib_rules.c
1207
nla_put_u8(skb, FRA_L3MDEV, rule->l3mdev)) ||
net/core/fib_rules.c
1208
(uid_range_set(&rule->uid_range) &&
net/core/fib_rules.c
1209
nla_put_uid_range(skb, &rule->uid_range)) ||
net/core/fib_rules.c
1210
(fib_rule_port_range_set(&rule->sport_range) &&
net/core/fib_rules.c
1211
nla_put_port_range(skb, FRA_SPORT_RANGE, &rule->sport_range)) ||
net/core/fib_rules.c
1212
(rule->sport_mask && nla_put_u16(skb, FRA_SPORT_MASK,
net/core/fib_rules.c
1213
rule->sport_mask)) ||
net/core/fib_rules.c
1214
(fib_rule_port_range_set(&rule->dport_range) &&
net/core/fib_rules.c
1215
nla_put_port_range(skb, FRA_DPORT_RANGE, &rule->dport_range)) ||
net/core/fib_rules.c
1216
(rule->dport_mask && nla_put_u16(skb, FRA_DPORT_MASK,
net/core/fib_rules.c
1217
rule->dport_mask)) ||
net/core/fib_rules.c
1218
(rule->ip_proto && nla_put_u8(skb, FRA_IP_PROTO, rule->ip_proto)))
net/core/fib_rules.c
1221
if (rule->suppress_ifgroup != -1) {
net/core/fib_rules.c
1222
if (nla_put_u32(skb, FRA_SUPPRESS_IFGROUP, rule->suppress_ifgroup))
net/core/fib_rules.c
1226
if (ops->fill(rule, skb, frh) < 0)
net/core/fib_rules.c
1241
struct fib_rule *rule;
net/core/fib_rules.c
1245
list_for_each_entry_rcu(rule, &ops->rules_list, list) {
net/core/fib_rules.c
1249
err = fib_nl_fill_rule(skb, rule, NETLINK_CB(cb->skb).portid,
net/core/fib_rules.c
1334
static void notify_rule_change(int event, struct fib_rule *rule,
net/core/fib_rules.c
1343
skb = nlmsg_new(fib_rule_nlmsg_size(ops, rule), GFP_KERNEL);
net/core/fib_rules.c
1347
err = fib_nl_fill_rule(skb, rule, pid, nlh->nlmsg_seq, event, 0, ops);
net/core/fib_rules.c
1363
struct fib_rule *rule;
net/core/fib_rules.c
1365
list_for_each_entry(rule, rules, list) {
net/core/fib_rules.c
1366
if (rule->iifindex == -1 &&
net/core/fib_rules.c
1367
strcmp(dev->name, rule->iifname) == 0) {
net/core/fib_rules.c
1368
WRITE_ONCE(rule->iifindex, dev->ifindex);
net/core/fib_rules.c
1369
WRITE_ONCE(rule->iif_is_l3_master,
net/core/fib_rules.c
1372
if (rule->oifindex == -1 &&
net/core/fib_rules.c
1373
strcmp(dev->name, rule->oifname) == 0) {
net/core/fib_rules.c
1374
WRITE_ONCE(rule->oifindex, dev->ifindex);
net/core/fib_rules.c
1375
WRITE_ONCE(rule->oif_is_l3_master,
net/core/fib_rules.c
1383
struct fib_rule *rule;
net/core/fib_rules.c
1385
list_for_each_entry(rule, rules, list) {
net/core/fib_rules.c
1386
if (rule->iifindex == dev->ifindex) {
net/core/fib_rules.c
1387
WRITE_ONCE(rule->iifindex, -1);
net/core/fib_rules.c
1388
WRITE_ONCE(rule->iif_is_l3_master, false);
net/core/fib_rules.c
1390
if (rule->oifindex == dev->ifindex) {
net/core/fib_rules.c
1391
WRITE_ONCE(rule->oifindex, -1);
net/core/fib_rules.c
1392
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(fib_rule_get_safe(rule))) {
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
413
if (!fib_rule_get_safe(rule))
net/core/fib_rules.c
417
rule, family, extack);
net/core/fib_rules.c
418
fib_rule_put(rule);
net/core/fib_rules.c
43
if (rule->suppress_ifgroup != -1 || rule->suppress_prefixlen != -1)
net/core/fib_rules.c
447
struct fib_rule *rule,
net/core/fib_rules.c
45
if (!uid_eq(rule->uid_range.start, fib_kuid_range_unset.start) ||
net/core/fib_rules.c
453
if (rule->action && r->action != rule->action)
net/core/fib_rules.c
456
if (rule->table && r->table != rule->table)
net/core/fib_rules.c
459
if (user_priority && r->pref != rule->pref)
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->iifname[0] &&
net/core/fib_rules.c
463
memcmp(r->iifname, rule->iifname, IFNAMSIZ))
net/core/fib_rules.c
466
if (rule->oifname[0] &&
net/core/fib_rules.c
467
memcmp(r->oifname, rule->oifname, IFNAMSIZ))
net/core/fib_rules.c
470
if (rule->mark && r->mark != rule->mark)
net/core/fib_rules.c
473
if (rule->suppress_ifgroup != -1 &&
net/core/fib_rules.c
474
r->suppress_ifgroup != rule->suppress_ifgroup)
net/core/fib_rules.c
477
if (rule->suppress_prefixlen != -1 &&
net/core/fib_rules.c
478
r->suppress_prefixlen != rule->suppress_prefixlen)
net/core/fib_rules.c
48
if (fib_rule_port_range_set(&rule->sport_range))
net/core/fib_rules.c
481
if (rule->mark_mask && r->mark_mask != rule->mark_mask)
net/core/fib_rules.c
484
if (rule->tun_id && r->tun_id != rule->tun_id)
net/core/fib_rules.c
487
if (rule->l3mdev && r->l3mdev != rule->l3mdev)
net/core/fib_rules.c
490
if (uid_range_set(&rule->uid_range) &&
net/core/fib_rules.c
491
(!uid_eq(r->uid_range.start, rule->uid_range.start) ||
net/core/fib_rules.c
492
!uid_eq(r->uid_range.end, rule->uid_range.end)))
net/core/fib_rules.c
495
if (rule->ip_proto && r->ip_proto != rule->ip_proto)
net/core/fib_rules.c
498
if (rule->proto && r->proto != rule->proto)
net/core/fib_rules.c
50
if (fib_rule_port_range_set(&rule->dport_range))
net/core/fib_rules.c
501
if (fib_rule_port_range_set(&rule->sport_range) &&
net/core/fib_rules.c
503
&rule->sport_range))
net/core/fib_rules.c
506
if (rule->sport_mask && r->sport_mask != rule->sport_mask)
net/core/fib_rules.c
509
if (fib_rule_port_range_set(&rule->dport_range) &&
net/core/fib_rules.c
511
&rule->dport_range))
net/core/fib_rules.c
514
if (rule->dport_mask && r->dport_mask != rule->dport_mask)
net/core/fib_rules.c
577
struct fib_rule **rule,
net/core/fib_rules.c
733
*rule = nlrule;
net/core/fib_rules.c
781
struct nlattr **tb, struct fib_rule *rule)
net/core/fib_rules.c
786
if (r->action != rule->action)
net/core/fib_rules.c
789
if (r->table != rule->table)
net/core/fib_rules.c
792
if (r->pref != rule->pref)
net/core/fib_rules.c
795
if (memcmp(r->iifname, rule->iifname, IFNAMSIZ))
net/core/fib_rules.c
798
if (memcmp(r->oifname, rule->oifname, IFNAMSIZ))
net/core/fib_rules.c
801
if (r->mark != rule->mark)
net/core/fib_rules.c
804
if (r->suppress_ifgroup != rule->suppress_ifgroup)
net/core/fib_rules.c
807
if (r->suppress_prefixlen != rule->suppress_prefixlen)
net/core/fib_rules.c
810
if (r->mark_mask != rule->mark_mask)
net/core/fib_rules.c
813
if (r->tun_id != rule->tun_id)
net/core/fib_rules.c
816
if (r->l3mdev != rule->l3mdev)
net/core/fib_rules.c
819
if (!uid_eq(r->uid_range.start, rule->uid_range.start) ||
net/core/fib_rules.c
820
!uid_eq(r->uid_range.end, rule->uid_range.end))
net/core/fib_rules.c
823
if (r->ip_proto != rule->ip_proto)
net/core/fib_rules.c
826
if (r->proto != rule->proto)
net/core/fib_rules.c
830
&rule->sport_range))
net/core/fib_rules.c
833
if (r->sport_mask != rule->sport_mask)
net/core/fib_rules.c
837
&rule->dport_range))
net/core/fib_rules.c
840
if (r->dport_mask != rule->dport_mask)
net/core/fib_rules.c
86
struct fib_rule *rule;
net/core/fib_rules.c
880
struct fib_rule *rule = NULL, *r, *last = NULL;
net/core/fib_rules.c
907
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
914
err = fib_nl2rule_rtnl(rule, ops, tb, extack);
net/core/fib_rules.c
919
rule_exists(ops, frh, tb, rule)) {
net/core/fib_rules.c
92
if (rule->pref)
net/core/fib_rules.c
924
err = ops->configure(rule, skb, frh, tb, extack);
net/core/fib_rules.c
928
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
934
if (r->pref == rule->target) {
net/core/fib_rules.c
935
RCU_INIT_POINTER(rule->ctarget, r);
net/core/fib_rules.c
940
if (rcu_dereference_protected(rule->ctarget, 1) == NULL)
net/core/fib_rules.c
944
if (r->pref > rule->pref)
net/core/fib_rules.c
950
list_add_rcu(&rule->list, &last->list);
net/core/fib_rules.c
952
list_add_rcu(&rule->list, &ops->rules_list);
net/core/fib_rules.c
961
r->target == rule->pref &&
net/core/fib_rules.c
963
rcu_assign_pointer(r->ctarget, rule);
net/core/fib_rules.c
970
if (rule->action == FR_ACT_GOTO)
net/core/fib_rules.c
976
if (rule->tun_id)
net/core/fib_rules.c
979
fib_rule_get(rule);
net/core/fib_rules.c
984
notify_rule_change(RTM_NEWRULE, rule, ops, nlh, NETLINK_CB(skb).portid);
net/core/fib_rules.c
985
fib_rule_put(rule);
net/core/fib_rules.c
993
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
1393
if (!flow_action_basic_hw_stats_check(&cls->rule->action, extack))
net/dsa/user.c
1396
act = &cls->rule->action.entries[0];
net/dsa/user.c
1479
if (!flow_action_basic_hw_stats_check(&cls->rule->action, extack))
net/dsa/user.c
1490
act = &cls->rule->action.entries[0];
net/dsa/user.c
1516
const struct flow_action *action = &cls->rule->action;
net/ethtool/ioctl.c
3730
flow->rule = flow_rule_alloc(1);
net/ethtool/ioctl.c
3731
if (!flow->rule) {
net/ethtool/ioctl.c
3737
flow->rule->match.dissector = &match->dissector;
net/ethtool/ioctl.c
3738
flow->rule->match.mask = &match->mask;
net/ethtool/ioctl.c
3739
flow->rule->match.key = &match->key;
net/ethtool/ioctl.c
3940
act = &flow->rule->action.entries[0];
net/ethtool/ioctl.c
3964
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
357
if (((struct fib4_rule *)rule)->tclassid)
net/ipv4/fib_rules.c
362
fib_rule_requires_fldissect(rule))
net/ipv4/fib_rules.c
368
static int fib4_rule_compare(struct fib_rule *rule, struct fib_rule_hdr *frh,
net/ipv4/fib_rules.c
371
struct fib4_rule *rule4 = (struct fib4_rule *) rule;
net/ipv4/fib_rules.c
414
static int fib4_rule_fill(struct fib_rule *rule, struct sk_buff *skb,
net/ipv4/fib_rules.c
417
struct fib4_rule *rule4 = (struct fib4_rule *) rule;
net/ipv4/fib_rules.c
449
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
175
static int ipmr_rule_action(struct fib_rule *rule, struct flowi *flp,
net/ipv4/ipmr.c
181
switch (rule->action) {
net/ipv4/ipmr.c
193
arg->table = fib_rule_get_table(rule, arg);
net/ipv4/ipmr.c
195
mrt = __ipmr_get_table(rule->fr_net, arg->table);
net/ipv4/ipmr.c
202
static int ipmr_rule_match(struct fib_rule *rule, struct flowi *fl, int flags)
net/ipv4/ipmr.c
207
static int ipmr_rule_configure(struct fib_rule *rule, struct sk_buff *skb,
net/ipv4/ipmr.c
214
static int ipmr_rule_compare(struct fib_rule *rule, struct fib_rule_hdr *frh,
net/ipv4/ipmr.c
220
static int ipmr_rule_fill(struct fib_rule *rule, struct sk_buff *skb,
net/ipv4/ipmr.c
302
bool ipmr_rule_default(const struct fib_rule *rule)
net/ipv4/ipmr.c
304
return fib_rule_matchall(rule) && rule->table == RT_TABLE_DEFAULT;
net/ipv4/ipmr.c
371
bool ipmr_rule_default(const struct fib_rule *rule)
net/ipv6/addrconf.c
1536
int rule;
net/ipv6/addrconf.c
1601
if (i <= score->rule) {
net/ipv6/addrconf.c
1723
score->rule = i;
net/ipv6/addrconf.c
1762
score->rule = -1;
net/ipv6/addrconf.c
1842
scores[hiscore_idx].rule = -1;
net/ipv6/fib6_rules.c
140
static int fib6_rule_saddr(struct net *net, struct fib_rule *rule, int flags,
net/ipv6/fib6_rules.c
143
struct fib6_rule *r = (struct fib6_rule *)rule;
net/ipv6/fib6_rules.c
148
if ((rule->flags & FIB_RULE_FIND_SADDR) &&
net/ipv6/fib6_rules.c
165
static int fib6_rule_action_alt(struct fib_rule *rule, struct flowi *flp,
net/ipv6/fib6_rules.c
170
struct net *net = rule->fr_net;
net/ipv6/fib6_rules.c
175
switch (rule->action) {
net/ipv6/fib6_rules.c
187
tb_id = fib_rule_get_table(rule, arg);
net/ipv6/fib6_rules.c
195
err = fib6_rule_saddr(net, rule, flags, flp6,
net/ipv6/fib6_rules.c
203
static int __fib6_rule_action(struct fib_rule *rule, struct flowi *flp,
net/ipv6/fib6_rules.c
210
struct net *net = rule->fr_net;
net/ipv6/fib6_rules.c
215
switch (rule->action) {
net/ipv6/fib6_rules.c
233
tb_id = fib_rule_get_table(rule, arg);
net/ipv6/fib6_rules.c
247
err = fib6_rule_saddr(net, rule, flags, flp6,
net/ipv6/fib6_rules.c
271
INDIRECT_CALLABLE_SCOPE int fib6_rule_action(struct fib_rule *rule,
net/ipv6/fib6_rules.c
276
return fib6_rule_action_alt(rule, flp, flags, arg);
net/ipv6/fib6_rules.c
278
return __fib6_rule_action(rule, flp, flags, arg);
net/ipv6/fib6_rules.c
281
INDIRECT_CALLABLE_SCOPE bool fib6_rule_suppress(struct fib_rule *rule,
net/ipv6/fib6_rules.c
298
if (rt->rt6i_dst.plen <= rule->suppress_prefixlen)
net/ipv6/fib6_rules.c
304
if (rule->suppress_ifgroup != -1 && dev && dev->group == rule->suppress_ifgroup)
net/ipv6/fib6_rules.c
314
INDIRECT_CALLABLE_SCOPE int fib6_rule_match(struct fib_rule *rule,
net/ipv6/fib6_rules.c
317
struct fib6_rule *r = (struct fib6_rule *) rule;
net/ipv6/fib6_rules.c
344
if (rule->ip_proto && (rule->ip_proto != fl6->flowi6_proto))
net/ipv6/fib6_rules.c
347
if (!fib_rule_port_match(&rule->sport_range, rule->sport_mask,
net/ipv6/fib6_rules.c
351
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
425
static int fib6_rule_configure(struct fib_rule *rule, struct sk_buff *skb,
net/ipv6/fib6_rules.c
430
struct fib6_rule *rule6 = (struct fib6_rule *)rule;
net/ipv6/fib6_rules.c
431
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
453
if (rule->action == FR_ACT_TO_TBL && !rule->l3mdev) {
net/ipv6/fib6_rules.c
454
if (rule->table == RT6_TABLE_UNSPEC) {
net/ipv6/fib6_rules.c
459
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
474
if (fib_rule_requires_fldissect(rule))
net/ipv6/fib6_rules.c
48
rule->l3mdev)
net/ipv6/fib6_rules.c
483
static int fib6_rule_delete(struct fib_rule *rule)
net/ipv6/fib6_rules.c
485
struct net *net = rule->fr_net;
net/ipv6/fib6_rules.c
488
fib_rule_requires_fldissect(rule))
net/ipv6/fib6_rules.c
494
static int fib6_rule_compare(struct fib_rule *rule, struct fib_rule_hdr *frh,
net/ipv6/fib6_rules.c
497
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
545
static int fib6_rule_fill(struct fib_rule *rule, struct sk_buff *skb,
net/ipv6/fib6_rules.c
548
struct fib6_rule *rule6 = (struct fib6_rule *) rule;
net/ipv6/fib6_rules.c
580
static size_t fib6_rule_nlmsg_payload(struct fib_rule *rule)
net/ipv6/ip6mr.c
162
static int ip6mr_rule_action(struct fib_rule *rule, struct flowi *flp,
net/ipv6/ip6mr.c
168
switch (rule->action) {
net/ipv6/ip6mr.c
180
arg->table = fib_rule_get_table(rule, arg);
net/ipv6/ip6mr.c
182
mrt = __ip6mr_get_table(rule->fr_net, arg->table);
net/ipv6/ip6mr.c
189
static int ip6mr_rule_match(struct fib_rule *rule, struct flowi *flp, int flags)
net/ipv6/ip6mr.c
194
static int ip6mr_rule_configure(struct fib_rule *rule, struct sk_buff *skb,
net/ipv6/ip6mr.c
201
static int ip6mr_rule_compare(struct fib_rule *rule, struct fib_rule_hdr *frh,
net/ipv6/ip6mr.c
207
static int ip6mr_rule_fill(struct fib_rule *rule, struct sk_buff *skb,
net/ipv6/ip6mr.c
289
bool ip6mr_rule_default(const struct fib_rule *rule)
net/ipv6/ip6mr.c
291
return fib_rule_matchall(rule) && rule->action == FR_ACT_TO_TBL &&
net/ipv6/ip6mr.c
292
rule->table == RT6_TABLE_DFLT && !rule->l3mdev;
net/netfilter/nf_flow_table_offload.c
224
if (unlikely(flow_rule->rule->action.num_entries >= NF_FLOW_RULE_ACTION_MAX))
net/netfilter/nf_flow_table_offload.c
227
i = flow_rule->rule->action.num_entries++;
net/netfilter/nf_flow_table_offload.c
229
return &flow_rule->rule->action.entries[i];
net/netfilter/nf_flow_table_offload.c
813
flow_rule->rule = flow_rule_alloc(NF_FLOW_RULE_ACTION_MAX);
net/netfilter/nf_flow_table_offload.c
814
if (!flow_rule->rule)
net/netfilter/nf_flow_table_offload.c
817
flow_rule->rule->match.dissector = &flow_rule->match.dissector;
net/netfilter/nf_flow_table_offload.c
818
flow_rule->rule->match.mask = &flow_rule->match.mask;
net/netfilter/nf_flow_table_offload.c
819
flow_rule->rule->match.key = &flow_rule->match.key;
net/netfilter/nf_flow_table_offload.c
830
flow_rule->rule->action.num_entries = 0;
net/netfilter/nf_flow_table_offload.c
837
kfree(flow_rule->rule);
net/netfilter/nf_flow_table_offload.c
849
for (i = 0; i < flow_rule->rule->action.num_entries; i++) {
net/netfilter/nf_flow_table_offload.c
850
entry = &flow_rule->rule->action.entries[i];
net/netfilter/nf_flow_table_offload.c
856
kfree(flow_rule->rule);
net/netfilter/nf_flow_table_offload.c
918
cls_flow.rule = flow_rule->rule;
net/netfilter/nf_tables_api.c
10289
struct nft_rule *rule;
net/netfilter/nf_tables_api.c
10296
list_for_each_entry(rule, &chain->rules, list) {
net/netfilter/nf_tables_api.c
10297
if (nft_is_active_next(net, rule)) {
net/netfilter/nf_tables_api.c
10298
data_size += sizeof(*prule) + rule->dlen;
net/netfilter/nf_tables_api.c
10312
list_for_each_entry(rule, &chain->rules, list) {
net/netfilter/nf_tables_api.c
10313
if (!nft_is_active_next(net, rule))
net/netfilter/nf_tables_api.c
10324
nft_rule_for_each_expr(expr, last, rule) {
net/netfilter/nf_tables_api.c
10338
prule->handle = rule->handle;
net/netfilter/nf_tables_api.c
12012
struct nft_rule *rule, *nr;
net/netfilter/nf_tables_api.c
12026
list_for_each_entry_safe(rule, nr, &chain->rules, list) {
net/netfilter/nf_tables_api.c
12027
list_del(&rule->list);
net/netfilter/nf_tables_api.c
12029
nf_tables_rule_release(&ctx, rule);
net/netfilter/nf_tables_api.c
3294
struct nft_rule *rule;
net/netfilter/nf_tables_api.c
3347
list_for_each_entry(rule, &chain->rules, list) {
net/netfilter/nf_tables_api.c
3348
if (!nft_is_active_next(net, rule))
net/netfilter/nf_tables_api.c
3352
err = nft_delrule(&ctx, rule);
net/netfilter/nf_tables_api.c
3725
struct nft_rule *rule;
net/netfilter/nf_tables_api.c
3728
list_for_each_entry_rcu(rule, &chain->rules, list,
net/netfilter/nf_tables_api.c
3730
if (handle == rule->handle)
net/netfilter/nf_tables_api.c
3731
return rule;
net/netfilter/nf_tables_api.c
3768
const struct nft_rule *rule, u64 handle,
net/netfilter/nf_tables_api.c
3785
if (nla_put_be64(skb, NFTA_RULE_HANDLE, cpu_to_be64(rule->handle),
net/netfilter/nf_tables_api.c
3796
nft_flow_rule_stats(chain, rule);
net/netfilter/nf_tables_api.c
3801
nft_rule_for_each_expr(expr, next, rule) {
net/netfilter/nf_tables_api.c
3807
if (rule->udata) {
net/netfilter/nf_tables_api.c
3808
struct nft_userdata *udata = nft_userdata(rule);
net/netfilter/nf_tables_api.c
3823
const struct nft_rule *rule, int event)
net/netfilter/nf_tables_api.c
3841
!list_is_first(&rule->list, &ctx->chain->rules) &&
net/netfilter/nf_tables_api.c
3842
!list_is_last(&rule->list, &ctx->chain->rules)) {
net/netfilter/nf_tables_api.c
3843
prule = list_prev_entry(rule, list);
net/netfilter/nf_tables_api.c
3853
ctx->chain, rule, handle, false);
net/netfilter/nf_tables_api.c
3892
const struct nft_rule *rule, *prule;
net/netfilter/nf_tables_api.c
3898
list_for_each_entry_rcu(rule, &chain->rules, list) {
net/netfilter/nf_tables_api.c
3899
if (!nft_is_active(net, rule))
net/netfilter/nf_tables_api.c
3913
table, chain, rule, handle, ctx->reset) < 0) {
net/netfilter/nf_tables_api.c
3920
prule = rule;
net/netfilter/nf_tables_api.c
4031
const struct nft_rule *rule;
net/netfilter/nf_tables_api.c
4049
rule = nft_rule_lookup(net, chain, nla[NFTA_RULE_HANDLE]);
net/netfilter/nf_tables_api.c
4050
if (IS_ERR(rule)) {
net/netfilter/nf_tables_api.c
4052
return ERR_CAST(rule);
net/netfilter/nf_tables_api.c
4061
family, table, chain, rule, 0, reset);
net/netfilter/nf_tables_api.c
4112
void nf_tables_rule_destroy(const struct nft_ctx *ctx, struct nft_rule *rule)
net/netfilter/nf_tables_api.c
4120
expr = nft_expr_first(rule);
net/netfilter/nf_tables_api.c
4121
while (nft_expr_more(rule, expr)) {
net/netfilter/nf_tables_api.c
4126
kfree(rule);
net/netfilter/nf_tables_api.c
4130
static void nf_tables_rule_release(const struct nft_ctx *ctx, struct nft_rule *rule)
net/netfilter/nf_tables_api.c
4134
nft_rule_expr_deactivate(ctx, rule, NFT_TRANS_RELEASE);
net/netfilter/nf_tables_api.c
4135
nf_tables_rule_destroy(ctx, rule);
net/netfilter/nf_tables_api.c
4173
struct nft_rule *rule;
net/netfilter/nf_tables_api.c
4189
list_for_each_entry(rule, &chain->rules, list) {
net/netfilter/nf_tables_api.c
4193
if (!nft_is_active_next(ctx->net, rule))
net/netfilter/nf_tables_api.c
4196
nft_rule_for_each_expr(expr, last, rule) {
net/netfilter/nf_tables_api.c
4312
struct nft_rule *rule, *old_rule = NULL;
net/netfilter/nf_tables_api.c
4360
rule = __nft_rule_lookup(net, chain, handle);
net/netfilter/nf_tables_api.c
4361
if (IS_ERR(rule)) {
net/netfilter/nf_tables_api.c
4363
return PTR_ERR(rule);
net/netfilter/nf_tables_api.c
4371
old_rule = rule;
net/netfilter/nf_tables_api.c
4433
rule = kzalloc(sizeof(*rule) + size + usize, GFP_KERNEL_ACCOUNT);
net/netfilter/nf_tables_api.c
4434
if (rule == NULL)
net/netfilter/nf_tables_api.c
4437
nft_activate_next(net, rule);
net/netfilter/nf_tables_api.c
4439
rule->handle = handle;
net/netfilter/nf_tables_api.c
4440
rule->dlen = size;
net/netfilter/nf_tables_api.c
4441
rule->udata = ulen ? 1 : 0;
net/netfilter/nf_tables_api.c
4444
udata = nft_userdata(rule);
net/netfilter/nf_tables_api.c
4449
expr = nft_expr_first(rule);
net/netfilter/nf_tables_api.c
4465
flow = nft_flow_rule_create(net, rule);
net/netfilter/nf_tables_api.c
4487
trans = nft_trans_rule_add(&ctx, NFT_MSG_NEWRULE, rule);
net/netfilter/nf_tables_api.c
4492
list_add_tail_rcu(&rule->list, &old_rule->list);
net/netfilter/nf_tables_api.c
4494
trans = nft_trans_rule_add(&ctx, NFT_MSG_NEWRULE, rule);
net/netfilter/nf_tables_api.c
4502
list_add_rcu(&rule->list, &old_rule->list);
net/netfilter/nf_tables_api.c
4504
list_add_tail_rcu(&rule->list, &chain->rules);
net/netfilter/nf_tables_api.c
4507
list_add_tail_rcu(&rule->list, &old_rule->list);
net/netfilter/nf_tables_api.c
4509
list_add_rcu(&rule->list, &chain->rules);
net/netfilter/nf_tables_api.c
4528
nft_rule_expr_deactivate(&ctx, rule, NFT_TRANS_PREPARE_ERROR);
net/netfilter/nf_tables_api.c
4529
nf_tables_rule_destroy(&ctx, rule);
net/netfilter/nf_tables_api.c
4569
struct nft_rule *rule;
net/netfilter/nf_tables_api.c
4599
rule = nft_rule_lookup(info->net, chain, nla[NFTA_RULE_HANDLE]);
net/netfilter/nf_tables_api.c
4600
if (IS_ERR(rule)) {
net/netfilter/nf_tables_api.c
4601
if (PTR_ERR(rule) == -ENOENT &&
net/netfilter/nf_tables_api.c
4606
return PTR_ERR(rule);
net/netfilter/nf_tables_api.c
4609
err = nft_delrule(&ctx, rule);
net/netfilter/nf_tables_api.c
4611
rule = nft_rule_lookup_byid(net, chain, nla[NFTA_RULE_ID]);
net/netfilter/nf_tables_api.c
4612
if (IS_ERR(rule)) {
net/netfilter/nf_tables_api.c
4614
return PTR_ERR(rule);
net/netfilter/nf_tables_api.c
4617
err = nft_delrule(&ctx, rule);
net/netfilter/nf_tables_api.c
691
void nft_rule_expr_activate(const struct nft_ctx *ctx, struct nft_rule *rule)
net/netfilter/nf_tables_api.c
695
expr = nft_expr_first(rule);
net/netfilter/nf_tables_api.c
696
while (nft_expr_more(rule, expr)) {
net/netfilter/nf_tables_api.c
704
void nft_rule_expr_deactivate(const struct nft_ctx *ctx, struct nft_rule *rule,
net/netfilter/nf_tables_api.c
709
expr = nft_expr_first(rule);
net/netfilter/nf_tables_api.c
710
while (nft_expr_more(rule, expr)) {
net/netfilter/nf_tables_api.c
719
nf_tables_delrule_deactivate(struct nft_ctx *ctx, struct nft_rule *rule)
net/netfilter/nf_tables_api.c
722
if (nft_is_active_next(ctx->net, rule)) {
net/netfilter/nf_tables_api.c
723
nft_deactivate_next(ctx->net, rule);
net/netfilter/nf_tables_api.c
731
struct nft_rule *rule)
net/netfilter/nf_tables_api.c
743
nft_trans_rule(trans) = rule;
net/netfilter/nf_tables_api.c
750
static int nft_delrule(struct nft_ctx *ctx, struct nft_rule *rule)
net/netfilter/nf_tables_api.c
756
trans = nft_trans_rule_add(ctx, NFT_MSG_DELRULE, rule);
net/netfilter/nf_tables_api.c
761
flow = nft_flow_rule_create(ctx->net, rule);
net/netfilter/nf_tables_api.c
770
err = nf_tables_delrule_deactivate(ctx, rule);
net/netfilter/nf_tables_api.c
775
nft_rule_expr_deactivate(ctx, rule, NFT_TRANS_PREPARE);
net/netfilter/nf_tables_api.c
782
struct nft_rule *rule;
net/netfilter/nf_tables_api.c
785
list_for_each_entry(rule, &ctx->chain->rules, list) {
net/netfilter/nf_tables_api.c
786
if (!nft_is_active_next(ctx->net, rule))
net/netfilter/nf_tables_api.c
789
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
321
jumpstack[stackptr].rule = nft_rule_next(rule);
net/netfilter/nf_tables_core.c
336
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
240
const struct nft_rule_dp *rule,
net/netfilter/nf_tables_trace.c
253
chain = nft_trace_get_chain(rule, info);
net/netfilter/nf_tables_trace.c
306
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_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
2692
cls_flower.rule =
net/sched/cls_flower.c
2694
if (!cls_flower.rule) {
net/sched/cls_flower.c
2704
cls_flower.rule->match.dissector = &f->mask->dissector;
net/sched/cls_flower.c
2705
cls_flower.rule->match.mask = &f->mask->key;
net/sched/cls_flower.c
2706
cls_flower.rule->match.key = &f->mkey;
net/sched/cls_flower.c
2708
err = tc_setup_offload_action(&cls_flower.rule->action, &f->exts,
net/sched/cls_flower.c
2711
kfree(cls_flower.rule);
net/sched/cls_flower.c
2725
tc_cleanup_offload_action(&cls_flower.rule->action);
net/sched/cls_flower.c
2726
kfree(cls_flower.rule);
net/sched/cls_flower.c
2769
cls_flower.rule = flow_rule_alloc(0);
net/sched/cls_flower.c
2770
if (!cls_flower.rule)
net/sched/cls_flower.c
2776
cls_flower.rule->match.dissector = &tmplt->dissector;
net/sched/cls_flower.c
2777
cls_flower.rule->match.mask = &tmplt->mask;
net/sched/cls_flower.c
2778
cls_flower.rule->match.key = &tmplt->dummy_key;
net/sched/cls_flower.c
2784
kfree(cls_flower.rule);
net/sched/cls_flower.c
2863
cls_flower.rule = flow_rule_alloc(0);
net/sched/cls_flower.c
2864
if (!cls_flower.rule)
net/sched/cls_flower.c
2871
cls_flower.rule->match.dissector = &tmplt->dissector;
net/sched/cls_flower.c
2872
cls_flower.rule->match.mask = &tmplt->mask;
net/sched/cls_flower.c
2873
cls_flower.rule->match.key = &tmplt->dummy_key;
net/sched/cls_flower.c
2876
kfree(cls_flower.rule);
net/sched/cls_flower.c
468
cls_flower.rule = flow_rule_alloc(tcf_exts_num_actions(&f->exts));
net/sched/cls_flower.c
469
if (!cls_flower.rule)
net/sched/cls_flower.c
475
cls_flower.rule->match.dissector = &f->mask->dissector;
net/sched/cls_flower.c
476
cls_flower.rule->match.mask = &f->mask->key;
net/sched/cls_flower.c
477
cls_flower.rule->match.key = &f->mkey;
net/sched/cls_flower.c
480
err = tc_setup_offload_action(&cls_flower.rule->action, &f->exts,
net/sched/cls_flower.c
483
kfree(cls_flower.rule);
net/sched/cls_flower.c
490
tc_cleanup_offload_action(&cls_flower.rule->action);
net/sched/cls_flower.c
491
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
1344
const struct ieee80211_reg_rule *rule)
net/wireless/nl80211.c
1360
rule->wmm_rule.client[j].cw_min) ||
net/wireless/nl80211.c
1362
rule->wmm_rule.client[j].cw_max) ||
net/wireless/nl80211.c
1364
rule->wmm_rule.client[j].aifsn) ||
net/wireless/nl80211.c
1366
rule->wmm_rule.client[j].cot))
net/wireless/nl80211.c
1514
const struct ieee80211_reg_rule *rule =
net/wireless/nl80211.c
1517
if (!IS_ERR_OR_NULL(rule) && rule->has_wmm) {
net/wireless/nl80211.c
1518
if (nl80211_msg_put_wmm_rules(msg, rule))
net/wireless/nl80211.c
15858
struct cfg80211_coalesce_rules *rule;
net/wireless/nl80211.c
15872
rule = &rdev->coalesce->rules[i];
net/wireless/nl80211.c
15874
rule->delay))
net/wireless/nl80211.c
15878
rule->condition))
net/wireless/nl80211.c
15886
for (j = 0; j < rule->n_patterns; j++) {
net/wireless/nl80211.c
15890
pat_len = rule->patterns[j].pattern_len;
net/wireless/nl80211.c
15893
rule->patterns[j].mask) ||
net/wireless/nl80211.c
15895
rule->patterns[j].pattern) ||
net/wireless/nl80211.c
15897
rule->patterns[j].pkt_offset))
net/wireless/nl80211.c
15941
struct cfg80211_coalesce_rules *rule;
net/wireless/nl80211.c
15947
rule = &coalesce->rules[i];
net/wireless/nl80211.c
15948
for (j = 0; j < rule->n_patterns; j++)
net/wireless/nl80211.c
15949
kfree(rule->patterns[j].mask);
net/wireless/nl80211.c
15950
kfree(rule->patterns);
net/wireless/nl80211.c
15956
struct nlattr *rule,
net/wireless/nl80211.c
15966
rule, nl80211_coalesce_policy, NULL);
net/wireless/nl80211.c
16049
struct nlattr *rule;
net/wireless/nl80211.c
16061
nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE],
net/wireless/nl80211.c
16074
nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE],
net/wireless/nl80211.c
16076
err = nl80211_parse_coalesce_rule(rdev, rule,
net/wireless/nl80211.c
2129
struct nl80211_coalesce_rule_support rule;
net/wireless/nl80211.c
2134
rule.max_rules = rdev->wiphy.coalesce->n_rules;
net/wireless/nl80211.c
2135
rule.max_delay = rdev->wiphy.coalesce->max_delay;
net/wireless/nl80211.c
2136
rule.pat.max_patterns = rdev->wiphy.coalesce->n_patterns;
net/wireless/nl80211.c
2137
rule.pat.min_pattern_len = rdev->wiphy.coalesce->pattern_min_len;
net/wireless/nl80211.c
2138
rule.pat.max_pattern_len = rdev->wiphy.coalesce->pattern_max_len;
net/wireless/nl80211.c
2139
rule.pat.max_pkt_offset = rdev->wiphy.coalesce->max_pkt_offset;
net/wireless/nl80211.c
2141
if (nla_put(msg, NL80211_ATTR_COALESCE_RULE, sizeof(rule), &rule))
net/wireless/reg.c
1150
const struct ieee80211_reg_rule *rule)
net/wireless/reg.c
1152
const struct ieee80211_freq_range *freq_range = &rule->freq_range;
net/wireless/reg.c
1158
if (rule == &rd->reg_rules[idx])
net/wireless/reg.c
1180
freq_range = &rule->freq_range;
net/wireless/reg.c
1199
const struct ieee80211_reg_rule *rule)
net/wireless/reg.c
1201
unsigned int bw = reg_get_max_bandwidth_from_range(rd, rule);
net/wireless/reg.c
1203
if (rule->flags & NL80211_RRF_NO_320MHZ)
net/wireless/reg.c
1205
if (rule->flags & NL80211_RRF_NO_160MHZ)
net/wireless/reg.c
1207
if (rule->flags & NL80211_RRF_NO_80MHZ)
net/wireless/reg.c
1214
if (rule->flags & NL80211_RRF_NO_HT40MINUS &&
net/wireless/reg.c
1215
rule->flags & NL80211_RRF_NO_HT40PLUS)
net/wireless/reg.c
1222
static bool is_valid_reg_rule(const struct ieee80211_reg_rule *rule)
net/wireless/reg.c
1224
const struct ieee80211_freq_range *freq_range = &rule->freq_range;
net/wireless/reg.c
1449
static void add_rule(struct ieee80211_reg_rule *rule,
net/wireless/reg.c
1458
if (rule_contains(tmp_rule, rule))
net/wireless/reg.c
1462
if (rule_contains(rule, tmp_rule)) {
net/wireless/reg.c
1463
memcpy(tmp_rule, rule, sizeof(*rule));
net/wireless/reg.c
1468
memcpy(&reg_rules[*n_rules], rule, sizeof(*rule));
net/wireless/reg.c
652
static bool valid_wmm(struct fwdb_wmm_rule *rule)
net/wireless/reg.c
654
struct fwdb_wmm_ac *ac = (struct fwdb_wmm_ac *)rule;
net/wireless/reg.c
674
struct fwdb_rule *rule = (void *)(data + (rule_ptr << 2));
net/wireless/reg.c
676
if ((u8 *)rule + sizeof(rule->len) > data + size)
net/wireless/reg.c
680
if (rule->len < offsetofend(struct fwdb_rule, max_bw))
net/wireless/reg.c
682
if (rule->len >= offsetofend(struct fwdb_rule, wmm_ptr)) {
net/wireless/reg.c
683
u32 wmm_ptr = be16_to_cpu(rule->wmm_ptr) << 2;
net/wireless/reg.c
834
const struct fwdb_rule *rule,
net/wireless/reg.c
841
wmm_ptr = be16_to_cpu(rule->wmm_ptr) << 2;
net/wireless/reg.c
846
be32_to_cpu(rule->start), be32_to_cpu(rule->end),
net/wireless/reg.c
878
struct fwdb_rule *rule = (void *)((u8 *)db + rule_ptr);
net/wireless/reg.c
880
if (rule->len < offsetofend(struct fwdb_rule, wmm_ptr))
net/wireless/reg.c
883
if (freq >= KHZ_TO_MHZ(be32_to_cpu(rule->start)) &&
net/wireless/reg.c
884
freq <= KHZ_TO_MHZ(be32_to_cpu(rule->end))) {
net/wireless/reg.c
885
set_wmm_rule(db, country, rule, rrule);
net/wireless/reg.c
893
int reg_query_regdb_wmm(char *alpha2, int freq, struct ieee80211_reg_rule *rule)
net/wireless/reg.c
907
return __regdb_query_wmm(regdb, country, freq, rule);
net/wireless/reg.c
936
struct fwdb_rule *rule = (void *)((u8 *)db + rule_ptr);
net/wireless/reg.c
939
rrule->freq_range.start_freq_khz = be32_to_cpu(rule->start);
net/wireless/reg.c
940
rrule->freq_range.end_freq_khz = be32_to_cpu(rule->end);
net/wireless/reg.c
941
rrule->freq_range.max_bandwidth_khz = be32_to_cpu(rule->max_bw);
net/wireless/reg.c
944
rrule->power_rule.max_eirp = be16_to_cpu(rule->max_eirp);
net/wireless/reg.c
947
if (rule->flags & FWDB_FLAG_NO_OFDM)
net/wireless/reg.c
949
if (rule->flags & FWDB_FLAG_NO_OUTDOOR)
net/wireless/reg.c
951
if (rule->flags & FWDB_FLAG_DFS)
net/wireless/reg.c
953
if (rule->flags & FWDB_FLAG_NO_IR)
net/wireless/reg.c
955
if (rule->flags & FWDB_FLAG_AUTO_BW)
net/wireless/reg.c
961
if (rule->len >= offsetofend(struct fwdb_rule, cac_timeout))
net/wireless/reg.c
963
1000 * be16_to_cpu(rule->cac_timeout);
net/wireless/reg.c
964
if (rule->len >= offsetofend(struct fwdb_rule, wmm_ptr))
net/wireless/reg.c
965
set_wmm_rule(db, country, rule, rrule);
net/wireless/reg.h
52
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
1426
static int ima_parse_rule(char *rule, struct ima_rule_entry *entry)
security/integrity/ima/ima_policy.c
1447
while ((p = strsep(&rule, " \t")) != NULL) {
security/integrity/ima/ima_policy.c
1962
ssize_t ima_parse_add_rule(char *rule)
security/integrity/ima/ima_policy.c
1970
p = strsep(&rule, "\n");
security/integrity/ima/ima_policy.c
2122
if (entry->lsm[i].args_p && !entry->lsm[i].rule) {
security/integrity/ima/ima_policy.c
2278
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
370
const struct landlock_rule *rule;
security/landlock/fs.c
383
rule = landlock_find_rule(domain, id);
security/landlock/fs.c
385
return rule;
security/landlock/fs.c
838
const struct landlock_rule *rule;
security/landlock/fs.c
880
rule = find_rule(domain, walker_path.dentry);
security/landlock/fs.c
883
landlock_unmask_layers(rule, layer_masks_parent1);
security/landlock/fs.c
886
landlock_unmask_layers(rule, layer_masks_parent2);
security/landlock/net.c
240
rule = landlock_find_rule(subject->domain, id);
security/landlock/net.c
247
if (landlock_unmask_layers(rule, &layer_masks))
security/landlock/net.c
54
const struct landlock_rule *rule;
security/landlock/ruleset.c
166
static void free_rule(struct landlock_rule *const rule,
security/landlock/ruleset.c
170
if (!rule)
security/landlock/ruleset.c
173
landlock_put_object(rule->key.object);
security/landlock/ruleset.c
174
kfree(rule);
security/landlock/ruleset.c
640
bool landlock_unmask_layers(const struct landlock_rule *const rule,
security/landlock/ruleset.c
645
if (!rule)
security/landlock/ruleset.c
658
for (size_t i = 0; i < rule->num_layers; i++) {
security/landlock/ruleset.c
659
const struct landlock_layer *const layer = &rule->layers[i];
security/landlock/ruleset.c
81
const struct landlock_rule rule = {
security/landlock/ruleset.c
89
BUILD_BUG_ON(rule.num_layers < LANDLOCK_MAX_NUM_LAYERS);
security/landlock/ruleset.h
321
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
3458
struct selinux_audit_rule *rule = vrule;
security/selinux/ss/services.c
3460
if (rule) {
security/selinux/ss/services.c
3461
context_destroy(&rule->au_ctxt);
security/selinux/ss/services.c
3462
kfree(rule);
security/selinux/ss/services.c
3476
struct selinux_audit_rule **rule = (struct selinux_audit_rule **)vrule;
security/selinux/ss/services.c
3479
*rule = NULL;
security/selinux/ss/services.c
3557
*rule = tmprule;
security/selinux/ss/services.c
3563
*rule = NULL;
security/selinux/ss/services.c
3568
int selinux_audit_rule_known(struct audit_krule *rule)
security/selinux/ss/services.c
3572
for (i = 0; i < rule->field_count; i++) {
security/selinux/ss/services.c
3573
struct audit_field *f = &rule->fields[i];
security/selinux/ss/services.c
3598
struct selinux_audit_rule *rule = vrule;
security/selinux/ss/services.c
3601
if (unlikely(!rule)) {
security/selinux/ss/services.c
3613
if (rule->au_seqno < policy->latest_granting) {
security/selinux/ss/services.c
3633
match = (ctxt->user == rule->au_ctxt.user);
security/selinux/ss/services.c
3636
match = (ctxt->user != rule->au_ctxt.user);
security/selinux/ss/services.c
3644
match = (ctxt->role == rule->au_ctxt.role);
security/selinux/ss/services.c
3647
match = (ctxt->role != rule->au_ctxt.role);
security/selinux/ss/services.c
3655
match = (ctxt->type == rule->au_ctxt.type);
security/selinux/ss/services.c
3658
match = (ctxt->type != rule->au_ctxt.type);
security/selinux/ss/services.c
3671
match = mls_level_eq(&rule->au_ctxt.range.level[0],
security/selinux/ss/services.c
3675
match = !mls_level_eq(&rule->au_ctxt.range.level[0],
security/selinux/ss/services.c
3679
match = (mls_level_dom(&rule->au_ctxt.range.level[0],
security/selinux/ss/services.c
3681
!mls_level_eq(&rule->au_ctxt.range.level[0],
security/selinux/ss/services.c
3685
match = mls_level_dom(&rule->au_ctxt.range.level[0],
security/selinux/ss/services.c
3690
&rule->au_ctxt.range.level[0]) &&
security/selinux/ss/services.c
3692
&rule->au_ctxt.range.level[0]));
security/selinux/ss/services.c
3696
&rule->au_ctxt.range.level[0]);
security/smack/smack_lsm.c
4774
char **rule = (char **)vrule;
security/smack/smack_lsm.c
4775
*rule = NULL;
security/smack/smack_lsm.c
4787
*rule = skp->smk_known;
security/smack/smack_lsm.c
4829
char *rule = vrule;
security/smack/smack_lsm.c
4831
if (unlikely(!rule)) {
security/smack/smack_lsm.c
4845
return (rule == skp->smk_known);
security/smack/smack_lsm.c
4847
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
2403
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2406
snd_interval_mul(hw_param_interval_c(params, rule->deps[0]),
sound/core/pcm_native.c
2407
hw_param_interval_c(params, rule->deps[1]), &t);
sound/core/pcm_native.c
2408
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/core/pcm_native.c
2412
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2415
snd_interval_div(hw_param_interval_c(params, rule->deps[0]),
sound/core/pcm_native.c
2416
hw_param_interval_c(params, rule->deps[1]), &t);
sound/core/pcm_native.c
2417
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/core/pcm_native.c
2421
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2424
snd_interval_muldivk(hw_param_interval_c(params, rule->deps[0]),
sound/core/pcm_native.c
2425
hw_param_interval_c(params, rule->deps[1]),
sound/core/pcm_native.c
2426
(unsigned long) rule->private, &t);
sound/core/pcm_native.c
2427
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/core/pcm_native.c
2431
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2434
snd_interval_mulkdiv(hw_param_interval_c(params, rule->deps[0]),
sound/core/pcm_native.c
2435
(unsigned long) rule->private,
sound/core/pcm_native.c
2436
hw_param_interval_c(params, rule->deps[1]), &t);
sound/core/pcm_native.c
2437
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/core/pcm_native.c
2441
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2445
hw_param_interval_c(params, rule->deps[0]);
sound/core/pcm_native.c
2463
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2485
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/core/pcm_native.c
2507
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2509
struct snd_pcm_hardware *hw = rule->private;
sound/core/pcm_native.c
2510
return snd_interval_list(hw_param_interval(params, rule->var),
sound/core/pcm_native.c
2516
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2519
struct snd_pcm_substream *substream = rule->private;
sound/core/pcm_native.c
2525
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/core/pcm_native.c
2529
struct snd_pcm_hw_rule *rule)
sound/core/pcm_native.c
2533
u32 *subformats = rule->private;
sound/drivers/aloop.c
1001
return snd_mask_refine(hw_param_mask(params, rule->var), &m);
sound/drivers/aloop.c
1005
struct snd_pcm_hw_rule *rule)
sound/drivers/aloop.c
1007
struct loopback_pcm *dpcm = rule->private;
sound/drivers/aloop.c
1017
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/drivers/aloop.c
1021
struct snd_pcm_hw_rule *rule)
sound/drivers/aloop.c
1023
struct loopback_pcm *dpcm = rule->private;
sound/drivers/aloop.c
1033
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/drivers/aloop.c
1037
struct snd_pcm_hw_rule *rule)
sound/drivers/aloop.c
1039
struct loopback_pcm *dpcm = rule->private;
sound/drivers/aloop.c
1050
return snd_interval_refine(hw_param_interval(params, rule->var), &t);
sound/drivers/aloop.c
990
struct snd_pcm_hw_rule *rule)
sound/drivers/aloop.c
992
struct loopback_pcm *dpcm = rule->private;
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
445
static int cs4234_dai_rule_rate(struct snd_pcm_hw_params *params, struct snd_pcm_hw_rule *rule)
sound/soc/codecs/cs4234.c
447
struct cs4234 *cs4234 = rule->private;
sound/soc/codecs/cs4234.c
460
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
917
struct snd_pcm_hw_rule *rule)
sound/soc/renesas/rcar/core.c
922
struct rsnd_dai_stream *io = rule->private;
sound/soc/renesas/rcar/core.c
940
struct snd_pcm_hw_rule *rule)
sound/soc/renesas/rcar/core.c
945
struct rsnd_dai_stream *io = rule->private;
sound/soc/soc-pcm.c
481
struct snd_pcm_hw_rule *rule)
sound/soc/soc-pcm.c
483
struct snd_soc_dai *dai = 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
182
struct snd_pcm_hw_rule *rule)
sound/soc/tegra/tegra20_spdif.c
184
struct snd_interval *r = hw_param_interval(params, rule->var);
sound/soc/tegra/tegra20_spdif.c
185
struct snd_soc_dai *dai = rule->private;
sound/soc/ti/davinci-mcasp.c
1595
struct snd_pcm_hw_rule *rule)
sound/soc/ti/davinci-mcasp.c
1597
struct davinci_mcasp_ruledata *rd = rule->private;
sound/soc/ti/davinci-mcasp.c
1618
struct snd_pcm_hw_rule *rule)
sound/soc/ti/davinci-mcasp.c
1620
struct davinci_mcasp_ruledata *rd = rule->private;
sound/soc/ti/davinci-mcasp.c
1648
struct snd_pcm_hw_rule *rule)
sound/soc/ti/davinci-mcasp.c
1650
struct davinci_mcasp_ruledata *rd = rule->private;
sound/soc/ti/davinci-mcasp.c
1697
return snd_interval_refine(hw_param_interval(params, rule->var),
sound/soc/ti/davinci-mcasp.c
1702
struct snd_pcm_hw_rule *rule)
sound/soc/ti/davinci-mcasp.c
1704
struct davinci_mcasp_ruledata *rd = rule->private;
sound/soc/ti/davinci-mcasp.c
1750
struct snd_pcm_hw_params *params, struct snd_pcm_hw_rule *rule)
sound/soc/ti/davinci-mcasp.c
1754
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
744
struct snd_pcm_hw_rule *rule)
sound/soc/ti/omap-mcbsp.c
750
struct omap_mcbsp *mcbsp = rule->private;
sound/sparc/dbri.c
2001
struct snd_pcm_hw_rule *rule)
sound/sparc/dbri.c
2017
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
155
.nlmsg_len = NLMSG_SPACE(sizeof(msg.rule)) +
tools/testing/selftests/landlock/audit.h
160
.rule = {
tools/testing/selftests/landlock/audit.h
174
memcpy(msg.rule.buf, filter->exe, filter->exe_len);
tools/testing/selftests/landlock/audit.h
182
.nlmsg_len = NLMSG_SPACE(sizeof(msg.rule)),
tools/testing/selftests/landlock/audit.h
186
.rule = {
tools/testing/selftests/landlock/audit.h
42
struct audit_rule_data rule;
tools/testing/selftests/landlock/fs_test.c
1000
const struct rule layer2[] = {
tools/testing/selftests/landlock/fs_test.c
1009
const struct rule layer3[] = {
tools/testing/selftests/landlock/fs_test.c
1086
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
1093
const struct rule layer2[] = {
tools/testing/selftests/landlock/fs_test.c
1140
const struct rule layer1_read[] = {
tools/testing/selftests/landlock/fs_test.c
1149
const struct rule layer2_read_write[] = {
tools/testing/selftests/landlock/fs_test.c
1163
const struct rule layer3_read[] = {
tools/testing/selftests/landlock/fs_test.c
1171
const struct rule layer4_read_write[] = {
tools/testing/selftests/landlock/fs_test.c
1182
const struct rule layer5_read[] = {
tools/testing/selftests/landlock/fs_test.c
1193
const struct rule layer6_execute[] = {
tools/testing/selftests/landlock/fs_test.c
1204
const struct rule layer7_read_write[] = {
tools/testing/selftests/landlock/fs_test.c
1282
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1398
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1435
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1486
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1512
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1542
struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1566
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1583
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1607
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1627
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1706
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
1744
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
1790
const struct rule layer1_base[] = {
tools/testing/selftests/landlock/fs_test.c
1797
const struct rule layer2_subs[] = {
tools/testing/selftests/landlock/fs_test.c
1984
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
2097
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
2104
const struct rule layer2[] = {
tools/testing/selftests/landlock/fs_test.c
2175
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
2252
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
2311
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
2349
const struct rule layer1[],
tools/testing/selftests/landlock/fs_test.c
2351
const struct rule layer2[])
tools/testing/selftests/landlock/fs_test.c
2380
const struct rule layer_dir_s1d1_refer[] = {
tools/testing/selftests/landlock/fs_test.c
2388
const struct rule layer_dir_s1d1_execute[] = {
tools/testing/selftests/landlock/fs_test.c
2397
const struct rule layer_dir_s2d1_execute[] = {
tools/testing/selftests/landlock/fs_test.c
2478
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
2510
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
2585
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
2727
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
2755
const struct rule layer2[] = {
tools/testing/selftests/landlock/fs_test.c
3018
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
3076
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
3165
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3197
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3219
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3303
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3343
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3378
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3417
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3504
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3561
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3675
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
3683
const struct rule layer2[] = {
tools/testing/selftests/landlock/fs_test.c
3692
const struct rule layer3[] = {
tools/testing/selftests/landlock/fs_test.c
3802
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
3840
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
4233
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
4264
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
4306
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
4393
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
4475
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
4886
const struct rule layer1_parent[] = {
tools/testing/selftests/landlock/fs_test.c
4902
const struct rule layer2_mount_point[] = {
tools/testing/selftests/landlock/fs_test.c
4914
const struct rule layer3_source[] = {
tools/testing/selftests/landlock/fs_test.c
4922
const struct rule layer4_destination[] = {
tools/testing/selftests/landlock/fs_test.c
5005
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
5044
const struct rule layer1_allow_all[] = {
tools/testing/selftests/landlock/fs_test.c
5051
const struct rule layer2_allow_just_f1[] = {
tools/testing/selftests/landlock/fs_test.c
5058
const struct rule layer3_only_s1d2[] = {
tools/testing/selftests/landlock/fs_test.c
5139
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
5162
const struct rule layer2_only_s1d2[] = {
tools/testing/selftests/landlock/fs_test.c
5308
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
5831
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
6355
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
6695
const struct rule layer1_base[] = {
tools/testing/selftests/landlock/fs_test.c
6710
const struct rule layer2_data[] = {
tools/testing/selftests/landlock/fs_test.c
6726
const struct rule layer3_subdirs[] = {
tools/testing/selftests/landlock/fs_test.c
6758
const struct rule layer4_files[] = {
tools/testing/selftests/landlock/fs_test.c
6810
const struct rule layer5_merge_only[] = {
tools/testing/selftests/landlock/fs_test.c
7110
const struct rule layer1_allow_read_file[] = {
tools/testing/selftests/landlock/fs_test.c
7169
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
763
const struct rule rules[])
tools/testing/selftests/landlock/fs_test.c
7658
const struct rule layer1[] = {
tools/testing/selftests/landlock/fs_test.c
789
const __u64 access_fs, const struct rule rules[])
tools/testing/selftests/landlock/fs_test.c
799
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
848
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
871
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
926
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
950
const struct rule rules[] = {
tools/testing/selftests/landlock/fs_test.c
988
const struct rule layer1[] = {
tools/testing/selftests/landlock/net_test.c
1594
const struct landlock_net_port_attr rule = {
tools/testing/selftests/landlock/net_test.c
1603
&rule, 0));
tools/testing/selftests/landlock/net_test.c
1656
const struct landlock_net_port_attr rule = {
tools/testing/selftests/landlock/net_test.c
1665
&rule, 0));
tools/testing/selftests/landlock/net_test.c
1710
const struct landlock_net_port_attr rule = {
tools/testing/selftests/landlock/net_test.c
1719
&rule, 0));
tools/testing/selftests/landlock/net_test.c
3238
const struct landlock_net_port_attr rule = {
tools/testing/selftests/landlock/net_test.c
3254
&rule, 0));