The Cisco 5921 ESR has the following limitation:
With the 5921 ESR, several situations have been encountered in which the e1000e Ethernet driver strips VLAN tags before a frame reaches the 5921. This will result in dot1q trunking not performing properly (the 5921 will receive frames with no VLAN tag, even though it is configured to expect VLAN tags). In IOS, you will notice this by seeing ARP or ping failures.
If you see such behavior, please issue the following debug command from IOS:
# debug arp
Now, try the ping again. If the VLAN tag stripping issue is present, you will see a "wrong cable" message similar to the following:
*Jan 14 21:49:50.874: IP ARP rep filtered src 192.168.110.2 e05f.b986.5500, dst 192.168.110.1 0022.4d7b.e424 wrong cable, interface Ethernet0/0.130
Now switch to the Linux command line and see if the e1000e driver is being used by issuing the following command (using eth0 as an example):
[root@router ~]# ethtool -i eth0
driver: e1000e <== LOOK FOR THIS
From the Linux command line, verify the VLAN mode of the device:
[root@router ~]# ethtool -d eth0
0x00000: CTRL (Device control register) 0x58100248
Endian mode (buffers): little
Invert Loss-Of-Signal: no
Receive flow control: enabled
Transmit flow control: enabled
VLAN mode: enabled <== LOOK FOR THIS
Auto speed detect: disabled
If the VLAN mode is enabled, this indicates that the driver is stripping the VLAN tags.
To remedy this using CentOS, please upgrade to the latest e1000e driver by following these steps from the Linux command line:
#yum install kernel-devel gcc gcc-c++ make wget
#tar zxf e1000e-3.0.4.tar.gz
If the process ends with the following message, ignore it:
/bin/sh: man: command not found
From the Linux command line, verify that the new driver has been activated:
[root@centos src]# ethtool -i eth0
version: 3.0.4-NAPI <== LOOK FOR THIS
Linux kernel patch which causes 802.1q tag removal is committed into the following streams:
Any Linux kernel within each of these streams that is at the above versions or later would have the 802.1q removal change. incorporated.
Add the below entry in the SWROPTIONS file when the Linux Kernel/driver strips dot1q tag before the packet reaches the 5921 (if running IOS version is 15.6(2)T).