A kernel panic occurred when I do some operation about vlan.
The operation is as below:
ifconfig eth2 up
ifconfig bond0 up
ifenslave bond0 eth2
vconfig add eth2 3300
vconfig add bond0 33
vconfig rem eth2.3300
the panic stack is as below:
 panic_event+0x49/0x70 [ipmi_msghandler]
 igb_vlan_rx_kill_vid+0x4d/0x100 [igb]
 bond_vlan_rx_kill_vid+0x9f/0x290 [bonding]
 unregister_vlan_dev+0x136/0x180 [8021q]
 vlan_ioctl_handler+0x170/0x3f0 [8021q]
And the nic is as below:
[root@localhost ~]# ethtool -i eth2
# lspci | grep Eth
01:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
126.96.36.199-0.7 also happen in 2.6.32-131
I had tried the same operation on other nics, like tg3,bnx2. But they haven't panic.
So I find the reason is that igb have two more netdev_ops (ndo_vlan_rx_add_vid and ndo_vlan_rx_kill_vid) than tg3 and bnx2.
I think the reason of panic is that when ndo_vlan_rx_kill_vid has been called, the vlgrp haven't been correctly find.
My question is what the purpose of "vlan_group_set_device(adapter->vlgrp, vid, NULL);" in method igb_vlan_rx_kill_vid?
unregister_vlan_dev(vlan.c) has done the same thing after ops->ndo_vlan_rx_kill_vid was called.
If I delete it , Would it cause somthing bad?
You should try the latest igb driver, v3.2.10 to make sure this issue hasn't already been fixed: http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=13663 http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=13663.
Sorry, I don't know enough about this code to help you with your question.
There were some changes in this area of the driver made recently. The latest version of the driver has this line of code removed as sometimes the vlgrp is not defined at the time of the execution of this function. Try removing it and let me know if it fixes teh probelm.
I had removed it and did some test.
It resolve my problem and seems that nothing wrong has happened.
My question is
what the purpose of "vlan_group_set_device(adapter->vlgrp, vid, NULL);" in method igb_vlan_rx_kill_vid?
Because I didn't kown why it exsits, I couldn't delete it with confidence..........
Sorry for the delay in responding. The code you ask about was assigning a vlan id, but it requires a vlan group. The operating system has changed and now this function can be called before a vlan group is assigned, so the code was removed. It can be removed safely.