On Mon, Jun 08, 2015 at 05:12:06PM +0300, Matan Barak wrote:
> drivers/infiniband/core/core_priv.h | 26 ++
> drivers/infiniband/core/device.c | 77 +++++
I wouldn't mind seeing the core portion which consists of adding
the get_netdev be it's own little mini-series of three, adding the
core and the two driver enablement changes.
> + rcu_read_lock();
> + if (ib_dev->get_netdev)
> + idev =
> ib_dev->get_netdev(ib_dev, port);
If it wasn't clear from before, don't hold a rcu_read_lock around a
driver call back, return a net_device that is already dev_hold'd or
null.
> + down_read(&lists_rwsem);
> + list_for_each_entry_rcu(dev, &device_list, core_list)
No _rcu
> +void ib_dev_roce_ports_of_netdev(struct ib_device *ib_dev,
> roce_netdev_filter filter,
> + void *filter_cookie,
> roce_netdev_callback cb,
> + void *cookie)
> +{
> + u8 port;
> +
> + if (ib_dev->modify_gid)
[..]
> + if (ib_dev->get_netdev)
> + idev = ib_dev->get_netdev(ib_dev, port);
Why check modify_gid and then go on to test and call get_netdev? That
seems strange for a general purpose core API.
> + /* When calling get_netdev, the HW vendor's driver should return the
> + * net device of device @device at port @port_num. The function
> + * is called in rtnl_lock. The HW vendor's device driver must guarantee
> + * to return NULL before the net device has reached
> + * NETDEV_UNREGISTER_FINAL state.
rtnl_lock ? That doesn't seem to match what is going on..
Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html