1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 2 /* 3 * Copyright (c) 2021 Mellanox Technologies Ltd. All rights reserved. 4 */ 5 #ifndef DEF_RDMA_IB_SYSFS_H 6 #define DEF_RDMA_IB_SYSFS_H 7 8 #include <linux/sysfs.h> 9 10 struct ib_device; 11 12 struct ib_port_attribute { 13 struct attribute attr; 14 ssize_t (*show)(struct ib_device *ibdev, u32 port_num, 15 struct ib_port_attribute *attr, char *buf); 16 ssize_t (*store)(struct ib_device *ibdev, u32 port_num, 17 struct ib_port_attribute *attr, const char *buf, 18 size_t count); 19 }; 20 21 #define IB_PORT_ATTR_RW(_name) \ 22 struct ib_port_attribute ib_port_attr_##_name = __ATTR_RW(_name) 23 24 #define IB_PORT_ATTR_ADMIN_RW(_name) \ 25 struct ib_port_attribute ib_port_attr_##_name = \ 26 __ATTR_RW_MODE(_name, 0600) 27 28 #define IB_PORT_ATTR_RO(_name) \ 29 struct ib_port_attribute ib_port_attr_##_name = __ATTR_RO(_name) 30 31 #define IB_PORT_ATTR_WO(_name) \ 32 struct ib_port_attribute ib_port_attr_##_name = __ATTR_WO(_name) 33 34 struct ib_device *ib_port_sysfs_get_ibdev_kobj(struct kobject *kobj, 35 u32 *port_num); 36 37 #endif 38