Lines Matching refs:mdev

75 static int mlx4_en_get_profile(struct mlx4_en_dev *mdev)  in mlx4_en_get_profile()  argument
77 struct mlx4_en_profile *params = &mdev->profile; in mlx4_en_get_profile()
83 if (params->udp_rss && !(mdev->dev->caps.flags in mlx4_en_get_profile()
85 mlx4_warn(mdev, "UDP RSS is not supported on this device.\n"); in mlx4_en_get_profile()
114 struct mlx4_en_dev *mdev = (struct mlx4_en_dev *) endev_ptr; in mlx4_en_event() local
120 if (!mdev->pndev[port]) in mlx4_en_event()
122 priv = mlx4_netdev_priv(mdev->pndev[port]); in mlx4_en_event()
126 queue_work(mdev->workqueue, &priv->linkstate_task); in mlx4_en_event()
130 mlx4_err(mdev, "Internal error detected, restarting device\n"); in mlx4_en_event()
138 !mdev->pndev[port]) in mlx4_en_event()
140 mlx4_warn(mdev, "Unhandled event %d for port %d\n", event, in mlx4_en_event()
147 struct mlx4_en_dev *mdev = endev_ptr; in mlx4_en_remove() local
150 mutex_lock(&mdev->state_lock); in mlx4_en_remove()
151 mdev->device_up = false; in mlx4_en_remove()
152 mutex_unlock(&mdev->state_lock); in mlx4_en_remove()
155 if (mdev->pndev[i]) in mlx4_en_remove()
156 mlx4_en_destroy_netdev(mdev->pndev[i]); in mlx4_en_remove()
158 flush_workqueue(mdev->workqueue); in mlx4_en_remove()
159 destroy_workqueue(mdev->workqueue); in mlx4_en_remove()
160 (void) mlx4_mr_free(dev, &mdev->mr); in mlx4_en_remove()
161 iounmap(mdev->uar_map); in mlx4_en_remove()
162 mlx4_uar_free(dev, &mdev->priv_uar); in mlx4_en_remove()
163 mlx4_pd_free(dev, mdev->priv_pdn); in mlx4_en_remove()
164 kfree(mdev); in mlx4_en_remove()
170 struct mlx4_en_dev *mdev = ctx; in mlx4_en_activate() local
174 mlx4_info(mdev, "Activating port:%d\n", i); in mlx4_en_activate()
175 if (mlx4_en_init_netdev(mdev, i, &mdev->profile.prof[i])) in mlx4_en_activate()
176 mdev->pndev[i] = NULL; in mlx4_en_activate()
182 struct mlx4_en_dev *mdev; in mlx4_en_add() local
185 mdev = kzalloc(sizeof(*mdev), GFP_KERNEL); in mlx4_en_add()
186 if (!mdev) in mlx4_en_add()
189 if (mlx4_pd_alloc(dev, &mdev->priv_pdn)) in mlx4_en_add()
192 if (mlx4_uar_alloc(dev, &mdev->priv_uar)) in mlx4_en_add()
195 mdev->uar_map = ioremap((phys_addr_t) mdev->priv_uar.pfn << PAGE_SHIFT, in mlx4_en_add()
197 if (!mdev->uar_map) in mlx4_en_add()
199 spin_lock_init(&mdev->uar_lock); in mlx4_en_add()
201 mdev->dev = dev; in mlx4_en_add()
202 mdev->dma_device = &dev->persist->pdev->dev; in mlx4_en_add()
203 mdev->pdev = dev->persist->pdev; in mlx4_en_add()
204 mdev->device_up = false; in mlx4_en_add()
206 mdev->LSO_support = !!(dev->caps.flags & (1 << 15)); in mlx4_en_add()
207 if (!mdev->LSO_support) in mlx4_en_add()
208 mlx4_warn(mdev, "LSO not supported, please upgrade to later " in mlx4_en_add()
211 if (mlx4_mr_alloc(mdev->dev, mdev->priv_pdn, 0, ~0ull, in mlx4_en_add()
213 0, 0, &mdev->mr)) { in mlx4_en_add()
214 mlx4_err(mdev, "Failed allocating memory region\n"); in mlx4_en_add()
217 if (mlx4_mr_enable(mdev->dev, &mdev->mr)) { in mlx4_en_add()
218 mlx4_err(mdev, "Failed enabling memory region\n"); in mlx4_en_add()
223 if (mlx4_en_get_profile(mdev)) { in mlx4_en_add()
224 mlx4_err(mdev, "Bad module parameters, aborting\n"); in mlx4_en_add()
229 mdev->port_cnt = 0; in mlx4_en_add()
231 mdev->port_cnt++; in mlx4_en_add()
234 mlx4_en_set_num_rx_rings(mdev); in mlx4_en_add()
239 mdev->workqueue = create_singlethread_workqueue("mlx4_en"); in mlx4_en_add()
240 if (!mdev->workqueue) in mlx4_en_add()
245 mutex_init(&mdev->state_lock); in mlx4_en_add()
246 mdev->device_up = true; in mlx4_en_add()
248 return mdev; in mlx4_en_add()
251 (void) mlx4_mr_free(dev, &mdev->mr); in mlx4_en_add()
253 if (mdev->uar_map) in mlx4_en_add()
254 iounmap(mdev->uar_map); in mlx4_en_add()
256 mlx4_uar_free(dev, &mdev->priv_uar); in mlx4_en_add()
258 mlx4_pd_free(dev, mdev->priv_pdn); in mlx4_en_add()
260 kfree(mdev); in mlx4_en_add()