Lines Matching refs:rndis
25 #include "rndis.h"
387 struct f_rndis *rndis = _rndis;
388 struct usb_request *req = rndis->notify_req;
389 struct usb_composite_dev *cdev = rndis->port.func.config->cdev;
393 if (atomic_inc_return(&rndis->notify_count) != 1)
404 status = usb_ep_queue(rndis->notify, req, GFP_ATOMIC);
406 atomic_dec(&rndis->notify_count);
413 struct f_rndis *rndis = req->context;
414 struct usb_composite_dev *cdev = rndis->port.func.config->cdev;
425 atomic_set(&rndis->notify_count, 0);
433 if (ep != rndis->notify)
439 if (atomic_dec_and_test(&rndis->notify_count))
441 status = usb_ep_queue(rndis->notify, req, GFP_ATOMIC);
443 atomic_dec(&rndis->notify_count);
452 struct f_rndis *rndis = req->context;
457 status = rndis_msg_parser(rndis->params, (u8 *) req->buf);
467 struct f_rndis *rndis = func_to_rndis(f);
485 if (w_value || w_index != rndis->ctrl_id)
490 req->context = rndis;
496 if (w_value || w_index != rndis->ctrl_id)
503 buf = rndis_get_next_response(rndis->params, &n);
507 req->context = rndis;
508 rndis_free_response(rndis->params, buf);
524 DBG(cdev, "rndis req%02x.%02x v%04x i%04x l%d\n",
531 ERROR(cdev, "rndis response on err %d\n", value);
541 struct f_rndis *rndis = func_to_rndis(f);
546 if (intf == rndis->ctrl_id) {
547 VDBG(cdev, "reset rndis control %d\n", intf);
548 usb_ep_disable(rndis->notify);
550 if (!rndis->notify->desc) {
551 VDBG(cdev, "init rndis ctrl %d\n", intf);
552 if (config_ep_by_speed(cdev->gadget, f, rndis->notify))
555 usb_ep_enable(rndis->notify);
557 } else if (intf == rndis->data_id) {
560 if (rndis->port.in_ep->enabled) {
561 DBG(cdev, "reset rndis\n");
562 gether_disconnect(&rndis->port);
565 if (!rndis->port.in_ep->desc || !rndis->port.out_ep->desc) {
566 DBG(cdev, "init rndis\n");
568 rndis->port.in_ep) ||
570 rndis->port.out_ep)) {
571 rndis->port.in_ep->desc = NULL;
572 rndis->port.out_ep->desc = NULL;
578 rndis->port.is_zlp_ok = false;
592 rndis->port.cdc_filter = 0;
595 net = gether_connect(&rndis->port);
599 rndis_set_param_dev(rndis->params, net,
600 &rndis->port.cdc_filter);
611 struct f_rndis *rndis = func_to_rndis(f);
614 if (!rndis->notify->enabled)
617 DBG(cdev, "rndis deactivated\n");
619 rndis_uninit(rndis->params);
620 gether_disconnect(&rndis->port);
622 usb_ep_disable(rndis->notify);
623 rndis->notify->desc = NULL;
637 struct f_rndis *rndis = func_to_rndis(&geth->func);
642 rndis_set_param_medium(rndis->params, RNDIS_MEDIUM_802_3,
644 rndis_signal_connect(rndis->params);
649 struct f_rndis *rndis = func_to_rndis(&geth->func);
653 rndis_set_param_medium(rndis->params, RNDIS_MEDIUM_802_3, 0);
654 rndis_signal_disconnect(rndis->params);
672 struct f_rndis *rndis = func_to_rndis(f);
726 rndis->ctrl_id = status;
739 rndis->data_id = status;
750 rndis->port.in_ep = ep;
755 rndis->port.out_ep = ep;
764 rndis->notify = ep;
769 rndis->notify_req = usb_ep_alloc_request(ep, GFP_KERNEL);
770 if (!rndis->notify_req)
772 rndis->notify_req->buf = kmalloc(STATUS_BYTECOUNT, GFP_KERNEL);
773 if (!rndis->notify_req->buf)
775 rndis->notify_req->length = STATUS_BYTECOUNT;
776 rndis->notify_req->context = rndis;
777 rndis->notify_req->complete = rndis_response_complete;
796 rndis->port.open = rndis_open;
797 rndis->port.close = rndis_close;
799 rndis_set_param_medium(rndis->params, RNDIS_MEDIUM_802_3, 0);
800 rndis_set_host_mac(rndis->params, rndis->ethaddr);
802 if (rndis->manufacturer && rndis->vendorID &&
803 rndis_set_param_vendor(rndis->params, rndis->vendorID,
804 rndis->manufacturer)) {
817 rndis->port.in_ep->name, rndis->port.out_ep->name,
818 rndis->notify->name);
827 if (rndis->notify_req) {
828 kfree(rndis->notify_req->buf);
829 usb_ep_free_request(rndis->notify, rndis->notify_req);
858 USB_ETHERNET_CONFIGFS_ITEM(rndis);
861 USB_ETHERNET_CONFIGFS_ITEM_ATTR_DEV_ADDR(rndis);
864 USB_ETHERNET_CONFIGFS_ITEM_ATTR_HOST_ADDR(rndis);
867 USB_ETHERNET_CONFIGFS_ITEM_ATTR_QMULT(rndis);
870 USB_ETHERNET_CONFIGFS_ITEM_ATTR_IFNAME(rndis);
873 USB_ETHER_CONFIGFS_ITEM_ATTR_U8_RW(rndis, class);
876 USB_ETHER_CONFIGFS_ITEM_ATTR_U8_RW(rndis, subclass);
879 USB_ETHER_CONFIGFS_ITEM_ATTR_U8_RW(rndis, protocol);
941 names[0] = "rndis";
958 struct f_rndis *rndis;
961 rndis = func_to_rndis(f);
962 rndis_deregister(rndis->params);
964 kfree(rndis);
972 struct f_rndis *rndis = func_to_rndis(f);
978 kfree(rndis->notify_req->buf);
979 usb_ep_free_request(rndis->notify, rndis->notify_req);
984 struct f_rndis *rndis;
989 rndis = kzalloc(sizeof(*rndis), GFP_KERNEL);
990 if (!rndis)
997 gether_get_host_addr_u8(opts->net, rndis->ethaddr);
998 rndis->vendorID = opts->vendor_id;
999 rndis->manufacturer = opts->manufacturer;
1001 rndis->port.ioport = netdev_priv(opts->net);
1004 rndis->port.cdc_filter = 0;
1007 rndis->port.header_len = sizeof(struct rndis_packet_msg_type);
1008 rndis->port.wrap = rndis_add_header;
1009 rndis->port.unwrap = rndis_rm_hdr;
1011 rndis->port.func.name = "rndis";
1013 rndis->port.func.bind = rndis_bind;
1014 rndis->port.func.unbind = rndis_unbind;
1015 rndis->port.func.set_alt = rndis_set_alt;
1016 rndis->port.func.setup = rndis_setup;
1017 rndis->port.func.disable = rndis_disable;
1018 rndis->port.func.free_func = rndis_free;
1020 params = rndis_register(rndis_response_available, rndis);
1022 kfree(rndis);
1025 rndis->params = params;
1027 return &rndis->port.func;
1030 DECLARE_USB_FUNCTION_INIT(rndis, rndis_alloc_inst, rndis_alloc);