Lines Matching refs:rndis
386 struct f_rndis *rndis = _rndis; in rndis_response_available() local
387 struct usb_request *req = rndis->notify_req; in rndis_response_available()
388 struct usb_composite_dev *cdev = rndis->port.func.config->cdev; in rndis_response_available()
392 if (atomic_inc_return(&rndis->notify_count) != 1) in rndis_response_available()
403 status = usb_ep_queue(rndis->notify, req, GFP_ATOMIC); in rndis_response_available()
405 atomic_dec(&rndis->notify_count); in rndis_response_available()
412 struct f_rndis *rndis = req->context; in rndis_response_complete() local
413 struct usb_composite_dev *cdev = rndis->port.func.config->cdev; in rndis_response_complete()
424 atomic_set(&rndis->notify_count, 0); in rndis_response_complete()
432 if (ep != rndis->notify) in rndis_response_complete()
438 if (atomic_dec_and_test(&rndis->notify_count)) in rndis_response_complete()
440 status = usb_ep_queue(rndis->notify, req, GFP_ATOMIC); in rndis_response_complete()
442 atomic_dec(&rndis->notify_count); in rndis_response_complete()
451 struct f_rndis *rndis = req->context; in rndis_command_complete() local
456 status = rndis_msg_parser(rndis->config, (u8 *) req->buf); in rndis_command_complete()
466 struct f_rndis *rndis = func_to_rndis(f); in rndis_setup() local
484 if (w_value || w_index != rndis->ctrl_id) in rndis_setup()
489 req->context = rndis; in rndis_setup()
495 if (w_value || w_index != rndis->ctrl_id) in rndis_setup()
502 buf = rndis_get_next_response(rndis->config, &n); in rndis_setup()
506 req->context = rndis; in rndis_setup()
507 rndis_free_response(rndis->config, buf); in rndis_setup()
540 struct f_rndis *rndis = func_to_rndis(f); in rndis_set_alt() local
545 if (intf == rndis->ctrl_id) { in rndis_set_alt()
546 if (rndis->notify->driver_data) { in rndis_set_alt()
548 usb_ep_disable(rndis->notify); in rndis_set_alt()
550 if (!rndis->notify->desc) { in rndis_set_alt()
552 if (config_ep_by_speed(cdev->gadget, f, rndis->notify)) in rndis_set_alt()
555 usb_ep_enable(rndis->notify); in rndis_set_alt()
556 rndis->notify->driver_data = rndis; in rndis_set_alt()
558 } else if (intf == rndis->data_id) { in rndis_set_alt()
561 if (rndis->port.in_ep->driver_data) { in rndis_set_alt()
563 gether_disconnect(&rndis->port); in rndis_set_alt()
566 if (!rndis->port.in_ep->desc || !rndis->port.out_ep->desc) { in rndis_set_alt()
569 rndis->port.in_ep) || in rndis_set_alt()
571 rndis->port.out_ep)) { in rndis_set_alt()
572 rndis->port.in_ep->desc = NULL; in rndis_set_alt()
573 rndis->port.out_ep->desc = NULL; in rndis_set_alt()
579 rndis->port.is_zlp_ok = false; in rndis_set_alt()
593 rndis->port.cdc_filter = 0; in rndis_set_alt()
596 net = gether_connect(&rndis->port); in rndis_set_alt()
600 rndis_set_param_dev(rndis->config, net, in rndis_set_alt()
601 &rndis->port.cdc_filter); in rndis_set_alt()
612 struct f_rndis *rndis = func_to_rndis(f); in rndis_disable() local
615 if (!rndis->notify->driver_data) in rndis_disable()
620 rndis_uninit(rndis->config); in rndis_disable()
621 gether_disconnect(&rndis->port); in rndis_disable()
623 usb_ep_disable(rndis->notify); in rndis_disable()
624 rndis->notify->driver_data = NULL; in rndis_disable()
638 struct f_rndis *rndis = func_to_rndis(&geth->func); in rndis_open() local
643 rndis_set_param_medium(rndis->config, RNDIS_MEDIUM_802_3, in rndis_open()
645 rndis_signal_connect(rndis->config); in rndis_open()
650 struct f_rndis *rndis = func_to_rndis(&geth->func); in rndis_close() local
654 rndis_set_param_medium(rndis->config, RNDIS_MEDIUM_802_3, 0); in rndis_close()
655 rndis_signal_disconnect(rndis->config); in rndis_close()
673 struct f_rndis *rndis = func_to_rndis(f); in rndis_bind() local
723 rndis->ctrl_id = status; in rndis_bind()
736 rndis->data_id = status; in rndis_bind()
747 rndis->port.in_ep = ep; in rndis_bind()
753 rndis->port.out_ep = ep; in rndis_bind()
763 rndis->notify = ep; in rndis_bind()
769 rndis->notify_req = usb_ep_alloc_request(ep, GFP_KERNEL); in rndis_bind()
770 if (!rndis->notify_req) in rndis_bind()
772 rndis->notify_req->buf = kmalloc(STATUS_BYTECOUNT, GFP_KERNEL); in rndis_bind()
773 if (!rndis->notify_req->buf) in rndis_bind()
775 rndis->notify_req->length = STATUS_BYTECOUNT; in rndis_bind()
776 rndis->notify_req->context = rndis; in rndis_bind()
777 rndis->notify_req->complete = rndis_response_complete; in rndis_bind()
796 rndis->port.open = rndis_open; in rndis_bind()
797 rndis->port.close = rndis_close; in rndis_bind()
799 rndis_set_param_medium(rndis->config, RNDIS_MEDIUM_802_3, 0); in rndis_bind()
800 rndis_set_host_mac(rndis->config, rndis->ethaddr); in rndis_bind()
802 if (rndis->manufacturer && rndis->vendorID && in rndis_bind()
803 rndis_set_param_vendor(rndis->config, rndis->vendorID, in rndis_bind()
804 rndis->manufacturer)) { in rndis_bind()
817 rndis->port.in_ep->name, rndis->port.out_ep->name, in rndis_bind()
818 rndis->notify->name); in rndis_bind()
827 if (rndis->notify_req) { in rndis_bind()
828 kfree(rndis->notify_req->buf); in rndis_bind()
829 usb_ep_free_request(rndis->notify, rndis->notify_req); in rndis_bind()
833 if (rndis->notify) in rndis_bind()
834 rndis->notify->driver_data = NULL; in rndis_bind()
835 if (rndis->port.out_ep) in rndis_bind()
836 rndis->port.out_ep->driver_data = NULL; in rndis_bind()
837 if (rndis->port.in_ep) in rndis_bind()
838 rndis->port.in_ep->driver_data = NULL; in rndis_bind()
866 USB_ETHERNET_CONFIGFS_ITEM(rndis);
869 USB_ETHERNET_CONFIGFS_ITEM_ATTR_DEV_ADDR(rndis);
872 USB_ETHERNET_CONFIGFS_ITEM_ATTR_HOST_ADDR(rndis);
875 USB_ETHERNET_CONFIGFS_ITEM_ATTR_QMULT(rndis);
878 USB_ETHERNET_CONFIGFS_ITEM_ATTR_IFNAME(rndis);
943 struct f_rndis *rndis; in rndis_free() local
946 rndis = func_to_rndis(f); in rndis_free()
947 rndis_deregister(rndis->config); in rndis_free()
949 kfree(rndis); in rndis_free()
957 struct f_rndis *rndis = func_to_rndis(f); in rndis_unbind() local
963 kfree(rndis->notify_req->buf); in rndis_unbind()
964 usb_ep_free_request(rndis->notify, rndis->notify_req); in rndis_unbind()
969 struct f_rndis *rndis; in rndis_alloc() local
974 rndis = kzalloc(sizeof(*rndis), GFP_KERNEL); in rndis_alloc()
975 if (!rndis) in rndis_alloc()
982 gether_get_host_addr_u8(opts->net, rndis->ethaddr); in rndis_alloc()
983 rndis->vendorID = opts->vendor_id; in rndis_alloc()
984 rndis->manufacturer = opts->manufacturer; in rndis_alloc()
986 rndis->port.ioport = netdev_priv(opts->net); in rndis_alloc()
989 rndis->port.cdc_filter = 0; in rndis_alloc()
992 rndis->port.header_len = sizeof(struct rndis_packet_msg_type); in rndis_alloc()
993 rndis->port.wrap = rndis_add_header; in rndis_alloc()
994 rndis->port.unwrap = rndis_rm_hdr; in rndis_alloc()
996 rndis->port.func.name = "rndis"; in rndis_alloc()
998 rndis->port.func.bind = rndis_bind; in rndis_alloc()
999 rndis->port.func.unbind = rndis_unbind; in rndis_alloc()
1000 rndis->port.func.set_alt = rndis_set_alt; in rndis_alloc()
1001 rndis->port.func.setup = rndis_setup; in rndis_alloc()
1002 rndis->port.func.disable = rndis_disable; in rndis_alloc()
1003 rndis->port.func.free_func = rndis_free; in rndis_alloc()
1005 status = rndis_register(rndis_response_available, rndis); in rndis_alloc()
1007 kfree(rndis); in rndis_alloc()
1010 rndis->config = status; in rndis_alloc()
1012 return &rndis->port.func; in rndis_alloc()
1015 DECLARE_USB_FUNCTION(rndis, rndis_alloc_inst, rndis_alloc);