|
42 | 42 | #include <net/sock.h>
|
43 | 43 | #include <net/route.h>
|
44 | 44 | #include <net/inet_common.h>
|
| 45 | +#include <net/ipoib/if_ipoib.h> |
45 | 46 | #include <linux/rtnetlink.h>
|
46 | 47 |
|
47 | 48 | #include "rds.h"
|
@@ -1725,21 +1726,6 @@ static void rds_ib_dump_ip_config(void)
|
1725 | 1726 | }
|
1726 | 1727 | }
|
1727 | 1728 |
|
1728 |
| -/* |
1729 |
| - * Parse device name to extract pkey |
1730 |
| - */ |
1731 |
| -static uint16_t |
1732 |
| -get_netdev_pkey(struct net_device *dev) |
1733 |
| -{ |
1734 |
| - uint16_t pkey = 0; |
1735 |
| - int ibdevnum = -1; |
1736 |
| - |
1737 |
| - if (sscanf(dev->name, "ib%d.%04hx", &ibdevnum, &pkey) == 2) |
1738 |
| - return pkey; |
1739 |
| - else |
1740 |
| - return 0xffff; /* default pkey value! */ |
1741 |
| -} |
1742 |
| - |
1743 | 1729 |
|
1744 | 1730 | /*
|
1745 | 1731 | * Scheduling initial failovers. The ASCII art below documents the startup
|
@@ -1889,7 +1875,12 @@ static int rds_ib_ip_config_init(void)
|
1889 | 1875 | !(dev->flags & IFF_SLAVE) &&
|
1890 | 1876 | !(dev->flags & IFF_MASTER) &&
|
1891 | 1877 | in_dev) {
|
1892 |
| - uint16_t pkey = get_netdev_pkey(dev); |
| 1878 | + u16 pkey = 0; |
| 1879 | + |
| 1880 | + if (ipoib_get_netdev_pkey(dev, &pkey) != 0) { |
| 1881 | + printk(KERN_ERR "RDS/IB: failed to get pkey " |
| 1882 | + "for devname %s\n", dev->name); |
| 1883 | + } |
1893 | 1884 |
|
1894 | 1885 | memcpy(&gid, dev->dev_addr + 4, sizeof gid);
|
1895 | 1886 |
|
@@ -2266,7 +2257,12 @@ static void rds_ib_joining_ip(struct work_struct *_work)
|
2266 | 2257 | work->timeout -= msecs_to_jiffies(100);
|
2267 | 2258 | queue_delayed_work(rds_wq, &work->work, msecs_to_jiffies(100));
|
2268 | 2259 | } else if (in_dev && in_dev->ifa_list) {
|
2269 |
| - uint16_t pkey = get_netdev_pkey(ndev); |
| 2260 | + u16 pkey = 0; |
| 2261 | + |
| 2262 | + if (ipoib_get_netdev_pkey(ndev, &pkey) != 0) { |
| 2263 | + printk(KERN_ERR "RDS/IB: failed to get pkey " |
| 2264 | + "for devname %s\n", ndev->name); |
| 2265 | + } |
2270 | 2266 |
|
2271 | 2267 | memcpy(&gid, ndev->dev_addr + 4, sizeof gid);
|
2272 | 2268 | list_for_each_entry_rcu(rds_ibdev,
|
|
0 commit comments