Lines Matching refs:rndis
25 #include "rndis.h"
374 struct f_rndis *rndis = _rndis;
375 struct usb_request *req = rndis->notify_req;
376 struct usb_composite_dev *cdev = rndis->port.func.config->cdev;
380 if (atomic_inc_return(&rndis->notify_count) != 1)
391 status = usb_ep_queue(rndis->notify, req, GFP_ATOMIC);
393 atomic_dec(&rndis->notify_count);
400 struct f_rndis *rndis = req->context;
401 struct usb_composite_dev *cdev = rndis->port.func.config->cdev;
412 atomic_set(&rndis->notify_count, 0);
420 if (ep != rndis->notify)
426 if (atomic_dec_and_test(&rndis->notify_count))
428 status = usb_ep_queue(rndis->notify, req, GFP_ATOMIC);
430 atomic_dec(&rndis->notify_count);
439 struct f_rndis *rndis = req->context;
444 status = rndis_msg_parser(rndis->params, (u8 *) req->buf);
454 struct f_rndis *rndis = func_to_rndis(f);
472 if (w_value || w_index != rndis->ctrl_id)
477 req->context = rndis;
483 if (w_value || w_index != rndis->ctrl_id)
490 buf = rndis_get_next_response(rndis->params, &n);
494 req->context = rndis;
495 rndis_free_response(rndis->params, buf);
511 DBG(cdev, "rndis req%02x.%02x v%04x i%04x l%d\n",
518 ERROR(cdev, "rndis response on err %d\n", value);
528 struct f_rndis *rndis = func_to_rndis(f);
533 if (intf == rndis->ctrl_id) {
534 VDBG(cdev, "reset rndis control %d\n", intf);
535 usb_ep_disable(rndis->notify);
537 if (!rndis->notify->desc) {
538 VDBG(cdev, "init rndis ctrl %d\n", intf);
539 if (config_ep_by_speed(cdev->gadget, f, rndis->notify))
542 usb_ep_enable(rndis->notify);
544 } else if (intf == rndis->data_id) {
547 if (rndis->port.in_ep->enabled) {
548 DBG(cdev, "reset rndis\n");
549 gether_disconnect(&rndis->port);
552 if (!rndis->port.in_ep->desc || !rndis->port.out_ep->desc) {
553 DBG(cdev, "init rndis\n");
555 rndis->port.in_ep) ||
557 rndis->port.out_ep)) {
558 rndis->port.in_ep->desc = NULL;
559 rndis->port.out_ep->desc = NULL;
565 rndis->port.is_zlp_ok = false;
579 rndis->port.cdc_filter = 0;
582 net = gether_connect(&rndis->port);
586 rndis_set_param_dev(rndis->params, net,
587 &rndis->port.cdc_filter);
598 struct f_rndis *rndis = func_to_rndis(f);
601 if (!rndis->notify->enabled)
604 DBG(cdev, "rndis deactivated\n");
606 rndis_uninit(rndis->params);
607 gether_disconnect(&rndis->port);
609 usb_ep_disable(rndis->notify);
610 rndis->notify->desc = NULL;
624 struct f_rndis *rndis = func_to_rndis(&geth->func);
629 rndis_set_param_medium(rndis->params, RNDIS_MEDIUM_802_3,
631 rndis_signal_connect(rndis->params);
636 struct f_rndis *rndis = func_to_rndis(&geth->func);
640 rndis_set_param_medium(rndis->params, RNDIS_MEDIUM_802_3, 0);
641 rndis_signal_disconnect(rndis->params);
659 struct f_rndis *rndis = func_to_rndis(f);
713 rndis->ctrl_id = status;
726 rndis->data_id = status;
737 rndis->port.in_ep = ep;
742 rndis->port.out_ep = ep;
751 rndis->notify = ep;
756 rndis->notify_req = usb_ep_alloc_request(ep, GFP_KERNEL);
757 if (!rndis->notify_req)
759 rndis->notify_req->buf = kmalloc(STATUS_BYTECOUNT, GFP_KERNEL);
760 if (!rndis->notify_req->buf)
762 rndis->notify_req->length = STATUS_BYTECOUNT;
763 rndis->notify_req->context = rndis;
764 rndis->notify_req->complete = rndis_response_complete;
783 rndis->port.open = rndis_open;
784 rndis->port.close = rndis_close;
786 rndis_set_param_medium(rndis->params, RNDIS_MEDIUM_802_3, 0);
787 rndis_set_host_mac(rndis->params, rndis->ethaddr);
789 if (rndis->manufacturer && rndis->vendorID &&
790 rndis_set_param_vendor(rndis->params, rndis->vendorID,
791 rndis->manufacturer)) {
802 rndis->port.in_ep->name, rndis->port.out_ep->name,
803 rndis->notify->name);
812 if (rndis->notify_req) {
813 kfree(rndis->notify_req->buf);
814 usb_ep_free_request(rndis->notify, rndis->notify_req);
843 USB_ETHERNET_CONFIGFS_ITEM(rndis);
846 USB_ETHERNET_CONFIGFS_ITEM_ATTR_DEV_ADDR(rndis);
849 USB_ETHERNET_CONFIGFS_ITEM_ATTR_HOST_ADDR(rndis);
852 USB_ETHERNET_CONFIGFS_ITEM_ATTR_QMULT(rndis);
855 USB_ETHERNET_CONFIGFS_ITEM_ATTR_IFNAME(rndis);
858 USB_ETHER_CONFIGFS_ITEM_ATTR_U8_RW(rndis, class);
861 USB_ETHER_CONFIGFS_ITEM_ATTR_U8_RW(rndis, subclass);
864 USB_ETHER_CONFIGFS_ITEM_ATTR_U8_RW(rndis, protocol);
926 names[0] = "rndis";
943 struct f_rndis *rndis;
946 rndis = func_to_rndis(f);
947 rndis_deregister(rndis->params);
949 kfree(rndis);
957 struct f_rndis *rndis = func_to_rndis(f);
963 kfree(rndis->notify_req->buf);
964 usb_ep_free_request(rndis->notify, rndis->notify_req);
969 struct f_rndis *rndis;
974 rndis = kzalloc(sizeof(*rndis), GFP_KERNEL);
975 if (!rndis)
982 gether_get_host_addr_u8(opts->net, rndis->ethaddr);
983 rndis->vendorID = opts->vendor_id;
984 rndis->manufacturer = opts->manufacturer;
986 rndis->port.ioport = netdev_priv(opts->net);
989 rndis->port.cdc_filter = 0;
992 rndis->port.header_len = sizeof(struct rndis_packet_msg_type);
993 rndis->port.wrap = rndis_add_header;
994 rndis->port.unwrap = rndis_rm_hdr;
996 rndis->port.func.name = "rndis";
998 rndis->port.func.bind = rndis_bind;
999 rndis->port.func.unbind = rndis_unbind;
1000 rndis->port.func.set_alt = rndis_set_alt;
1001 rndis->port.func.setup = rndis_setup;
1002 rndis->port.func.disable = rndis_disable;
1003 rndis->port.func.free_func = rndis_free;
1005 params = rndis_register(rndis_response_available, rndis);
1007 kfree(rndis);
1010 rndis->params = params;
1012 return &rndis->port.func;
1015 DECLARE_USB_FUNCTION_INIT(rndis, rndis_alloc_inst, rndis_alloc);