Lines Matching refs:rc

43 static int uwb_rc_start_beacon(struct uwb_rc *rc, u16 bpst_offset, u8 channel)  in uwb_rc_start_beacon()  argument
58 result = uwb_rc_cmd(rc, "START-BEACON", &cmd->rccb, sizeof(*cmd), in uwb_rc_start_beacon()
63 dev_err(&rc->uwb_dev.dev, in uwb_rc_start_beacon()
73 static int uwb_rc_stop_beacon(struct uwb_rc *rc) in uwb_rc_stop_beacon() argument
86 result = uwb_rc_cmd(rc, "STOP-BEACON", cmd, sizeof(*cmd), in uwb_rc_stop_beacon()
91 dev_err(&rc->uwb_dev.dev, in uwb_rc_stop_beacon()
115 int uwb_rc_beacon(struct uwb_rc *rc, int channel, unsigned bpst_offset) in uwb_rc_beacon() argument
118 struct device *dev = &rc->uwb_dev.dev; in uwb_rc_beacon()
124 result = uwb_rc_stop_beacon(rc); in uwb_rc_beacon()
127 result = uwb_rc_start_beacon(rc, bpst_offset, channel); in uwb_rc_beacon()
132 if (le16_to_cpu(rc->ies->wIELength) > 0) { in uwb_rc_beacon()
133 result = uwb_rc_set_ie(rc, rc->ies); in uwb_rc_beacon()
137 result = uwb_rc_stop_beacon(rc); in uwb_rc_beacon()
145 rc->beaconing = channel; in uwb_rc_beacon()
175 struct uwb_beca_e *__uwb_beca_find_bydev(struct uwb_rc *rc, in __uwb_beca_find_bydev() argument
179 list_for_each_entry_safe(bce, next, &rc->uwb_beca.list, node) { in __uwb_beca_find_bydev()
190 struct uwb_beca_e *__uwb_beca_find_bymac(struct uwb_rc *rc, in __uwb_beca_find_bymac() argument
194 list_for_each_entry_safe(bce, next, &rc->uwb_beca.list, node) { in __uwb_beca_find_bymac()
212 struct uwb_dev *uwb_dev_get_by_devaddr(struct uwb_rc *rc, in uwb_dev_get_by_devaddr() argument
218 mutex_lock(&rc->uwb_beca.mutex); in uwb_dev_get_by_devaddr()
219 bce = __uwb_beca_find_bydev(rc, devaddr); in uwb_dev_get_by_devaddr()
221 found = uwb_dev_try_get(rc, bce->uwb_dev); in uwb_dev_get_by_devaddr()
222 mutex_unlock(&rc->uwb_beca.mutex); in uwb_dev_get_by_devaddr()
232 struct uwb_dev *uwb_dev_get_by_macaddr(struct uwb_rc *rc, in uwb_dev_get_by_macaddr() argument
238 mutex_lock(&rc->uwb_beca.mutex); in uwb_dev_get_by_macaddr()
239 bce = __uwb_beca_find_bymac(rc, macaddr); in uwb_dev_get_by_macaddr()
241 found = uwb_dev_try_get(rc, bce->uwb_dev); in uwb_dev_get_by_macaddr()
242 mutex_unlock(&rc->uwb_beca.mutex); in uwb_dev_get_by_macaddr()
264 struct uwb_beca_e *__uwb_beca_add(struct uwb_rc *rc, in __uwb_beca_add() argument
277 list_add(&bce->node, &rc->uwb_beca.list); in __uwb_beca_add()
286 void uwb_beca_purge(struct uwb_rc *rc) in uwb_beca_purge() argument
291 mutex_lock(&rc->uwb_beca.mutex); in uwb_beca_purge()
292 list_for_each_entry_safe(bce, next, &rc->uwb_beca.list, node) { in uwb_beca_purge()
298 mutex_unlock(&rc->uwb_beca.mutex); in uwb_beca_purge()
302 void uwb_beca_release(struct uwb_rc *rc) in uwb_beca_release() argument
306 mutex_lock(&rc->uwb_beca.mutex); in uwb_beca_release()
307 list_for_each_entry_safe(bce, next, &rc->uwb_beca.list, node) { in uwb_beca_release()
311 mutex_unlock(&rc->uwb_beca.mutex); in uwb_beca_release()
314 static void uwb_beacon_print(struct uwb_rc *rc, struct uwb_rc_evt_beacon *be, in uwb_beacon_print() argument
324 dev_info(&rc->uwb_dev.dev, in uwb_beacon_print()
361 static int uwb_verify_beacon(struct uwb_rc *rc, struct uwb_event *evt, in uwb_verify_beacon() argument
366 struct device *dev = &rc->uwb_dev.dev; in uwb_verify_beacon()
396 struct uwb_rc *rc; in uwbd_evt_handle_rc_beacon() local
401 rc = evt->rc; in uwbd_evt_handle_rc_beacon()
403 result = uwb_verify_beacon(rc, evt, be); in uwbd_evt_handle_rc_beacon()
426 mutex_lock(&rc->uwb_beca.mutex); in uwbd_evt_handle_rc_beacon()
427 bce = __uwb_beca_find_bymac(rc, &bf->Device_Identifier); in uwbd_evt_handle_rc_beacon()
430 uwb_beacon_print(evt->rc, be, bf); in uwbd_evt_handle_rc_beacon()
431 bce = __uwb_beca_add(rc, be, bf, evt->ts_jiffies); in uwbd_evt_handle_rc_beacon()
433 mutex_unlock(&rc->uwb_beca.mutex); in uwbd_evt_handle_rc_beacon()
437 mutex_unlock(&rc->uwb_beca.mutex); in uwbd_evt_handle_rc_beacon()
457 uwbd_dev_onair(evt->rc, bce); in uwbd_evt_handle_rc_beacon()
472 struct device *dev = &evt->rc->uwb_dev.dev; in uwbd_evt_handle_rc_beacon_size()
508 struct uwb_rc *rc = evt->rc; in uwbd_evt_handle_rc_bp_slot_change() local
509 struct device *dev = &rc->uwb_dev.dev; in uwbd_evt_handle_rc_bp_slot_change()
520 mutex_lock(&rc->uwb_dev.mutex); in uwbd_evt_handle_rc_bp_slot_change()
521 rc->beaconing = -1; in uwbd_evt_handle_rc_bp_slot_change()
522 mutex_unlock(&rc->uwb_dev.mutex); in uwbd_evt_handle_rc_bp_slot_change()
524 rc->uwb_dev.beacon_slot = uwb_rc_evt_bp_slot_change_slot_num(bpsc); in uwbd_evt_handle_rc_bp_slot_change()
543 struct device *dev = &evt->rc->uwb_dev.dev; in uwbd_evt_handle_rc_bpoie_change()
582 struct uwb_rc *rc = uwb_dev->rc; in uwb_rc_beacon_show() local
585 mutex_lock(&rc->uwb_dev.mutex); in uwb_rc_beacon_show()
586 result = sprintf(buf, "%d\n", rc->beaconing); in uwb_rc_beacon_show()
587 mutex_unlock(&rc->uwb_dev.mutex); in uwb_rc_beacon_show()
599 struct uwb_rc *rc = uwb_dev->rc; in uwb_rc_beacon_store() local
605 result = uwb_radio_force_channel(rc, channel); in uwb_rc_beacon_store()