From patchwork Tue Apr 15 23:13:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shannon Nelson X-Patchwork-Id: 14052913 X-Patchwork-Delegate: kuba@kernel.org Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2064.outbound.protection.outlook.com [40.107.236.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 87AED23F296; Tue, 15 Apr 2025 23:13:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.64 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744758822; cv=fail; b=jFgdT7wJEyiqQ+4tr0EldALvyDu6vT0iXvd1gd+kr4ZWBZf+O9Sao7RVolIALg56i+B8yRKh6rpDtgp+vQuuzQSy+aIy9rN1UKYLKGrfNsEDVFw98qw3tUIB9/O+2SHP5q0WXP9H7Pu+JmbFEozG1VCtzKlNZsGCsl+MObbK/UM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744758822; c=relaxed/simple; bh=Oui1b2zB2Jk6xHeQiO+dnDK0Wu+K8WUMmZfaP62Wdes=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=b1SphuSUVyQTIESlI3zN6TZ39OPmOnxnqsFH2SeBGooVbbdIjcVMyAfvzZLpOXUWK39ks7f+z9U2Cv7GcHKdBckNxH59u+m4eQWzfQvJVSNQ7m8wsQ6H6sz/Wz6b48302Illw76yj9HBzYqfUfqXRfyoeXP7DEBry5JmvomTOmI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=GJMKQBKY; arc=fail smtp.client-ip=40.107.236.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="GJMKQBKY" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kXFrw4j8H6zHK0RXfih4l2gGel6p3qQkRiCitIW36vyu/91IkOWWQigEYbvFY779ZD9kE0L25C+3HD2x+KoudNncIlVhyfsrl2vp8734+ONGRrJ9MN/FyVaqM9YzSuuFqCFYYnsTtXe/LFEaJAUAa0ckWg3/KOzLkbxeueajtxj7YyLtuca1+bJrVohwkUy7gPOQl2trQEYakmr6OEnxuwNTRFkvnpqGNNDkyeN60BJjlDRd1d7FpwiYMYSJnJMrwPWNXFYiemeUh2c0Q9hufk/TJDCbd8p8EIZE8v7QYLwow4n3nZV4vpqzhTE4npYq5sJJgNxKhl4x2FObSuOX5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tiQpw1fNoCHDR1CaOq2PQNqL9ar0m5QS1Jor0/qZOoY=; b=tJRKaL35Yr26rMGFBuZiRyHzQ6iJHv93MEBqQWQXz3tIo2rGkf+3JSzyRi85mAnn6Nh1DTZNSK8FW5JRjK3fdXyipsS1livR6GIk8hsWZIMyeVQXmCNrdBmdlIo4Ajci8TWxpKw7gOw4lbprTlv3PzSnlXnBm8cwY00b/3YI4fQ6w5UH301SlMw92T90RfSlp83inOl2oaUj5/nCrb+cEdUJV6SqsqbINp/Wh/5PaKadM/plRgExWUZFX6ml4rK6v4Aj3KI5bA5oQI8uACpa+rXuxJj0OqGRn5o2ywtueRA1tx6rFMuyWsTYhqahuIFqi3TlSUbd+dCbS6gVxnbXTQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lunn.ch smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tiQpw1fNoCHDR1CaOq2PQNqL9ar0m5QS1Jor0/qZOoY=; b=GJMKQBKYWGYBJIIuBTxh077spDfJlZ4mlXRC3LWA8+X5YhAww1BQe74neS2pjq1dUhnfr/0gQtYDoi8/hMOCxdqQB6mtZUNm7U2FoDp7pBbxK/E1idghR9XQ2n5moqTUH7xhfx1kAj8Q+5xn7tjJZ3Prw6KO3zSMtJlrpxlA31A= Received: from SN6PR04CA0091.namprd04.prod.outlook.com (2603:10b6:805:f2::32) by CH3PR12MB8904.namprd12.prod.outlook.com (2603:10b6:610:167::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.35; Tue, 15 Apr 2025 23:13:37 +0000 Received: from SA2PEPF00003AEA.namprd02.prod.outlook.com (2603:10b6:805:f2:cafe::1) by SN6PR04CA0091.outlook.office365.com (2603:10b6:805:f2::32) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8632.26 via Frontend Transport; Tue, 15 Apr 2025 23:13:37 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SA2PEPF00003AEA.mail.protection.outlook.com (10.167.248.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Tue, 15 Apr 2025 23:13:37 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 15 Apr 2025 18:13:36 -0500 From: Shannon Nelson To: , , , , , , CC: , Shannon Nelson Subject: [PATCH v2 net-next 1/3] ionic: extend the QSFP module sprom for more pages Date: Tue, 15 Apr 2025 16:13:14 -0700 Message-ID: <20250415231317.40616-2-shannon.nelson@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250415231317.40616-1-shannon.nelson@amd.com> References: <20250415231317.40616-1-shannon.nelson@amd.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003AEA:EE_|CH3PR12MB8904:EE_ X-MS-Office365-Filtering-Correlation-Id: 634b7884-6b84-4ec6-90e1-08dd7c73271c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|36860700013|82310400026|1800799024; X-Microsoft-Antispam-Message-Info: nQ7VQ47Fc0H5e+5mpWTH4d8Pw+wOrQGTtzatLSvUPg6HJGUBFh6BO8jm6V24zj/6cgxCmXZ1P3LGit5/rVYs9K6uJLoAJ07gevSgCNjmNIsi5GclQyxm9RJ0X46kAS9c8eLN1D/RkmlhPjcqA16/bmF4PLPnAxz42vI4hgWEkyhsnSVbHaQZvs9jBUsbAu+sQIse1RXKgfbVVPiTCc/G5rxQ9PtZxt4uXgc6LA4nY0gpcT6kGbBx5jqB/lRIFiQcYsl8NxqM9eja0ZzDOicQ7A+OCeoZ1ysEhBKYOJQqOi4YC4fnB5nivp3QKvRAPp7sXwwfH7HGo7lGLDVYbE+kQadwzzEGto9oIdL86lbsVZtKe1zzEuyRsDnfne0AXZ+topymVYaG9AcCYIxWc18fvvRRFUM8cjgNlJchXILP5UYeO8mcGUiOIEq/Ef5+psxW22nNUqXxAQvrp3pS57AOehqKg5jXe8A7pSu3IwBbZw+Kns+hx0ZGu8oeuRKlPIY5etfSLCqPuNTh9KHP1JqMSyIqX4rugka5ZftBuv9b0HM9wZwHtRPYueQUqrYrU2F7eqJieSfMykSQa1ke3SvYIX3t+DmGljI+zsyLRYneiWLypmGVdo5+KeqM7NfESCevhA6AXiS5PMsx1W7fJisnoD0bwS4uWJsExE0ZNJd/oTbKW7J4HYf60L0o2eJ8mE+z1pQWbkyc1eJTVa1XoqSHMUMCcGxqPn09yG7Bjci5vWmzbZOwwTwl7jQ4W7ZCA1Y935z6vTmjQWnVH27V6Hscy0/Rf2N2w2qq496WHqvbfmm98tBGYCtFs54GDRRRgzQ/UNLf4kOczR3mZNou/BTl7cAdpHRi/eygi35waz+iFrrrRCXyXIph8ps6X6W3B1v/SczRb1cVCUqJManuIP7/brLzhciRNeXfyj8MnMlZNGp6XElrR+TKBm4PsMHZlg7/u0yEf8Q4wyZM/jll7QZ6jhZO5HCqssCNOM3USpUf23+toM81y5SSsWprjnkGj5fqBXi4UiVxo8rlbPNb84652Pu/aNA4z2ZTkCHc4V8KJaq968xGCwu8zid2YBph8aK5RveZe+7MSFwbjHSlePeTK0sSn3d481Vs0pn+7eKaR68ggdzDtP2/fTpIK2ClwHw/fomG6sqFELvtJ9/vyDQeFMA8ALDUk2OVZvw9ALAzzcF6ZchYaNZHc92eODrGCB4Pd4Tld3fHi1Q712jc/xy3aPJhlMQ+1+S1/MaizJ2AIh5D4H3G1rGx8CyolWHkbfkKSUaFbDbEEny4DECiQ3rg5G4mxS8RDmTxvKR5fktabFyuE0sshSkXcUr/BgrDAwVTHIYVGfpBHv4GjweIbVLF1tm4pXSSboO5a6B4e5jJc5M/YUgNr/R6RB/WlecUQiZ8Tn7hZQp0mXCg5SCH+7AQSGubae22t+BmUzlC6uCZL9AhFsU7BtaU1Qso6rIC2KBqNBC2Dbv4DrAh3jA9XgyEjeUL2XkuhQwV9oE7dGtlcDoAtjl4DXsJCVTEA703aEsn X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(36860700013)(82310400026)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2025 23:13:37.5120 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 634b7884-6b84-4ec6-90e1-08dd7c73271c X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003AEA.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8904 X-Patchwork-Delegate: kuba@kernel.org Some QSFP modules have more eeprom to be read by ethtool than the initial high and low page 0 that is currently available in the DSC's ionic sprom[] buffer. Since the current sprom[] is baked into the middle of an existing API struct, to make the high end of page 1 and page 2 available a block is carved from a reserved space of the existing port_info struct and the ionic_get_module_eeprom() service is taught how to get there. Newer firmware writes the additional QSFP page info here, yet this remains backward compatible because older firmware sets this space to all 0 and older ionic drivers do not use the reserved space. Reviewed-by: Brett Creeley Signed-off-by: Shannon Nelson --- .../ethernet/pensando/ionic/ionic_ethtool.c | 66 ++++++++++++++----- .../net/ethernet/pensando/ionic/ionic_if.h | 7 +- 2 files changed, 56 insertions(+), 17 deletions(-) diff --git a/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c b/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c index a2d4336d2766..66f172e28f8b 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c @@ -968,10 +968,13 @@ static int ionic_get_module_info(struct net_device *netdev, break; case SFF8024_ID_QSFP_8436_8636: case SFF8024_ID_QSFP28_8636: - case SFF8024_ID_QSFP_PLUS_CMIS: modinfo->type = ETH_MODULE_SFF_8436; modinfo->eeprom_len = ETH_MODULE_SFF_8436_LEN; break; + case SFF8024_ID_QSFP_PLUS_CMIS: + modinfo->type = ETH_MODULE_SFF_8472; + modinfo->eeprom_len = ETH_MODULE_SFF_8472_LEN; + break; default: netdev_info(netdev, "unknown xcvr type 0x%02x\n", xcvr->sprom[0]); @@ -983,29 +986,20 @@ static int ionic_get_module_info(struct net_device *netdev, return 0; } -static int ionic_get_module_eeprom(struct net_device *netdev, - struct ethtool_eeprom *ee, - u8 *data) +static int ionic_do_module_copy(u8 *dst, u8 *src, u32 len) { - struct ionic_lif *lif = netdev_priv(netdev); - struct ionic_dev *idev = &lif->ionic->idev; - struct ionic_xcvr_status *xcvr; - char tbuf[sizeof(xcvr->sprom)]; + char tbuf[sizeof_field(struct ionic_xcvr_status, sprom)]; int count = 10; - u32 len; /* The NIC keeps the module prom up-to-date in the DMA space * so we can simply copy the module bytes into the data buffer. */ - xcvr = &idev->port_info->status.xcvr; - len = min_t(u32, sizeof(xcvr->sprom), ee->len); - do { - memcpy(data, &xcvr->sprom[ee->offset], len); - memcpy(tbuf, &xcvr->sprom[ee->offset], len); + memcpy(dst, src, len); + memcpy(tbuf, src, len); /* Let's make sure we got a consistent copy */ - if (!memcmp(data, tbuf, len)) + if (!memcmp(dst, tbuf, len)) break; } while (--count); @@ -1016,6 +1010,48 @@ static int ionic_get_module_eeprom(struct net_device *netdev, return 0; } +static int ionic_get_module_eeprom(struct net_device *netdev, + struct ethtool_eeprom *ee, + u8 *data) +{ + struct ionic_lif *lif = netdev_priv(netdev); + struct ionic_dev *idev = &lif->ionic->idev; + u32 start = ee->offset; + u32 err = -EINVAL; + u32 size = 0; + u8 *src; + + if (start < ETH_MODULE_SFF_8079_LEN) { + if (start + ee->len > ETH_MODULE_SFF_8079_LEN) + size = ETH_MODULE_SFF_8079_LEN - start; + else + size = ee->len; + + src = &idev->port_info->status.xcvr.sprom[start]; + err = ionic_do_module_copy(data, src, size); + if (err) + return err; + + data += size; + start += size; + } + + if (start >= ETH_MODULE_SFF_8079_LEN && + start < ETH_MODULE_SFF_8472_LEN) { + size = ee->len - size; + if (start + size > ETH_MODULE_SFF_8472_LEN) + size = ETH_MODULE_SFF_8472_LEN - start; + + start -= ETH_MODULE_SFF_8079_LEN; + src = &idev->port_info->sprom_epage[start]; + err = ionic_do_module_copy(data, src, size); + if (err) + return err; + } + + return err; +} + static int ionic_get_ts_info(struct net_device *netdev, struct kernel_ethtool_ts_info *info) { diff --git a/drivers/net/ethernet/pensando/ionic/ionic_if.h b/drivers/net/ethernet/pensando/ionic/ionic_if.h index 830c8adbfbee..4943ebb27ab3 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_if.h +++ b/drivers/net/ethernet/pensando/ionic/ionic_if.h @@ -2839,6 +2839,7 @@ union ionic_port_identity { * @status: Port status data * @stats: Port statistics data * @mgmt_stats: Port management statistics data + * @sprom_epage: Extended Transceiver sprom, high page 1 and 2 * @rsvd: reserved byte(s) * @pb_stats: uplink pb drop stats */ @@ -2849,8 +2850,10 @@ struct ionic_port_info { struct ionic_port_stats stats; struct ionic_mgmt_port_stats mgmt_stats; }; - /* room for pb_stats to start at 2k offset */ - u8 rsvd[760]; + u8 sprom_epage[256]; + u8 rsvd[504]; + + /* pb_stats must start at 2k offset */ struct ionic_port_pb_stats pb_stats; }; From patchwork Tue Apr 15 23:13:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shannon Nelson X-Patchwork-Id: 14052914 X-Patchwork-Delegate: kuba@kernel.org Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2056.outbound.protection.outlook.com [40.107.244.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 58DD92D8DB7; Tue, 15 Apr 2025 23:13:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.244.56 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744758825; cv=fail; b=FFIbRhXqTfNQJelN+DtWUXaeWSfOJjyM9A5Oj3MtBB56HCts0rIvixKEmgZUDOSvyHCUuUDRGJH9yN6cRUncvzPoRfDOnuGK0XitYfWJzHXn/GcyIXSTyhXegnlj/6RBSLuIfndXovT9BKoHJr+X3M/+6O5GAjn58q+iOJL/h6M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744758825; c=relaxed/simple; bh=TYZgse2Ta/6NRXzM3GGor4kAaSiKEhQKiwIMShq9dG8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=mdcoMzBqnVqMLpMz0LdTrn+5k8vEU+r/NFGRBmL1fHEnqeEjJ2ostErM16UqvEeQcwKdSp+WBC9OOWXKLtwcRTWT2/iiPFUFaNNpUDKkBmt/7tEqkPJ/JpxJ5p829xrfL/Hi3TBON+iIVdv1vrKKMrcQlHRP1WHt/m8u+vF4Dkk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=QDjzpmI4; arc=fail smtp.client-ip=40.107.244.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="QDjzpmI4" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rq8AO1qr2MUEy3+6c2I0CCrUjfmGqPQaXESdLLaUw6e3M3cwlZqShjlwBhqb3Nj4EqFCyk3FAt3MayxZmmBxBN0aE1lZb1RevqcvEgCS35w053aFZB/C683YGgsU9/3pEBs5xWaFRrCHNEYpVBz/KD8+wsgJmPJ6KaQJ9NtfVyX5nnNnfDPqeY8473fbNUG4RKjDZVkRfmXAUCz2Bw2jmeaNGVJ0UhZRW3tavuQUg1uPY+Jpe5onay4xX9GCbv+cLN3pyOBmUwb2wV7ZJpzB1g5MuDecuhfXpM6gzBRCEu0nLZ1qORQ+JhWOtJmAjdXcKov42fgxa7iJS65t+BBRGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MMZPXy5wmXUI6oq9sehRK3Gf+3qqkYLk4Sx+tWbEsn0=; b=oJToK0Keth6AB+/MvOv7ouphkVV1GM/jLg3VAWF4VJowG3F/3esv+fGg+auiTESD4AvV0v3ihQmv4QtXod8eGHb9//DgM6xERp7NDzkqWmZdbblCK8Zct98dta5Bu5oUaVzY+cj8VKFl0K4UYg2EFMFu339Svh7tOQgcsViRZo1PVWeXGem70niElpvGmFmxDINJFMFEZEd9FoXD+OQjVH6HuiR1inmz8laUXFbR5P2DH7rey1pm0LC4dwho7CIAoE00U1xchsnGvy6JN17JBQm8Y/jWdWJteqZAn+w8x4PeaGwLdADiAvmBK0hL0YHBI1iBJBY638RtMWX9Wi5v1A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lunn.ch smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MMZPXy5wmXUI6oq9sehRK3Gf+3qqkYLk4Sx+tWbEsn0=; b=QDjzpmI4oSZGRLfdJPWVgFKpHweFrSjdhqZBTrjdD9bb9LG5uurqqHABQmip9b/26/IwHbxcqwC8oezUm4R7L9MlN2jVyJB5N1xqMOAonjx3URNAZY14SIOSNIHc57W1mdD0cWrb+xAme/auy+U3SDG7lmWYLcQJSl4Z58Pc1os= Received: from SN6PR04CA0082.namprd04.prod.outlook.com (2603:10b6:805:f2::23) by DS0PR12MB8342.namprd12.prod.outlook.com (2603:10b6:8:f9::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.22; Tue, 15 Apr 2025 23:13:38 +0000 Received: from SA2PEPF00003AEA.namprd02.prod.outlook.com (2603:10b6:805:f2:cafe::b) by SN6PR04CA0082.outlook.office365.com (2603:10b6:805:f2::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8632.30 via Frontend Transport; Tue, 15 Apr 2025 23:13:38 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SA2PEPF00003AEA.mail.protection.outlook.com (10.167.248.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Tue, 15 Apr 2025 23:13:38 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 15 Apr 2025 18:13:37 -0500 From: Shannon Nelson To: , , , , , , CC: , Shannon Nelson Subject: [PATCH v2 net-next 2/3] ionic: support ethtool get_module_eeprom_by_page Date: Tue, 15 Apr 2025 16:13:15 -0700 Message-ID: <20250415231317.40616-3-shannon.nelson@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250415231317.40616-1-shannon.nelson@amd.com> References: <20250415231317.40616-1-shannon.nelson@amd.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003AEA:EE_|DS0PR12MB8342:EE_ X-MS-Office365-Filtering-Correlation-Id: f8d18666-aa96-4340-9fcb-08dd7c73278c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: EC2T9k4/tmOFkQc9QZw/RzGx+xPEVGX4wE06onXHdvkoWqZZXiaMUKoMbXqcZjD9DDlbMpArTMbM45FPR1YAZMFXdV9plnaTp3wDJ6g7fVdqHPKV3knJpwET+FzzBI4TrudfUhT4WXoze5AqmL8Y3uR8prXBSKU0JO0fvieE7P3F8oZlg+YKboPq2v4ab4l8jeWXT8AocWY0VAuPCksFDIBJDprFAL5tqhmgioNLuziY0/T9trg3wUetdh26SAz0kknzVgw2NNWwjDznpGNG8aB+3Q3XPKcEuM3xGZgKiblMQ3MfjFqeB3NxG+EkHbVcPazaC29nN94xN1+49DR+0T3s4OrtfQX2zA9G+cVW+Q+wpscXIVUulA0H47mMqH3rakp4VfyDwTUp5kn0d3I5Mo2G91wrre0KaNS1v6psRo1MIXHNsQgtoFotWrKbPpnEmVUpO126S/12kv+BSDn8XGAvxE882x6XXaqaR0uYjGA1vi1MtYWnUAJKscTqya0ctvLERMWxGb5l9cSzngQGzJkehzuv1iGubZhoA7UrrSSPcqPYRbB4ds9DnyMTW2WsBFo1flXdi90riEtWWtcgfK8WikGXYAbTuDTlFMOfhQjth3L21iArqfMkrial3bshjnITvcEpTsdal2PjFP8tIQgETTkJ3nPN53MZfvohSuAfzeICZXqd/TmJ5fwYtFZ0u/JbzeRKgOhZ2rv64dzB+zY7vmbANacBba5nqEDNBNibihnlHn7leoc+CjdJyBXHcL1Q9NO2kVODKIXi8KOjIcpAy4boLpu+aYoNEWTFiYxq3f5rRkzK9MQppycspBITj0K1lok6AX2AcWcZV+RsR9G4qF25dZ4CGsEctmxZsOpSItAv4md43reHnNlRVn/DpBgXcEJNEO9RPbIgdlYvHB0u88ocGORXIMTclAbnlbhitmgUMIaJJPmZhL3jfTMgUqp8FRakqmSIIqu6LttBLV+it+WMeECFzydapl4ceo8MZDrmxuv9kLhIqkj0Skgdv+P27lMltP/Z6ibUpfXnMNnYnyvOpZ0ALzy5zXkQO5SykBXoCOf1QfwGWwTpYENp6ePpqd1EyQoNnVxEXKCodOv8rGLtbec5hBydmeQuqbU0GxqO85zT0pxHwBMqZpcvKMuySaiq8MW0oCPqPWeN1ojZYiGLYGxfZiTjnoV9l4afpncIvEBPcHTVIyA5KStEXM/pscHJBbvgwtcTrhX1YD1fUKsAaDhYspLXX4l1qwEgb9KoXCVJ6OrcSoH8UjECySlo7dFaBSuS4QZi0yce3IpPXBcQ1VXSwlSVG0x1zzHw0d9inQX2rxqk35Dg9bhTAPtVBkGv9Tdz0GPYkj3FuEWFXmTJC6SXocy5lW1MHkq4GFRevcqnpyl7k4TFV69uGm6lw8sa5hsta30MlRjVHQbHREPQtKkk3CHWW1ccy8jSIJ2GgQU+Qpgg/LR4vrQA+zUutVb2k0HZQLHwiVmdattASYmvxPXHyoWL0uoFR+m9bG5qsZBGnr3F66dNtu7h X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(82310400026)(1800799024)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2025 23:13:38.2464 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f8d18666-aa96-4340-9fcb-08dd7c73278c X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003AEA.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8342 X-Patchwork-Delegate: kuba@kernel.org Add support for the newer get_module_eeprom_by_page interface. Only the upper half of the 256 byte page is available for reading, and the firmware puts the two sections into the extended sprom buffer, so a union is used over the extended sprom buffer to make clear which page is to be accessed. With get_module_eeprom_by_page implemented there is no need for the older get_module_info or git_module_eeprom interfaces, so remove them. Reviewed-by: Brett Creeley Signed-off-by: Shannon Nelson --- .../ethernet/pensando/ionic/ionic_ethtool.c | 96 ++++++------------- .../net/ethernet/pensando/ionic/ionic_if.h | 12 ++- 2 files changed, 37 insertions(+), 71 deletions(-) diff --git a/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c b/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c index 66f172e28f8b..0d2ef808237b 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c @@ -948,44 +948,6 @@ static int ionic_get_tunable(struct net_device *netdev, return 0; } -static int ionic_get_module_info(struct net_device *netdev, - struct ethtool_modinfo *modinfo) - -{ - struct ionic_lif *lif = netdev_priv(netdev); - struct ionic_dev *idev = &lif->ionic->idev; - struct ionic_xcvr_status *xcvr; - struct sfp_eeprom_base *sfp; - - xcvr = &idev->port_info->status.xcvr; - sfp = (struct sfp_eeprom_base *) xcvr->sprom; - - /* report the module data type and length */ - switch (sfp->phys_id) { - case SFF8024_ID_SFP: - modinfo->type = ETH_MODULE_SFF_8079; - modinfo->eeprom_len = ETH_MODULE_SFF_8079_LEN; - break; - case SFF8024_ID_QSFP_8436_8636: - case SFF8024_ID_QSFP28_8636: - modinfo->type = ETH_MODULE_SFF_8436; - modinfo->eeprom_len = ETH_MODULE_SFF_8436_LEN; - break; - case SFF8024_ID_QSFP_PLUS_CMIS: - modinfo->type = ETH_MODULE_SFF_8472; - modinfo->eeprom_len = ETH_MODULE_SFF_8472_LEN; - break; - default: - netdev_info(netdev, "unknown xcvr type 0x%02x\n", - xcvr->sprom[0]); - modinfo->type = 0; - modinfo->eeprom_len = ETH_MODULE_SFF_8079_LEN; - break; - } - - return 0; -} - static int ionic_do_module_copy(u8 *dst, u8 *src, u32 len) { char tbuf[sizeof_field(struct ionic_xcvr_status, sprom)]; @@ -1010,46 +972,43 @@ static int ionic_do_module_copy(u8 *dst, u8 *src, u32 len) return 0; } -static int ionic_get_module_eeprom(struct net_device *netdev, - struct ethtool_eeprom *ee, - u8 *data) +static int ionic_get_module_eeprom_by_page(struct net_device *netdev, + const struct ethtool_module_eeprom *page_data, + struct netlink_ext_ack *extack) { struct ionic_lif *lif = netdev_priv(netdev); struct ionic_dev *idev = &lif->ionic->idev; - u32 start = ee->offset; u32 err = -EINVAL; - u32 size = 0; u8 *src; - if (start < ETH_MODULE_SFF_8079_LEN) { - if (start + ee->len > ETH_MODULE_SFF_8079_LEN) - size = ETH_MODULE_SFF_8079_LEN - start; - else - size = ee->len; - - src = &idev->port_info->status.xcvr.sprom[start]; - err = ionic_do_module_copy(data, src, size); - if (err) - return err; + if (!page_data->length) + return -EINVAL; - data += size; - start += size; + if (page_data->bank != 0) { + NL_SET_ERR_MSG_MOD(extack, "Only bank 0 is supported"); + return -EINVAL; } - if (start >= ETH_MODULE_SFF_8079_LEN && - start < ETH_MODULE_SFF_8472_LEN) { - size = ee->len - size; - if (start + size > ETH_MODULE_SFF_8472_LEN) - size = ETH_MODULE_SFF_8472_LEN - start; - - start -= ETH_MODULE_SFF_8079_LEN; - src = &idev->port_info->sprom_epage[start]; - err = ionic_do_module_copy(data, src, size); - if (err) - return err; + switch (page_data->page) { + case 0: + src = &idev->port_info->status.xcvr.sprom[page_data->offset]; + break; + case 1: + src = &idev->port_info->sprom_page1[page_data->offset - 128]; + break; + case 2: + src = &idev->port_info->sprom_page2[page_data->offset - 128]; + break; + default: + return -EOPNOTSUPP; } - return err; + memset(page_data->data, 0, page_data->length); + err = ionic_do_module_copy(page_data->data, src, page_data->length); + if (err) + return err; + + return page_data->length; } static int ionic_get_ts_info(struct net_device *netdev, @@ -1197,8 +1156,7 @@ static const struct ethtool_ops ionic_ethtool_ops = { .set_rxfh = ionic_set_rxfh, .get_tunable = ionic_get_tunable, .set_tunable = ionic_set_tunable, - .get_module_info = ionic_get_module_info, - .get_module_eeprom = ionic_get_module_eeprom, + .get_module_eeprom_by_page = ionic_get_module_eeprom_by_page, .get_pauseparam = ionic_get_pauseparam, .set_pauseparam = ionic_set_pauseparam, .get_fecparam = ionic_get_fecparam, diff --git a/drivers/net/ethernet/pensando/ionic/ionic_if.h b/drivers/net/ethernet/pensando/ionic/ionic_if.h index 4943ebb27ab3..23218208b711 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_if.h +++ b/drivers/net/ethernet/pensando/ionic/ionic_if.h @@ -2839,7 +2839,9 @@ union ionic_port_identity { * @status: Port status data * @stats: Port statistics data * @mgmt_stats: Port management statistics data - * @sprom_epage: Extended Transceiver sprom, high page 1 and 2 + * @sprom_epage: Extended Transceiver sprom + * @sprom_page1: Extended Transceiver sprom, page 1 + * @sprom_page2: Extended Transceiver sprom, page 2 * @rsvd: reserved byte(s) * @pb_stats: uplink pb drop stats */ @@ -2850,7 +2852,13 @@ struct ionic_port_info { struct ionic_port_stats stats; struct ionic_mgmt_port_stats mgmt_stats; }; - u8 sprom_epage[256]; + union { + u8 sprom_epage[256]; + struct { + u8 sprom_page1[128]; + u8 sprom_page2[128]; + }; + }; u8 rsvd[504]; /* pb_stats must start at 2k offset */ From patchwork Tue Apr 15 23:13:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shannon Nelson X-Patchwork-Id: 14052915 X-Patchwork-Delegate: kuba@kernel.org Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2085.outbound.protection.outlook.com [40.107.100.85]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 918AA2D92CB; Tue, 15 Apr 2025 23:13:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.100.85 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744758827; cv=fail; b=LUI9e9mLyibHRqsyqzNdg3e2ldlCMEXpXCIvOt6W059rJT4Fkl2Lswj4bqH8Qbw8XvVDX8TE+DNo1myx+Bk7CZDAy8YQnMdmE4xZKxU83w7XP7mgJy/2GDd6oQPIcFvt8QnkQop6I9x+EJhwpQ6QJR2G0X3T3RL44NKVGGu0qM0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744758827; c=relaxed/simple; bh=HELZUF/HiqBcwEcZT8oQCIuGkMtSYQWFWcpKMqidgcA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=E2CQxm8VG2KR/eT7Wx21qZ52RW1gC4gStkIsN4YTm69miH+7iUqR9duyvKSHG2HSXX4WovP8q+fChs7Xgtrz+WlvQKnFHTBCA3WvP91zCsgL4TCP/XtuMyFcvVhl9EXVqM6AKb6QAMLFabVSnR1P2Oae/mgyHWoCzvcagfwoV1M= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=G4dwv6VU; arc=fail smtp.client-ip=40.107.100.85 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="G4dwv6VU" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pzGmNhmcrwe+++u1Ftj+CW65Ua8KufK/UYInJmzr1daSekKVBFzW1KGrLrsevhnHx7n4yqaUDprNTBWZKbT6I8dEZGyARnHMp2XJGct/Zw2rQoS2LQhYXyF2LY3YVCXdOziQfbH+LWtkBvBTFCdFMrd+0r612ZHKszWyO2auPkJrCYymF9EuBBhuFFvhWqmMEiQpnn8mP2zqaQbPvVycMe/aDr61foqeB9qMRaBSl4IEVnw5FyBkaX1sJnYUpJitCoCIJ4iE+/Dv0+gNWFJyU2hBY+c6el3dW3yThfyFR9FM/0nRSvWeOrPLZMYseYB9OMliJBABABZNiMrJqrS/+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=BG+tYFTQ+62KnMAXcMBSSdy3yJGTixXznloeyg0BVaU=; b=O0lQ4//qqhA5GrvaZcV2pc05CtAVKkcDO71CiQA92BHPs4eEH7ZwEqHjdlU/TYVJ4WXRNsUyU15VSSPOn4kyo9OyGvzrl17sHnJoZt28rdbvXPnuAOI682Z6z//Cz/c6p4PiCXYw5gLknzsJPHG/hrjmCMlXI6D/NZq6lqTUgKSjlz14KXtOVnmJqCLwd6U3sP2tARmimruT8FXlsBdlCEOdpEzvaYLYdh/Pw2w0qb0PKYiOLyyxX4omWI7lH2UJ7mhF8wFrt/BcmsagKaBw5wmw2rt2XeUUEH4DdzoAAMs3N02mOl6OE2Rwb9aIWDGkdM5Huz1aN4ss2irwS0KGeg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lunn.ch smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BG+tYFTQ+62KnMAXcMBSSdy3yJGTixXznloeyg0BVaU=; b=G4dwv6VU3HUL8LfJ753qvpVJgexg742P/T9Em29fJN12zElJQyZeLAEcaIPk3MEeixu7/FXdQMQQBFZDf6LZPqkXzmCMPjmkh391cQFETkjgz/ju1FSuNzfvtxRVyEhmy33GJsVZDzl5xsRHmglraxf+ny7M1dScVXJ0xL80fHA= Received: from SA0PR11CA0099.namprd11.prod.outlook.com (2603:10b6:806:d1::14) by BN7PPF521FFE181.namprd12.prod.outlook.com (2603:10b6:40f:fc02::6d0) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.35; Tue, 15 Apr 2025 23:13:40 +0000 Received: from SA2PEPF00003AE8.namprd02.prod.outlook.com (2603:10b6:806:d1:cafe::c0) by SA0PR11CA0099.outlook.office365.com (2603:10b6:806:d1::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8632.34 via Frontend Transport; Tue, 15 Apr 2025 23:13:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SA2PEPF00003AE8.mail.protection.outlook.com (10.167.248.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8655.12 via Frontend Transport; Tue, 15 Apr 2025 23:13:39 +0000 Received: from driver-dev1.pensando.io (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 15 Apr 2025 18:13:38 -0500 From: Shannon Nelson To: , , , , , , CC: , Shannon Nelson Subject: [PATCH v2 net-next 3/3] ionic: add module eeprom channel data to ionic_if and ethtool Date: Tue, 15 Apr 2025 16:13:16 -0700 Message-ID: <20250415231317.40616-4-shannon.nelson@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250415231317.40616-1-shannon.nelson@amd.com> References: <20250415231317.40616-1-shannon.nelson@amd.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003AE8:EE_|BN7PPF521FFE181:EE_ X-MS-Office365-Filtering-Correlation-Id: 5b714306-11d1-4b9b-3eb3-08dd7c732827 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: 2PlPPLWC+haWKwwN8POgsP/2vB77oCZB2jzFJJVxiEM4H4OQ72Pc732wIGfziRQSSDL0prb+YBS6PR2E4y5CXbUVK0ISAMH68cOeBHj6oRLJqvj9dsJ2ODr7z9iTx6l2QxRpETFzrpfVkpW4cULE6xQMH/IWQreq6bDNed13/9uPcsU0xPHrRO3eJ0URxdtMwWKz5LKZkqF4VAYfnfeUMwa+waGBeIhby6bWw+oX2QiWzy5bNl8M2n/MzEj+PACbG38ZKt+84SHHf3N0YGXT+TSwg5r2Lwe4RCGI8sExjHeNUhY+8SVaWnvyuuhA7d5dMwr8sccy3V0vV+mA69UJzc4qzGwyK0hsJm9tTeRSb1rv+lP+zE/961tfigQ0sRanCeEdqAYnaSPcEmJfwaMI/6oPeZYPs/g9503ACs9Igo2PWobRjMp3g8YNtN+G6s+Hf477Z067rjN/N8JimMNi9DajnzDi/pseMuhaNTdHOMiea80n7eL26/2TbHdY2NmixSPrS+YD9VEb1uLKGCrfY7T3XJedTt/pL5JUN/aHeA6wYAFHA/eWkZ+EN4JxHCYkv8thEDpOhPLXUCfNbnFLVuI50UytuY5W0+83hMC1dWhnWSE50HBT5etsL+0bHrH6P2tFXLNQN75CZqNUYmxcvT/zC+IQTh+pGbKMEDJMUXRA+SYgE0h11raw8qP70STSJ2bJAT6fWwrSd9E9oUKkILyStf9/6oLRVcSoXWnIwaNJRA2lgV2vUpT6vg+6a0UBhjngeb4rSRSYVn7FlmQjCWFVPCFOnHzwqdUme0nT7rkaFjhn2jk6LurOkSpPzYeqiQrCSSRCmLvItLQNB12XF6AiBOVMI9q1DmmLUix6UiVi7m7I59nELwYVBZkRjrYDmzPv/v5jyCtiV+EjCTghG13fbQCwXdhRDwh7dl8cq1bv9+FlRTFZtg7R2hHKHu7tm/rR7X1tuC7wFBEVDmUgY/JpZ3FmuiYz+AlVByfnUE0wVU2+zgPS8MoHDMxbshnZBtuPgQYk1On7g/kPTQuU1oWfIM0JF9/Q201/AyZS1KLJriwS/D2F8GafmgiY3YTNKHkXn4SsVCYhLAZj+qs00mnR0eRVjsTje56qDCD4bAFKNlRr459RTtJm6hhGL8UzmFk/8ATK2BsyCHe/bHzNj3WlNYbolJQbsOtk/46CLwZ+yEJW4g+a94bNqsP1eBrEgm5Amb6+J8Ut8wXOwnQrxVcO6amlcZfdtLoJ4gbihdq1ESvDcHidvniAMSzsUuSdPExxYXebFISEzubLdkFnom29abldf+cIZHruD/1yPyzd/jsqqLcGp8hMxTGRGFPOnMjVtzGcwGGNlZ8wRm0Rv/dPa5B89WmuAv70ZhsU23tEhjZcxyrQR/dFYAJrfNLTXXGuJ+wXzkBaSKrT6KYf3bHefmZbheA/7TIqI780HXfp1lA3W0ITvKwgrqU3o3xe/k0ZDTCzRip5H4CzIx8nmSTClBSdUgG/tfxnB1euyNLH8Od8497zSyWMDDzeJHCp X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(1800799024)(36860700013)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Apr 2025 23:13:39.2441 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5b714306-11d1-4b9b-3eb3-08dd7c732827 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003AE8.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PPF521FFE181 X-Patchwork-Delegate: kuba@kernel.org Make the CMIS module type's page 17 channel data available for ethtool to request. As done previously, carve space for this data from the port_info reserved space. In the future, if additional pages are needed, a new firmware AdminQ command will be added for accessing random pages. Reviewed-by: Brett Creeley Signed-off-by: Shannon Nelson --- drivers/net/ethernet/pensando/ionic/ionic_ethtool.c | 3 +++ drivers/net/ethernet/pensando/ionic/ionic_if.h | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c b/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c index 0d2ef808237b..92f30ff2d631 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c @@ -999,6 +999,9 @@ static int ionic_get_module_eeprom_by_page(struct net_device *netdev, case 2: src = &idev->port_info->sprom_page2[page_data->offset - 128]; break; + case 17: + src = &idev->port_info->sprom_page17[page_data->offset - 128]; + break; default: return -EOPNOTSUPP; } diff --git a/drivers/net/ethernet/pensando/ionic/ionic_if.h b/drivers/net/ethernet/pensando/ionic/ionic_if.h index 23218208b711..f1ddbe9994a3 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_if.h +++ b/drivers/net/ethernet/pensando/ionic/ionic_if.h @@ -2842,6 +2842,7 @@ union ionic_port_identity { * @sprom_epage: Extended Transceiver sprom * @sprom_page1: Extended Transceiver sprom, page 1 * @sprom_page2: Extended Transceiver sprom, page 2 + * @sprom_page17: Extended Transceiver sprom, page 17 * @rsvd: reserved byte(s) * @pb_stats: uplink pb drop stats */ @@ -2853,13 +2854,14 @@ struct ionic_port_info { struct ionic_mgmt_port_stats mgmt_stats; }; union { - u8 sprom_epage[256]; + u8 sprom_epage[384]; struct { u8 sprom_page1[128]; u8 sprom_page2[128]; + u8 sprom_page17[128]; }; }; - u8 rsvd[504]; + u8 rsvd[376]; /* pb_stats must start at 2k offset */ struct ionic_port_pb_stats pb_stats;