|
@@ -457,20 +457,21 @@ static int u32_replace_hw_hnode(struct tcf_proto *tp,
|
|
|
struct tc_to_netdev offload;
|
|
|
int err;
|
|
|
|
|
|
+ if (!tc_should_offload(dev, flags))
|
|
|
+ return tc_skip_sw(flags) ? -EINVAL : 0;
|
|
|
+
|
|
|
offload.type = TC_SETUP_CLSU32;
|
|
|
offload.cls_u32 = &u32_offload;
|
|
|
|
|
|
- if (tc_should_offload(dev, flags)) {
|
|
|
- offload.cls_u32->command = TC_CLSU32_NEW_HNODE;
|
|
|
- offload.cls_u32->hnode.divisor = h->divisor;
|
|
|
- offload.cls_u32->hnode.handle = h->handle;
|
|
|
- offload.cls_u32->hnode.prio = h->prio;
|
|
|
+ offload.cls_u32->command = TC_CLSU32_NEW_HNODE;
|
|
|
+ offload.cls_u32->hnode.divisor = h->divisor;
|
|
|
+ offload.cls_u32->hnode.handle = h->handle;
|
|
|
+ offload.cls_u32->hnode.prio = h->prio;
|
|
|
|
|
|
- err = dev->netdev_ops->ndo_setup_tc(dev, tp->q->handle,
|
|
|
- tp->protocol, &offload);
|
|
|
- if (tc_skip_sw(flags))
|
|
|
- return err;
|
|
|
- }
|
|
|
+ err = dev->netdev_ops->ndo_setup_tc(dev, tp->q->handle,
|
|
|
+ tp->protocol, &offload);
|
|
|
+ if (tc_skip_sw(flags))
|
|
|
+ return err;
|
|
|
|
|
|
return 0;
|
|
|
}
|