Lines Matching refs:rsv
105 struct uwb_rsv *rsv; in uwb_rc_send_all_drp_ie() local
112 list_for_each_entry(rsv, &rc->reservations, rc_node) { in uwb_rc_send_all_drp_ie()
113 if (rsv->drp_ie != NULL) { in uwb_rc_send_all_drp_ie()
114 num_bytes += rsv->drp_ie->hdr.length + 2; in uwb_rc_send_all_drp_ie()
115 if (uwb_rsv_has_two_drp_ies(rsv) && in uwb_rc_send_all_drp_ie()
116 (rsv->mv.companion_drp_ie != NULL)) { in uwb_rc_send_all_drp_ie()
117 mv = &rsv->mv; in uwb_rc_send_all_drp_ie()
138 list_for_each_entry(rsv, &rc->reservations, rc_node) { in uwb_rc_send_all_drp_ie()
139 if (rsv->drp_ie != NULL) { in uwb_rc_send_all_drp_ie()
140 memcpy(IEDataptr, rsv->drp_ie, in uwb_rc_send_all_drp_ie()
141 rsv->drp_ie->hdr.length + 2); in uwb_rc_send_all_drp_ie()
142 IEDataptr += rsv->drp_ie->hdr.length + 2; in uwb_rc_send_all_drp_ie()
144 if (uwb_rsv_has_two_drp_ies(rsv) && in uwb_rc_send_all_drp_ie()
145 (rsv->mv.companion_drp_ie != NULL)) { in uwb_rc_send_all_drp_ie()
146 mv = &rsv->mv; in uwb_rc_send_all_drp_ie()
173 struct uwb_rsv *rsv, int our_status) in evaluate_conflict_action() argument
175 int our_tie_breaker = rsv->tiebreaker; in evaluate_conflict_action()
176 int our_type = rsv->type; in evaluate_conflict_action()
177 int our_beacon_slot = rsv->rc->uwb_dev.beacon_slot; in evaluate_conflict_action()
252 struct uwb_rsv *rsv, in handle_conflict_normal() argument
255 struct uwb_rc *rc = rsv->rc; in handle_conflict_normal()
256 struct uwb_rsv_move *mv = &rsv->mv; in handle_conflict_normal()
260 action = evaluate_conflict_action(drp_ie, ext_beacon_slot, rsv, uwb_rsv_status(rsv)); in handle_conflict_normal()
262 if (uwb_rsv_is_owner(rsv)) { in handle_conflict_normal()
266 uwb_rsv_set_state(rsv, UWB_RSV_STATE_O_TO_BE_MOVED); in handle_conflict_normal()
275 bitmap_and(mv->companion_mas.bm, rsv->mas.bm, conflicting_mas->bm, UWB_NUM_MAS); in handle_conflict_normal()
276 uwb_rsv_set_state(rsv, UWB_RSV_STATE_O_MODIFIED); in handle_conflict_normal()
284 uwb_rsv_set_state(rsv, UWB_RSV_STATE_T_CONFLICT); in handle_conflict_normal()
294 struct uwb_rsv *rsv, bool companion_only, in handle_conflict_expanding() argument
297 struct uwb_rc *rc = rsv->rc; in handle_conflict_expanding()
299 struct uwb_rsv_move *mv = &rsv->mv; in handle_conflict_expanding()
304 action = evaluate_conflict_action(drp_ie, ext_beacon_slot, rsv, 0); in handle_conflict_expanding()
305 if (uwb_rsv_is_owner(rsv)) { in handle_conflict_expanding()
309 uwb_rsv_set_state(rsv, in handle_conflict_expanding()
311 rsv->needs_release_companion_mas = false; in handle_conflict_expanding()
314 uwb_drp_avail_release(rsv->rc, in handle_conflict_expanding()
315 &rsv->mv.companion_mas); in handle_conflict_expanding()
321 uwb_rsv_set_state(rsv, in handle_conflict_expanding()
327 if (uwb_rsv_is_owner(rsv)) { in handle_conflict_expanding()
330 uwb_drp_avail_release(rsv->rc, &rsv->mv.companion_mas); in handle_conflict_expanding()
335 bitmap_andnot(mv->companion_mas.bm, rsv->mas.bm, in handle_conflict_expanding()
337 uwb_rsv_set_state(rsv, UWB_RSV_STATE_O_MODIFIED); in handle_conflict_expanding()
339 uwb_rsv_set_state(rsv, UWB_RSV_STATE_T_CONFLICT); in handle_conflict_expanding()
345 static void uwb_drp_handle_conflict_rsv(struct uwb_rc *rc, struct uwb_rsv *rsv, in uwb_drp_handle_conflict_rsv() argument
353 if (uwb_rsv_has_two_drp_ies(rsv)) { in uwb_drp_handle_conflict_rsv()
354 mv = &rsv->mv; in uwb_drp_handle_conflict_rsv()
355 if (bitmap_intersects(rsv->mas.bm, conflicting_mas->bm, in uwb_drp_handle_conflict_rsv()
359 rsv, false, conflicting_mas); in uwb_drp_handle_conflict_rsv()
365 rsv, true, conflicting_mas); in uwb_drp_handle_conflict_rsv()
368 } else if (bitmap_intersects(rsv->mas.bm, conflicting_mas->bm, in uwb_drp_handle_conflict_rsv()
371 rsv, conflicting_mas); in uwb_drp_handle_conflict_rsv()
380 struct uwb_rsv *rsv; in uwb_drp_handle_all_conflict_rsv() local
382 list_for_each_entry(rsv, &rc->reservations, rc_node) { in uwb_drp_handle_all_conflict_rsv()
383 uwb_drp_handle_conflict_rsv(rc, rsv, drp_evt, drp_ie, in uwb_drp_handle_all_conflict_rsv()
389 struct uwb_rsv *rsv, struct uwb_rc_evt_drp *drp_evt, in uwb_drp_process_target_accepted() argument
392 struct uwb_rsv_move *mv = &rsv->mv; in uwb_drp_process_target_accepted()
397 if (rsv->state == UWB_RSV_STATE_T_CONFLICT) { in uwb_drp_process_target_accepted()
398 uwb_rsv_set_state(rsv, UWB_RSV_STATE_T_CONFLICT); in uwb_drp_process_target_accepted()
402 if (rsv->state == UWB_RSV_STATE_T_EXPANDING_ACCEPTED) { in uwb_drp_process_target_accepted()
404 if (!bitmap_equal(rsv->mas.bm, mas->bm, UWB_NUM_MAS)) { in uwb_drp_process_target_accepted()
406 uwb_rsv_set_state(rsv, in uwb_drp_process_target_accepted()
410 if (!bitmap_equal(rsv->mas.bm, mas->bm, UWB_NUM_MAS)) { in uwb_drp_process_target_accepted()
423 uwb_rsv_set_state(rsv, in uwb_drp_process_target_accepted()
428 uwb_rsv_set_state(rsv, in uwb_drp_process_target_accepted()
440 static void uwb_drp_process_target(struct uwb_rc *rc, struct uwb_rsv *rsv, in uwb_drp_process_target() argument
444 struct uwb_rsv_move *mv = &rsv->mv; in uwb_drp_process_target()
455 uwb_drp_process_target_accepted(rc, rsv, drp_evt, drp_ie, &mas); in uwb_drp_process_target()
460 if (bitmap_equal(rsv->mas.bm, mas.bm, UWB_NUM_MAS)) { in uwb_drp_process_target()
461 uwb_rsv_set_state(rsv, UWB_RSV_STATE_T_ACCEPTED); in uwb_drp_process_target()
466 if (bitmap_subset(mas.bm, rsv->mas.bm, UWB_NUM_MAS)) { in uwb_drp_process_target()
468 bitmap_andnot(mv->companion_mas.bm, rsv->mas.bm, mas.bm, in uwb_drp_process_target()
470 uwb_drp_avail_release(rsv->rc, &mv->companion_mas); in uwb_drp_process_target()
473 bitmap_copy(rsv->mas.bm, mas.bm, UWB_NUM_MAS); in uwb_drp_process_target()
474 uwb_rsv_set_state(rsv, UWB_RSV_STATE_T_RESIZED); in uwb_drp_process_target()
482 static void uwb_drp_process_owner_accepted(struct uwb_rsv *rsv, in uwb_drp_process_owner_accepted() argument
485 struct uwb_rsv_move *mv = &rsv->mv; in uwb_drp_process_owner_accepted()
487 switch (rsv->state) { in uwb_drp_process_owner_accepted()
491 uwb_rsv_set_state(rsv, UWB_RSV_STATE_O_ESTABLISHED); in uwb_drp_process_owner_accepted()
494 if (bitmap_equal(mas->bm, rsv->mas.bm, UWB_NUM_MAS)) in uwb_drp_process_owner_accepted()
495 uwb_rsv_set_state(rsv, UWB_RSV_STATE_O_ESTABLISHED); in uwb_drp_process_owner_accepted()
497 uwb_rsv_set_state(rsv, UWB_RSV_STATE_O_MODIFIED); in uwb_drp_process_owner_accepted()
501 if (bitmap_equal(mas->bm, rsv->mas.bm, UWB_NUM_MAS)) in uwb_drp_process_owner_accepted()
502 uwb_rsv_set_state(rsv, UWB_RSV_STATE_O_ESTABLISHED); in uwb_drp_process_owner_accepted()
504 uwb_rsv_set_state(rsv, UWB_RSV_STATE_O_MOVE_REDUCING); in uwb_drp_process_owner_accepted()
509 uwb_rsv_set_state(rsv, UWB_RSV_STATE_O_MOVE_COMBINING); in uwb_drp_process_owner_accepted()
511 uwb_rsv_set_state(rsv, UWB_RSV_STATE_O_MOVE_EXPANDING); in uwb_drp_process_owner_accepted()
515 if (bitmap_equal(mas->bm, rsv->mas.bm, UWB_NUM_MAS)) in uwb_drp_process_owner_accepted()
516 uwb_rsv_set_state(rsv, UWB_RSV_STATE_O_MOVE_REDUCING); in uwb_drp_process_owner_accepted()
518 uwb_rsv_set_state(rsv, UWB_RSV_STATE_O_MOVE_COMBINING); in uwb_drp_process_owner_accepted()
528 static void uwb_drp_process_owner(struct uwb_rc *rc, struct uwb_rsv *rsv, in uwb_drp_process_owner() argument
544 uwb_drp_process_owner_accepted(rsv, &mas); in uwb_drp_process_owner()
553 uwb_rsv_set_state(rsv, UWB_RSV_STATE_O_PENDING); in uwb_drp_process_owner()
556 uwb_rsv_set_state(rsv, UWB_RSV_STATE_NONE); in uwb_drp_process_owner()
562 uwb_drp_handle_conflict_rsv(rc, rsv, drp_evt, drp_ie, &mas); in uwb_drp_process_owner()
679 struct uwb_rsv *rsv; in uwb_drp_process_involved() local
681 rsv = uwb_rsv_find(rc, src, drp_ie); in uwb_drp_process_involved()
682 if (!rsv) { in uwb_drp_process_involved()
695 if (rsv->state == UWB_RSV_STATE_NONE) { in uwb_drp_process_involved()
696 uwb_rsv_set_state(rsv, UWB_RSV_STATE_NONE); in uwb_drp_process_involved()
701 uwb_drp_process_target(rc, rsv, drp_ie, drp_evt); in uwb_drp_process_involved()
703 uwb_drp_process_owner(rc, rsv, src, drp_ie, drp_evt); in uwb_drp_process_involved()