Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/sfxge/common/ef10_ev.c
Show First 20 Lines • Show All 809 Lines • ▼ Show 20 Lines | ef10_ev_rx_packed_stream( | ||||
if (new_buffer) { | if (new_buffer) { | ||||
flags |= EFX_PKT_PACKED_STREAM_NEW_BUFFER; | flags |= EFX_PKT_PACKED_STREAM_NEW_BUFFER; | ||||
eersp->eers_rx_packed_stream_credits++; | eersp->eers_rx_packed_stream_credits++; | ||||
eersp->eers_rx_read_ptr++; | eersp->eers_rx_read_ptr++; | ||||
} | } | ||||
current_id = eersp->eers_rx_read_ptr & eersp->eers_rx_mask; | current_id = eersp->eers_rx_read_ptr & eersp->eers_rx_mask; | ||||
/* Check for errors that invalidate checksum and L3/L4 fields */ | /* Check for errors that invalidate checksum and L3/L4 fields */ | ||||
if (EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_ECC_ERR) != 0) { | if (EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_TRUNC_ERR) != 0) { | ||||
/* RX frame truncated (error flag is misnamed) */ | /* RX frame truncated */ | ||||
EFX_EV_QSTAT_INCR(eep, EV_RX_FRM_TRUNC); | EFX_EV_QSTAT_INCR(eep, EV_RX_FRM_TRUNC); | ||||
flags |= EFX_DISCARD; | flags |= EFX_DISCARD; | ||||
goto deliver; | goto deliver; | ||||
} | } | ||||
if (EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_ECRC_ERR) != 0) { | if (EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_ECRC_ERR) != 0) { | ||||
/* Bad Ethernet frame CRC */ | /* Bad Ethernet frame CRC */ | ||||
EFX_EV_QSTAT_INCR(eep, EV_RX_ETH_CRC_ERR); | EFX_EV_QSTAT_INCR(eep, EV_RX_ETH_CRC_ERR); | ||||
flags |= EFX_DISCARD; | flags |= EFX_DISCARD; | ||||
▲ Show 20 Lines • Show All 120 Lines • ▼ Show 20 Lines | if (desc_count > 1) { | ||||
EFX_EV_QSTAT_INCR(eep, EV_RX_BATCH); | EFX_EV_QSTAT_INCR(eep, EV_RX_BATCH); | ||||
flags |= EFX_PKT_PREFIX_LEN; | flags |= EFX_PKT_PREFIX_LEN; | ||||
} | } | ||||
/* Calculate the index of the last descriptor consumed */ | /* Calculate the index of the last descriptor consumed */ | ||||
last_used_id = (eersp->eers_rx_read_ptr - 1) & eersp->eers_rx_mask; | last_used_id = (eersp->eers_rx_read_ptr - 1) & eersp->eers_rx_mask; | ||||
/* Check for errors that invalidate checksum and L3/L4 fields */ | /* Check for errors that invalidate checksum and L3/L4 fields */ | ||||
if (EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_ECC_ERR) != 0) { | if (EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_TRUNC_ERR) != 0) { | ||||
/* RX frame truncated (error flag is misnamed) */ | /* RX frame truncated */ | ||||
EFX_EV_QSTAT_INCR(eep, EV_RX_FRM_TRUNC); | EFX_EV_QSTAT_INCR(eep, EV_RX_FRM_TRUNC); | ||||
flags |= EFX_DISCARD; | flags |= EFX_DISCARD; | ||||
goto deliver; | goto deliver; | ||||
} | } | ||||
if (EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_ECRC_ERR) != 0) { | if (EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_ECRC_ERR) != 0) { | ||||
/* Bad Ethernet frame CRC */ | /* Bad Ethernet frame CRC */ | ||||
EFX_EV_QSTAT_INCR(eep, EV_RX_ETH_CRC_ERR); | EFX_EV_QSTAT_INCR(eep, EV_RX_ETH_CRC_ERR); | ||||
flags |= EFX_DISCARD; | flags |= EFX_DISCARD; | ||||
▲ Show 20 Lines • Show All 489 Lines • Show Last 20 Lines |