diff options
author | Jiri Pirko <jiri@resnulli.us> | 2013-03-06 01:31:13 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-03-06 14:55:20 -0500 |
commit | 753f993911b32e479b4fab5d228dc07c11d1e7e7 (patch) | |
tree | f2b3e9f3d6c06366ac24e5222f2475b319bc379f /include/linux/if_team.h | |
parent | acbba0d0f88e2577b9d92b61b136d13f65831a52 (diff) | |
download | linux-stable-753f993911b32e479b4fab5d228dc07c11d1e7e7.tar.gz linux-stable-753f993911b32e479b4fab5d228dc07c11d1e7e7.tar.bz2 linux-stable-753f993911b32e479b4fab5d228dc07c11d1e7e7.zip |
team: introduce random mode
As suggested by Eric Dumazet, allow user to select mode which chooses
TX port randomly. Functionality should be more of less similar to
round-robin mode with even lower overhead.
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/if_team.h')
-rw-r--r-- | include/linux/if_team.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/include/linux/if_team.h b/include/linux/if_team.h index 3283def74483..4474557904f6 100644 --- a/include/linux/if_team.h +++ b/include/linux/if_team.h @@ -240,6 +240,26 @@ static inline struct team_port *team_get_port_by_index_rcu(struct team *team, return NULL; } +static inline struct team_port * +team_get_first_port_txable_rcu(struct team *team, struct team_port *port) +{ + struct team_port *cur; + + if (likely(team_port_txable(port))) + return port; + cur = port; + list_for_each_entry_continue_rcu(cur, &team->port_list, list) + if (team_port_txable(port)) + return cur; + list_for_each_entry_rcu(cur, &team->port_list, list) { + if (cur == port) + break; + if (team_port_txable(port)) + return cur; + } + return NULL; +} + extern int team_options_register(struct team *team, const struct team_option *option, size_t option_count); |