Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/sfxge/common/efx_rx.c
Show First 20 Lines • Show All 686 Lines • ▼ Show 20 Lines | EFX_BAR_WRITEO((_enp), FR_AZ_RX_CFG_REG, &oword); \ | ||||
\ | \ | ||||
_NOTE(CONSTANTCONDITION) \ | _NOTE(CONSTANTCONDITION) \ | ||||
} while (B_FALSE) | } while (B_FALSE) | ||||
#define EFX_RX_TOEPLITZ_IPV6_HASH(_enp, _ip, _tcp, _rc) \ | #define EFX_RX_TOEPLITZ_IPV6_HASH(_enp, _ip, _tcp, _rc) \ | ||||
do { \ | do { \ | ||||
efx_oword_t oword; \ | efx_oword_t oword; \ | ||||
\ | \ | ||||
if ((_enp)->en_family == EFX_FAMILY_FALCON) { \ | |||||
(_rc) = ((_ip) || (_tcp)) ? ENOTSUP : 0; \ | |||||
break; \ | |||||
} \ | |||||
\ | |||||
EFX_BAR_READO((_enp), FR_CZ_RX_RSS_IPV6_REG3, &oword); \ | EFX_BAR_READO((_enp), FR_CZ_RX_RSS_IPV6_REG3, &oword); \ | ||||
EFX_SET_OWORD_FIELD(oword, \ | EFX_SET_OWORD_FIELD(oword, \ | ||||
FRF_CZ_RX_RSS_IPV6_THASH_ENABLE, 1); \ | FRF_CZ_RX_RSS_IPV6_THASH_ENABLE, 1); \ | ||||
EFX_SET_OWORD_FIELD(oword, \ | EFX_SET_OWORD_FIELD(oword, \ | ||||
FRF_CZ_RX_RSS_IPV6_IP_THASH_ENABLE, (_ip) ? 1 : 0); \ | FRF_CZ_RX_RSS_IPV6_IP_THASH_ENABLE, (_ip) ? 1 : 0); \ | ||||
EFX_SET_OWORD_FIELD(oword, \ | EFX_SET_OWORD_FIELD(oword, \ | ||||
FRF_CZ_RX_RSS_IPV6_TCP_SUPPRESS, (_tcp) ? 0 : 1); \ | FRF_CZ_RX_RSS_IPV6_TCP_SUPPRESS, (_tcp) ? 0 : 1); \ | ||||
EFX_BAR_WRITEO((_enp), FR_CZ_RX_RSS_IPV6_REG3, &oword); \ | EFX_BAR_WRITEO((_enp), FR_CZ_RX_RSS_IPV6_REG3, &oword); \ | ||||
▲ Show 20 Lines • Show All 85 Lines • ▼ Show 20 Lines | for (offset = (FRF_BZ_RX_RSS_TKEY_LBN + FRF_BZ_RX_RSS_TKEY_WIDTH) / 8; | ||||
if (oword.eo_u8[offset - 1] != key[byte++]) { | if (oword.eo_u8[offset - 1] != key[byte++]) { | ||||
rc = EFAULT; | rc = EFAULT; | ||||
goto fail1; | goto fail1; | ||||
} | } | ||||
} | } | ||||
if ((enp->en_features & EFX_FEATURE_IPV6) == 0) | if ((enp->en_features & EFX_FEATURE_IPV6) == 0) | ||||
goto done; | goto done; | ||||
EFSYS_ASSERT3U(enp->en_family, !=, EFX_FAMILY_FALCON); | |||||
byte = 0; | byte = 0; | ||||
/* Write Toeplitz IPv6 hash key 3 */ | /* Write Toeplitz IPv6 hash key 3 */ | ||||
EFX_BAR_READO(enp, FR_CZ_RX_RSS_IPV6_REG3, &oword); | EFX_BAR_READO(enp, FR_CZ_RX_RSS_IPV6_REG3, &oword); | ||||
for (offset = (FRF_CZ_RX_RSS_IPV6_TKEY_HI_LBN + | for (offset = (FRF_CZ_RX_RSS_IPV6_TKEY_HI_LBN + | ||||
FRF_CZ_RX_RSS_IPV6_TKEY_HI_WIDTH) / 8; | FRF_CZ_RX_RSS_IPV6_TKEY_HI_WIDTH) / 8; | ||||
offset > 0 && byte < n; | offset > 0 && byte < n; | ||||
▲ Show 20 Lines • Show All 419 Lines • Show Last 20 Lines |