diff --git a/net/sched/sch_fq.c b/net/sched/sch_fq.c
index 567df8fcaf703e69ea6b1adaa114740239c9d30b..4f0104243cc236e3626f2b527dbab90d408e6c40 100644
--- a/net/sched/sch_fq.c
+++ b/net/sched/sch_fq.c
@@ -546,6 +546,7 @@ static struct sk_buff *fq_dequeue(struct Qdisc *sch)
 			fq_flow_set_throttled(q, f);
 			goto begin;
 		}
+		prefetch(&skb->end);
 		if ((s64)(now - time_next_packet - q->ce_threshold) > 0) {
 			INET_ECN_set_ce(skb);
 			q->stat_ce_mark++;
@@ -562,7 +563,6 @@ static struct sk_buff *fq_dequeue(struct Qdisc *sch)
 		}
 		goto begin;
 	}
-	prefetch(&skb->end);
 	plen = qdisc_pkt_len(skb);
 	f->credit -= plen;