Lines Matching refs:rule
12 struct sja1105_rule *rule,
23 e->rule = rule;
95 struct sja1105_rule *rule;
102 list_for_each_entry(rule, &priv->flow_block.rules, list) {
103 if (rule->type != SJA1105_RULE_VL)
105 if (rule->vl.type != SJA1105_VL_TIME_TRIGGERED)
108 if (max_cycle_time < rule->vl.cycle_time) {
109 max_cycle_time = rule->vl.cycle_time;
110 its_base_time = rule->vl.base_time;
124 list_for_each_entry(rule, &priv->flow_block.rules, list) {
128 if (rule->type != SJA1105_RULE_VL)
130 if (rule->vl.type != SJA1105_VL_TIME_TRIGGERED)
137 rbt = future_base_time(rule->vl.base_time, rule->vl.cycle_time,
143 for (i = 0; i < rule->vl.num_entries; i++) {
144 u8 gate_state = rule->vl.entries[i].gate_state;
148 rc = sja1105_insert_gate_entry(gating_cfg, rule,
155 entry_time += rule->vl.cycle_time;
157 time += rule->vl.entries[i].interval;
181 * all specified in rule) | (specified in rule)
192 * | \ (per rule) / | |
194 * v ------------ index of rule contents of rule
320 struct sja1105_rule *rule;
326 list_for_each_entry(rule, &priv->flow_block.rules, list) {
327 if (rule->type != SJA1105_RULE_VL)
330 num_virtual_links += hweight_long(rule->port_mask);
332 if (rule->vl.type != SJA1105_VL_NONCRITICAL)
334 if (max_sharindx < rule->vl.sharindx)
335 max_sharindx = rule->vl.sharindx;
396 list_for_each_entry(rule, &priv->flow_block.rules, list) {
399 if (rule->type != SJA1105_RULE_VL)
402 for_each_set_bit(port, &rule->port_mask, SJA1105_MAX_NUM_PORTS) {
405 vl_lookup[k].macaddr = rule->key.vl.dmac;
406 if (rule->key.type == SJA1105_KEY_VLAN_AWARE_VL) {
407 vl_lookup[k].vlanid = rule->key.vl.vid;
408 vl_lookup[k].vlanprior = rule->key.vl.pcp;
421 if (rule->vl.type == SJA1105_VL_NONCRITICAL)
422 vl_lookup[k].destports = rule->vl.destports;
425 vl_lookup[k].flow_cookie = rule->cookie;
481 struct sja1105_rule *rule = sja1105_rule_find(priv, cookie);
483 if (rule->vl.type == SJA1105_VL_NONCRITICAL)
485 if (rule->vl.type == SJA1105_VL_TIME_TRIGGERED) {
486 int sharindx = rule->vl.sharindx;
490 vl_policing[i].maxlen = rule->vl.maxlen;
495 vl_fwd[sharindx].priority = rule->vl.ipv;
497 vl_fwd[sharindx].destports = rule->vl.destports;
511 struct sja1105_rule *rule = sja1105_rule_find(priv, cookie);
526 if (!rule) {
527 rule = kzalloc(sizeof(*rule), GFP_KERNEL);
528 if (!rule)
531 rule->cookie = cookie;
532 rule->type = SJA1105_RULE_VL;
533 rule->key = *key;
534 list_add(&rule->list, &priv->flow_block.rules);
537 rule->port_mask |= BIT(port);
539 rule->vl.destports |= destports;
541 rule->vl.destports = destports;
545 rule->port_mask &= ~BIT(port);
546 if (!rule->port_mask) {
547 list_del(&rule->list);
548 kfree(rule);
556 struct sja1105_rule *rule, struct netlink_ext_ack *extack)
560 rule->port_mask &= ~BIT(port);
561 if (!rule->port_mask) {
562 list_del(&rule->list);
563 kfree(rule);
587 struct sja1105_rule *rule = sja1105_rule_find(priv, cookie);
624 if (!rule) {
625 rule = kzalloc(sizeof(*rule), GFP_KERNEL);
626 if (!rule)
629 list_add(&rule->list, &priv->flow_block.rules);
630 rule->cookie = cookie;
631 rule->type = SJA1105_RULE_VL;
632 rule->key = *key;
633 rule->vl.type = SJA1105_VL_TIME_TRIGGERED;
634 rule->vl.sharindx = index;
635 rule->vl.base_time = base_time;
636 rule->vl.cycle_time = cycle_time;
637 rule->vl.num_entries = num_entries;
638 rule->vl.entries = kcalloc(num_entries,
641 if (!rule->vl.entries) {
687 rule->vl.entries[i] = entries[i];
698 rule->vl.maxlen = VLAN_ETH_FRAME_LEN + ETH_FCS_LEN;
699 rule->vl.ipv = ipv;
702 rule->port_mask |= BIT(port);
720 rule->port_mask &= ~BIT(port);
721 if (!rule->port_mask) {
722 list_del(&rule->list);
723 kfree(rule->vl.entries);
724 kfree(rule);
763 struct sja1105_rule *rule, struct flow_stats *stats,
774 if (rule->vl.type != SJA1105_VL_TIME_TRIGGERED)
777 vlid = sja1105_find_vlid(priv, port, &rule->key);
794 flow_stats_update(stats, 0, pkts - rule->vl.stats.pkts, 0,
795 jiffies - rule->vl.stats.lastused,
798 rule->vl.stats.pkts = pkts;
799 rule->vl.stats.lastused = jiffies;