| /* 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 |