From patchwork Sun Oct 15 16:23:41 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roman Yeryomin X-Patchwork-Id: 826015 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yFRhp0WLgz9t3B for ; Mon, 16 Oct 2017 03:28:26 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751898AbdJOQ2L (ORCPT ); Sun, 15 Oct 2017 12:28:11 -0400 Received: from s1l1v.rtu.lv ([213.175.92.62]:52619 "EHLO mail.pbx.lv" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1751682AbdJOQ2K (ORCPT ); Sun, 15 Oct 2017 12:28:10 -0400 Received: from ubrain.corp.ubnt.com (unknown [213.175.92.61]) by mail.pbx.lv (MailSystem) with ESMTPSA id AC4B01918A7 for ; Sun, 15 Oct 2017 19:23:02 +0300 (EEST) From: Roman Yeryomin To: netdev Subject: [PATCH net-next 06/10] net: korina: optimize tx descriptor flags processing Date: Sun, 15 Oct 2017 19:23:41 +0300 Message-Id: <20171015162341.986-1-roman@advem.lv> X-Mailer: git-send-email 2.11.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Signed-off-by: Roman Yeryomin --- drivers/net/ethernet/korina.c | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/drivers/net/ethernet/korina.c b/drivers/net/ethernet/korina.c index 59d4554c43c9..a076b0c49e6e 100644 --- a/drivers/net/ethernet/korina.c +++ b/drivers/net/ethernet/korina.c @@ -342,43 +342,33 @@ static void korina_tx(struct net_device *dev) } devcs = lp->td_ring[lp->tx_next_done].devcs; - if ((devcs & (ETH_TX_FD | ETH_TX_LD)) != - (ETH_TX_FD | ETH_TX_LD)) { - dev->stats.tx_errors++; - dev->stats.tx_dropped++; - /* Should never happen */ - printk(KERN_ERR "%s: split tx ignored\n", - dev->name); - } else if (devcs & ETH_TX_TOK) { - dev->stats.tx_packets++; - dev->stats.tx_bytes += - lp->tx_skb[lp->tx_next_done]->len; - } else { + if (!(devcs & ETH_TX_TOK)) { dev->stats.tx_errors++; dev->stats.tx_dropped++; /* Underflow */ if (devcs & ETH_TX_UND) dev->stats.tx_fifo_errors++; - /* Oversized frame */ if (devcs & ETH_TX_OF) dev->stats.tx_aborted_errors++; - /* Excessive deferrals */ if (devcs & ETH_TX_ED) dev->stats.tx_carrier_errors++; - /* Collisions: medium busy */ if (devcs & ETH_TX_EC) dev->stats.collisions++; - /* Late collision */ if (devcs & ETH_TX_LC) dev->stats.tx_window_errors++; + + goto next; } + dev->stats.tx_packets++; + dev->stats.tx_bytes += lp->tx_skb[lp->tx_next_done]->len; +next: /* We must always free the original skb */ if (lp->tx_skb[lp->tx_next_done]) { dev_kfree_skb_any(lp->tx_skb[lp->tx_next_done]); @@ -394,7 +384,6 @@ static void korina_tx(struct net_device *dev) /* Go on to next transmission */ lp->tx_next_done = (lp->tx_next_done + 1) & KORINA_TDS_MASK; td = &lp->td_ring[lp->tx_next_done]; - } /* Clear the DMA status register */