From patchwork Wed Mar 17 09:40:10 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yegor Yefremov X-Patchwork-Id: 47924 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.180.67]) by ozlabs.org (Postfix) with ESMTP id 5DEC7B7D47 for ; Wed, 17 Mar 2010 20:40:19 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753940Ab0CQJkO (ORCPT ); Wed, 17 Mar 2010 05:40:14 -0400 Received: from mail-ew0-f220.google.com ([209.85.219.220]:43940 "EHLO mail-ew0-f220.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753860Ab0CQJkM (ORCPT ); Wed, 17 Mar 2010 05:40:12 -0400 Received: by ewy20 with SMTP id 20so308737ewy.1 for ; Wed, 17 Mar 2010 02:40:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=nPVmjdsHNYWUR94JLNu/72QhSd8CNaY6Othyy7Roy44=; b=RPxxbsYTg3SHr6JKdxlpQPxgroxFpk+Ezx8WjOoGmexPvgTx2qDnXn7l1LeKaUPswO TuBDSG0HrLM2NV3oT9+fJGyd/6CB61hc1ysz6dSfhL2pc7SoWS3BLfe2ijylZ1HuqIch 9eYQ6KLgUVmgktbsWpWvLNfsMbt3EwGbpsVxQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=Uy3lAGGO2Wy4JKW1Stq0xMGhhHfner6xViz6Tj0AuPq+qly/9+seKku75iK/jIkx8V e60HvlkIdekj8LeVZ0qG4prqS440rq7lU8+Qhif0xXXTUpLWOV2memVvbMfhQzZbCm9F HXWGLD0HHghBiofOk5AnqQqrJaESEZotrkvUs= MIME-Version: 1.0 Received: by 10.213.54.147 with SMTP id q19mr503695ebg.12.1268818810562; Wed, 17 Mar 2010 02:40:10 -0700 (PDT) In-Reply-To: References: <1268754720.3094.55.camel@edumazet-laptop> Date: Wed, 17 Mar 2010 10:40:10 +0100 Message-ID: Subject: Re: [PATCH 1/1] KS8695: update ksp->next_rx_desc_read at the end of rx loop From: Yegor Yefremov To: Eric Dumazet Cc: netdev , davem@davemloft.net Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org KS8695: update ksp->next_rx_desc_read at the end of rx loop There is no need to adjust the next rx descriptor after each packet, so do it only once at the end of the routine. Signed-off-by: Eric Dumazet Signed-off-by: Yegor Yefremov the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Index: linux-2.6.34-rc1/drivers/net/arm/ks8695net.c =================================================================== --- linux-2.6.34-rc1.orig/drivers/net/arm/ks8695net.c +++ linux-2.6.34-rc1/drivers/net/arm/ks8695net.c @@ -449,11 +449,10 @@ ks8695_rx_irq(int irq, void *dev_id) } /** - * ks8695_rx - Receive packets called by NAPI poll method + * ks8695_rx - Receive packets called by NAPI poll method * @ksp: Private data for the KS8695 Ethernet - * @budget: The max packets would be receive + * @budget: Number of packets allowed to process */ - static int ks8695_rx(struct ks8695_priv *ksp, int budget) { struct net_device *ndev = ksp->ndev; @@ -461,7 +460,6 @@ static int ks8695_rx(struct ks8695_priv int buff_n; u32 flags; int pktlen; - int last_rx_processed = -1; int received = 0; buff_n = ksp->next_rx_desc_read; @@ -471,6 +469,7 @@ static int ks8695_rx(struct ks8695_priv cpu_to_le32(RDES_OWN)))) { rmb(); flags = le32_to_cpu(ksp->rx_ring[buff_n].status); + /* Found an SKB which we own, this means we * received a packet */ @@ -533,23 +532,18 @@ rx_failure: ksp->rx_ring[buff_n].status = cpu_to_le32(RDES_OWN); rx_finished: received++; - /* And note this as processed so we can start - * from here next time - */ - last_rx_processed = buff_n; buff_n = (buff_n + 1) & MAX_RX_DESC_MASK; - /*And note which RX descriptor we last did */ - if (likely(last_rx_processed != -1)) - ksp->next_rx_desc_read = - (last_rx_processed + 1) & - MAX_RX_DESC_MASK; } + + /* And note which RX descriptor we last did */ + ksp->next_rx_desc_read = buff_n; + /* And refill the buffers */ ks8695_refill_rxbuffers(ksp); - /* Kick the RX DMA engine, in case it became - * suspended */ + /* Kick the RX DMA engine, in case it became suspended */ ks8695_writereg(ksp, KS8695_DRSC, 0); + return received; } -- To unsubscribe from this list: send the line "unsubscribe netdev" in