Lines Matching refs:dim
166 net_dim_on_top(struct net_dim *dim) in net_dim_on_top() argument
168 switch (dim->tune_state) { in net_dim_on_top()
173 return (dim->steps_left > 1) && (dim->steps_right == 1); in net_dim_on_top()
175 return (dim->steps_right > 1) && (dim->steps_left == 1); in net_dim_on_top()
180 net_dim_turn(struct net_dim *dim) in net_dim_turn() argument
182 switch (dim->tune_state) { in net_dim_turn()
187 dim->tune_state = NET_DIM_GOING_LEFT; in net_dim_turn()
188 dim->steps_left = 0; in net_dim_turn()
191 dim->tune_state = NET_DIM_GOING_RIGHT; in net_dim_turn()
192 dim->steps_right = 0; in net_dim_turn()
198 net_dim_step(struct net_dim *dim) in net_dim_step() argument
200 if (dim->tired == (NET_DIM_PARAMS_NUM_PROFILES * 2)) in net_dim_step()
203 switch (dim->tune_state) { in net_dim_step()
208 if (dim->profile_ix == (NET_DIM_PARAMS_NUM_PROFILES - 1)) in net_dim_step()
210 dim->profile_ix++; in net_dim_step()
211 dim->steps_right++; in net_dim_step()
214 if (dim->profile_ix == 0) in net_dim_step()
216 dim->profile_ix--; in net_dim_step()
217 dim->steps_left++; in net_dim_step()
221 dim->tired++; in net_dim_step()
226 net_dim_park_on_top(struct net_dim *dim) in net_dim_park_on_top() argument
228 dim->steps_right = 0; in net_dim_park_on_top()
229 dim->steps_left = 0; in net_dim_park_on_top()
230 dim->tired = 0; in net_dim_park_on_top()
231 dim->tune_state = NET_DIM_PARKING_ON_TOP; in net_dim_park_on_top()
235 net_dim_park_tired(struct net_dim *dim) in net_dim_park_tired() argument
237 dim->steps_right = 0; in net_dim_park_tired()
238 dim->steps_left = 0; in net_dim_park_tired()
239 dim->tune_state = NET_DIM_PARKING_TIRED; in net_dim_park_tired()
243 net_dim_exit_parking(struct net_dim *dim) in net_dim_exit_parking() argument
245 dim->tune_state = dim->profile_ix ? NET_DIM_GOING_LEFT : in net_dim_exit_parking()
247 net_dim_step(dim); in net_dim_exit_parking()
286 struct net_dim *dim) in net_dim_decision() argument
288 int prev_state = dim->tune_state; in net_dim_decision()
289 int prev_ix = dim->profile_ix; in net_dim_decision()
293 switch (dim->tune_state) { in net_dim_decision()
295 stats_res = net_dim_stats_compare(curr_stats, &dim->prev_stats); in net_dim_decision()
297 net_dim_exit_parking(dim); in net_dim_decision()
301 dim->tired--; in net_dim_decision()
302 if (!dim->tired) in net_dim_decision()
303 net_dim_exit_parking(dim); in net_dim_decision()
308 stats_res = net_dim_stats_compare(curr_stats, &dim->prev_stats); in net_dim_decision()
310 net_dim_turn(dim); in net_dim_decision()
312 if (net_dim_on_top(dim)) { in net_dim_decision()
313 net_dim_park_on_top(dim); in net_dim_decision()
316 step_res = net_dim_step(dim); in net_dim_decision()
319 net_dim_park_on_top(dim); in net_dim_decision()
322 net_dim_park_tired(dim); in net_dim_decision()
330 (dim->tune_state != NET_DIM_PARKING_ON_TOP)) in net_dim_decision()
331 dim->prev_stats = *curr_stats; in net_dim_decision()
333 return dim->profile_ix != prev_ix; in net_dim_decision()
372 net_dim(struct net_dim *dim, in net_dim() argument
379 dim->event_ctr++; in net_dim()
381 switch (dim->state) { in net_dim()
384 dim->event_ctr, in net_dim()
385 dim->start_sample.event_ctr); in net_dim()
388 net_dim_sample(dim->event_ctr, packets, bytes, &end_sample); in net_dim()
389 net_dim_calc_stats(&dim->start_sample, &end_sample, in net_dim()
391 if (net_dim_decision(&curr_stats, dim)) { in net_dim()
392 dim->state = NET_DIM_APPLY_NEW_PROFILE; in net_dim()
393 schedule_work(&dim->work); in net_dim()
398 net_dim_sample(dim->event_ctr, packets, bytes, &dim->start_sample); in net_dim()
399 dim->state = NET_DIM_MEASURE_IN_PROGRESS; in net_dim()