From patchwork Sun Nov 22 07:53:51 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcin Wojtas X-Patchwork-Id: 547289 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 479FF1402C2 for ; Sun, 22 Nov 2015 18:59:02 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=semihalf-com.20150623.gappssmtp.com header.i=@semihalf-com.20150623.gappssmtp.com header.b=zMfGFURn; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751978AbbKVHyx (ORCPT ); Sun, 22 Nov 2015 02:54:53 -0500 Received: from mail-lf0-f45.google.com ([209.85.215.45]:34164 "EHLO mail-lf0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751485AbbKVHx4 (ORCPT ); Sun, 22 Nov 2015 02:53:56 -0500 Received: by lffu14 with SMTP id u14so91375523lff.1 for ; Sat, 21 Nov 2015 23:53:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Vz43JvDNolIlUHa3PbXip2iZ1RuonKx/SKB0tBcKYHI=; b=zMfGFURnPvwD+zOy0MfqOSnH5ui1RkufFAUZ4hoVKhxPtB6tiy6x00oLey8M2hh2p5 OCE4kYVSb2tvXT1g7X8c5t1UAjeqbwECjBzya1gMCjcItDrau/7iN+XOtRtw7jYkBf/m CW2JbakIBz7yPIfg0cFIcGJ1zgrG16wPbU7mk11PVhM4ckUN+si1eVwexLQMaODjSlf5 E8RB43rErez+k3A5izg93pJhAOYJ/1+FROagryg4KpTzpJs3bSDSDWAzb1kFQvi9LPkf mad8lOg28DNYsMCfBGxPKO2bJgih6j8mVc73drmdSv7LkTc666FTvfZUu1IczOESpvVc ndOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Vz43JvDNolIlUHa3PbXip2iZ1RuonKx/SKB0tBcKYHI=; b=RVuSc/hV/q9YMfoStv1a9FBkrrN96g8IHH0NA3ZktgdyQ9ISx6wHR4/KxVwQe+lUiq u43aBIqAMlO9Ux1KIsUfprI2hv8x/WO+Ru++ikUJF7dlyhA7HglClgz27z76J8MNRMZ2 Lqv6zq8rZQIXAGeONeO57bxjzhsBNOR1UCVP2ifxWzFINkqm1LtubffUXp+Uz+nc0VHH zMhcgJ6IrqhXtLCieAJO5u9BppLj1tJEVHXuVsBAO27n7ycScpngwZTkfSn5iHcUUmf2 VYsZ7d3x8lmkR1xZvr2YKkHdL7PjucZDVH+N7RqI2Gli55hvgQhecquLe5BGSMmCgDYj t5DQ== X-Gm-Message-State: ALoCoQkQi+SJ4qD73KRnB2fRsH7V5l2j/ZAv/dlCQmh63GP6MQ32eDtH+BEZK3gQJllNU/fe7/k1 X-Received: by 10.25.135.195 with SMTP id j186mr7582044lfd.141.1448178834874; Sat, 21 Nov 2015 23:53:54 -0800 (PST) Received: from enkidu.semihalf.local (cardhu.semihalf.com. [213.17.239.108]) by smtp.gmail.com with ESMTPSA id y79sm1010840lfd.45.2015.11.21.23.53.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 21 Nov 2015 23:53:54 -0800 (PST) From: Marcin Wojtas To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org Cc: davem@davemloft.net, linux@arm.linux.org.uk, sebastian.hesselbarth@gmail.com, andrew@lunn.ch, jason@lakedaemon.net, thomas.petazzoni@free-electrons.com, gregory.clement@free-electrons.com, simon.guinot@sequanux.org, nadavh@marvell.com, alior@marvell.com, xswang@marvell.com, myair@marvell.com, nitroshift@yahoo.com, mw@semihalf.com, jaz@semihalf.com, tn@semihalf.com Subject: [PATCH 05/13] net: mvneta: add xmit_more support Date: Sun, 22 Nov 2015 08:53:51 +0100 Message-Id: <1448178839-3541-6-git-send-email-mw@semihalf.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1448178839-3541-1-git-send-email-mw@semihalf.com> References: <1448178839-3541-1-git-send-email-mw@semihalf.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Simon Guinot Basing on xmit_more flag of the skb, TX descriptors can be concatenated before flushing. This commit delay Tx descriptor flush if the queue is running and if there is more skb's to send. Signed-off-by: Simon Guinot --- drivers/net/ethernet/marvell/mvneta.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c index f079b13..9c9e858 100644 --- a/drivers/net/ethernet/marvell/mvneta.c +++ b/drivers/net/ethernet/marvell/mvneta.c @@ -467,6 +467,7 @@ struct mvneta_tx_queue { * descriptor ring */ int count; + int pending; int tx_stop_threshold; int tx_wake_threshold; @@ -751,8 +752,9 @@ static void mvneta_txq_pend_desc_add(struct mvneta_port *pp, /* Only 255 descriptors can be added at once ; Assume caller * process TX desriptors in quanta less than 256 */ - val = pend_desc; + val = pend_desc + txq->pending; mvreg_write(pp, MVNETA_TXQ_UPDATE_REG(txq->id), val); + txq->pending = 0; } /* Get pointer to next TX descriptor to be processed (send) by HW */ @@ -1857,11 +1859,14 @@ out: struct netdev_queue *nq = netdev_get_tx_queue(dev, txq_id); txq->count += frags; - mvneta_txq_pend_desc_add(pp, txq, frags); - if (txq->count >= txq->tx_stop_threshold) netif_tx_stop_queue(nq); + if (!skb->xmit_more || netif_xmit_stopped(nq)) + mvneta_txq_pend_desc_add(pp, txq, frags); + else + txq->pending += frags; + u64_stats_update_begin(&stats->syncp); stats->tx_packets++; stats->tx_bytes += len;