From: Alexander Aring Date: Mon, 28 Aug 2017 19:03:14 +0000 (-0400) Subject: act_ife: use registered ife_type as fallback X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=b522ed6ed665ba6a349d31136fa3f40c408f2b5a;p=openwrt%2Fstaging%2Fblogic.git act_ife: use registered ife_type as fallback This patch handles a default IFE type if it's not given by user space netlink api. The default IFE type will be the registered ethertype by IEEE for IFE ForCES. Signed-off-by: Alexander Aring Acked-by: Jamal Hadi Salim Signed-off-by: David S. Miller --- diff --git a/net/sched/act_ife.c b/net/sched/act_ife.c index c5dec308b8b1..7ed1be80ee86 100644 --- a/net/sched/act_ife.c +++ b/net/sched/act_ife.c @@ -435,8 +435,8 @@ static int tcf_ife_init(struct net *net, struct nlattr *nla, struct nlattr *tb[TCA_IFE_MAX + 1]; struct nlattr *tb2[IFE_META_MAX + 1]; struct tcf_ife_info *ife; + u16 ife_type = ETH_P_IFE; struct tc_ife *parm; - u16 ife_type = 0; u8 *daddr = NULL; u8 *saddr = NULL; bool exists = false; @@ -456,18 +456,6 @@ static int tcf_ife_init(struct net *net, struct nlattr *nla, if (exists && bind) return 0; - if (parm->flags & IFE_ENCODE) { - /* Until we get issued the ethertype, we cant have - * a default.. - **/ - if (!tb[TCA_IFE_TYPE]) { - if (exists) - tcf_hash_release(*a, bind); - pr_info("You MUST pass etherype for encoding\n"); - return -EINVAL; - } - } - if (!exists) { ret = tcf_hash_create(tn, parm->index, est, a, &act_ife_ops, bind, false); @@ -484,7 +472,8 @@ static int tcf_ife_init(struct net *net, struct nlattr *nla, ife->flags = parm->flags; if (parm->flags & IFE_ENCODE) { - ife_type = nla_get_u16(tb[TCA_IFE_TYPE]); + if (tb[TCA_IFE_TYPE]) + ife_type = nla_get_u16(tb[TCA_IFE_TYPE]); if (tb[TCA_IFE_DMAC]) daddr = nla_data(tb[TCA_IFE_DMAC]); if (tb[TCA_IFE_SMAC])