linux/include/rdma/ib_sysfs.h
Jason Gunthorpe d7407d1669 RDMA: Change ops->init_port to ops->port_groups
init_port was only being used to register sysfs attributes against the
port kobject. Now that all users are creating static attribute_group's we
can simply set the attribute_group list in the ops and the core code can
just handle it directly.

This makes all the sysfs management quite straightforward and prevents any
driver from abusing the naked port kobject in future because no driver
code can access it.

Link: https://lore.kernel.org/r/114f68f3d921460eafe14cea5a80ca65d81729c3.1623427137.git.leonro@nvidia.com
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
2021-06-16 20:58:31 -03:00

38 lines
1.2 KiB
C

/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
/*
* Copyright (c) 2021 Mellanox Technologies Ltd. All rights reserved.
*/
#ifndef DEF_RDMA_IB_SYSFS_H
#define DEF_RDMA_IB_SYSFS_H
#include <linux/sysfs.h>
struct ib_device;
struct ib_port_attribute {
struct attribute attr;
ssize_t (*show)(struct ib_device *ibdev, u32 port_num,
struct ib_port_attribute *attr, char *buf);
ssize_t (*store)(struct ib_device *ibdev, u32 port_num,
struct ib_port_attribute *attr, const char *buf,
size_t count);
};
#define IB_PORT_ATTR_RW(_name) \
struct ib_port_attribute ib_port_attr_##_name = __ATTR_RW(_name)
#define IB_PORT_ATTR_ADMIN_RW(_name) \
struct ib_port_attribute ib_port_attr_##_name = \
__ATTR_RW_MODE(_name, 0600)
#define IB_PORT_ATTR_RO(_name) \
struct ib_port_attribute ib_port_attr_##_name = __ATTR_RO(_name)
#define IB_PORT_ATTR_WO(_name) \
struct ib_port_attribute ib_port_attr_##_name = __ATTR_WO(_name)
struct ib_device *ib_port_sysfs_get_ibdev_kobj(struct kobject *kobj,
u32 *port_num);
#endif