@@ -106,7 +106,6 @@ struct fq_sched_data {
106
106
107
107
u64 stat_gc_flows ;
108
108
u64 stat_internal_packets ;
109
- u64 stat_tcp_retrans ;
110
109
u64 stat_throttled ;
111
110
u64 stat_flows_plimit ;
112
111
u64 stat_pkts_too_long ;
@@ -327,62 +326,17 @@ static struct sk_buff *fq_dequeue_head(struct Qdisc *sch, struct fq_flow *flow)
327
326
return skb ;
328
327
}
329
328
330
- /* We might add in the future detection of retransmits
331
- * For the time being, just return false
332
- */
333
- static bool skb_is_retransmit (struct sk_buff * skb )
334
- {
335
- return false;
336
- }
337
-
338
- /* add skb to flow queue
339
- * flow queue is a linked list, kind of FIFO, except for TCP retransmits
340
- * We special case tcp retransmits to be transmitted before other packets.
341
- * We rely on fact that TCP retransmits are unlikely, so we do not waste
342
- * a separate queue or a pointer.
343
- * head-> [retrans pkt 1]
344
- * [retrans pkt 2]
345
- * [ normal pkt 1]
346
- * [ normal pkt 2]
347
- * [ normal pkt 3]
348
- * tail-> [ normal pkt 4]
349
- */
350
329
static void flow_queue_add (struct fq_flow * flow , struct sk_buff * skb )
351
330
{
352
- struct sk_buff * prev , * head = flow -> head ;
331
+ struct sk_buff * head = flow -> head ;
353
332
354
333
skb -> next = NULL ;
355
- if (!head ) {
334
+ if (!head )
356
335
flow -> head = skb ;
357
- flow -> tail = skb ;
358
- return ;
359
- }
360
- if (likely (!skb_is_retransmit (skb ))) {
336
+ else
361
337
flow -> tail -> next = skb ;
362
- flow -> tail = skb ;
363
- return ;
364
- }
365
338
366
- /* This skb is a tcp retransmit,
367
- * find the last retrans packet in the queue
368
- */
369
- prev = NULL ;
370
- while (skb_is_retransmit (head )) {
371
- prev = head ;
372
- head = head -> next ;
373
- if (!head )
374
- break ;
375
- }
376
- if (!prev ) { /* no rtx packet in queue, become the new head */
377
- skb -> next = flow -> head ;
378
- flow -> head = skb ;
379
- } else {
380
- if (prev == flow -> tail )
381
- flow -> tail = skb ;
382
- else
383
- skb -> next = prev -> next ;
384
- prev -> next = skb ;
385
- }
339
+ flow -> tail = skb ;
386
340
}
387
341
388
342
static int fq_enqueue (struct sk_buff * skb , struct Qdisc * sch ,
@@ -401,8 +355,6 @@ static int fq_enqueue(struct sk_buff *skb, struct Qdisc *sch,
401
355
}
402
356
403
357
f -> qlen ++ ;
404
- if (skb_is_retransmit (skb ))
405
- q -> stat_tcp_retrans ++ ;
406
358
qdisc_qstats_backlog_inc (sch , skb );
407
359
if (fq_flow_is_detached (f )) {
408
360
struct sock * sk = skb -> sk ;
@@ -874,7 +826,7 @@ static int fq_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
874
826
875
827
st .gc_flows = q -> stat_gc_flows ;
876
828
st .highprio_packets = q -> stat_internal_packets ;
877
- st .tcp_retrans = q -> stat_tcp_retrans ;
829
+ st .tcp_retrans = 0 ;
878
830
st .throttled = q -> stat_throttled ;
879
831
st .flows_plimit = q -> stat_flows_plimit ;
880
832
st .pkts_too_long = q -> stat_pkts_too_long ;
0 commit comments