From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 656DCA2EEB for ; Tue, 10 Sep 2019 08:12:08 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2DB8F1EBBC; Tue, 10 Sep 2019 08:12:08 +0200 (CEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60080.outbound.protection.outlook.com [40.107.6.80]) by dpdk.org (Postfix) with ESMTP id E4E391EBB9 for ; Tue, 10 Sep 2019 08:12:06 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=C+gxc8FBNLlcoH8PdQYBmQe4zxkIDJ10YBPlecPyPLcpjixdS7Yjh08FewGvwUTNM6Yc3U6zwI/BA6qjAuPdJswXjMsc5H+LJNezkCBEgmUTRBvgAEIYPOCkDsbrR1/AbgVKk+iWBCDnIZa+MQnyHy5ILYEbQnTP/T1ofbm3b47dV4p4fkArWupqnLl/dMFn3Teb0fdoiCttGNrqLqKengyLNWB53sEfWyfXCDvwN5J2Ky8E/4cJh/A9FolyHRzPxzPjnAhSZXovUQcdcXB0OTh3fj7YxHc6JE6NJyk7dEBezZTMuUZNY+Hykt3AA6md0hkufdVodMTL/birFyubcA== 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=Mg9vMV5pn/Ud7dNsjSE4ApD2VdS6aIELQ9gTT3B1XeY=; b=XjJ01pzMuVzuOrc0fxxzugv5G+6XTUxlqzS25oWx+xt1H8+u/S5HbcnZPIGDRCCiegVtbG4ug9bH+WeEDtER5bibiKShvNxhGv41AxZa+N2fApYRaTtOfJ7cM3QTo43SFhSDxFobBqzSLtMJaIbPzKvdbMuyDNln7GPuMpit0930HjQe4alQoQ+FMIyfSdS2BSnj3IyMQvoRPV3mwhKTiQckpW62SYewkrUm85Gao8mSSVI2KWw4NI63ZNbF0vFsVylkbYlwKSbHH+2gPecECK8h1cltIY3Ca0w/zJHwEV3h7lGXto/ZM/UkG8ZdfCbwPhSdg5stYNuMuQdCemUqRw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Mg9vMV5pn/Ud7dNsjSE4ApD2VdS6aIELQ9gTT3B1XeY=; b=sppmLVe2ikmchhtly0kqCh824XihYA5EEMRYxL6qmvwmF7pRI11oOI7w9lsKTvwpTJ4tkYGNXJU0FbFT4wK0LGJrF8+fX3jN9xC3N/cLeK59hjrSUrb2z8Mv1qsyVbhKrRC3V9EHVpP7Ir6pKCkt4/1JOUk8NcJePbjrI9OWMOg= Received: from VI1PR05MB3278.eurprd05.prod.outlook.com (10.170.238.23) by VI1PR05MB5807.eurprd05.prod.outlook.com (20.178.122.205) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.20; Tue, 10 Sep 2019 06:12:06 +0000 Received: from VI1PR05MB3278.eurprd05.prod.outlook.com ([fe80::d4c:75b4:c928:3890]) by VI1PR05MB3278.eurprd05.prod.outlook.com ([fe80::d4c:75b4:c928:3890%7]) with mapi id 15.20.2241.018; Tue, 10 Sep 2019 06:12:06 +0000 From: Slava Ovsiienko To: Dekel Peled , Matan Azrad , Shahaf Shuler CC: Ori Kam , "dev@dpdk.org" Thread-Topic: [PATCH] net/mlx5: support reading module EEPROM data Thread-Index: AQHVZv6VialP9KX/7U+oZAFR+h6RWackb1Dg Date: Tue, 10 Sep 2019 06:12:05 +0000 Message-ID: References: <570eb1a4016a92476f183f21c63dc7d80bdd9c7f.1568026954.git.dekelp@mellanox.com> In-Reply-To: <570eb1a4016a92476f183f21c63dc7d80bdd9c7f.1568026954.git.dekelp@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=viacheslavo@mellanox.com; x-originating-ip: [95.67.35.250] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e20b2b5c-b2f8-448a-88c0-08d735b5ce2d x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020); SRVR:VI1PR05MB5807; x-ms-traffictypediagnostic: VI1PR05MB5807:|VI1PR05MB5807: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:104; x-forefront-prvs: 01565FED4C x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(376002)(136003)(346002)(366004)(39860400002)(396003)(199004)(189003)(13464003)(6636002)(86362001)(102836004)(76116006)(66476007)(66556008)(64756008)(66446008)(66946007)(229853002)(55016002)(71200400001)(7696005)(76176011)(33656002)(3846002)(2906002)(71190400001)(186003)(26005)(53546011)(74316002)(6116002)(6506007)(5660300002)(14454004)(446003)(8936002)(81166006)(6246003)(4326008)(52536014)(316002)(476003)(81156014)(7736002)(11346002)(54906003)(8676002)(110136005)(99286004)(66066001)(486006)(14444005)(256004)(478600001)(53936002)(9686003)(25786009)(6436002)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB5807; H:VI1PR05MB3278.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: ar6qKpM//OiIvAUBDVl2iiNPshVpXO5y3lYJNB7oehvhP1FoyEf0F7AwkhegDAL0quRmFXQJi84qpiF/ctX41td7fVutXEgpHuwt3+CISyu0EiqBlRashtC2P2wUvOm7cXzzATcTPX4tVXQkQND2QC6jayrhUvWsL9DVzxSIHs1Tc4aZ+35sRHJWjpyZ6YXInH20+bl4hp/jeKNB+G+gIHteEx+meRLptwByF+IHrId5xwN76pOlLY00hpNNQYd0hin7VqeKN1ZhCITsWmAdRFrBdUUgtw0cPnk4biNs70GMm1N3taXb8bgqS2MEDcvGFPgoAlYXO3SP97i7+SnDy+zaOyQYaeflweR+trS2u5Ke6f5pYRtE9Aeur1btT+fXsxqk7x6ttVygyZdJ5T2EvLoPELRySzazuiEFd/5M1BA= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: e20b2b5c-b2f8-448a-88c0-08d735b5ce2d X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Sep 2019 06:12:05.9458 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: kFaGzks/zBDKnGhuubo9ngrrXIZAwGbId3RcFzAUDBmZQveQWLapEslCHs02lV4Z2tPjDVKThxu0UZBEznAeOvpmv6tb91ETji66tnEXZNA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB5807 Subject: Re: [dpdk-dev] [PATCH] net/mlx5: support reading module EEPROM data 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" > -----Original Message----- > From: Dekel Peled > Sent: Monday, September 9, 2019 14:05 > To: Matan Azrad ; Slava Ovsiienko > ; Shahaf Shuler > Cc: Ori Kam ; dev@dpdk.org > Subject: [PATCH] net/mlx5: support reading module EEPROM data >=20 > This patch implements ethdev operations get_module_info and > get_module_eeprom, to support ethtool commands > ETHTOOL_GMODULEINFO and ETHTOOL_GMODULEEEPROM. >=20 > New functions mlx5_get_module_info() and mlx5_get_module_eeprom() > added in mlx5_ethdev.c. >=20 > Signed-off-by: Dekel Peled Acked-by: Viacheslav Ovsiienko > --- > drivers/net/mlx5/mlx5.c | 6 +++ > drivers/net/mlx5/mlx5.h | 4 ++ > drivers/net/mlx5/mlx5_ethdev.c | 86 > ++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 96 insertions(+) >=20 > diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index > dc7b10b..3be53c6 100644 > --- a/drivers/net/mlx5/mlx5.c > +++ b/drivers/net/mlx5/mlx5.c > @@ -988,6 +988,8 @@ struct mlx5_dev_spawn_data { > .rx_queue_intr_disable =3D mlx5_rx_intr_disable, > .is_removed =3D mlx5_is_removed, > .udp_tunnel_port_add =3D mlx5_udp_tunnel_port_add, > + .get_module_info =3D mlx5_get_module_info, > + .get_module_eeprom =3D mlx5_get_module_eeprom, > }; >=20 > /* Available operations from secondary process. */ @@ -1001,6 +1003,8 > @@ struct mlx5_dev_spawn_data { > .dev_infos_get =3D mlx5_dev_infos_get, > .rx_descriptor_status =3D mlx5_rx_descriptor_status, > .tx_descriptor_status =3D mlx5_tx_descriptor_status, > + .get_module_info =3D mlx5_get_module_info, > + .get_module_eeprom =3D mlx5_get_module_eeprom, > }; >=20 > /* Available operations in flow isolated mode. */ @@ -1044,6 +1048,8 @@ > struct mlx5_dev_spawn_data { > .rx_queue_intr_enable =3D mlx5_rx_intr_enable, > .rx_queue_intr_disable =3D mlx5_rx_intr_disable, > .is_removed =3D mlx5_is_removed, > + .get_module_info =3D mlx5_get_module_info, > + .get_module_eeprom =3D mlx5_get_module_eeprom, > }; >=20 > /** > diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index > 09ca4b1..86a272e 100644 > --- a/drivers/net/mlx5/mlx5.h > +++ b/drivers/net/mlx5/mlx5.h > @@ -724,6 +724,10 @@ void mlx5_translate_port_name(const char > *port_name_in, > struct mlx5_switch_info *port_info_out); void > mlx5_intr_callback_unregister(const struct rte_intr_handle *handle, > rte_intr_callback_fn cb_fn, void *cb_arg); > +int mlx5_get_module_info(struct rte_eth_dev *dev, > + struct rte_eth_dev_module_info *modinfo); int > +mlx5_get_module_eeprom(struct rte_eth_dev *dev, > + struct rte_dev_eeprom_info *info); >=20 > /* mlx5_mac.c */ >=20 > diff --git a/drivers/net/mlx5/mlx5_ethdev.c > b/drivers/net/mlx5/mlx5_ethdev.c index 33a32fc..c68e773 100644 > --- a/drivers/net/mlx5/mlx5_ethdev.c > +++ b/drivers/net/mlx5/mlx5_ethdev.c > @@ -1928,3 +1928,89 @@ int mlx5_fw_version_get(struct rte_eth_dev > *dev, char *fw_ver, size_t fw_size) > port_info_out->name_type =3D > MLX5_PHYS_PORT_NAME_TYPE_UNKNOWN; > return; > } > + > +/** > + * DPDK callback to retrieve plug-in module EEPROM information (type and > size). > + * > + * @param dev > + * Pointer to Ethernet device structure. > + * @param[out] modinfo > + * Storage for plug-in module EEPROM information. > + * > + * @return > + * 0 on success, a negative errno value otherwise and rte_errno is set= . > + */ > +int > +mlx5_get_module_info(struct rte_eth_dev *dev, > + struct rte_eth_dev_module_info *modinfo) { > + struct ethtool_modinfo info =3D { > + .cmd =3D ETHTOOL_GMODULEINFO, > + }; > + struct ifreq ifr =3D (struct ifreq) { > + .ifr_data =3D (void *)&info, > + }; > + int ret =3D 0; > + > + if (!dev || !modinfo) { > + DRV_LOG(WARNING, "missing argument, cannot get module > info"); > + rte_errno =3D EINVAL; > + return -rte_errno; > + } > + ret =3D mlx5_ifreq(dev, SIOCETHTOOL, &ifr); > + if (ret) { > + DRV_LOG(WARNING, "port %u ioctl(SIOCETHTOOL) failed: > %s", > + dev->data->port_id, strerror(rte_errno)); > + return ret; > + } > + modinfo->type =3D info.type; > + modinfo->eeprom_len =3D info.eeprom_len; > + return ret; > +} > + > +/** > + * DPDK callback to retrieve plug-in module EEPROM data. > + * > + * @param dev > + * Pointer to Ethernet device structure. > + * @param[out] info > + * Storage for plug-in module EEPROM data. > + * > + * @return > + * 0 on success, a negative errno value otherwise and rte_errno is set= . > + */ > +int mlx5_get_module_eeprom(struct rte_eth_dev *dev, > + struct rte_dev_eeprom_info *info) { > + struct ethtool_eeprom *eeprom; > + struct ifreq ifr; > + int ret =3D 0; > + > + if (!dev || !info) { > + DRV_LOG(WARNING, "missing argument, cannot get module > eeprom"); > + rte_errno =3D EINVAL; > + return -rte_errno; > + } > + eeprom =3D rte_calloc(__func__, 1, > + (sizeof(struct ethtool_eeprom) + info->length), 0); > + if (!eeprom) { > + DRV_LOG(WARNING, "port %u cannot allocate memory for " > + "eeprom data", dev->data->port_id); > + rte_errno =3D ENOMEM; > + return -rte_errno; > + } > + eeprom->cmd =3D ETHTOOL_GMODULEEEPROM; > + eeprom->offset =3D info->offset; > + eeprom->len =3D info->length; > + ifr =3D (struct ifreq) { > + .ifr_data =3D (void *)eeprom, > + }; > + ret =3D mlx5_ifreq(dev, SIOCETHTOOL, &ifr); > + if (ret) > + DRV_LOG(WARNING, "port %u ioctl(SIOCETHTOOL) failed: > %s", > + dev->data->port_id, strerror(rte_errno)); > + else > + rte_memcpy(info->data, eeprom->data, info->length); > + rte_free(eeprom); > + return ret; > +} > -- > 1.8.3.1