diff options
Diffstat (limited to 'include/rdma/ib_verbs.h')
| -rw-r--r-- | include/rdma/ib_verbs.h | 20 |
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 | */ | ||
| 1836 | static 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 | */ |
| 1834 | static inline u8 rdma_start_port(const struct ib_device *device) | 1849 | static 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 | */ |
| 1847 | static inline u8 rdma_end_port(const struct ib_device *device) | 1862 | static 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 | ||
| 1853 | static inline bool rdma_protocol_ib(const struct ib_device *device, u8 port_num) | 1867 | static inline bool rdma_protocol_ib(const struct ib_device *device, u8 port_num) |
