Lines Matching refs:policy
1697 const struct mv88e6xxx_policy *policy)
1699 enum mv88e6xxx_policy_mapping mapping = policy->mapping;
1700 enum mv88e6xxx_policy_action action = policy->action;
1701 const u8 *addr = policy->addr;
1702 u16 vid = policy->vid;
1733 /* Skip the port's policy clearing if the mapping is still in use */
1735 idr_for_each_entry(&chip->policies, policy, id)
1736 if (policy->port == port &&
1737 policy->mapping == mapping &&
1738 policy->action != action)
1751 struct mv88e6xxx_policy *policy;
1790 idr_for_each_entry(&chip->policies, policy, id) {
1791 if (policy->port == port && policy->mapping == mapping &&
1792 policy->action == action && policy->vid == vid &&
1793 ether_addr_equal(policy->addr, addr))
1797 policy = devm_kzalloc(chip->dev, sizeof(*policy), GFP_KERNEL);
1798 if (!policy)
1802 err = idr_alloc_u32(&chip->policies, policy, &fs->location, 0xffffffff,
1805 devm_kfree(chip->dev, policy);
1809 memcpy(&policy->fs, fs, sizeof(*fs));
1810 ether_addr_copy(policy->addr, addr);
1811 policy->mapping = mapping;
1812 policy->action = action;
1813 policy->port = port;
1814 policy->vid = vid;
1816 err = mv88e6xxx_policy_apply(chip, port, policy);
1819 devm_kfree(chip->dev, policy);
1831 struct mv88e6xxx_policy *policy;
1842 idr_for_each_entry(&chip->policies, policy, id)
1843 if (policy->port == port)
1849 policy = idr_find(&chip->policies, fs->location);
1850 if (policy) {
1851 memcpy(fs, &policy->fs, sizeof(*fs));
1858 idr_for_each_entry(&chip->policies, policy, id)
1859 if (policy->port == port)
1878 struct mv88e6xxx_policy *policy;
1889 policy = idr_remove(&chip->policies, fs->location);
1890 if (policy) {
1891 policy->action = MV88E6XXX_POLICY_ACTION_NORMAL;
1892 err = mv88e6xxx_policy_apply(chip, port, policy);
1893 devm_kfree(chip->dev, policy);