Lines Matching refs:rc

46 	struct uwb_rc *rc = dev_get_drvdata(dev);  in uwb_rc_index_match()  local
48 if (rc->index == *index) in uwb_rc_index_match()
56 struct uwb_rc *rc = NULL; in uwb_rc_find_by_index() local
60 rc = dev_get_drvdata(dev); in uwb_rc_find_by_index()
61 return rc; in uwb_rc_find_by_index()
82 struct uwb_rc *rc = container_of(uwb_dev, struct uwb_rc, uwb_dev); in uwb_rc_sys_release() local
84 uwb_rc_ie_release(rc); in uwb_rc_sys_release()
85 kfree(rc); in uwb_rc_sys_release()
89 void uwb_rc_init(struct uwb_rc *rc) in uwb_rc_init() argument
91 struct uwb_dev *uwb_dev = &rc->uwb_dev; in uwb_rc_init()
94 rc->uwb_dev.dev.class = &uwb_rc_class; in uwb_rc_init()
95 rc->uwb_dev.dev.release = uwb_rc_sys_release; in uwb_rc_init()
96 uwb_rc_neh_create(rc); in uwb_rc_init()
97 rc->beaconing = -1; in uwb_rc_init()
98 rc->scan_type = UWB_SCAN_DISABLED; in uwb_rc_init()
99 INIT_LIST_HEAD(&rc->notifs_chain.list); in uwb_rc_init()
100 mutex_init(&rc->notifs_chain.mutex); in uwb_rc_init()
101 INIT_LIST_HEAD(&rc->uwb_beca.list); in uwb_rc_init()
102 mutex_init(&rc->uwb_beca.mutex); in uwb_rc_init()
103 uwb_drp_avail_init(rc); in uwb_rc_init()
104 uwb_rc_ie_init(rc); in uwb_rc_init()
105 uwb_rsv_init(rc); in uwb_rc_init()
106 uwb_rc_pal_init(rc); in uwb_rc_init()
113 struct uwb_rc *rc; in uwb_rc_alloc() local
114 rc = kzalloc(sizeof(*rc), GFP_KERNEL); in uwb_rc_alloc()
115 if (rc == NULL) in uwb_rc_alloc()
117 uwb_rc_init(rc); in uwb_rc_alloc()
118 return rc; in uwb_rc_alloc()
129 struct uwb_rc *rc = uwb_dev->rc; in ASIE_show() local
137 mutex_lock(&rc->ies_mutex); in ASIE_show()
139 ptr = rc->ies->IEData; in ASIE_show()
140 len = le16_to_cpu(rc->ies->wIELength); in ASIE_show()
152 mutex_unlock(&rc->ies_mutex); in ASIE_show()
165 struct uwb_rc *rc = uwb_dev->rc; in ASIE_store() local
173 uwb_rc_ie_rm(rc, UWB_APP_SPEC_IE); in ASIE_store()
212 uwb_rc_ie_rm(rc, UWB_APP_SPEC_IE); in ASIE_store()
214 result = uwb_rc_ie_add(rc, ie, ie->length + sizeof(struct uwb_ie_hdr)); in ASIE_store()
235 static int uwb_rc_sys_add(struct uwb_rc *rc) in uwb_rc_sys_add() argument
237 return sysfs_create_group(&rc->uwb_dev.dev.kobj, &rc_attr_group); in uwb_rc_sys_add()
241 static void __uwb_rc_sys_rm(struct uwb_rc *rc) in __uwb_rc_sys_rm() argument
243 sysfs_remove_group(&rc->uwb_dev.dev.kobj, &rc_attr_group); in __uwb_rc_sys_rm()
256 int uwb_rc_mac_addr_setup(struct uwb_rc *rc) in uwb_rc_mac_addr_setup() argument
259 struct device *dev = &rc->uwb_dev.dev; in uwb_rc_mac_addr_setup()
260 struct uwb_dev *uwb_dev = &rc->uwb_dev; in uwb_rc_mac_addr_setup()
264 result = uwb_rc_mac_addr_get(rc, &addr); in uwb_rc_mac_addr_setup()
274 result = uwb_rc_mac_addr_set(rc, &addr); in uwb_rc_mac_addr_setup()
288 static int uwb_rc_setup(struct uwb_rc *rc) in uwb_rc_setup() argument
291 struct device *dev = &rc->uwb_dev.dev; in uwb_rc_setup()
293 result = uwb_radio_setup(rc); in uwb_rc_setup()
298 result = uwb_rc_mac_addr_setup(rc); in uwb_rc_setup()
303 result = uwb_rc_dev_addr_assign(rc); in uwb_rc_setup()
308 result = uwb_rc_ie_setup(rc); in uwb_rc_setup()
313 result = uwb_rsv_setup(rc); in uwb_rc_setup()
318 uwb_dbg_add_rc(rc); in uwb_rc_setup()
322 uwb_rc_ie_release(rc); in uwb_rc_setup()
339 int uwb_rc_add(struct uwb_rc *rc, struct device *parent_dev, void *priv) in uwb_rc_add() argument
345 rc->index = uwb_rc_new_index(); in uwb_rc_add()
347 dev = &rc->uwb_dev.dev; in uwb_rc_add()
348 dev_set_name(dev, "uwb%d", rc->index); in uwb_rc_add()
350 rc->priv = priv; in uwb_rc_add()
352 init_waitqueue_head(&rc->uwbd.wq); in uwb_rc_add()
353 INIT_LIST_HEAD(&rc->uwbd.event_list); in uwb_rc_add()
354 spin_lock_init(&rc->uwbd.event_list_lock); in uwb_rc_add()
356 uwbd_start(rc); in uwb_rc_add()
358 result = rc->start(rc); in uwb_rc_add()
362 result = uwb_rc_setup(rc); in uwb_rc_add()
368 result = uwb_dev_add(&rc->uwb_dev, parent_dev, rc); in uwb_rc_add()
372 result = uwb_rc_sys_add(rc); in uwb_rc_add()
379 uwb_mac_addr_print(macbuf, sizeof(macbuf), &rc->uwb_dev.mac_addr); in uwb_rc_add()
380 uwb_dev_addr_print(devbuf, sizeof(devbuf), &rc->uwb_dev.dev_addr); in uwb_rc_add()
384 rc->ready = 1; in uwb_rc_add()
388 uwb_dev_rm(&rc->uwb_dev); in uwb_rc_add()
391 rc->stop(rc); in uwb_rc_add()
393 uwbd_stop(rc); in uwb_rc_add()
403 return __uwb_dev_offair(uwb_dev, uwb_dev->rc); in uwb_dev_offair_helper()
409 void uwb_rc_rm(struct uwb_rc *rc) in uwb_rc_rm() argument
411 rc->ready = 0; in uwb_rc_rm()
413 uwb_dbg_del_rc(rc); in uwb_rc_rm()
414 uwb_rsv_remove_all(rc); in uwb_rc_rm()
415 uwb_radio_shutdown(rc); in uwb_rc_rm()
417 rc->stop(rc); in uwb_rc_rm()
419 uwbd_stop(rc); in uwb_rc_rm()
420 uwb_rc_neh_destroy(rc); in uwb_rc_rm()
422 uwb_dev_lock(&rc->uwb_dev); in uwb_rc_rm()
423 rc->priv = NULL; in uwb_rc_rm()
424 rc->cmd = NULL; in uwb_rc_rm()
425 uwb_dev_unlock(&rc->uwb_dev); in uwb_rc_rm()
426 mutex_lock(&rc->uwb_beca.mutex); in uwb_rc_rm()
427 uwb_dev_for_each(rc, uwb_dev_offair_helper, NULL); in uwb_rc_rm()
428 __uwb_rc_sys_rm(rc); in uwb_rc_rm()
429 mutex_unlock(&rc->uwb_beca.mutex); in uwb_rc_rm()
430 uwb_rsv_cleanup(rc); in uwb_rc_rm()
431 uwb_beca_release(rc); in uwb_rc_rm()
432 uwb_dev_rm(&rc->uwb_dev); in uwb_rc_rm()
439 struct uwb_rc *rc = dev_get_drvdata(dev); in find_rc_try_get() local
441 if (rc == NULL) { in find_rc_try_get()
445 if (rc == target_rc) { in find_rc_try_get()
446 if (rc->ready == 0) in find_rc_try_get()
463 struct uwb_rc *rc = NULL; in __uwb_rc_try_get() local
468 rc = dev_get_drvdata(dev); in __uwb_rc_try_get()
469 __uwb_rc_get(rc); in __uwb_rc_try_get()
471 return rc; in __uwb_rc_try_get()
480 static inline struct uwb_rc *uwb_rc_get(struct uwb_rc *rc) in uwb_rc_get() argument
482 if (rc->ready == 0) in uwb_rc_get()
484 uwb_dev_get(&rc->uwb_dev); in uwb_rc_get()
485 return rc; in uwb_rc_get()
491 struct uwb_rc *rc = dev_get_drvdata(dev); in find_rc_grandpa() local
493 if (rc->uwb_dev.dev.parent->parent == grandpa_dev) { in find_rc_grandpa()
494 rc = uwb_rc_get(rc); in find_rc_grandpa()
519 struct uwb_rc *rc = NULL; in uwb_rc_get_by_grandpa() local
524 rc = dev_get_drvdata(dev); in uwb_rc_get_by_grandpa()
525 return rc; in uwb_rc_get_by_grandpa()
537 struct uwb_rc *rc = dev_get_drvdata(dev); in find_rc_dev() local
539 if (rc == NULL) { in find_rc_dev()
543 if (!uwb_dev_addr_cmp(&rc->uwb_dev.dev_addr, addr)) { in find_rc_dev()
544 rc = uwb_rc_get(rc); in find_rc_dev()
553 struct uwb_rc *rc = NULL; in uwb_rc_get_by_dev() local
557 rc = dev_get_drvdata(dev); in uwb_rc_get_by_dev()
559 return rc; in uwb_rc_get_by_dev()
569 void uwb_rc_put(struct uwb_rc *rc) in uwb_rc_put() argument
571 __uwb_rc_put(rc); in uwb_rc_put()