In my ATCA board, there are two NIC hardwired to switch, so I cannot check the bonding funciton by unplug the cable.
I want to check the function by "ifconfig ethX down" command, So I modified the driver code.
1.In open function in my driver code, I called netif_carrier_on(dev) to enable the link status up.
2.In close function, called the netif_carrier_off(dev) to enable the link status down.
3.I modified the Ethtool operation get_link method as follows.
static u32 xlr_get_link(struct net_device *dev)
{
struct driver_data *priv = netdev_priv(dev);
return netif_carrier_ok(dev) ? 1 : 0;
}
So, when issue the "ifconfig ethX down", it will call close function, then call netif_carrier_off(dev). The link status of the NIC will be down. Then bonding will failover to the other NIC. My problem is that at this time, I can not ping througth the network.
The following is my operation log:
1. root@localhost:/root> modprobe bonding mode=1 miimon=100 use_carrier=
2. root@localhost:/root> ifconfig bond0 192.168.4.1 up
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth2
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth2
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:02:bb:00:52:0a
Slave Interface: eth3
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:02:bb:00:52:0b
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth3
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth2
MII Status: down
Link Failure Count: 1
Permanent HW addr: 00:02:bb:00:52:0a
Slave Interface: eth3
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:02:bb:00:52:0b
At this time, I cannot ping through the Network. But after I ifconfig the eth2 up again, can ping through the network.
It means that the bonding don't switch to the eth3 really. Why?
Who can tell me the root cause?
Thanks a lot.
Shiner
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
In my ATCA board, there are two NIC hardwired to switch, so I cannot check the bonding funciton by unplug the cable.
I want to check the function by "ifconfig ethX down" command, So I modified the driver code.
1.In open function in my driver code, I called netif_carrier_on(dev) to enable the link status up.
2.In close function, called the netif_carrier_off(dev) to enable the link status down.
3.I modified the Ethtool operation get_link method as follows.
static u32 xlr_get_link(struct net_device *dev)
{
struct driver_data *priv = netdev_priv(dev);
return netif_carrier_ok(dev) ? 1 : 0;
}
So, when issue the "ifconfig ethX down", it will call close function, then call netif_carrier_off(dev). The link status of the NIC will be down. Then bonding will failover to the other NIC. My problem is that at this time, I can not ping througth the network.
The following is my operation log:
1. root@localhost:/root> modprobe bonding mode=1 miimon=100 use_carrier=
2. root@localhost:/root> ifconfig bond0 192.168.4.1 up
3. root@localhost:/root> ifenslave bond0 eth2 eth3
4. root@localhost:/root> cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.1.2 (January 20, 2007)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth2
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth2
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:02:bb:00:52:0a
Slave Interface: eth3
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:02:bb:00:52:0b
5. root@localhost:/root> ifconfig eth2 down
6. root@localhost:/root> cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.1.2 (January 20, 2007)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth3
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth2
MII Status: down
Link Failure Count: 1
Permanent HW addr: 00:02:bb:00:52:0a
Slave Interface: eth3
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:02:bb:00:52:0b
At this time, I cannot ping through the Network. But after I ifconfig the eth2 up again, can ping through the network.
It means that the bonding don't switch to the eth3 really. Why?
Who can tell me the root cause?
Thanks a lot.
Shiner