An iterative method of correcting errors in a data block. Bad bytes are
first identified using information derived from an 8B/10B decoding of the
data block. Within each identified bad byte, suspect bits are
subsequently identified using information derived from parity decoding of
a row of the data block. Each suspect bit is then classified as either a
confirmed error bit or an unconfirmed error bit using information derived
from parity decoding of a column of the data block in which the suspect
bit is located. Confirmed error bits are then corrected, the parity bits
corresponding to the confirmed error bit reset, and the bad byte cleared.
The process is then repeated if one or more bad bytes remain in the data
block.