diff options
author | Jiri Pirko <jpirko@redhat.com> | 2011-04-18 23:48:16 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-04-25 15:00:30 -0400 |
commit | 3aba891dde3842d89ad022237b99c1ed308040b0 (patch) | |
tree | 7b89bcdc0362a1fdd50d74c3a8108f16fecfa5b1 /drivers/net/bonding/bonding.h | |
parent | 22d5969fb450afd3a4aff606360f7d52c5a3a628 (diff) |
bonding: move processing of recv handlers into handle_frame()
Since now when bonding uses rx_handler, all traffic going into bond
device goes thru bond_handle_frame. So there's no need to go back into
bonding code later via ptype handlers. This patch converts
original ptype handlers into "bonding receive probes". These functions
are called from bond_handle_frame and they are registered per-mode.
Note that vlan packets are also handled because they are always untagged
thanks to vlan_untag()
Note that this also allows arpmon for eth-bond-bridge-vlan topology.
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bonding/bonding.h')
-rw-r--r-- | drivers/net/bonding/bonding.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h index 6126c6a13a74..85fb8220e283 100644 --- a/drivers/net/bonding/bonding.h +++ b/drivers/net/bonding/bonding.h | |||
@@ -226,6 +226,8 @@ struct bonding { | |||
226 | struct slave *primary_slave; | 226 | struct slave *primary_slave; |
227 | bool force_primary; | 227 | bool force_primary; |
228 | s32 slave_cnt; /* never change this value outside the attach/detach wrappers */ | 228 | s32 slave_cnt; /* never change this value outside the attach/detach wrappers */ |
229 | void (*recv_probe)(struct sk_buff *, struct bonding *, | ||
230 | struct slave *); | ||
229 | rwlock_t lock; | 231 | rwlock_t lock; |
230 | rwlock_t curr_slave_lock; | 232 | rwlock_t curr_slave_lock; |
231 | s8 kill_timers; | 233 | s8 kill_timers; |
@@ -399,8 +401,6 @@ void bond_set_mode_ops(struct bonding *bond, int mode); | |||
399 | int bond_parse_parm(const char *mode_arg, const struct bond_parm_tbl *tbl); | 401 | int bond_parse_parm(const char *mode_arg, const struct bond_parm_tbl *tbl); |
400 | void bond_select_active_slave(struct bonding *bond); | 402 | void bond_select_active_slave(struct bonding *bond); |
401 | void bond_change_active_slave(struct bonding *bond, struct slave *new_active); | 403 | void bond_change_active_slave(struct bonding *bond, struct slave *new_active); |
402 | void bond_register_arp(struct bonding *); | ||
403 | void bond_unregister_arp(struct bonding *); | ||
404 | void bond_create_debugfs(void); | 404 | void bond_create_debugfs(void); |
405 | void bond_destroy_debugfs(void); | 405 | void bond_destroy_debugfs(void); |
406 | void bond_debug_register(struct bonding *bond); | 406 | void bond_debug_register(struct bonding *bond); |