Lines Matching refs:dev

44 static bool is_eth_supported(struct mlx4_dev *dev)  in is_eth_supported()  argument
46 for (int port = 1; port <= dev->caps.num_ports; port++) in is_eth_supported()
47 if (dev->caps.port_type[port] == MLX4_PORT_TYPE_ETH) in is_eth_supported()
53 static bool is_ib_supported(struct mlx4_dev *dev) in is_ib_supported() argument
55 for (int port = 1; port <= dev->caps.num_ports; port++) in is_ib_supported()
56 if (dev->caps.port_type[port] == MLX4_PORT_TYPE_IB) in is_ib_supported()
59 if (dev->caps.flags & MLX4_DEV_CAP_FLAG_IBOE) in is_ib_supported()
67 bool (*is_supported)(struct mlx4_dev *dev);
73 int mlx4_adev_init(struct mlx4_dev *dev) in mlx4_adev_init() argument
75 struct mlx4_priv *priv = mlx4_priv(dev); in mlx4_adev_init()
91 void mlx4_adev_cleanup(struct mlx4_dev *dev) in mlx4_adev_cleanup() argument
93 struct mlx4_priv *priv = mlx4_priv(dev); in mlx4_adev_cleanup()
99 static void adev_release(struct device *dev) in adev_release() argument
102 container_of(dev, struct mlx4_adev, adev.dev); in adev_release()
110 static struct mlx4_adev *add_adev(struct mlx4_dev *dev, int idx) in add_adev() argument
112 struct mlx4_priv *priv = mlx4_priv(dev); in add_adev()
125 adev->dev.parent = &dev->persist->pdev->dev; in add_adev()
126 adev->dev.release = adev_release; in add_adev()
127 madev->mdev = dev; in add_adev()
162 int mlx4_do_bond(struct mlx4_dev *dev, bool enable) in mlx4_do_bond() argument
164 struct mlx4_priv *priv = mlx4_priv(dev); in mlx4_do_bond()
167 if (!(dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_PORT_REMAP)) in mlx4_do_bond()
170 ret = mlx4_disable_rx_port_check(dev, enable); in mlx4_do_bond()
172 mlx4_err(dev, "Fail to %s rx port check\n", in mlx4_do_bond()
177 dev->flags |= MLX4_FLAG_BONDED; in mlx4_do_bond()
179 ret = mlx4_virt2phy_port_map(dev, 1, 2); in mlx4_do_bond()
181 mlx4_err(dev, "Fail to reset port map\n"); in mlx4_do_bond()
184 dev->flags &= ~MLX4_FLAG_BONDED; in mlx4_do_bond()
197 device_lock(&madev->adev.dev); in mlx4_do_bond()
198 if (!madev->adev.dev.driver) { in mlx4_do_bond()
199 device_unlock(&madev->adev.dev); in mlx4_do_bond()
203 madrv = container_of(madev->adev.dev.driver, struct mlx4_adrv, in mlx4_do_bond()
206 device_unlock(&madev->adev.dev); in mlx4_do_bond()
210 if (mlx4_is_mfunc(dev)) { in mlx4_do_bond()
211 mlx4_dbg(dev, in mlx4_do_bond()
214 device_unlock(&madev->adev.dev); in mlx4_do_bond()
219 device_unlock(&madev->adev.dev); in mlx4_do_bond()
222 priv->adev[i] = add_adev(dev, i); in mlx4_do_bond()
224 mlx4_warn(dev, "Device[%d] (%s) failed to load\n", i, in mlx4_do_bond()
230 mlx4_dbg(dev, in mlx4_do_bond()
240 void mlx4_dispatch_event(struct mlx4_dev *dev, enum mlx4_dev_event type, in mlx4_dispatch_event() argument
243 struct mlx4_priv *priv = mlx4_priv(dev); in mlx4_dispatch_event()
248 int mlx4_register_event_notifier(struct mlx4_dev *dev, in mlx4_register_event_notifier() argument
251 struct mlx4_priv *priv = mlx4_priv(dev); in mlx4_register_event_notifier()
257 int mlx4_unregister_event_notifier(struct mlx4_dev *dev, in mlx4_unregister_event_notifier() argument
260 struct mlx4_priv *priv = mlx4_priv(dev); in mlx4_unregister_event_notifier()
266 static int add_drivers(struct mlx4_dev *dev) in add_drivers() argument
268 struct mlx4_priv *priv = mlx4_priv(dev); in add_drivers()
278 is_supported = mlx4_adev_devices[i].is_supported(dev); in add_drivers()
283 priv->adev[i] = add_adev(dev, i); in add_drivers()
285 mlx4_warn(dev, "Device[%d] (%s) failed to load\n", i, in add_drivers()
297 static void delete_drivers(struct mlx4_dev *dev) in delete_drivers() argument
299 struct mlx4_priv *priv = mlx4_priv(dev); in delete_drivers()
303 delete_all = !(dev->persist->interface_state & MLX4_INTERFACE_STATE_UP); in delete_drivers()
312 is_supported = mlx4_adev_devices[i].is_supported(dev); in delete_drivers()
324 static int rescan_drivers_locked(struct mlx4_dev *dev) in rescan_drivers_locked() argument
328 delete_drivers(dev); in rescan_drivers_locked()
329 if (!(dev->persist->interface_state & MLX4_INTERFACE_STATE_UP)) in rescan_drivers_locked()
332 return add_drivers(dev); in rescan_drivers_locked()
335 int mlx4_register_device(struct mlx4_dev *dev) in mlx4_register_device() argument
341 dev->persist->interface_state |= MLX4_INTERFACE_STATE_UP; in mlx4_register_device()
343 ret = rescan_drivers_locked(dev); in mlx4_register_device()
348 mlx4_unregister_device(dev); in mlx4_register_device()
352 mlx4_start_catas_poll(dev); in mlx4_register_device()
357 void mlx4_unregister_device(struct mlx4_dev *dev) in mlx4_unregister_device() argument
359 if (!(dev->persist->interface_state & MLX4_INTERFACE_STATE_UP)) in mlx4_unregister_device()
362 mlx4_stop_catas_poll(dev); in mlx4_unregister_device()
363 if (dev->persist->interface_state & MLX4_INTERFACE_STATE_DELETION && in mlx4_unregister_device()
364 mlx4_is_slave(dev)) { in mlx4_unregister_device()
367 swab32(readl(&mlx4_priv(dev)->mfunc.comm->slave_read)); in mlx4_unregister_device()
370 mlx4_dbg(dev, "%s: comm channel is down, entering error state.\n", in mlx4_unregister_device()
372 mlx4_enter_error_state(dev->persist); in mlx4_unregister_device()
377 dev->persist->interface_state &= ~MLX4_INTERFACE_STATE_UP; in mlx4_unregister_device()
379 rescan_drivers_locked(dev); in mlx4_unregister_device()
384 struct devlink_port *mlx4_get_devlink_port(struct mlx4_dev *dev, int port) in mlx4_get_devlink_port() argument
386 struct mlx4_port_info *info = &mlx4_priv(dev)->port[port]; in mlx4_get_devlink_port()