Lines Matching refs:cdev

61 		ret = chtls_listen_start(clisten->cdev, clisten->sk);  in listen_notify_handler()
65 chtls_listen_stop(clisten->cdev, clisten->sk); in listen_notify_handler()
84 static int chtls_start_listen(struct chtls_dev *cdev, struct sock *sk) in chtls_start_listen() argument
100 clisten->cdev = cdev; in chtls_start_listen()
109 static void chtls_stop_listen(struct chtls_dev *cdev, struct sock *sk) in chtls_stop_listen() argument
119 clisten->cdev = cdev; in chtls_stop_listen()
130 struct chtls_dev *cdev; in chtls_inline_feature() local
133 cdev = to_chtls_dev(dev); in chtls_inline_feature()
135 for (i = 0; i < cdev->lldi->nports; i++) { in chtls_inline_feature()
136 netdev = cdev->ports[i]; in chtls_inline_feature()
145 struct chtls_dev *cdev = to_chtls_dev(dev); in chtls_create_hash() local
148 return chtls_start_listen(cdev, sk); in chtls_create_hash()
154 struct chtls_dev *cdev = to_chtls_dev(dev); in chtls_destroy_hash() local
157 chtls_stop_listen(cdev, sk); in chtls_destroy_hash()
160 static void chtls_free_uld(struct chtls_dev *cdev) in chtls_free_uld() argument
164 tls_unregister_device(&cdev->tlsdev); in chtls_free_uld()
165 kvfree(cdev->kmap.addr); in chtls_free_uld()
166 idr_destroy(&cdev->hwtid_idr); in chtls_free_uld()
168 kfree_skb(cdev->rspq_skb_cache[i]); in chtls_free_uld()
169 kfree(cdev->lldi); in chtls_free_uld()
170 kfree_skb(cdev->askb); in chtls_free_uld()
171 kfree(cdev); in chtls_free_uld()
176 struct chtls_dev *cdev; in chtls_dev_release() local
180 cdev = to_chtls_dev(dev); in chtls_dev_release()
181 chtls_free_uld(cdev); in chtls_dev_release()
184 static void chtls_register_dev(struct chtls_dev *cdev) in chtls_register_dev() argument
186 struct tls_device *tlsdev = &cdev->tlsdev; in chtls_register_dev()
189 strlcat(tlsdev->name, cdev->lldi->ports[0]->name, in chtls_register_dev()
197 cdev->cdev_state = CHTLS_CDEV_STATE_UP; in chtls_register_dev()
202 struct chtls_dev *cdev = container_of(task_param, in process_deferq() local
206 spin_lock_bh(&cdev->deferq.lock); in process_deferq()
207 while ((skb = __skb_dequeue(&cdev->deferq)) != NULL) { in process_deferq()
208 spin_unlock_bh(&cdev->deferq.lock); in process_deferq()
209 DEFERRED_SKB_CB(skb)->handler(cdev, skb); in process_deferq()
210 spin_lock_bh(&cdev->deferq.lock); in process_deferq()
212 spin_unlock_bh(&cdev->deferq.lock); in process_deferq()
215 static int chtls_get_skb(struct chtls_dev *cdev) in chtls_get_skb() argument
217 cdev->askb = alloc_skb(sizeof(struct tcphdr), GFP_KERNEL); in chtls_get_skb()
218 if (!cdev->askb) in chtls_get_skb()
221 skb_put(cdev->askb, sizeof(struct tcphdr)); in chtls_get_skb()
222 skb_reset_transport_header(cdev->askb); in chtls_get_skb()
223 memset(cdev->askb->data, 0, cdev->askb->len); in chtls_get_skb()
230 struct chtls_dev *cdev; in chtls_uld_add() local
233 cdev = kzalloc(sizeof(*cdev) + info->nports * in chtls_uld_add()
235 if (!cdev) in chtls_uld_add()
242 if (chtls_get_skb(cdev)) in chtls_uld_add()
246 cdev->lldi = lldi; in chtls_uld_add()
247 cdev->pdev = lldi->pdev; in chtls_uld_add()
248 cdev->tids = lldi->tids; in chtls_uld_add()
249 cdev->ports = lldi->ports; in chtls_uld_add()
250 cdev->mtus = lldi->mtus; in chtls_uld_add()
251 cdev->tids = lldi->tids; in chtls_uld_add()
252 cdev->pfvf = FW_VIID_PFN_G(cxgb4_port_viid(lldi->ports[0])) in chtls_uld_add()
258 cdev->rspq_skb_cache[i] = __alloc_skb(size, in chtls_uld_add()
261 if (unlikely(!cdev->rspq_skb_cache[i])) in chtls_uld_add()
265 idr_init(&cdev->hwtid_idr); in chtls_uld_add()
266 INIT_WORK(&cdev->deferq_task, process_deferq); in chtls_uld_add()
267 spin_lock_init(&cdev->listen_lock); in chtls_uld_add()
268 spin_lock_init(&cdev->idr_lock); in chtls_uld_add()
269 cdev->send_page_order = min_t(uint, get_order(32768), in chtls_uld_add()
271 cdev->max_host_sndbuf = 48 * 1024; in chtls_uld_add()
274 if (chtls_init_kmap(cdev, lldi)) in chtls_uld_add()
278 list_add_tail(&cdev->list, &cdev_list); in chtls_uld_add()
281 return cdev; in chtls_uld_add()
284 kfree_skb(cdev->rspq_skb_cache[j]); in chtls_uld_add()
285 kfree_skb(cdev->askb); in chtls_uld_add()
289 kfree(cdev); in chtls_uld_add()
296 struct chtls_dev *cdev, *tmp; in chtls_free_all_uld() local
299 list_for_each_entry_safe(cdev, tmp, &cdev_list, list) { in chtls_free_all_uld()
300 if (cdev->cdev_state == CHTLS_CDEV_STATE_UP) { in chtls_free_all_uld()
301 list_del(&cdev->list); in chtls_free_all_uld()
302 kref_put(&cdev->tlsdev.kref, cdev->tlsdev.release); in chtls_free_all_uld()
310 struct chtls_dev *cdev = handle; in chtls_uld_state_change() local
314 chtls_register_dev(cdev); in chtls_uld_state_change()
322 list_del(&cdev->list); in chtls_uld_state_change()
324 kref_put(&cdev->tlsdev.kref, cdev->tlsdev.release); in chtls_uld_state_change()
357 static int chtls_recv_packet(struct chtls_dev *cdev, in chtls_recv_packet() argument
364 skb = copy_gl_to_skb_pkt(gl, rsp, cdev->lldi->sge_pktshift); in chtls_recv_packet()
368 ret = chtls_handlers[opcode](cdev, skb); in chtls_recv_packet()
375 static int chtls_recv_rsp(struct chtls_dev *cdev, const __be64 *rsp) in chtls_recv_rsp() argument
387 skb = cdev->rspq_skb_cache[rspq_bin]; in chtls_recv_rsp()
407 ret = chtls_handlers[opcode](cdev, skb); in chtls_recv_rsp()
414 static void chtls_recv(struct chtls_dev *cdev, in chtls_recv() argument
426 ret = chtls_handlers[opcode](cdev, skb); in chtls_recv()
434 struct chtls_dev *cdev = handle; in chtls_uld_rx_handler() local
441 if (chtls_recv_packet(cdev, gl, rsp) < 0) in chtls_uld_rx_handler()
447 return chtls_recv_rsp(cdev, rsp); in chtls_uld_rx_handler()
453 chtls_recv(cdev, &skb, rsp); in chtls_uld_rx_handler()