0001
0002
0003
0004
0005
0006
0007 #ifndef _MSCC_OCELOT_POLICE_H_
0008 #define _MSCC_OCELOT_POLICE_H_
0009
0010 #include "ocelot.h"
0011 #include <net/flow_offload.h>
0012
0013 enum mscc_qos_rate_mode {
0014 MSCC_QOS_RATE_MODE_DISABLED,
0015 MSCC_QOS_RATE_MODE_LINE,
0016 MSCC_QOS_RATE_MODE_DATA,
0017 MSCC_QOS_RATE_MODE_FRAME,
0018 __MSCC_QOS_RATE_MODE_END,
0019 NUM_MSCC_QOS_RATE_MODE = __MSCC_QOS_RATE_MODE_END,
0020 MSCC_QOS_RATE_MODE_MAX = __MSCC_QOS_RATE_MODE_END - 1,
0021 };
0022
0023 struct qos_policer_conf {
0024 enum mscc_qos_rate_mode mode;
0025 bool dlb;
0026 bool cf;
0027 u32 cir;
0028 u32 cbs;
0029 u32 pir;
0030 u32 pbs;
0031 u8 ipg;
0032 };
0033
0034 int qos_policer_conf_set(struct ocelot *ocelot, u32 pol_ix,
0035 struct qos_policer_conf *conf);
0036
0037 int ocelot_policer_validate(const struct flow_action *action,
0038 const struct flow_action_entry *a,
0039 struct netlink_ext_ack *extack);
0040
0041 #endif