memset(dev, 0, sizeof(*dev));
#ifdef HAVE_DEV_GET_BY_NAME_2ARG
- if ((netdev = dev_get_by_name(&init_net, ifname)) == NULL) {
+ netdev = dev_get_by_name(&init_net, ifname);
#else
- if ((netdev = dev_get_by_name(ifname)) == NULL) {
+ netdev = dev_get_by_name(ifname);
#endif
- CERROR("Can't find netdev of IF: %s\n", ifname);
- LIBCFS_FREE(dev, sizeof(*dev));
- return NULL;
+ if (netdev == NULL) {
+ dev->ibd_can_failover = 0;
+ } else {
+ dev->ibd_can_failover = !!(netdev->flags & IFF_MASTER);
+ dev_put(netdev);
}
- dev->ibd_can_failover = !!(netdev->flags & IFF_MASTER);
- dev_put(netdev);
-
CFS_INIT_LIST_HEAD(&dev->ibd_nets);
CFS_INIT_LIST_HEAD(&dev->ibd_list); /* not yet in kib_devs */
CFS_INIT_LIST_HEAD(&dev->ibd_fail_list);
struct kib_hca_dev;
+/* o2iblnd can run over aliased interface */
+#ifdef IFALIASZ
+#define KIB_IFNAME_SIZE IFALIASZ
+#else
+#define KIB_IFNAME_SIZE 256
+#endif
+
typedef struct
{
cfs_list_t ibd_list; /* chain on kib_devs */
cfs_list_t ibd_fail_list; /* chain on kib_failed_devs */
__u32 ibd_ifip; /* IPoIB interface IP */
- char ibd_ifname[32]; /* IPoIB interface name */
+ /** IPoIB interface name */
+ char ibd_ifname[KIB_IFNAME_SIZE];
int ibd_nnets; /* # nets extant */
cfs_time_t ibd_next_failover;