Lines Matching refs:cdev
58 struct chtls_dev *cdev; in listen_notify_handler() local
69 list_for_each_entry(cdev, &cdev_list, list) { in listen_notify_handler()
71 ret = chtls_listen_start(cdev, sk); in listen_notify_handler()
73 chtls_listen_stop(cdev, sk); in listen_notify_handler()
126 struct chtls_dev *cdev; in chtls_inline_feature() local
129 cdev = to_chtls_dev(dev); in chtls_inline_feature()
131 for (i = 0; i < cdev->lldi->nports; i++) { in chtls_inline_feature()
132 netdev = cdev->ports[i]; in chtls_inline_feature()
152 static void chtls_register_dev(struct chtls_dev *cdev) in chtls_register_dev() argument
154 struct tls_device *tlsdev = &cdev->tlsdev; in chtls_register_dev()
157 strlcat(tlsdev->name, cdev->lldi->ports[0]->name, in chtls_register_dev()
162 tls_register_device(&cdev->tlsdev); in chtls_register_dev()
163 cdev->cdev_state = CHTLS_CDEV_STATE_UP; in chtls_register_dev()
166 static void chtls_unregister_dev(struct chtls_dev *cdev) in chtls_unregister_dev() argument
168 tls_unregister_device(&cdev->tlsdev); in chtls_unregister_dev()
173 struct chtls_dev *cdev = container_of(task_param, in process_deferq() local
177 spin_lock_bh(&cdev->deferq.lock); in process_deferq()
178 while ((skb = __skb_dequeue(&cdev->deferq)) != NULL) { in process_deferq()
179 spin_unlock_bh(&cdev->deferq.lock); in process_deferq()
180 DEFERRED_SKB_CB(skb)->handler(cdev, skb); in process_deferq()
181 spin_lock_bh(&cdev->deferq.lock); in process_deferq()
183 spin_unlock_bh(&cdev->deferq.lock); in process_deferq()
186 static int chtls_get_skb(struct chtls_dev *cdev) in chtls_get_skb() argument
188 cdev->askb = alloc_skb(sizeof(struct tcphdr), GFP_KERNEL); in chtls_get_skb()
189 if (!cdev->askb) in chtls_get_skb()
192 skb_put(cdev->askb, sizeof(struct tcphdr)); in chtls_get_skb()
193 skb_reset_transport_header(cdev->askb); in chtls_get_skb()
194 memset(cdev->askb->data, 0, cdev->askb->len); in chtls_get_skb()
201 struct chtls_dev *cdev; in chtls_uld_add() local
204 cdev = kzalloc(sizeof(*cdev) + info->nports * in chtls_uld_add()
206 if (!cdev) in chtls_uld_add()
213 if (chtls_get_skb(cdev)) in chtls_uld_add()
217 cdev->lldi = lldi; in chtls_uld_add()
218 cdev->pdev = lldi->pdev; in chtls_uld_add()
219 cdev->tids = lldi->tids; in chtls_uld_add()
220 cdev->ports = lldi->ports; in chtls_uld_add()
221 cdev->mtus = lldi->mtus; in chtls_uld_add()
222 cdev->tids = lldi->tids; in chtls_uld_add()
223 cdev->pfvf = FW_VIID_PFN_G(cxgb4_port_viid(lldi->ports[0])) in chtls_uld_add()
229 cdev->rspq_skb_cache[i] = __alloc_skb(size, in chtls_uld_add()
232 if (unlikely(!cdev->rspq_skb_cache[i])) in chtls_uld_add()
236 idr_init(&cdev->hwtid_idr); in chtls_uld_add()
237 INIT_WORK(&cdev->deferq_task, process_deferq); in chtls_uld_add()
238 spin_lock_init(&cdev->listen_lock); in chtls_uld_add()
239 spin_lock_init(&cdev->idr_lock); in chtls_uld_add()
240 cdev->send_page_order = min_t(uint, get_order(32768), in chtls_uld_add()
242 cdev->max_host_sndbuf = 48 * 1024; in chtls_uld_add()
245 if (chtls_init_kmap(cdev, lldi)) in chtls_uld_add()
249 list_add_tail(&cdev->list, &cdev_list); in chtls_uld_add()
252 return cdev; in chtls_uld_add()
255 kfree_skb(cdev->rspq_skb_cache[j]); in chtls_uld_add()
256 kfree_skb(cdev->askb); in chtls_uld_add()
260 kfree(cdev); in chtls_uld_add()
265 static void chtls_free_uld(struct chtls_dev *cdev) in chtls_free_uld() argument
269 chtls_unregister_dev(cdev); in chtls_free_uld()
270 kvfree(cdev->kmap.addr); in chtls_free_uld()
271 idr_destroy(&cdev->hwtid_idr); in chtls_free_uld()
273 kfree_skb(cdev->rspq_skb_cache[i]); in chtls_free_uld()
274 kfree(cdev->lldi); in chtls_free_uld()
275 if (cdev->askb) in chtls_free_uld()
276 kfree_skb(cdev->askb); in chtls_free_uld()
277 kfree(cdev); in chtls_free_uld()
282 struct chtls_dev *cdev, *tmp; in chtls_free_all_uld() local
285 list_for_each_entry_safe(cdev, tmp, &cdev_list, list) { in chtls_free_all_uld()
286 if (cdev->cdev_state == CHTLS_CDEV_STATE_UP) in chtls_free_all_uld()
287 chtls_free_uld(cdev); in chtls_free_all_uld()
294 struct chtls_dev *cdev = handle; in chtls_uld_state_change() local
298 chtls_register_dev(cdev); in chtls_uld_state_change()
306 list_del(&cdev->list); in chtls_uld_state_change()
308 chtls_free_uld(cdev); in chtls_uld_state_change()
341 static int chtls_recv_packet(struct chtls_dev *cdev, in chtls_recv_packet() argument
348 skb = copy_gl_to_skb_pkt(gl, rsp, cdev->lldi->sge_pktshift); in chtls_recv_packet()
352 ret = chtls_handlers[opcode](cdev, skb); in chtls_recv_packet()
359 static int chtls_recv_rsp(struct chtls_dev *cdev, const __be64 *rsp) in chtls_recv_rsp() argument
371 skb = cdev->rspq_skb_cache[rspq_bin]; in chtls_recv_rsp()
391 ret = chtls_handlers[opcode](cdev, skb); in chtls_recv_rsp()
398 static void chtls_recv(struct chtls_dev *cdev, in chtls_recv() argument
410 ret = chtls_handlers[opcode](cdev, skb); in chtls_recv()
418 struct chtls_dev *cdev = handle; in chtls_uld_rx_handler() local
425 if (chtls_recv_packet(cdev, gl, rsp) < 0) in chtls_uld_rx_handler()
431 return chtls_recv_rsp(cdev, rsp); in chtls_uld_rx_handler()
437 chtls_recv(cdev, &skb, rsp); in chtls_uld_rx_handler()