diff options
| -rw-r--r-- | net/sched/cls_flower.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c index 850d98294bf6..9d0c99d2e9fb 100644 --- a/net/sched/cls_flower.c +++ b/net/sched/cls_flower.c | |||
| @@ -273,6 +273,8 @@ static int fl_hw_replace_filter(struct tcf_proto *tp, | |||
| 273 | 273 | ||
| 274 | err = dev->netdev_ops->ndo_setup_tc(dev, tp->q->handle, tp->protocol, | 274 | err = dev->netdev_ops->ndo_setup_tc(dev, tp->q->handle, tp->protocol, |
| 275 | tc); | 275 | tc); |
| 276 | if (!err) | ||
| 277 | f->flags |= TCA_CLS_FLAGS_IN_HW; | ||
| 276 | 278 | ||
| 277 | if (tc_skip_sw(f->flags)) | 279 | if (tc_skip_sw(f->flags)) |
| 278 | return err; | 280 | return err; |
| @@ -912,6 +914,9 @@ static int fl_change(struct net *net, struct sk_buff *in_skb, | |||
| 912 | goto errout; | 914 | goto errout; |
| 913 | } | 915 | } |
| 914 | 916 | ||
| 917 | if (!tc_in_hw(fnew->flags)) | ||
| 918 | fnew->flags |= TCA_CLS_FLAGS_NOT_IN_HW; | ||
| 919 | |||
| 915 | if (fold) { | 920 | if (fold) { |
| 916 | if (!tc_skip_sw(fold->flags)) | 921 | if (!tc_skip_sw(fold->flags)) |
| 917 | rhashtable_remove_fast(&head->ht, &fold->ht_node, | 922 | rhashtable_remove_fast(&head->ht, &fold->ht_node, |
