From patchwork Thu Jun 23 05:54:18 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sunil Kovvuri X-Patchwork-Id: 639497 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 3rZrKV5DM5z9t1y for ; Thu, 23 Jun 2016 15:55:26 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=IU8Bt53z; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751568AbcFWFzY (ORCPT ); Thu, 23 Jun 2016 01:55:24 -0400 Received: from mail-pa0-f65.google.com ([209.85.220.65]:33978 "EHLO mail-pa0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751138AbcFWFzU (ORCPT ); Thu, 23 Jun 2016 01:55:20 -0400 Received: by mail-pa0-f65.google.com with SMTP id us13so5660246pab.1; Wed, 22 Jun 2016 22:55:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=S153XjNpmPhqiJYyK2LqwisG1XYGFR2nHSqP+t8zR+I=; b=IU8Bt53zW+icIjvGrK8ApKvlKFpoBgw7b+NuKUN4MhDtTsd65kKtV758Um3bnXKP7H DIjzJe4C5uIF3WeGuwQu4+UhnkFGKM1suPc+8v7nULlmfnQK/5dqMMN7/04VFBCHtgWu 7FT83KmAWmJQq2cDM7mGr2jfED/M3zecG3pD9zAZdLbmBkDqIkNYL82WE8dLLJr3TkOr iuKekOwMsHpxaJGa9T4OKQJLtbqIvxxzbVA4AqUMLQ5eql0KtUnT17+R7QNS+FF6HpAJ UNQ6FN1ncZvrAVSr+YWnA5D/tj70HsXiusqpVW6k3GG4foJZFw8piDbrz1irj9HteteH mXhw== 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=S153XjNpmPhqiJYyK2LqwisG1XYGFR2nHSqP+t8zR+I=; b=DkmKNPU/EBbMrE9fSWeRDDeX/sXl9Fi2WnI8qgK+vILyP3rIaM8toGFxqRT9W+AAeU zySTKNq7vshCaNWtMZQj/6+88MJUTYIfZ9wLhx7Ow3mSjNAyRdXigYO0LIEA6TsY1uA2 Juj0e0evHfvdc154DZdTE3+FRrLubl8le5mjgsG9qnxFNwf4KXkWDDLt4NUxr0+Kk/FF OCMQL3n30gHLQE8KAv/KNpIk5I5J2BhTts3Bnzg9j8zCSIkEbM7sM4YV3pMTuJ+YjPLS MkLjyQJpB3wh8x/SVcmtIy41E2xHdt1IsIy35hIFVMBU1C6wx9QBmNkuiw9tCUGXSo1V EEiw== X-Gm-Message-State: ALyK8tI5W3AA6FGV55LyQE1jbAvQJ0W74t81keu4gQM1amZQtO63zdaLlVV9AT4LSlofSQ== X-Received: by 10.66.149.99 with SMTP id tz3mr40857828pab.128.1466661320015; Wed, 22 Jun 2016 22:55:20 -0700 (PDT) Received: from machine421.in.caveonetworks.com ([14.140.2.178]) by smtp.googlemail.com with ESMTPSA id 69sm3761611pfc.90.2016.06.22.22.55.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 22 Jun 2016 22:55:19 -0700 (PDT) From: sunil.kovvuri@gmail.com To: netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, robert.richter@caviumnetworks.com, Naveen.Reddy@cavium.com, Sunil Goutham Subject: [PATCH 2/2] net: thunderx: Fix TL4 configuration for secondary Qsets Date: Thu, 23 Jun 2016 11:24:18 +0530 Message-Id: <1466661258-349-3-git-send-email-sunil.kovvuri@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1466661258-349-1-git-send-email-sunil.kovvuri@gmail.com> References: <1466661258-349-1-git-send-email-sunil.kovvuri@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Sunil Goutham TL4 calculation for a given SQ of secondary Qsets is incorrect and goes out of bounds and also for some SQ's TL4 chosen will transmit data via a different BGX interface and not same as primary Qset's interface. This patch fixes this issue. Signed-off-by: Sunil Goutham --- drivers/net/ethernet/cavium/thunder/nic_main.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/cavium/thunder/nic_main.c b/drivers/net/ethernet/cavium/thunder/nic_main.c index 95f17f8..16ed203 100644 --- a/drivers/net/ethernet/cavium/thunder/nic_main.c +++ b/drivers/net/ethernet/cavium/thunder/nic_main.c @@ -499,6 +499,7 @@ static void nic_tx_channel_cfg(struct nicpf *nic, u8 vnic, u32 rr_quantum; u8 sq_idx = sq->sq_num; u8 pqs_vnic; + int svf; if (sq->sqs_mode) pqs_vnic = nic->pqs_vf[vnic]; @@ -511,10 +512,19 @@ static void nic_tx_channel_cfg(struct nicpf *nic, u8 vnic, /* 24 bytes for FCS, IPG and preamble */ rr_quantum = ((NIC_HW_MAX_FRS + 24) / 4); - tl4 = (lmac * NIC_TL4_PER_LMAC) + (bgx * NIC_TL4_PER_BGX); + if (!sq->sqs_mode) { + tl4 = (lmac * NIC_TL4_PER_LMAC) + (bgx * NIC_TL4_PER_BGX); + } else { + for (svf = 0; svf < MAX_SQS_PER_VF; svf++) { + if (nic->vf_sqs[pqs_vnic][svf] == vnic) + break; + } + tl4 = (MAX_LMAC_PER_BGX * NIC_TL4_PER_LMAC); + tl4 += (lmac * NIC_TL4_PER_LMAC * MAX_SQS_PER_VF); + tl4 += (svf * NIC_TL4_PER_LMAC); + tl4 += (bgx * NIC_TL4_PER_BGX); + } tl4 += sq_idx; - if (sq->sqs_mode) - tl4 += vnic * 8; tl3 = tl4 / (NIC_MAX_TL4 / NIC_MAX_TL3); nic_reg_write(nic, NIC_PF_QSET_0_127_SQ_0_7_CFG2 |