diff options
Diffstat (limited to 'net/sched/sch_fq.c')
-rw-r--r-- | net/sched/sch_fq.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/net/sched/sch_fq.c b/net/sched/sch_fq.c index 48501a2baf75..a9dfdda9ed1d 100644 --- a/net/sched/sch_fq.c +++ b/net/sched/sch_fq.c | |||
@@ -472,20 +472,16 @@ begin: | |||
472 | if (f->credit > 0 || !q->rate_enable) | 472 | if (f->credit > 0 || !q->rate_enable) |
473 | goto out; | 473 | goto out; |
474 | 474 | ||
475 | if (skb->sk && skb->sk->sk_state != TCP_TIME_WAIT) { | 475 | rate = q->flow_max_rate; |
476 | rate = skb->sk->sk_pacing_rate ?: q->flow_default_rate; | 476 | if (skb->sk && skb->sk->sk_state != TCP_TIME_WAIT) |
477 | rate = min(skb->sk->sk_pacing_rate, rate); | ||
477 | 478 | ||
478 | rate = min(rate, q->flow_max_rate); | 479 | if (rate != ~0U) { |
479 | } else { | ||
480 | rate = q->flow_max_rate; | ||
481 | if (rate == ~0U) | ||
482 | goto out; | ||
483 | } | ||
484 | if (rate) { | ||
485 | u32 plen = max(qdisc_pkt_len(skb), q->quantum); | 480 | u32 plen = max(qdisc_pkt_len(skb), q->quantum); |
486 | u64 len = (u64)plen * NSEC_PER_SEC; | 481 | u64 len = (u64)plen * NSEC_PER_SEC; |
487 | 482 | ||
488 | do_div(len, rate); | 483 | if (likely(rate)) |
484 | do_div(len, rate); | ||
489 | /* Since socket rate can change later, | 485 | /* Since socket rate can change later, |
490 | * clamp the delay to 125 ms. | 486 | * clamp the delay to 125 ms. |
491 | * TODO: maybe segment the too big skb, as in commit | 487 | * TODO: maybe segment the too big skb, as in commit |
@@ -735,12 +731,14 @@ static int fq_dump(struct Qdisc *sch, struct sk_buff *skb) | |||
735 | if (opts == NULL) | 731 | if (opts == NULL) |
736 | goto nla_put_failure; | 732 | goto nla_put_failure; |
737 | 733 | ||
734 | /* TCA_FQ_FLOW_DEFAULT_RATE is not used anymore, | ||
735 | * do not bother giving its value | ||
736 | */ | ||
738 | if (nla_put_u32(skb, TCA_FQ_PLIMIT, sch->limit) || | 737 | if (nla_put_u32(skb, TCA_FQ_PLIMIT, sch->limit) || |
739 | nla_put_u32(skb, TCA_FQ_FLOW_PLIMIT, q->flow_plimit) || | 738 | nla_put_u32(skb, TCA_FQ_FLOW_PLIMIT, q->flow_plimit) || |
740 | nla_put_u32(skb, TCA_FQ_QUANTUM, q->quantum) || | 739 | nla_put_u32(skb, TCA_FQ_QUANTUM, q->quantum) || |
741 | nla_put_u32(skb, TCA_FQ_INITIAL_QUANTUM, q->initial_quantum) || | 740 | nla_put_u32(skb, TCA_FQ_INITIAL_QUANTUM, q->initial_quantum) || |
742 | nla_put_u32(skb, TCA_FQ_RATE_ENABLE, q->rate_enable) || | 741 | nla_put_u32(skb, TCA_FQ_RATE_ENABLE, q->rate_enable) || |
743 | nla_put_u32(skb, TCA_FQ_FLOW_DEFAULT_RATE, q->flow_default_rate) || | ||
744 | nla_put_u32(skb, TCA_FQ_FLOW_MAX_RATE, q->flow_max_rate) || | 742 | nla_put_u32(skb, TCA_FQ_FLOW_MAX_RATE, q->flow_max_rate) || |
745 | nla_put_u32(skb, TCA_FQ_BUCKETS_LOG, q->fq_trees_log)) | 743 | nla_put_u32(skb, TCA_FQ_BUCKETS_LOG, q->fq_trees_log)) |
746 | goto nla_put_failure; | 744 | goto nla_put_failure; |