From patchwork Tue Dec 10 15:29:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Sebastian, Selwin" X-Patchwork-Id: 63703 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id AA071A04F0; Tue, 10 Dec 2019 10:59:04 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EE28C37A2; Tue, 10 Dec 2019 10:59:03 +0100 (CET) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-eopbgr760071.outbound.protection.outlook.com [40.107.76.71]) by dpdk.org (Postfix) with ESMTP id 3EF66A3 for ; Tue, 10 Dec 2019 10:59:02 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bYNxGx6ubpfhzGTR7n+9nunTQ271hKn97SGbyXEdJp+l4Tj+zLBHzL98/MieRTKUEW12/Ph/J+vkiv4rZDm+BIa82HvgvRbgg9AsLGn2J9ipPb4s67UhGajEJUCXV7dKsrdR0gjgFQFETOg+Y6lDkjxZJk34Ql5AxLw2pBaSa0AkMc3NZBJuEc/vP7MosZsauBvKmPv43Y1Lo89dsfix9hrbeC3OAJpsCRnc+upKBoDE1RpIIG7qGZyIz2nSyfJduQnHUt25DCxm9EM5mWBYjA4PuWusYgM8g5jjzNfsQ4vhhcXO6/bUsTOCjJTZcfM1Gmh4xWIPU6bKtnIHywmgoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CqpX7XNG62xocbcby9qFrjkvTdbVYZnoHjUPfhHBx6w=; b=Ei1bJOYSooEbSIuG2m42GJAJo1x6z5+Ao0VrISdgbHEB8qI8gATu4f3QX5sgdrx3QT4yMQtsZColQ21T5Xk0hu3SAS7l8GMtar19oOZZjLGsdyuUYhPlnwK7/C8OpB5CMBBuZj7pRVCuw7/qIisJ/aTFc7ZhVk8QK5/u3HqBYVmgPdJX/THuz72cGehP1wGqWl2gR4Y86GnsTiar5ayIQkuRf9dbSDU2YSzEu7yTHeoUfLBhRoJJLotGHhvaw+Hh2+VMWFZ8xrKkxo7FKgO7B8/8wMA3TNAPH4223S1NmwNSijQRvvz2oaX7ztCRX8S2ac5/XiKn+BFA04tLT7op/A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CqpX7XNG62xocbcby9qFrjkvTdbVYZnoHjUPfhHBx6w=; b=0r7qXUT/O8UL543/yTLptZcgTy6V0lgz7SKIk/YduOQxjPGMY/FEL9wxgCNX4jFLvE1isY28WNJKSk+GngGuqnyocCGT2YVd/jpt7Uv3SBfMjZYXA7oHyWKTukbFiqQPfWOp+wUqVGT21n/oqYHqoHNqCJz35pZHYb7UE3RTXk0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Selwin.Sebastian@amd.com; Received: from MN2PR12MB3518.namprd12.prod.outlook.com (20.179.82.84) by MN2PR12MB3152.namprd12.prod.outlook.com (20.178.242.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2516.14; Tue, 10 Dec 2019 09:59:00 +0000 Received: from MN2PR12MB3518.namprd12.prod.outlook.com ([fe80::40de:440c:c67:47fd]) by MN2PR12MB3518.namprd12.prod.outlook.com ([fe80::40de:440c:c67:47fd%7]) with mapi id 15.20.2516.018; Tue, 10 Dec 2019 09:59:00 +0000 From: Selwin Sebastian To: dev@dpdk.org Cc: Selwin Sebastian , Selwin Sebastian Date: Tue, 10 Dec 2019 20:59:15 +0530 Message-Id: <20191210152915.9544-1-Selwin.Sebastian@amd.com> X-Mailer: git-send-email 2.17.1 X-ClientProxiedBy: MAXPR0101CA0065.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:e::27) To MN2PR12MB3518.namprd12.prod.outlook.com (2603:10b6:208:101::20) MIME-Version: 1.0 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [165.204.157.251] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 237c2ef6-3c32-4f52-ad73-08d77d57944e X-MS-TrafficTypeDiagnostic: MN2PR12MB3152:|MN2PR12MB3152: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4125; X-Forefront-PRVS: 02475B2A01 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4636009)(396003)(39860400002)(366004)(346002)(136003)(376002)(189003)(199004)(1076003)(81156014)(81166006)(2616005)(54906003)(316002)(52116002)(66476007)(305945005)(478600001)(6916009)(6486002)(36756003)(4326008)(6512007)(8676002)(8936002)(66556008)(2906002)(86362001)(66946007)(6506007)(186003)(5660300002)(6666004)(26005); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR12MB3152; H:MN2PR12MB3518.namprd12.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7pZzwrG8TwWl4HEIwHijZlWuHTXHxsjIwcrKTDBnfRKW1og2L2EmMTkqbOS+jzTj0aD+XMcj5HBnCrXVUT61dtoZ7KkLVwuR6ZHZS2UxBzhqM4+AhstG8Z6hVqytRibE0qN5OA4ynBpQz+8d4He1TxNNJUIDQxurx5YtKOkkdiyahXHJvYmkJgVnyrWjEo5qSrX7a/OSEpVabf1hgtnQq9o9uUf0z7EUqc24Y5cnHQqiCVTMH3U6EI2IawlyNqA41KyNIhyzGOK32KiTn+iWw70IUd4MHbdh2xqKhccGdumSIKw0KoLmeB+93QZVQKFI4iFrt+vsFtXGrZ6qlYuw6XCzJvBcnW3mT/tkzb125SXisYTdfw5iZL9ONO8Pv7xjGgQuNZ1lok7FLtIysQxaaO4k0yGCq/oTqeLRtrm111dprzmPJCeDBhMHDu2iRA5D X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 237c2ef6-3c32-4f52-ad73-08d77d57944e X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2019 09:59:00.1624 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UDUwhgCvuev1wkWT97uOAbPkvjJLX9xSeq/d5z1QNbZg5plle8i8fL2XN7uCaJjp0q7d6PRkcw9CQaaFJ42mYw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB3152 Subject: [dpdk-dev] [PATCH v1] net/axgbe: Add a HW quirk for register definitions X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" V1000/R1000 processors are using the same PCI ids for the network device but has altered register definitions for determining the window settings for the indirect PCS access.Add support to check for this hardware and if found use the new register values Signed-off-by: Selwin Sebastian --- drivers/net/axgbe/axgbe_common.h | 2 ++ drivers/net/axgbe/axgbe_ethdev.c | 18 +++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/drivers/net/axgbe/axgbe_common.h b/drivers/net/axgbe/axgbe_common.h index 34f60f156..4a3fbac16 100644 --- a/drivers/net/axgbe/axgbe_common.h +++ b/drivers/net/axgbe/axgbe_common.h @@ -841,6 +841,8 @@ #define PCS_V1_WINDOW_SELECT 0x03fc #define PCS_V2_WINDOW_DEF 0x9060 #define PCS_V2_WINDOW_SELECT 0x9064 +#define PCS_V2_RV_WINDOW_DEF 0x1060 +#define PCS_V2_RV_WINDOW_SELECT 0x1064 /* PCS register entry bit positions and sizes */ #define PCS_V2_WINDOW_DEF_OFFSET_INDEX 6 diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c index d1f160e79..25e182b8d 100644 --- a/drivers/net/axgbe/axgbe_ethdev.c +++ b/drivers/net/axgbe/axgbe_ethdev.c @@ -31,6 +31,7 @@ static int axgbe_dev_info_get(struct rte_eth_dev *dev, #define AMD_PCI_VENDOR_ID 0x1022 #define AMD_PCI_AXGBE_DEVICE_V2A 0x1458 #define AMD_PCI_AXGBE_DEVICE_V2B 0x1459 +extern struct rte_pci_bus rte_pci_bus; int axgbe_logtype_init; int axgbe_logtype_driver; @@ -585,6 +586,7 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev) struct rte_pci_device *pci_dev; uint32_t reg, mac_lo, mac_hi; int ret; + struct rte_pci_device *pdev; eth_dev->dev_ops = &axgbe_eth_dev_ops; eth_dev->rx_pkt_burst = &axgbe_recv_pkts; @@ -605,6 +607,17 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev) pci_dev = RTE_DEV_TO_PCI(eth_dev->device); pdata->pci_dev = pci_dev; + pdev = TAILQ_FIRST(&rte_pci_bus.device_list); + + if (pdev->id.vendor_id == AMD_PCI_VENDOR_ID && + pdev->id.device_id == 0x15d0) { + pdata->xpcs_window_def_reg = PCS_V2_RV_WINDOW_DEF; + pdata->xpcs_window_sel_reg = PCS_V2_RV_WINDOW_SELECT; + } else { + pdata->xpcs_window_def_reg = PCS_V2_WINDOW_DEF; + pdata->xpcs_window_sel_reg = PCS_V2_WINDOW_SELECT; + } + pdata->xgmac_regs = (void *)pci_dev->mem_resource[AXGBE_AXGMAC_BAR].addr; pdata->xprop_regs = (void *)((uint8_t *)pdata->xgmac_regs @@ -620,14 +633,13 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev) pdata->vdata = &axgbe_v2b; /* Configure the PCS indirect addressing support */ - reg = XPCS32_IOREAD(pdata, PCS_V2_WINDOW_DEF); + reg = XPCS32_IOREAD(pdata, pdata->xpcs_window_def_reg); pdata->xpcs_window = XPCS_GET_BITS(reg, PCS_V2_WINDOW_DEF, OFFSET); pdata->xpcs_window <<= 6; pdata->xpcs_window_size = XPCS_GET_BITS(reg, PCS_V2_WINDOW_DEF, SIZE); pdata->xpcs_window_size = 1 << (pdata->xpcs_window_size + 7); pdata->xpcs_window_mask = pdata->xpcs_window_size - 1; - pdata->xpcs_window_def_reg = PCS_V2_WINDOW_DEF; - pdata->xpcs_window_sel_reg = PCS_V2_WINDOW_SELECT; + PMD_INIT_LOG(DEBUG, "xpcs window :%x, size :%x, mask :%x ", pdata->xpcs_window, pdata->xpcs_window_size, pdata->xpcs_window_mask);