Lines Matching refs:lb_priv

20 struct lb_priv;
23 struct lb_priv *,
60 struct lb_priv { struct
67 static struct lb_priv *get_lb_priv(struct team *team) in get_lb_priv() argument
69 return (struct lb_priv *) &team->mode_priv; in get_lb_priv()
83 (lb_priv)->ex->tx_hash_to_port_mapping[hash].port
86 (lb_priv)->ex->tx_hash_to_port_mapping[hash].opt_inst_info
91 struct lb_priv *lb_priv = get_lb_priv(team); in lb_tx_hash_to_port_mapping_null_port() local
98 pm = &lb_priv->ex->tx_hash_to_port_mapping[i]; in lb_tx_hash_to_port_mapping_null_port()
111 struct lb_priv *lb_priv, in lb_hash_select_tx_port() argument
122 struct lb_priv *lb_priv, in lb_htpm_select_tx_port() argument
126 return rcu_dereference_bh(LB_HTPM_PORT_BY_HASH(lb_priv, hash)); in lb_htpm_select_tx_port()
174 static unsigned int lb_get_skb_hash(struct lb_priv *lb_priv, in lb_get_skb_hash() argument
181 fp = rcu_dereference_bh(lb_priv->fp); in lb_get_skb_hash()
189 static void lb_update_tx_stats(unsigned int tx_bytes, struct lb_priv *lb_priv, in lb_update_tx_stats() argument
197 pcpu_stats = this_cpu_ptr(lb_priv->pcpu_stats); in lb_update_tx_stats()
208 struct lb_priv *lb_priv = get_lb_priv(team); in lb_transmit() local
214 hash = lb_get_skb_hash(lb_priv, skb); in lb_transmit()
215 select_tx_port_func = rcu_dereference_bh(lb_priv->select_tx_port_func); in lb_transmit()
216 port = select_tx_port_func(team, lb_priv, skb, hash); in lb_transmit()
221 lb_update_tx_stats(tx_bytes, lb_priv, get_lb_port_priv(port), hash); in lb_transmit()
231 struct lb_priv *lb_priv = get_lb_priv(team); in lb_bpf_func_get() local
233 if (!lb_priv->ex->orig_fprog) { in lb_bpf_func_get()
238 ctx->data.bin_val.len = lb_priv->ex->orig_fprog->len * in lb_bpf_func_get()
240 ctx->data.bin_val.ptr = lb_priv->ex->orig_fprog->filter; in lb_bpf_func_get()
273 struct lb_priv *lb_priv = get_lb_priv(team); in lb_bpf_func_set() local
291 if (lb_priv->ex->orig_fprog) { in lb_bpf_func_set()
293 __fprog_destroy(lb_priv->ex->orig_fprog); in lb_bpf_func_set()
294 orig_fp = rcu_dereference_protected(lb_priv->fp, in lb_bpf_func_set()
298 rcu_assign_pointer(lb_priv->fp, fp); in lb_bpf_func_set()
299 lb_priv->ex->orig_fprog = fprog; in lb_bpf_func_set()
310 struct lb_priv *lb_priv = get_lb_priv(team); in lb_tx_method_get() local
314 func = rcu_dereference_protected(lb_priv->select_tx_port_func, in lb_tx_method_get()
324 struct lb_priv *lb_priv = get_lb_priv(team); in lb_tx_method_set() local
330 rcu_assign_pointer(lb_priv->select_tx_port_func, func); in lb_tx_method_set()
337 struct lb_priv *lb_priv = get_lb_priv(team); in lb_tx_hash_to_port_mapping_init() local
340 LB_HTPM_OPT_INST_INFO_BY_HASH(lb_priv, hash) = info; in lb_tx_hash_to_port_mapping_init()
347 struct lb_priv *lb_priv = get_lb_priv(team); in lb_tx_hash_to_port_mapping_get() local
351 port = LB_HTPM_PORT_BY_HASH(lb_priv, hash); in lb_tx_hash_to_port_mapping_get()
359 struct lb_priv *lb_priv = get_lb_priv(team); in lb_tx_hash_to_port_mapping_set() local
366 rcu_assign_pointer(LB_HTPM_PORT_BY_HASH(lb_priv, hash), in lb_tx_hash_to_port_mapping_set()
377 struct lb_priv *lb_priv = get_lb_priv(team); in lb_hash_stats_init() local
380 lb_priv->ex->stats.info[hash].opt_inst_info = info; in lb_hash_stats_init()
386 struct lb_priv *lb_priv = get_lb_priv(team); in lb_hash_stats_get() local
389 ctx->data.bin_val.ptr = &lb_priv->ex->stats.info[hash].stats; in lb_hash_stats_get()
448 struct lb_priv *lb_priv; in lb_stats_refresh() local
462 lb_priv = get_lb_priv(team); in lb_stats_refresh()
470 s_info = &lb_priv->ex->stats.info[j]; in lb_stats_refresh()
473 pcpu_stats = per_cpu_ptr(lb_priv->pcpu_stats, i); in lb_stats_refresh()
487 pcpu_stats = per_cpu_ptr(lb_priv->pcpu_stats, i); in lb_stats_refresh()
507 struct lb_priv *lb_priv = get_lb_priv(team); in lb_stats_refresh_interval_get() local
509 ctx->data.u32_val = lb_priv->ex->stats.refresh_interval; in lb_stats_refresh_interval_get()
516 struct lb_priv *lb_priv = get_lb_priv(team); in lb_stats_refresh_interval_set() local
520 if (lb_priv->ex->stats.refresh_interval == interval) in lb_stats_refresh_interval_set()
522 lb_priv->ex->stats.refresh_interval = interval; in lb_stats_refresh_interval_set()
524 schedule_delayed_work(&lb_priv->ex->stats.refresh_dw, 0); in lb_stats_refresh_interval_set()
526 cancel_delayed_work(&lb_priv->ex->stats.refresh_dw); in lb_stats_refresh_interval_set()
575 struct lb_priv *lb_priv = get_lb_priv(team); in lb_init() local
582 rcu_assign_pointer(lb_priv->select_tx_port_func, func); in lb_init()
584 lb_priv->ex = kzalloc(sizeof(*lb_priv->ex), GFP_KERNEL); in lb_init()
585 if (!lb_priv->ex) in lb_init()
587 lb_priv->ex->team = team; in lb_init()
589 lb_priv->pcpu_stats = alloc_percpu(struct lb_pcpu_stats); in lb_init()
590 if (!lb_priv->pcpu_stats) { in lb_init()
597 team_lb_stats = per_cpu_ptr(lb_priv->pcpu_stats, i); in lb_init()
602 INIT_DELAYED_WORK(&lb_priv->ex->stats.refresh_dw, lb_stats_refresh); in lb_init()
610 free_percpu(lb_priv->pcpu_stats); in lb_init()
612 kfree(lb_priv->ex); in lb_init()
618 struct lb_priv *lb_priv = get_lb_priv(team); in lb_exit() local
622 cancel_delayed_work_sync(&lb_priv->ex->stats.refresh_dw); in lb_exit()
623 free_percpu(lb_priv->pcpu_stats); in lb_exit()
624 kfree(lb_priv->ex); in lb_exit()
661 .priv_size = sizeof(struct lb_priv),