Lines Matching refs:opts
847 struct f_rndis_opts *opts; in rndis_borrow_net() local
849 opts = container_of(f, struct f_rndis_opts, func_inst); in rndis_borrow_net()
850 if (opts->bound) in rndis_borrow_net()
851 gether_cleanup(netdev_priv(opts->net)); in rndis_borrow_net()
853 free_netdev(opts->net); in rndis_borrow_net()
854 opts->borrowed_net = opts->bound = true; in rndis_borrow_net()
855 opts->net = net; in rndis_borrow_net()
896 struct f_rndis_opts *opts; in rndis_free_inst() local
898 opts = container_of(f, struct f_rndis_opts, func_inst); in rndis_free_inst()
899 if (!opts->borrowed_net) { in rndis_free_inst()
900 if (opts->bound) in rndis_free_inst()
901 gether_cleanup(netdev_priv(opts->net)); in rndis_free_inst()
903 free_netdev(opts->net); in rndis_free_inst()
906 kfree(opts->rndis_os_desc.group.default_groups); /* single VLA chunk */ in rndis_free_inst()
907 kfree(opts); in rndis_free_inst()
912 struct f_rndis_opts *opts; in rndis_alloc_inst() local
916 opts = kzalloc(sizeof(*opts), GFP_KERNEL); in rndis_alloc_inst()
917 if (!opts) in rndis_alloc_inst()
919 opts->rndis_os_desc.ext_compat_id = opts->rndis_ext_compat_id; in rndis_alloc_inst()
921 mutex_init(&opts->lock); in rndis_alloc_inst()
922 opts->func_inst.free_func_inst = rndis_free_inst; in rndis_alloc_inst()
923 opts->net = gether_setup_default(); in rndis_alloc_inst()
924 if (IS_ERR(opts->net)) { in rndis_alloc_inst()
925 struct net_device *net = opts->net; in rndis_alloc_inst()
926 kfree(opts); in rndis_alloc_inst()
929 INIT_LIST_HEAD(&opts->rndis_os_desc.ext_prop); in rndis_alloc_inst()
931 descs[0] = &opts->rndis_os_desc; in rndis_alloc_inst()
933 usb_os_desc_prepare_interf_dir(&opts->func_inst.group, 1, descs, in rndis_alloc_inst()
935 config_group_init_type_name(&opts->func_inst.group, "", in rndis_alloc_inst()
938 return &opts->func_inst; in rndis_alloc_inst()
944 struct f_rndis_opts *opts; in rndis_free() local
948 opts = container_of(f->fi, struct f_rndis_opts, func_inst); in rndis_free()
950 mutex_lock(&opts->lock); in rndis_free()
951 opts->refcnt--; in rndis_free()
952 mutex_unlock(&opts->lock); in rndis_free()
970 struct f_rndis_opts *opts; in rndis_alloc() local
978 opts = container_of(fi, struct f_rndis_opts, func_inst); in rndis_alloc()
979 mutex_lock(&opts->lock); in rndis_alloc()
980 opts->refcnt++; 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()
987 mutex_unlock(&opts->lock); in rndis_alloc()