From patchwork Fri Sep 19 00:43:22 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Duyck, Alexander H" X-Patchwork-Id: 580 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id EFC16DDED2 for ; Fri, 19 Sep 2008 10:43:29 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755655AbYISAnY (ORCPT ); Thu, 18 Sep 2008 20:43:24 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755825AbYISAnY (ORCPT ); Thu, 18 Sep 2008 20:43:24 -0400 Received: from mga14.intel.com ([143.182.124.37]:12733 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755623AbYISAnY (ORCPT ); Thu, 18 Sep 2008 20:43:24 -0400 Received: from azsmga001.ch.intel.com ([10.2.17.19]) by azsmga102.ch.intel.com with ESMTP; 18 Sep 2008 17:43:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.32,424,1217833200"; d="scan'208";a="48446819" Received: from orsmsx334.amr.corp.intel.com (HELO orsmsx334.jf.intel.com) ([10.22.226.45]) by azsmga001.ch.intel.com with ESMTP; 18 Sep 2008 17:43:23 -0700 Received: from localhost.localdomain ([10.23.35.60]) by orsmsx334.jf.intel.com with Microsoft SMTPSVC(6.0.3790.1830); Thu, 18 Sep 2008 17:43:22 -0700 Received: from localhost.localdomain (gitlad [127.0.0.1]) by localhost.localdomain (8.14.2/8.14.2) with ESMTP id m8J0hMkb010032; Thu, 18 Sep 2008 17:43:22 -0700 From: Alexander Duyck Subject: [PATCH] multiq: requeue should rewind the current_band To: netdev@vger.kernel.org Cc: davem@davemloft.net Date: Thu, 18 Sep 2008 17:43:22 -0700 Message-ID: <20080919004322.10002.33219.stgit@localhost.localdomain> User-Agent: StGIT/0.14.2 MIME-Version: 1.0 X-OriginalArrivalTime: 19 Sep 2008 00:43:22.0656 (UTC) FILETIME=[B7FF0A00:01C919F0] Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Currently dequeueing a packet and requeueing the same packet will cause a different packet to be pulled on the next dequeue. This change forces requeue to rewind the current_band. Signed-off-by: Alexander Duyck --- net/sched/sch_multiq.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/net/sched/sch_multiq.c b/net/sched/sch_multiq.c index 5d9cd68..915f314 100644 --- a/net/sched/sch_multiq.c +++ b/net/sched/sch_multiq.c @@ -97,6 +97,7 @@ static int multiq_requeue(struct sk_buff *skb, struct Qdisc *sch) { struct Qdisc *qdisc; + struct multiq_sched_data *q = qdisc_priv(sch); int ret; qdisc = multiq_classify(skb, sch, &ret); @@ -113,6 +114,10 @@ multiq_requeue(struct sk_buff *skb, struct Qdisc *sch) if (ret == NET_XMIT_SUCCESS) { sch->q.qlen++; sch->qstats.requeues++; + if (q->curband) + q->curband--; + else + q->curband = q->bands - 1; return NET_XMIT_SUCCESS; } if (net_xmit_drop_count(ret))