RDMA/device: Consolidate ib_device per_port data into one place
There is no reason to have three allocations of per-port data. Combine them together and make the lifetime for all the per-port data match the struct ib_device. Following patches will require more port-specific data, now there is a good place to put it. Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
		
							parent
							
								
									ea1075edcb
								
							
						
					
					
						commit
						8ceb1357b3
					
				| @ -881,8 +881,8 @@ static int _gid_table_setup_one(struct ib_device *ib_dev) | |||||||
| 	for (port = 0; port < ib_dev->phys_port_cnt; port++) { | 	for (port = 0; port < ib_dev->phys_port_cnt; port++) { | ||||||
| 		u8 rdma_port = port + rdma_start_port(ib_dev); | 		u8 rdma_port = port + rdma_start_port(ib_dev); | ||||||
| 
 | 
 | ||||||
| 		table =	alloc_gid_table( | 		table = alloc_gid_table( | ||||||
| 				ib_dev->port_immutable[rdma_port].gid_tbl_len); | 			ib_dev->port_data[rdma_port].immutable.gid_tbl_len); | ||||||
| 		if (!table) | 		if (!table) | ||||||
| 			goto rollback_table_setup; | 			goto rollback_table_setup; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -293,8 +293,7 @@ static void ib_device_release(struct device *device) | |||||||
| 	WARN_ON(refcount_read(&dev->refcount)); | 	WARN_ON(refcount_read(&dev->refcount)); | ||||||
| 	ib_cache_release_one(dev); | 	ib_cache_release_one(dev); | ||||||
| 	ib_security_release_port_pkey_list(dev); | 	ib_security_release_port_pkey_list(dev); | ||||||
| 	kfree(dev->port_pkey_list); | 	kfree(dev->port_data); | ||||||
| 	kfree(dev->port_immutable); |  | ||||||
| 	xa_destroy(&dev->client_data); | 	xa_destroy(&dev->client_data); | ||||||
| 	kfree(dev); | 	kfree(dev); | ||||||
| } | } | ||||||
| @ -468,27 +467,31 @@ static int verify_immutable(const struct ib_device *dev, u8 port) | |||||||
| 			    rdma_max_mad_size(dev, port) != 0); | 			    rdma_max_mad_size(dev, port) != 0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int read_port_immutable(struct ib_device *device) | static int setup_port_data(struct ib_device *device) | ||||||
| { | { | ||||||
| 	unsigned int port; | 	unsigned int port; | ||||||
| 	int ret; | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	/**
 | 	/*
 | ||||||
| 	 * device->port_immutable is indexed directly by the port number to make | 	 * device->port_data is indexed directly by the port number to make | ||||||
| 	 * access to this data as efficient as possible. | 	 * access to this data as efficient as possible. | ||||||
| 	 * | 	 * | ||||||
| 	 * Therefore port_immutable is declared as a 1 based array with | 	 * Therefore port_data is declared as a 1 based array with potential | ||||||
| 	 * potential empty slots at the beginning. | 	 * empty slots at the beginning. | ||||||
| 	 */ | 	 */ | ||||||
| 	device->port_immutable = | 	device->port_data = kcalloc(rdma_end_port(device) + 1, | ||||||
| 		kcalloc(rdma_end_port(device) + 1, | 				    sizeof(*device->port_data), GFP_KERNEL); | ||||||
| 			sizeof(*device->port_immutable), GFP_KERNEL); | 	if (!device->port_data) | ||||||
| 	if (!device->port_immutable) |  | ||||||
| 		return -ENOMEM; | 		return -ENOMEM; | ||||||
| 
 | 
 | ||||||
| 	rdma_for_each_port (device, port) { | 	rdma_for_each_port (device, port) { | ||||||
| 		ret = device->ops.get_port_immutable( | 		struct ib_port_data *pdata = &device->port_data[port]; | ||||||
| 			device, port, &device->port_immutable[port]); | 
 | ||||||
|  | 		spin_lock_init(&pdata->pkey_list_lock); | ||||||
|  | 		INIT_LIST_HEAD(&pdata->pkey_list); | ||||||
|  | 
 | ||||||
|  | 		ret = device->ops.get_port_immutable(device, port, | ||||||
|  | 						     &pdata->immutable); | ||||||
| 		if (ret) | 		if (ret) | ||||||
| 			return ret; | 			return ret; | ||||||
| 
 | 
 | ||||||
| @ -507,30 +510,6 @@ void ib_get_device_fw_str(struct ib_device *dev, char *str) | |||||||
| } | } | ||||||
| EXPORT_SYMBOL(ib_get_device_fw_str); | EXPORT_SYMBOL(ib_get_device_fw_str); | ||||||
| 
 | 
 | ||||||
| static int setup_port_pkey_list(struct ib_device *device) |  | ||||||
| { |  | ||||||
| 	int i; |  | ||||||
| 
 |  | ||||||
| 	/**
 |  | ||||||
| 	 * device->port_pkey_list is indexed directly by the port number, |  | ||||||
| 	 * Therefore it is declared as a 1 based array with potential empty |  | ||||||
| 	 * slots at the beginning. |  | ||||||
| 	 */ |  | ||||||
| 	device->port_pkey_list = kcalloc(rdma_end_port(device) + 1, |  | ||||||
| 					 sizeof(*device->port_pkey_list), |  | ||||||
| 					 GFP_KERNEL); |  | ||||||
| 
 |  | ||||||
| 	if (!device->port_pkey_list) |  | ||||||
| 		return -ENOMEM; |  | ||||||
| 
 |  | ||||||
| 	for (i = 0; i < (rdma_end_port(device) + 1); i++) { |  | ||||||
| 		spin_lock_init(&device->port_pkey_list[i].list_lock); |  | ||||||
| 		INIT_LIST_HEAD(&device->port_pkey_list[i].pkey_list); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	return 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static void ib_policy_change_task(struct work_struct *work) | static void ib_policy_change_task(struct work_struct *work) | ||||||
| { | { | ||||||
| 	struct ib_device *dev; | 	struct ib_device *dev; | ||||||
| @ -668,10 +647,9 @@ static int setup_device(struct ib_device *device) | |||||||
| 	if (ret) | 	if (ret) | ||||||
| 		return ret; | 		return ret; | ||||||
| 
 | 
 | ||||||
| 	ret = read_port_immutable(device); | 	ret = setup_port_data(device); | ||||||
| 	if (ret) { | 	if (ret) { | ||||||
| 		dev_warn(&device->dev, | 		dev_warn(&device->dev, "Couldn't create per-port data\n"); | ||||||
| 			 "Couldn't create per port immutable data\n"); |  | ||||||
| 		return ret; | 		return ret; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| @ -683,12 +661,6 @@ static int setup_device(struct ib_device *device) | |||||||
| 		return ret; | 		return ret; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	ret = setup_port_pkey_list(device); |  | ||||||
| 	if (ret) { |  | ||||||
| 		dev_warn(&device->dev, "Couldn't create per port_pkey_list\n"); |  | ||||||
| 		return ret; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -1221,7 +1193,8 @@ int ib_find_gid(struct ib_device *device, union ib_gid *gid, | |||||||
| 		if (!rdma_protocol_ib(device, port)) | 		if (!rdma_protocol_ib(device, port)) | ||||||
| 			continue; | 			continue; | ||||||
| 
 | 
 | ||||||
| 		for (i = 0; i < device->port_immutable[port].gid_tbl_len; ++i) { | 		for (i = 0; i < device->port_data[port].immutable.gid_tbl_len; | ||||||
|  | 		     ++i) { | ||||||
| 			ret = rdma_query_gid(device, port, i, &tmp_gid); | 			ret = rdma_query_gid(device, port, i, &tmp_gid); | ||||||
| 			if (ret) | 			if (ret) | ||||||
| 				return ret; | 				return ret; | ||||||
| @ -1253,7 +1226,8 @@ int ib_find_pkey(struct ib_device *device, | |||||||
| 	u16 tmp_pkey; | 	u16 tmp_pkey; | ||||||
| 	int partial_ix = -1; | 	int partial_ix = -1; | ||||||
| 
 | 
 | ||||||
| 	for (i = 0; i < device->port_immutable[port_num].pkey_tbl_len; ++i) { | 	for (i = 0; i < device->port_data[port_num].immutable.pkey_tbl_len; | ||||||
|  | 	     ++i) { | ||||||
| 		ret = ib_query_pkey(device, port_num, i, &tmp_pkey); | 		ret = ib_query_pkey(device, port_num, i, &tmp_pkey); | ||||||
| 		if (ret) | 		if (ret) | ||||||
| 			return ret; | 			return ret; | ||||||
|  | |||||||
| @ -49,16 +49,15 @@ static struct pkey_index_qp_list *get_pkey_idx_qp_list(struct ib_port_pkey *pp) | |||||||
| 	struct pkey_index_qp_list *tmp_pkey; | 	struct pkey_index_qp_list *tmp_pkey; | ||||||
| 	struct ib_device *dev = pp->sec->dev; | 	struct ib_device *dev = pp->sec->dev; | ||||||
| 
 | 
 | ||||||
| 	spin_lock(&dev->port_pkey_list[pp->port_num].list_lock); | 	spin_lock(&dev->port_data[pp->port_num].pkey_list_lock); | ||||||
| 	list_for_each_entry(tmp_pkey, | 	list_for_each_entry (tmp_pkey, &dev->port_data[pp->port_num].pkey_list, | ||||||
| 			    &dev->port_pkey_list[pp->port_num].pkey_list, | 			     pkey_index_list) { | ||||||
| 			    pkey_index_list) { |  | ||||||
| 		if (tmp_pkey->pkey_index == pp->pkey_index) { | 		if (tmp_pkey->pkey_index == pp->pkey_index) { | ||||||
| 			pkey = tmp_pkey; | 			pkey = tmp_pkey; | ||||||
| 			break; | 			break; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	spin_unlock(&dev->port_pkey_list[pp->port_num].list_lock); | 	spin_unlock(&dev->port_data[pp->port_num].pkey_list_lock); | ||||||
| 	return pkey; | 	return pkey; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -263,12 +262,12 @@ static int port_pkey_list_insert(struct ib_port_pkey *pp) | |||||||
| 		if (!pkey) | 		if (!pkey) | ||||||
| 			return -ENOMEM; | 			return -ENOMEM; | ||||||
| 
 | 
 | ||||||
| 		spin_lock(&dev->port_pkey_list[port_num].list_lock); | 		spin_lock(&dev->port_data[port_num].pkey_list_lock); | ||||||
| 		/* Check for the PKey again.  A racing process may
 | 		/* Check for the PKey again.  A racing process may
 | ||||||
| 		 * have created it. | 		 * have created it. | ||||||
| 		 */ | 		 */ | ||||||
| 		list_for_each_entry(tmp_pkey, | 		list_for_each_entry(tmp_pkey, | ||||||
| 				    &dev->port_pkey_list[port_num].pkey_list, | 				    &dev->port_data[port_num].pkey_list, | ||||||
| 				    pkey_index_list) { | 				    pkey_index_list) { | ||||||
| 			if (tmp_pkey->pkey_index == pp->pkey_index) { | 			if (tmp_pkey->pkey_index == pp->pkey_index) { | ||||||
| 				kfree(pkey); | 				kfree(pkey); | ||||||
| @ -283,9 +282,9 @@ static int port_pkey_list_insert(struct ib_port_pkey *pp) | |||||||
| 			spin_lock_init(&pkey->qp_list_lock); | 			spin_lock_init(&pkey->qp_list_lock); | ||||||
| 			INIT_LIST_HEAD(&pkey->qp_list); | 			INIT_LIST_HEAD(&pkey->qp_list); | ||||||
| 			list_add(&pkey->pkey_index_list, | 			list_add(&pkey->pkey_index_list, | ||||||
| 				 &dev->port_pkey_list[port_num].pkey_list); | 				 &dev->port_data[port_num].pkey_list); | ||||||
| 		} | 		} | ||||||
| 		spin_unlock(&dev->port_pkey_list[port_num].list_lock); | 		spin_unlock(&dev->port_data[port_num].pkey_list_lock); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	spin_lock(&pkey->qp_list_lock); | 	spin_lock(&pkey->qp_list_lock); | ||||||
| @ -551,9 +550,8 @@ void ib_security_cache_change(struct ib_device *device, | |||||||
| { | { | ||||||
| 	struct pkey_index_qp_list *pkey; | 	struct pkey_index_qp_list *pkey; | ||||||
| 
 | 
 | ||||||
| 	list_for_each_entry(pkey, | 	list_for_each_entry (pkey, &device->port_data[port_num].pkey_list, | ||||||
| 			    &device->port_pkey_list[port_num].pkey_list, | 			     pkey_index_list) { | ||||||
| 			    pkey_index_list) { |  | ||||||
| 		check_pkey_qps(pkey, | 		check_pkey_qps(pkey, | ||||||
| 			       device, | 			       device, | ||||||
| 			       port_num, | 			       port_num, | ||||||
| @ -569,7 +567,7 @@ void ib_security_release_port_pkey_list(struct ib_device *device) | |||||||
| 	rdma_for_each_port (device, i) { | 	rdma_for_each_port (device, i) { | ||||||
| 		list_for_each_entry_safe(pkey, | 		list_for_each_entry_safe(pkey, | ||||||
| 					 tmp_pkey, | 					 tmp_pkey, | ||||||
| 					 &device->port_pkey_list[i].pkey_list, | 					 &device->port_data[i].pkey_list, | ||||||
| 					 pkey_index_list) { | 					 pkey_index_list) { | ||||||
| 			list_del(&pkey->pkey_index_list); | 			list_del(&pkey->pkey_index_list); | ||||||
| 			kfree(pkey); | 			kfree(pkey); | ||||||
|  | |||||||
| @ -2198,6 +2198,13 @@ struct ib_port_immutable { | |||||||
| 	u32                           max_mad_size; | 	u32                           max_mad_size; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | struct ib_port_data { | ||||||
|  | 	struct ib_port_immutable immutable; | ||||||
|  | 
 | ||||||
|  | 	spinlock_t pkey_list_lock; | ||||||
|  | 	struct list_head pkey_list; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| /* rdma netdev type - specifies protocol type */ | /* rdma netdev type - specifies protocol type */ | ||||||
| enum rdma_netdev_t { | enum rdma_netdev_t { | ||||||
| 	RDMA_NETDEV_OPA_VNIC, | 	RDMA_NETDEV_OPA_VNIC, | ||||||
| @ -2243,12 +2250,6 @@ struct rdma_netdev_alloc_params { | |||||||
| 				      struct net_device *netdev, void *param); | 				      struct net_device *netdev, void *param); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| struct ib_port_pkey_list { |  | ||||||
| 	/* Lock to hold while modifying the list. */ |  | ||||||
| 	spinlock_t                    list_lock; |  | ||||||
| 	struct list_head              pkey_list; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| struct ib_counters { | struct ib_counters { | ||||||
| 	struct ib_device	*device; | 	struct ib_device	*device; | ||||||
| 	struct ib_uobject	*uobject; | 	struct ib_uobject	*uobject; | ||||||
| @ -2549,14 +2550,12 @@ struct ib_device { | |||||||
| 
 | 
 | ||||||
| 	struct ib_cache               cache; | 	struct ib_cache               cache; | ||||||
| 	/**
 | 	/**
 | ||||||
| 	 * port_immutable is indexed by port number | 	 * port_data is indexed by port number | ||||||
| 	 */ | 	 */ | ||||||
| 	struct ib_port_immutable     *port_immutable; | 	struct ib_port_data *port_data; | ||||||
| 
 | 
 | ||||||
| 	int			      num_comp_vectors; | 	int			      num_comp_vectors; | ||||||
| 
 | 
 | ||||||
| 	struct ib_port_pkey_list     *port_pkey_list; |  | ||||||
| 
 |  | ||||||
| 	struct iw_cm_verbs	     *iwcm; | 	struct iw_cm_verbs	     *iwcm; | ||||||
| 
 | 
 | ||||||
| 	struct module               *owner; | 	struct module               *owner; | ||||||
| @ -2860,34 +2859,38 @@ static inline int rdma_is_port_valid(const struct ib_device *device, | |||||||
| static inline bool rdma_is_grh_required(const struct ib_device *device, | static inline bool rdma_is_grh_required(const struct ib_device *device, | ||||||
| 					u8 port_num) | 					u8 port_num) | ||||||
| { | { | ||||||
| 	return device->port_immutable[port_num].core_cap_flags & | 	return device->port_data[port_num].immutable.core_cap_flags & | ||||||
| 		RDMA_CORE_PORT_IB_GRH_REQUIRED; | 	       RDMA_CORE_PORT_IB_GRH_REQUIRED; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static inline bool rdma_protocol_ib(const struct ib_device *device, u8 port_num) | static inline bool rdma_protocol_ib(const struct ib_device *device, u8 port_num) | ||||||
| { | { | ||||||
| 	return device->port_immutable[port_num].core_cap_flags & RDMA_CORE_CAP_PROT_IB; | 	return device->port_data[port_num].immutable.core_cap_flags & | ||||||
|  | 	       RDMA_CORE_CAP_PROT_IB; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static inline bool rdma_protocol_roce(const struct ib_device *device, u8 port_num) | static inline bool rdma_protocol_roce(const struct ib_device *device, u8 port_num) | ||||||
| { | { | ||||||
| 	return device->port_immutable[port_num].core_cap_flags & | 	return device->port_data[port_num].immutable.core_cap_flags & | ||||||
| 		(RDMA_CORE_CAP_PROT_ROCE | RDMA_CORE_CAP_PROT_ROCE_UDP_ENCAP); | 	       (RDMA_CORE_CAP_PROT_ROCE | RDMA_CORE_CAP_PROT_ROCE_UDP_ENCAP); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static inline bool rdma_protocol_roce_udp_encap(const struct ib_device *device, u8 port_num) | static inline bool rdma_protocol_roce_udp_encap(const struct ib_device *device, u8 port_num) | ||||||
| { | { | ||||||
| 	return device->port_immutable[port_num].core_cap_flags & RDMA_CORE_CAP_PROT_ROCE_UDP_ENCAP; | 	return device->port_data[port_num].immutable.core_cap_flags & | ||||||
|  | 	       RDMA_CORE_CAP_PROT_ROCE_UDP_ENCAP; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static inline bool rdma_protocol_roce_eth_encap(const struct ib_device *device, u8 port_num) | static inline bool rdma_protocol_roce_eth_encap(const struct ib_device *device, u8 port_num) | ||||||
| { | { | ||||||
| 	return device->port_immutable[port_num].core_cap_flags & RDMA_CORE_CAP_PROT_ROCE; | 	return device->port_data[port_num].immutable.core_cap_flags & | ||||||
|  | 	       RDMA_CORE_CAP_PROT_ROCE; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static inline bool rdma_protocol_iwarp(const struct ib_device *device, u8 port_num) | static inline bool rdma_protocol_iwarp(const struct ib_device *device, u8 port_num) | ||||||
| { | { | ||||||
| 	return device->port_immutable[port_num].core_cap_flags & RDMA_CORE_CAP_PROT_IWARP; | 	return device->port_data[port_num].immutable.core_cap_flags & | ||||||
|  | 	       RDMA_CORE_CAP_PROT_IWARP; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static inline bool rdma_ib_or_roce(const struct ib_device *device, u8 port_num) | static inline bool rdma_ib_or_roce(const struct ib_device *device, u8 port_num) | ||||||
| @ -2898,12 +2901,14 @@ static inline bool rdma_ib_or_roce(const struct ib_device *device, u8 port_num) | |||||||
| 
 | 
 | ||||||
| static inline bool rdma_protocol_raw_packet(const struct ib_device *device, u8 port_num) | static inline bool rdma_protocol_raw_packet(const struct ib_device *device, u8 port_num) | ||||||
| { | { | ||||||
| 	return device->port_immutable[port_num].core_cap_flags & RDMA_CORE_CAP_PROT_RAW_PACKET; | 	return device->port_data[port_num].immutable.core_cap_flags & | ||||||
|  | 	       RDMA_CORE_CAP_PROT_RAW_PACKET; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static inline bool rdma_protocol_usnic(const struct ib_device *device, u8 port_num) | static inline bool rdma_protocol_usnic(const struct ib_device *device, u8 port_num) | ||||||
| { | { | ||||||
| 	return device->port_immutable[port_num].core_cap_flags & RDMA_CORE_CAP_PROT_USNIC; | 	return device->port_data[port_num].immutable.core_cap_flags & | ||||||
|  | 	       RDMA_CORE_CAP_PROT_USNIC; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
| @ -2920,7 +2925,8 @@ static inline bool rdma_protocol_usnic(const struct ib_device *device, u8 port_n | |||||||
|  */ |  */ | ||||||
| static inline bool rdma_cap_ib_mad(const struct ib_device *device, u8 port_num) | static inline bool rdma_cap_ib_mad(const struct ib_device *device, u8 port_num) | ||||||
| { | { | ||||||
| 	return device->port_immutable[port_num].core_cap_flags & RDMA_CORE_CAP_IB_MAD; | 	return device->port_data[port_num].immutable.core_cap_flags & | ||||||
|  | 	       RDMA_CORE_CAP_IB_MAD; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
| @ -2944,8 +2950,8 @@ static inline bool rdma_cap_ib_mad(const struct ib_device *device, u8 port_num) | |||||||
|  */ |  */ | ||||||
| static inline bool rdma_cap_opa_mad(struct ib_device *device, u8 port_num) | static inline bool rdma_cap_opa_mad(struct ib_device *device, u8 port_num) | ||||||
| { | { | ||||||
| 	return (device->port_immutable[port_num].core_cap_flags & RDMA_CORE_CAP_OPA_MAD) | 	return (device->port_data[port_num].immutable.core_cap_flags & | ||||||
| 		== RDMA_CORE_CAP_OPA_MAD; | 		RDMA_CORE_CAP_OPA_MAD) == RDMA_CORE_CAP_OPA_MAD; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
| @ -2970,7 +2976,8 @@ static inline bool rdma_cap_opa_mad(struct ib_device *device, u8 port_num) | |||||||
|  */ |  */ | ||||||
| static inline bool rdma_cap_ib_smi(const struct ib_device *device, u8 port_num) | static inline bool rdma_cap_ib_smi(const struct ib_device *device, u8 port_num) | ||||||
| { | { | ||||||
| 	return device->port_immutable[port_num].core_cap_flags & RDMA_CORE_CAP_IB_SMI; | 	return device->port_data[port_num].immutable.core_cap_flags & | ||||||
|  | 	       RDMA_CORE_CAP_IB_SMI; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
| @ -2990,7 +2997,8 @@ static inline bool rdma_cap_ib_smi(const struct ib_device *device, u8 port_num) | |||||||
|  */ |  */ | ||||||
| static inline bool rdma_cap_ib_cm(const struct ib_device *device, u8 port_num) | static inline bool rdma_cap_ib_cm(const struct ib_device *device, u8 port_num) | ||||||
| { | { | ||||||
| 	return device->port_immutable[port_num].core_cap_flags & RDMA_CORE_CAP_IB_CM; | 	return device->port_data[port_num].immutable.core_cap_flags & | ||||||
|  | 	       RDMA_CORE_CAP_IB_CM; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
| @ -3007,7 +3015,8 @@ static inline bool rdma_cap_ib_cm(const struct ib_device *device, u8 port_num) | |||||||
|  */ |  */ | ||||||
| static inline bool rdma_cap_iw_cm(const struct ib_device *device, u8 port_num) | static inline bool rdma_cap_iw_cm(const struct ib_device *device, u8 port_num) | ||||||
| { | { | ||||||
| 	return device->port_immutable[port_num].core_cap_flags & RDMA_CORE_CAP_IW_CM; | 	return device->port_data[port_num].immutable.core_cap_flags & | ||||||
|  | 	       RDMA_CORE_CAP_IW_CM; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
| @ -3027,7 +3036,8 @@ static inline bool rdma_cap_iw_cm(const struct ib_device *device, u8 port_num) | |||||||
|  */ |  */ | ||||||
| static inline bool rdma_cap_ib_sa(const struct ib_device *device, u8 port_num) | static inline bool rdma_cap_ib_sa(const struct ib_device *device, u8 port_num) | ||||||
| { | { | ||||||
| 	return device->port_immutable[port_num].core_cap_flags & RDMA_CORE_CAP_IB_SA; | 	return device->port_data[port_num].immutable.core_cap_flags & | ||||||
|  | 	       RDMA_CORE_CAP_IB_SA; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
| @ -3067,7 +3077,8 @@ static inline bool rdma_cap_ib_mcast(const struct ib_device *device, u8 port_num | |||||||
|  */ |  */ | ||||||
| static inline bool rdma_cap_af_ib(const struct ib_device *device, u8 port_num) | static inline bool rdma_cap_af_ib(const struct ib_device *device, u8 port_num) | ||||||
| { | { | ||||||
| 	return device->port_immutable[port_num].core_cap_flags & RDMA_CORE_CAP_AF_IB; | 	return device->port_data[port_num].immutable.core_cap_flags & | ||||||
|  | 	       RDMA_CORE_CAP_AF_IB; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
| @ -3088,7 +3099,8 @@ static inline bool rdma_cap_af_ib(const struct ib_device *device, u8 port_num) | |||||||
|  */ |  */ | ||||||
| static inline bool rdma_cap_eth_ah(const struct ib_device *device, u8 port_num) | static inline bool rdma_cap_eth_ah(const struct ib_device *device, u8 port_num) | ||||||
| { | { | ||||||
| 	return device->port_immutable[port_num].core_cap_flags & RDMA_CORE_CAP_ETH_AH; | 	return device->port_data[port_num].immutable.core_cap_flags & | ||||||
|  | 	       RDMA_CORE_CAP_ETH_AH; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
| @ -3102,7 +3114,7 @@ static inline bool rdma_cap_eth_ah(const struct ib_device *device, u8 port_num) | |||||||
|  */ |  */ | ||||||
| static inline bool rdma_cap_opa_ah(struct ib_device *device, u8 port_num) | static inline bool rdma_cap_opa_ah(struct ib_device *device, u8 port_num) | ||||||
| { | { | ||||||
| 	return (device->port_immutable[port_num].core_cap_flags & | 	return (device->port_data[port_num].immutable.core_cap_flags & | ||||||
| 		RDMA_CORE_CAP_OPA_AH) == RDMA_CORE_CAP_OPA_AH; | 		RDMA_CORE_CAP_OPA_AH) == RDMA_CORE_CAP_OPA_AH; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -3120,7 +3132,7 @@ static inline bool rdma_cap_opa_ah(struct ib_device *device, u8 port_num) | |||||||
|  */ |  */ | ||||||
| static inline size_t rdma_max_mad_size(const struct ib_device *device, u8 port_num) | static inline size_t rdma_max_mad_size(const struct ib_device *device, u8 port_num) | ||||||
| { | { | ||||||
| 	return device->port_immutable[port_num].max_mad_size; | 	return device->port_data[port_num].immutable.max_mad_size; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user