Lines Matching refs:ai

24 static void uwb_rsv_fill_column_alloc(struct uwb_rsv_alloc_info *ai)  in uwb_rsv_fill_column_alloc()  argument
27 unsigned char *bm = ai->bm; in uwb_rsv_fill_column_alloc()
28 struct uwb_rsv_col_info *ci = ai->ci; in uwb_rsv_fill_column_alloc()
54 static void uwb_rsv_fill_row_alloc(struct uwb_rsv_alloc_info *ai) in uwb_rsv_fill_row_alloc() argument
57 unsigned char *bm = ai->bm; in uwb_rsv_fill_row_alloc()
58 struct uwb_rsv_row_info *ri = &ai->ri; in uwb_rsv_fill_row_alloc()
76 ai->safe_allocated_mases++; in uwb_rsv_fill_row_alloc()
78 ai->unsafe_allocated_mases++; in uwb_rsv_fill_row_alloc()
84 ai->total_allocated_mases = ai->safe_allocated_mases + ai->unsafe_allocated_mases; in uwb_rsv_fill_row_alloc()
137 static int uwb_rsv_find_best_column_set(struct uwb_rsv_alloc_info *ai, int interval, in uwb_rsv_find_best_column_set() argument
140 struct uwb_rsv_col_info *ci = ai->ci; in uwb_rsv_find_best_column_set()
196 ai->safe_allocated_mases = (UWB_NUM_ZONES / interval) * num_safe_mas; in uwb_rsv_find_best_column_set()
197 ai->unsafe_allocated_mases = (UWB_NUM_ZONES / interval) * num_unsafe_mas; in uwb_rsv_find_best_column_set()
198 ai->total_allocated_mases = ai->safe_allocated_mases + ai->unsafe_allocated_mases; in uwb_rsv_find_best_column_set()
199 ai->interval = interval; in uwb_rsv_find_best_column_set()
204 static void get_row_descriptors(struct uwb_rsv_alloc_info *ai) in get_row_descriptors() argument
206 unsigned char *bm = ai->bm; in get_row_descriptors()
207 struct uwb_rsv_row_info *ri = &ai->ri; in get_row_descriptors()
260 static void get_column_descriptors(struct uwb_rsv_alloc_info *ai) in get_column_descriptors() argument
262 unsigned char *bm = ai->bm; in get_column_descriptors()
263 struct uwb_rsv_col_info *ci = ai->ci; in get_column_descriptors()
271 static int uwb_rsv_find_best_row_alloc(struct uwb_rsv_alloc_info *ai) in uwb_rsv_find_best_row_alloc() argument
274 int max_rows = ai->max_mas / UWB_USABLE_MAS_PER_ROW; in uwb_rsv_find_best_row_alloc()
275 int min_rows = ai->min_mas / UWB_USABLE_MAS_PER_ROW; in uwb_rsv_find_best_row_alloc()
276 if (ai->min_mas % UWB_USABLE_MAS_PER_ROW) in uwb_rsv_find_best_row_alloc()
279 if (n_rows <= ai->ri.free_rows) { in uwb_rsv_find_best_row_alloc()
280 ai->ri.used_rows = n_rows; in uwb_rsv_find_best_row_alloc()
281 ai->interval = 1; /* row reservation */ in uwb_rsv_find_best_row_alloc()
282 uwb_rsv_fill_row_alloc(ai); in uwb_rsv_find_best_row_alloc()
289 static int uwb_rsv_find_best_col_alloc(struct uwb_rsv_alloc_info *ai, int interval) in uwb_rsv_find_best_col_alloc() argument
293 int max_per_zone = ai->max_mas / n_column; in uwb_rsv_find_best_col_alloc()
294 int min_per_zone = ai->min_mas / n_column; in uwb_rsv_find_best_col_alloc()
296 if (ai->min_mas % n_column) in uwb_rsv_find_best_col_alloc()
308 if (uwb_rsv_find_best_column_set(ai, interval, 0, n_mas) == UWB_RSV_ALLOC_NOT_FOUND) in uwb_rsv_find_best_col_alloc()
312 if (uwb_rsv_find_best_column_set(ai, interval, n_safe, n_unsafe) == UWB_RSV_ALLOC_FOUND) { in uwb_rsv_find_best_col_alloc()
313 uwb_rsv_fill_column_alloc(ai); in uwb_rsv_find_best_col_alloc()
324 struct uwb_rsv_alloc_info *ai; in uwb_rsv_find_best_allocation() local
328 ai = kzalloc(sizeof(struct uwb_rsv_alloc_info), GFP_KERNEL); in uwb_rsv_find_best_allocation()
329 if (!ai) in uwb_rsv_find_best_allocation()
331 ai->min_mas = rsv->min_mas; in uwb_rsv_find_best_allocation()
332 ai->max_mas = rsv->max_mas; in uwb_rsv_find_best_allocation()
333 ai->max_interval = rsv->max_interval; in uwb_rsv_find_best_allocation()
338 ai->bm[bit_index] = UWB_RSV_MAS_NOT_AVAIL; in uwb_rsv_find_best_allocation()
340 if (ai->max_interval == 1) { in uwb_rsv_find_best_allocation()
341 get_row_descriptors(ai); in uwb_rsv_find_best_allocation()
342 if (uwb_rsv_find_best_row_alloc(ai) == UWB_RSV_ALLOC_FOUND) in uwb_rsv_find_best_allocation()
348 get_column_descriptors(ai); in uwb_rsv_find_best_allocation()
351 if (interval > ai->max_interval) in uwb_rsv_find_best_allocation()
353 if (uwb_rsv_find_best_col_alloc(ai, interval) == UWB_RSV_ALLOC_FOUND) in uwb_rsv_find_best_allocation()
358 get_row_descriptors(ai); in uwb_rsv_find_best_allocation()
359 if (uwb_rsv_find_best_row_alloc(ai) == UWB_RSV_ALLOC_FOUND) in uwb_rsv_find_best_allocation()
369 if (ai->bm[bit_index] == UWB_RSV_MAS_SAFE) in uwb_rsv_find_best_allocation()
371 else if (ai->bm[bit_index] == UWB_RSV_MAS_UNSAFE) in uwb_rsv_find_best_allocation()
376 result->safe = ai->safe_allocated_mases; in uwb_rsv_find_best_allocation()
377 result->unsafe = ai->unsafe_allocated_mases; in uwb_rsv_find_best_allocation()
379 kfree(ai); in uwb_rsv_find_best_allocation()
383 kfree(ai); in uwb_rsv_find_best_allocation()