d7407d1669
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>
38 lines
1.2 KiB
C
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
|