aboutsummaryrefslogtreecommitdiffstats
path: root/include/rdma/ib_verbs.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/rdma/ib_verbs.h')
-rw-r--r--include/rdma/ib_verbs.h20
1 files changed, 17 insertions, 3 deletions
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 986fddb08579..b0f898e3b2e7 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1745,6 +1745,7 @@ struct ib_device {
1745 char node_desc[64]; 1745 char node_desc[64];
1746 __be64 node_guid; 1746 __be64 node_guid;
1747 u32 local_dma_lkey; 1747 u32 local_dma_lkey;
1748 u16 is_switch:1;
1748 u8 node_type; 1749 u8 node_type;
1749 u8 phys_port_cnt; 1750 u8 phys_port_cnt;
1750 1751
@@ -1824,6 +1825,20 @@ enum rdma_link_layer rdma_port_get_link_layer(struct ib_device *device,
1824 u8 port_num); 1825 u8 port_num);
1825 1826
1826/** 1827/**
1828 * rdma_cap_ib_switch - Check if the device is IB switch
1829 * @device: Device to check
1830 *
1831 * Device driver is responsible for setting is_switch bit on
1832 * in ib_device structure at init time.
1833 *
1834 * Return: true if the device is IB switch.
1835 */
1836static inline bool rdma_cap_ib_switch(const struct ib_device *device)
1837{
1838 return device->is_switch;
1839}
1840
1841/**
1827 * rdma_start_port - Return the first valid port number for the device 1842 * rdma_start_port - Return the first valid port number for the device
1828 * specified 1843 * specified
1829 * 1844 *
@@ -1833,7 +1848,7 @@ enum rdma_link_layer rdma_port_get_link_layer(struct ib_device *device,
1833 */ 1848 */
1834static inline u8 rdma_start_port(const struct ib_device *device) 1849static inline u8 rdma_start_port(const struct ib_device *device)
1835{ 1850{
1836 return (device->node_type == RDMA_NODE_IB_SWITCH) ? 0 : 1; 1851 return rdma_cap_ib_switch(device) ? 0 : 1;
1837} 1852}
1838 1853
1839/** 1854/**
@@ -1846,8 +1861,7 @@ static inline u8 rdma_start_port(const struct ib_device *device)
1846 */ 1861 */
1847static inline u8 rdma_end_port(const struct ib_device *device) 1862static inline u8 rdma_end_port(const struct ib_device *device)
1848{ 1863{
1849 return (device->node_type == RDMA_NODE_IB_SWITCH) ? 1864 return rdma_cap_ib_switch(device) ? 0 : device->phys_port_cnt;
1850 0 : device->phys_port_cnt;
1851} 1865}
1852 1866
1853static inline bool rdma_protocol_ib(const struct ib_device *device, u8 port_num) 1867static inline bool rdma_protocol_ib(const struct ib_device *device, u8 port_num)