Lines Matching refs:mdev

96 		       level, DRV_NAME, dev_name(&priv->mdev->pdev->dev),  in en_print()
117 if (mlx4_is_mfunc(priv->mdev->dev) && in mlx4_en_update_loopback_state()
124 if (mlx4_is_mfunc(priv->mdev->dev) || priv->validate_loopback) in mlx4_en_update_loopback_state()
127 mutex_lock(&priv->mdev->state_lock); in mlx4_en_update_loopback_state()
128 if (priv->mdev->dev->caps.flags2 & in mlx4_en_update_loopback_state()
145 mlx4_warn(priv->mdev, "failed to change mcast loopback\n"); in mlx4_en_update_loopback_state()
147 mutex_unlock(&priv->mdev->state_lock); in mlx4_en_update_loopback_state()
150 static int mlx4_en_get_profile(struct mlx4_en_dev *mdev) in mlx4_en_get_profile() argument
152 struct mlx4_en_profile *params = &mdev->profile; in mlx4_en_get_profile()
160 if (params->udp_rss && !(mdev->dev->caps.flags in mlx4_en_get_profile()
162 mlx4_warn(mdev, "UDP RSS is not supported on this device\n"); in mlx4_en_get_profile()
191 struct mlx4_en_dev *mdev = (struct mlx4_en_dev *) endev_ptr; in mlx4_en_event() local
197 if (!mdev->pndev[port]) in mlx4_en_event()
199 priv = netdev_priv(mdev->pndev[port]); in mlx4_en_event()
203 queue_work(mdev->workqueue, &priv->linkstate_task); in mlx4_en_event()
207 mlx4_err(mdev, "Internal error detected, restarting device\n"); in mlx4_en_event()
215 !mdev->pndev[port]) in mlx4_en_event()
217 mlx4_warn(mdev, "Unhandled event %d for port %d\n", event, in mlx4_en_event()
224 struct mlx4_en_dev *mdev = endev_ptr; in mlx4_en_remove() local
227 mutex_lock(&mdev->state_lock); in mlx4_en_remove()
228 mdev->device_up = false; in mlx4_en_remove()
229 mutex_unlock(&mdev->state_lock); in mlx4_en_remove()
232 if (mdev->pndev[i]) in mlx4_en_remove()
233 mlx4_en_destroy_netdev(mdev->pndev[i]); in mlx4_en_remove()
235 flush_workqueue(mdev->workqueue); in mlx4_en_remove()
236 destroy_workqueue(mdev->workqueue); in mlx4_en_remove()
237 (void) mlx4_mr_free(dev, &mdev->mr); in mlx4_en_remove()
238 iounmap(mdev->uar_map); in mlx4_en_remove()
239 mlx4_uar_free(dev, &mdev->priv_uar); in mlx4_en_remove()
240 mlx4_pd_free(dev, mdev->priv_pdn); in mlx4_en_remove()
241 if (mdev->nb.notifier_call) in mlx4_en_remove()
242 unregister_netdevice_notifier(&mdev->nb); in mlx4_en_remove()
243 kfree(mdev); in mlx4_en_remove()
249 struct mlx4_en_dev *mdev = ctx; in mlx4_en_activate() local
253 mlx4_info(mdev, "Activating port:%d\n", i); in mlx4_en_activate()
254 if (mlx4_en_init_netdev(mdev, i, &mdev->profile.prof[i])) in mlx4_en_activate()
255 mdev->pndev[i] = NULL; in mlx4_en_activate()
259 mdev->nb.notifier_call = mlx4_en_netdev_event; in mlx4_en_activate()
260 if (register_netdevice_notifier(&mdev->nb)) { in mlx4_en_activate()
261 mdev->nb.notifier_call = NULL; in mlx4_en_activate()
262 mlx4_err(mdev, "Failed to create notifier\n"); in mlx4_en_activate()
268 struct mlx4_en_dev *mdev; in mlx4_en_add() local
273 mdev = kzalloc(sizeof(*mdev), GFP_KERNEL); in mlx4_en_add()
274 if (!mdev) in mlx4_en_add()
277 if (mlx4_pd_alloc(dev, &mdev->priv_pdn)) in mlx4_en_add()
280 if (mlx4_uar_alloc(dev, &mdev->priv_uar)) in mlx4_en_add()
283 mdev->uar_map = ioremap((phys_addr_t) mdev->priv_uar.pfn << PAGE_SHIFT, in mlx4_en_add()
285 if (!mdev->uar_map) in mlx4_en_add()
287 spin_lock_init(&mdev->uar_lock); in mlx4_en_add()
289 mdev->dev = dev; in mlx4_en_add()
290 mdev->dma_device = &dev->persist->pdev->dev; in mlx4_en_add()
291 mdev->pdev = dev->persist->pdev; in mlx4_en_add()
292 mdev->device_up = false; in mlx4_en_add()
294 mdev->LSO_support = !!(dev->caps.flags & (1 << 15)); in mlx4_en_add()
295 if (!mdev->LSO_support) in mlx4_en_add()
296 mlx4_warn(mdev, "LSO not supported, please upgrade to later FW version to enable LSO\n"); in mlx4_en_add()
298 if (mlx4_mr_alloc(mdev->dev, mdev->priv_pdn, 0, ~0ull, in mlx4_en_add()
300 0, 0, &mdev->mr)) { in mlx4_en_add()
301 mlx4_err(mdev, "Failed allocating memory region\n"); in mlx4_en_add()
304 if (mlx4_mr_enable(mdev->dev, &mdev->mr)) { in mlx4_en_add()
305 mlx4_err(mdev, "Failed enabling memory region\n"); in mlx4_en_add()
310 if (mlx4_en_get_profile(mdev)) { in mlx4_en_add()
311 mlx4_err(mdev, "Bad module parameters, aborting\n"); in mlx4_en_add()
316 mdev->port_cnt = 0; in mlx4_en_add()
318 mdev->port_cnt++; in mlx4_en_add()
321 mlx4_en_set_num_rx_rings(mdev); in mlx4_en_add()
326 mdev->workqueue = create_singlethread_workqueue("mlx4_en"); in mlx4_en_add()
327 if (!mdev->workqueue) in mlx4_en_add()
332 mutex_init(&mdev->state_lock); in mlx4_en_add()
333 mdev->device_up = true; in mlx4_en_add()
335 return mdev; in mlx4_en_add()
338 (void) mlx4_mr_free(dev, &mdev->mr); in mlx4_en_add()
340 if (mdev->uar_map) in mlx4_en_add()
341 iounmap(mdev->uar_map); in mlx4_en_add()
343 mlx4_uar_free(dev, &mdev->priv_uar); in mlx4_en_add()
345 mlx4_pd_free(dev, mdev->priv_pdn); in mlx4_en_add()
347 kfree(mdev); in mlx4_en_add()