Lines Matching refs:opts
837 struct f_rndis_opts *opts; in rndis_borrow_net() local
839 opts = container_of(f, struct f_rndis_opts, func_inst); in rndis_borrow_net()
840 if (opts->bound) in rndis_borrow_net()
841 gether_cleanup(netdev_priv(opts->net)); in rndis_borrow_net()
843 free_netdev(opts->net); in rndis_borrow_net()
844 opts->borrowed_net = opts->bound = true; in rndis_borrow_net()
845 opts->net = net; in rndis_borrow_net()
898 struct f_rndis_opts *opts; in rndis_free_inst() local
900 opts = container_of(f, struct f_rndis_opts, func_inst); in rndis_free_inst()
901 if (!opts->borrowed_net) { in rndis_free_inst()
902 if (opts->bound) in rndis_free_inst()
903 gether_cleanup(netdev_priv(opts->net)); in rndis_free_inst()
905 free_netdev(opts->net); in rndis_free_inst()
908 kfree(opts->rndis_interf_group); /* single VLA chunk */ in rndis_free_inst()
909 kfree(opts); in rndis_free_inst()
914 struct f_rndis_opts *opts; in rndis_alloc_inst() local
919 opts = kzalloc(sizeof(*opts), GFP_KERNEL); in rndis_alloc_inst()
920 if (!opts) in rndis_alloc_inst()
922 opts->rndis_os_desc.ext_compat_id = opts->rndis_ext_compat_id; in rndis_alloc_inst()
924 mutex_init(&opts->lock); in rndis_alloc_inst()
925 opts->func_inst.free_func_inst = rndis_free_inst; in rndis_alloc_inst()
926 opts->net = gether_setup_default(); in rndis_alloc_inst()
927 if (IS_ERR(opts->net)) { in rndis_alloc_inst()
928 struct net_device *net = opts->net; in rndis_alloc_inst()
929 kfree(opts); in rndis_alloc_inst()
932 INIT_LIST_HEAD(&opts->rndis_os_desc.ext_prop); in rndis_alloc_inst()
934 opts->class = rndis_iad_descriptor.bFunctionClass; in rndis_alloc_inst()
935 opts->subclass = rndis_iad_descriptor.bFunctionSubClass; in rndis_alloc_inst()
936 opts->protocol = rndis_iad_descriptor.bFunctionProtocol; in rndis_alloc_inst()
938 descs[0] = &opts->rndis_os_desc; in rndis_alloc_inst()
940 config_group_init_type_name(&opts->func_inst.group, "", in rndis_alloc_inst()
943 usb_os_desc_prepare_interf_dir(&opts->func_inst.group, 1, descs, in rndis_alloc_inst()
946 rndis_free_inst(&opts->func_inst); in rndis_alloc_inst()
949 opts->rndis_interf_group = rndis_interf_group; in rndis_alloc_inst()
951 return &opts->func_inst; in rndis_alloc_inst()
957 struct f_rndis_opts *opts; in rndis_free() local
961 opts = container_of(f->fi, struct f_rndis_opts, func_inst); in rndis_free()
963 mutex_lock(&opts->lock); in rndis_free()
964 opts->refcnt--; in rndis_free()
965 mutex_unlock(&opts->lock); in rndis_free()
983 struct f_rndis_opts *opts; in rndis_alloc() local
991 opts = container_of(fi, struct f_rndis_opts, func_inst); in rndis_alloc()
992 mutex_lock(&opts->lock); in rndis_alloc()
993 opts->refcnt++; in rndis_alloc()
995 gether_get_host_addr_u8(opts->net, rndis->ethaddr); in rndis_alloc()
996 rndis->vendorID = opts->vendor_id; in rndis_alloc()
997 rndis->manufacturer = opts->manufacturer; in rndis_alloc()
999 rndis->port.ioport = netdev_priv(opts->net); in rndis_alloc()
1000 mutex_unlock(&opts->lock); in rndis_alloc()