net/sched: Add separate check for skip_hw flag
Creating a difference between two possible cases: 1. Not offloading tc rule since the user sets 'skip_hw' flag. 2. Not offloading tc rule since the device doesn't support offloading. This patch doesn't add any new functionality. Signed-off-by: Hadar Hen Zion <hadarh@mellanox.com> Reviewed-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
25429d7b7d
commit
55330f0596
1 changed files with 15 additions and 4 deletions
|
@ -425,16 +425,14 @@ struct tc_cls_u32_offload {
|
|||
};
|
||||
};
|
||||
|
||||
static inline bool tc_should_offload(const struct net_device *dev,
|
||||
const struct tcf_proto *tp, u32 flags)
|
||||
static inline bool tc_can_offload(const struct net_device *dev,
|
||||
const struct tcf_proto *tp)
|
||||
{
|
||||
const struct Qdisc *sch = tp->q;
|
||||
const struct Qdisc_class_ops *cops = sch->ops->cl_ops;
|
||||
|
||||
if (!(dev->features & NETIF_F_HW_TC))
|
||||
return false;
|
||||
if (flags & TCA_CLS_FLAGS_SKIP_HW)
|
||||
return false;
|
||||
if (!dev->netdev_ops->ndo_setup_tc)
|
||||
return false;
|
||||
if (cops && cops->tcf_cl_offload)
|
||||
|
@ -443,6 +441,19 @@ static inline bool tc_should_offload(const struct net_device *dev,
|
|||
return true;
|
||||
}
|
||||
|
||||
static inline bool tc_skip_hw(u32 flags)
|
||||
{
|
||||
return (flags & TCA_CLS_FLAGS_SKIP_HW) ? true : false;
|
||||
}
|
||||
|
||||
static inline bool tc_should_offload(const struct net_device *dev,
|
||||
const struct tcf_proto *tp, u32 flags)
|
||||
{
|
||||
if (tc_skip_hw(flags))
|
||||
return false;
|
||||
return tc_can_offload(dev, tp);
|
||||
}
|
||||
|
||||
static inline bool tc_skip_sw(u32 flags)
|
||||
{
|
||||
return (flags & TCA_CLS_FLAGS_SKIP_SW) ? true : false;
|
||||
|
|
Loading…
Reference in a new issue