public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next] net: mana: Add new device attributes for mana
@ 2024-04-15  9:49 Shradha Gupta
  2024-04-15 16:13 ` Jason Gunthorpe
                   ` (2 more replies)
  0 siblings, 3 replies; 15+ messages in thread
From: Shradha Gupta @ 2024-04-15  9:49 UTC (permalink / raw)
  To: linux-kernel, linux-hyperv, linux-rdma, netdev
  Cc: Shradha Gupta, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Ajay Sharma, Leon Romanovsky, Thomas Gleixner,
	Sebastian Andrzej Siewior, K. Y. Srinivasan, Haiyang Zhang,
	Wei Liu, Dexuan Cui, Long Li, Michael Kelley, Shradha Gupta,
	Yury Norov, Konstantin Taranov, Souradeep Chakrabarti

Add new device attributes to view multiport, msix, and adapter MTU
setting for MANA device.

Signed-off-by: Shradha Gupta <shradhagupta@linux.microsoft.com>
---
 .../net/ethernet/microsoft/mana/gdma_main.c   | 74 +++++++++++++++++++
 include/net/mana/gdma.h                       |  9 +++
 2 files changed, 83 insertions(+)

diff --git a/drivers/net/ethernet/microsoft/mana/gdma_main.c b/drivers/net/ethernet/microsoft/mana/gdma_main.c
index 1332db9a08eb..6674a02cff06 100644
--- a/drivers/net/ethernet/microsoft/mana/gdma_main.c
+++ b/drivers/net/ethernet/microsoft/mana/gdma_main.c
@@ -1471,6 +1471,65 @@ static bool mana_is_pf(unsigned short dev_id)
 	return dev_id == MANA_PF_DEVICE_ID;
 }
 
+static ssize_t mana_attr_show(struct device *dev,
+			      struct device_attribute *attr, char *buf)
+{
+	struct pci_dev *pdev = to_pci_dev(dev);
+	struct gdma_context *gc = pci_get_drvdata(pdev);
+	struct mana_context *ac = gc->mana.driver_data;
+
+	if (strcmp(attr->attr.name, "mport") == 0)
+		return snprintf(buf, PAGE_SIZE, "%d\n", ac->num_ports);
+	else if (strcmp(attr->attr.name, "adapter_mtu") == 0)
+		return snprintf(buf, PAGE_SIZE, "%d\n", gc->adapter_mtu);
+	else if (strcmp(attr->attr.name, "msix") == 0)
+		return snprintf(buf, PAGE_SIZE, "%d\n", gc->max_num_msix);
+	else
+		return -EINVAL;
+}
+
+static int mana_gd_setup_sysfs(struct pci_dev *pdev)
+{
+	struct gdma_context *gc = pci_get_drvdata(pdev);
+	int retval = 0;
+
+	gc->mana_attributes.mana_mport_attr.attr.name = "mport";
+	gc->mana_attributes.mana_mport_attr.attr.mode = 0444;
+	gc->mana_attributes.mana_mport_attr.show = mana_attr_show;
+	sysfs_attr_init(&gc->mana_attributes.mana_mport_attr);
+	retval = device_create_file(&pdev->dev,
+				    &gc->mana_attributes.mana_mport_attr);
+	if (retval < 0)
+		return retval;
+
+	gc->mana_attributes.mana_adapter_mtu_attr.attr.name = "adapter_mtu";
+	gc->mana_attributes.mana_adapter_mtu_attr.attr.mode = 0444;
+	gc->mana_attributes.mana_adapter_mtu_attr.show = mana_attr_show;
+	sysfs_attr_init(&gc->mana_attributes.mana_adapter_mtu_attr);
+	retval = device_create_file(&pdev->dev,
+				    &gc->mana_attributes.mana_adapter_mtu_attr);
+	if (retval < 0)
+		goto mtu_attr_error;
+
+	gc->mana_attributes.mana_msix_attr.attr.name = "msix";
+	gc->mana_attributes.mana_msix_attr.attr.mode = 0444;
+	gc->mana_attributes.mana_msix_attr.show = mana_attr_show;
+	sysfs_attr_init(&gc->mana_attributes.mana_msix_attr);
+	retval = device_create_file(&pdev->dev,
+				    &gc->mana_attributes.mana_msix_attr);
+	if (retval < 0)
+		goto msix_attr_error;
+
+	return retval;
+msix_attr_error:
+	device_remove_file(&pdev->dev,
+			   &gc->mana_attributes.mana_adapter_mtu_attr);
+mtu_attr_error:
+	device_remove_file(&pdev->dev,
+			   &gc->mana_attributes.mana_mport_attr);
+	return retval;
+}
+
 static int mana_gd_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
 	struct gdma_context *gc;
@@ -1519,6 +1578,10 @@ static int mana_gd_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	gc->bar0_va = bar0_va;
 	gc->dev = &pdev->dev;
 
+	err = mana_gd_setup_sysfs(pdev);
+	if (err < 0)
+		goto free_gc;
+
 	err = mana_gd_setup(pdev);
 	if (err)
 		goto unmap_bar;
@@ -1544,6 +1607,15 @@ static int mana_gd_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	return err;
 }
 
+static void mana_cleanup_sysfs_files(struct pci_dev *pdev,
+				     struct gdma_context *gc)
+{
+	device_remove_file(&pdev->dev, &gc->mana_attributes.mana_msix_attr);
+	device_remove_file(&pdev->dev,
+			   &gc->mana_attributes.mana_adapter_mtu_attr);
+	device_remove_file(&pdev->dev, &gc->mana_attributes.mana_mport_attr);
+}
+
 static void mana_gd_remove(struct pci_dev *pdev)
 {
 	struct gdma_context *gc = pci_get_drvdata(pdev);
@@ -1552,6 +1624,8 @@ static void mana_gd_remove(struct pci_dev *pdev)
 
 	mana_gd_cleanup(pdev);
 
+	mana_cleanup_sysfs_files(pdev, gc);
+
 	pci_iounmap(pdev, gc->bar0_va);
 
 	vfree(gc);
diff --git a/include/net/mana/gdma.h b/include/net/mana/gdma.h
index 27684135bb4d..ea636959164c 100644
--- a/include/net/mana/gdma.h
+++ b/include/net/mana/gdma.h
@@ -354,6 +354,12 @@ struct gdma_irq_context {
 	char name[MANA_IRQ_NAME_SZ];
 };
 
+struct mana_device_attributes {
+	struct device_attribute mana_mport_attr;
+	struct device_attribute mana_adapter_mtu_attr;
+	struct device_attribute mana_msix_attr;
+};
+
 struct gdma_context {
 	struct device		*dev;
 
@@ -395,6 +401,9 @@ struct gdma_context {
 
 	/* Azure RDMA adapter */
 	struct gdma_dev		mana_ib;
+
+	/* device attributes */
+	struct mana_device_attributes mana_attributes;
 };
 
 #define MAX_NUM_GDMA_DEVICES	4
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2024-04-22 10:08 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-15  9:49 [PATCH net-next] net: mana: Add new device attributes for mana Shradha Gupta
2024-04-15 16:13 ` Jason Gunthorpe
2024-04-16  4:25   ` Shradha Gupta
2024-04-16  4:27   ` Zhu Yanjun
2024-04-16 18:09     ` Andrew Lunn
2024-04-18  6:01       ` Shradha Gupta
2024-04-18 17:50         ` Jason Gunthorpe
2024-04-18 18:42           ` Andrew Lunn
2024-04-19 16:59             ` Shradha Gupta
2024-04-19 18:51               ` Andrew Lunn
2024-04-22 10:08                 ` Shradha Gupta
2024-04-18  5:51     ` Shradha Gupta
2024-04-15 16:38 ` Saurabh Singh Sengar
2024-04-16  4:26   ` Shradha Gupta
2024-04-18 21:29 ` Haiyang Zhang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox