lb_priv
pm = &lb_priv->ex->tx_hash_to_port_mapping[i];
struct lb_priv *lb_priv = get_lb_priv(team);
port = rcu_dereference_bh(LB_HTPM_PORT_BY_HASH(lb_priv, hash));
static unsigned int lb_get_skb_hash(struct lb_priv *lb_priv,
fp = rcu_dereference_bh(lb_priv->fp);
static void lb_update_tx_stats(unsigned int tx_bytes, struct lb_priv *lb_priv,
pcpu_stats = this_cpu_ptr(lb_priv->pcpu_stats);
struct lb_priv *lb_priv = get_lb_priv(team);
hash = lb_get_skb_hash(lb_priv, skb);
select_tx_port_func = rcu_dereference_bh(lb_priv->select_tx_port_func);
lb_update_tx_stats(tx_bytes, lb_priv, get_lb_port_priv(port), hash);
struct lb_priv *lb_priv = get_lb_priv(team);
if (!lb_priv->ex->orig_fprog) {
ctx->data.bin_val.len = lb_priv->ex->orig_fprog->len *
ctx->data.bin_val.ptr = lb_priv->ex->orig_fprog->filter;
struct lb_priv *lb_priv = get_lb_priv(team);
struct lb_priv;
if (lb_priv->ex->orig_fprog) {
__fprog_destroy(lb_priv->ex->orig_fprog);
orig_fp = rtnl_dereference(lb_priv->fp);
rcu_assign_pointer(lb_priv->fp, fp);
lb_priv->ex->orig_fprog = fprog;
struct lb_priv *lb_priv = get_lb_priv(team);
if (!lb_priv->ex->orig_fprog)
__fprog_destroy(lb_priv->ex->orig_fprog);
fp = rtnl_dereference(lb_priv->fp);
struct lb_priv *lb_priv = get_lb_priv(team);
func = rtnl_dereference(lb_priv->select_tx_port_func);
struct lb_priv *lb_priv = get_lb_priv(team);
rcu_assign_pointer(lb_priv->select_tx_port_func, func);
struct lb_priv *lb_priv = get_lb_priv(team);
LB_HTPM_OPT_INST_INFO_BY_HASH(lb_priv, hash) = info;
struct lb_priv *lb_priv = get_lb_priv(team);
port = LB_HTPM_PORT_BY_HASH(lb_priv, hash);
struct lb_priv *lb_priv = get_lb_priv(team);
rcu_assign_pointer(LB_HTPM_PORT_BY_HASH(lb_priv, hash),
struct lb_priv *lb_priv = get_lb_priv(team);
lb_priv->ex->stats.info[hash].opt_inst_info = info;
struct lb_priv *lb_priv = get_lb_priv(team);
ctx->data.bin_val.ptr = &lb_priv->ex->stats.info[hash].stats;
struct lb_priv *lb_priv;
lb_priv = get_lb_priv(team);
s_info = &lb_priv->ex->stats.info[j];
pcpu_stats = per_cpu_ptr(lb_priv->pcpu_stats, i);
pcpu_stats = per_cpu_ptr(lb_priv->pcpu_stats, i);
struct lb_priv *lb_priv = get_lb_priv(team);
ctx->data.u32_val = lb_priv->ex->stats.refresh_interval;
struct lb_priv *lb_priv = get_lb_priv(team);
if (lb_priv->ex->stats.refresh_interval == interval)
lb_priv->ex->stats.refresh_interval = interval;
schedule_delayed_work(&lb_priv->ex->stats.refresh_dw, 0);
cancel_delayed_work(&lb_priv->ex->stats.refresh_dw);
struct lb_priv *lb_priv = get_lb_priv(team);
rcu_assign_pointer(lb_priv->select_tx_port_func, func);
lb_priv->ex = kzalloc_obj(*lb_priv->ex);
if (!lb_priv->ex)
lb_priv->ex->team = team;
lb_priv->pcpu_stats = alloc_percpu(struct lb_pcpu_stats);
if (!lb_priv->pcpu_stats) {
team_lb_stats = per_cpu_ptr(lb_priv->pcpu_stats, i);
INIT_DELAYED_WORK(&lb_priv->ex->stats.refresh_dw, lb_stats_refresh);
free_percpu(lb_priv->pcpu_stats);
kfree(lb_priv->ex);
struct lb_priv *lb_priv = get_lb_priv(team);
cancel_delayed_work_sync(&lb_priv->ex->stats.refresh_dw);
free_percpu(lb_priv->pcpu_stats);
kfree(lb_priv->ex);
.priv_size = sizeof(struct lb_priv),
static struct lb_priv *get_lb_priv(struct team *team)
return (struct lb_priv *) &team->mode_priv;
(lb_priv)->ex->tx_hash_to_port_mapping[hash].port
(lb_priv)->ex->tx_hash_to_port_mapping[hash].opt_inst_info
struct lb_priv *lb_priv = get_lb_priv(team);