What Are Overruns?
Our cards generate an interrupt at a set interval and when the interrupt is handled the driver reads data from the card. So there can be a few factors which can cause the driver not to be able to read data from the card. The reasons this occurs is because of a clocking problem, ACPI needs to be disabled/enabled or DMA is not working correctly.
Do I Have Them?
It is important to note that to see if you have overruns just run "ifconfig" and there is a counter on each of our interfaces which shows how many overruns have occurred. Now when starting the driver or plugging in a line this can cause a few overruns. So it is important to determine if the overruns are increasing over time; so after the port has been connected for some time. So best idea is check twice with about 2 seconds delay between checks. Now overruns can also occur very slow; so in some extreme cases it may be necessary to check over a larger time such as 30minutes.
Trouble Shooting
Now once you have verified if you have overruns please follow the steps below to correct them.
1) Clocking
Only for E1/T1 cards
To insure your clocking is setup correct please go to How Do I Configure Clocking? and go through the per port configuration and the per card configuration sections. If you needed to make changes to your clocking then please do so and restart our driver and check for overruns. If the overruns occur even after clocking issues have been resolved then proceed to the next step.
Per Port
In Master mode you don't know if the other side is providing a clock as well on the line. So example #3 at How Do I Configure Clocking? can be occurring, so place the port into NORMAL clocking and see if the link connects. If it does then the other side is providing a clock, if not then MASTER mode is the correct mode to be in.In Normal mode if the link is in the "connected" state then this means the other side is providing a clock and this is the correct setup.
Per Card
The DMA engine uses a single clock per card to pull data from the ports, so this is why having as single clock is very important as shown at How Do I Configure Clocking? in the per card section. The different clocks will cause the DMA engine to be out of sync for some ports (ports with the second clock) and therefore cause overruns.
2) Checking DMA Engine
Use the hdparm command to check your hard drive read speed as shown below; now the important thing here is the speed is over 40MB/sec. If the speed is below then this means you will need to upgrade your kernel with the latest chipset drivers. You can contact your motherboard manufacture for this information.
SATA
# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 240 MB in 3.01 seconds = 79.73 MB/sec
IDE
# hdparm -t /dev/hda
/dev/hda:
Timing buffered disk reads: 240 MB in 3.01 seconds = 79.73 MB/sec
#hdparm /dev/hda
/dev/hda:
multcount = 16 (on)
IO_support = 0 (default 16-bit)
unmaskirq = 0 (off)
using_dma = 1 (on) Ensure this is set to "1 (on)"
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 256 (on)
geometry = 65535/16/63, sectors = 80026361856, start = 0
3) Toggling ACPI
Whenever there is a need to add/remove any booting parameter in SNG7 and save them to grub (GRUB 2) :
edit "/etc/defaults/grub"
and then
run "grub2-mkconfig -o /boot/grub2/grub.cfg"
On some systems ACPI needs to be disabled and others it needs to be enabled. So if all other steps above have not corrected the issue the last step is to toggle ACPI. Below is how to check if ACPI is enabled or disabled.
cat /proc/interrupts | grep -c acpi
0 - disabled1 - enabled
Now edit the /etc/default/grub file and add "acpi=on" to enable acpi and "acpi=off to disable acpi. This line needs to be added to the end of the kernel line as shown below. Insure this option is toggled so if acpi was found to be enabled then insure you set "acpi=off" to disable it. Now once the grub file is edited, now
run grub2-mkconfig -o /boot/grub2/grub.cfg
then the system will require a reboot to apply the change. Once it comes up just check if your overrun issue has been resolved.
title CentOS-4 i386 (2.6.9-34.0.2.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-34.0.2.ELsmp ro root=LABEL=/1 acpi=on
initrd /initrd-2.6.9-34.0.2.ELsmp.img