sfxge: rename hunt MCDI methods to ef10 and use for Medford

Submitted by:   Mark Spender <mspender at solarflare.com>
Reviewed by:    gnn
Sponsored by:   Solarflare Communications, Inc.
MFC after:      2 days
Differential Revision: https://reviews.freebsd.org/D4874
This commit is contained in:
Andrew Rybchenko 2016-01-12 13:39:25 +00:00
parent de9775ad34
commit ead1c5dfe5
4 changed files with 55 additions and 46 deletions

View File

@ -56,20 +56,20 @@ static efx_mcdi_ops_t __efx_mcdi_siena_ops = {
#endif /* EFSYS_OPT_SIENA */
#if EFSYS_OPT_HUNTINGTON
#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
static efx_mcdi_ops_t __efx_mcdi_hunt_ops = {
hunt_mcdi_init, /* emco_init */
hunt_mcdi_request_copyin, /* emco_request_copyin */
hunt_mcdi_request_copyout, /* emco_request_copyout */
hunt_mcdi_poll_reboot, /* emco_poll_reboot */
hunt_mcdi_poll_response, /* emco_poll_response */
hunt_mcdi_read_response, /* emco_read_response */
hunt_mcdi_fini, /* emco_fini */
hunt_mcdi_feature_supported, /* emco_feature_supported */
static efx_mcdi_ops_t __efx_mcdi_ef10_ops = {
ef10_mcdi_init, /* emco_init */
ef10_mcdi_request_copyin, /* emco_request_copyin */
ef10_mcdi_request_copyout, /* emco_request_copyout */
ef10_mcdi_poll_reboot, /* emco_poll_reboot */
ef10_mcdi_poll_response, /* emco_poll_response */
ef10_mcdi_read_response, /* emco_read_response */
ef10_mcdi_fini, /* emco_fini */
ef10_mcdi_feature_supported, /* emco_feature_supported */
};
#endif /* EFSYS_OPT_HUNTINGTON */
#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
@ -100,10 +100,16 @@ efx_mcdi_init(
#if EFSYS_OPT_HUNTINGTON
case EFX_FAMILY_HUNTINGTON:
emcop = (efx_mcdi_ops_t *)&__efx_mcdi_hunt_ops;
emcop = (efx_mcdi_ops_t *)&__efx_mcdi_ef10_ops;
break;
#endif /* EFSYS_OPT_HUNTINGTON */
#if EFSYS_OPT_MEDFORD
case EFX_FAMILY_MEDFORD:
emcop = (efx_mcdi_ops_t *)&__efx_mcdi_ef10_ops;
break;
#endif /* EFSYS_OPT_MEDFORD */
default:
EFSYS_ASSERT(0);
rc = ENOTSUP;
@ -1491,7 +1497,7 @@ fail1:
#if EFSYS_OPT_BIST
#if EFSYS_OPT_HUNTINGTON
#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
/*
* Enter bist offline mode. This is a fw mode which puts the NIC into a state
* where memory BIST tests can be run and not much else can interfere or happen.
@ -1527,7 +1533,7 @@ fail1:
return (rc);
}
#endif /* EFSYS_OPT_HUNTINGTON */
#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
__checkReturn efx_rc_t
efx_mcdi_bist_start(
@ -1788,7 +1794,7 @@ fail1:
#endif /* EFSYS_OPT_MAC_STATS */
#if EFSYS_OPT_HUNTINGTON
#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
/*
* This function returns the pf and vf number of a function. If it is a pf the
@ -1887,7 +1893,7 @@ fail1:
return (rc);
}
#endif /* EFSYS_OPT_HUNTINGTON */
#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
__checkReturn efx_rc_t
efx_mcdi_set_workaround(

View File

@ -188,11 +188,11 @@ efx_mcdi_mac_spoofing_supported(
#if EFSYS_OPT_BIST
#if EFSYS_OPT_HUNTINGTON
#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
extern __checkReturn efx_rc_t
efx_mcdi_bist_enable_offline(
__in efx_nic_t *enp);
#endif /* EFSYS_OPT_HUNTINGTON */
#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
extern __checkReturn efx_rc_t
efx_mcdi_bist_start(
__in efx_nic_t *enp,

View File

@ -252,16 +252,16 @@ hunt_mac_stats_update(
#if EFSYS_OPT_MCDI
extern __checkReturn efx_rc_t
hunt_mcdi_init(
ef10_mcdi_init(
__in efx_nic_t *enp,
__in const efx_mcdi_transport_t *mtp);
extern void
hunt_mcdi_fini(
ef10_mcdi_fini(
__in efx_nic_t *enp);
extern void
hunt_mcdi_request_copyin(
ef10_mcdi_request_copyin(
__in efx_nic_t *enp,
__in efx_mcdi_req_t *emrp,
__in unsigned int seq,
@ -269,27 +269,27 @@ hunt_mcdi_request_copyin(
__in boolean_t new_epoch);
extern __checkReturn boolean_t
hunt_mcdi_poll_response(
ef10_mcdi_poll_response(
__in efx_nic_t *enp);
extern void
hunt_mcdi_read_response(
ef10_mcdi_read_response(
__in efx_nic_t *enp,
__out void *bufferp,
__in size_t offset,
__in size_t length);
extern void
hunt_mcdi_request_copyout(
ef10_mcdi_request_copyout(
__in efx_nic_t *enp,
__in efx_mcdi_req_t *emrp);
extern efx_rc_t
hunt_mcdi_poll_reboot(
ef10_mcdi_poll_reboot(
__in efx_nic_t *enp);
extern __checkReturn efx_rc_t
hunt_mcdi_feature_supported(
ef10_mcdi_feature_supported(
__in efx_nic_t *enp,
__in efx_mcdi_feature_id_t id,
__out boolean_t *supportedp);

View File

@ -36,12 +36,12 @@ __FBSDID("$FreeBSD$");
#include "efx_impl.h"
#if EFSYS_OPT_HUNTINGTON
#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
#if EFSYS_OPT_MCDI
#ifndef WITH_MCDI_V2
#error "WITH_MCDI_V2 required for Huntington MCDIv2 commands."
#error "WITH_MCDI_V2 required for EF10 MCDIv2 commands."
#endif
typedef enum efx_mcdi_header_type_e {
@ -77,7 +77,7 @@ typedef enum efx_mcdi_header_type_e {
__checkReturn efx_rc_t
hunt_mcdi_init(
ef10_mcdi_init(
__in efx_nic_t *enp,
__in const efx_mcdi_transport_t *emtp)
{
@ -85,10 +85,11 @@ hunt_mcdi_init(
efx_dword_t dword;
efx_rc_t rc;
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON);
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
enp->en_family == EFX_FAMILY_MEDFORD);
EFSYS_ASSERT(enp->en_features & EFX_FEATURE_MCDI_DMA);
/* A host DMA buffer is required for Huntington MCDI */
/* A host DMA buffer is required for EF10 MCDI */
if (esmp == NULL) {
rc = EINVAL;
goto fail1;
@ -107,7 +108,7 @@ hunt_mcdi_init(
EFX_BAR_WRITED(enp, ER_DZ_MC_DB_HWRD_REG, &dword, B_FALSE);
/* Save initial MC reboot status */
(void) hunt_mcdi_poll_reboot(enp);
(void) ef10_mcdi_poll_reboot(enp);
/* Start a new epoch (allow fresh MCDI requests to succeed) */
efx_mcdi_new_epoch(enp);
@ -123,7 +124,7 @@ fail1:
}
void
hunt_mcdi_fini(
ef10_mcdi_fini(
__in efx_nic_t *enp)
{
efx_mcdi_iface_t *emip = &(enp->en_mcdi.em_emip);
@ -132,7 +133,7 @@ hunt_mcdi_fini(
}
void
hunt_mcdi_request_copyin(
ef10_mcdi_request_copyin(
__in efx_nic_t *enp,
__in efx_mcdi_req_t *emrp,
__in unsigned int seq,
@ -148,7 +149,8 @@ hunt_mcdi_request_copyin(
unsigned int pos;
size_t offset;
EFSYS_ASSERT3U(enp->en_family, ==, EFX_FAMILY_HUNTINGTON);
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
enp->en_family == EFX_FAMILY_MEDFORD);
xflags = 0;
if (ev_cpl)
@ -225,7 +227,7 @@ hunt_mcdi_request_copyin(
}
void
hunt_mcdi_request_copyout(
ef10_mcdi_request_copyout(
__in efx_nic_t *enp,
__in efx_mcdi_req_t *emrp)
{
@ -241,13 +243,13 @@ hunt_mcdi_request_copyout(
/* Read the command header to detect MCDI response format */
hdr_len = sizeof (hdr[0]);
hunt_mcdi_read_response(enp, &hdr[0], 0, hdr_len);
ef10_mcdi_read_response(enp, &hdr[0], 0, hdr_len);
if (EFX_DWORD_FIELD(hdr[0], MCDI_HEADER_CODE) == MC_CMD_V2_EXTN) {
/*
* Read the actual payload length. The length given in the event
* is only correct for responses with the V1 format.
*/
hunt_mcdi_read_response(enp, &hdr[1], hdr_len, sizeof (hdr[1]));
ef10_mcdi_read_response(enp, &hdr[1], hdr_len, sizeof (hdr[1]));
hdr_len += sizeof (hdr[1]);
emrp->emr_out_length_used = EFX_DWORD_FIELD(hdr[1],
@ -256,7 +258,7 @@ hunt_mcdi_request_copyout(
/* Copy payload out into caller supplied buffer */
bytes = MIN(emrp->emr_out_length_used, emrp->emr_out_length);
hunt_mcdi_read_response(enp, emrp->emr_out_buf, hdr_len, bytes);
ef10_mcdi_read_response(enp, emrp->emr_out_buf, hdr_len, bytes);
#if EFSYS_OPT_MCDI_LOGGING
if (emtp->emt_logger != NULL) {
@ -269,7 +271,7 @@ hunt_mcdi_request_copyout(
}
__checkReturn boolean_t
hunt_mcdi_poll_response(
ef10_mcdi_poll_response(
__in efx_nic_t *enp)
{
const efx_mcdi_transport_t *emtp = enp->en_mcdi.em_emtp;
@ -281,7 +283,7 @@ hunt_mcdi_poll_response(
}
void
hunt_mcdi_read_response(
ef10_mcdi_read_response(
__in efx_nic_t *enp,
__out void *bufferp,
__in size_t offset,
@ -300,7 +302,7 @@ hunt_mcdi_read_response(
}
efx_rc_t
hunt_mcdi_poll_reboot(
ef10_mcdi_poll_reboot(
__in efx_nic_t *enp)
{
efx_mcdi_iface_t *emip = &(enp->en_mcdi.em_emip);
@ -324,7 +326,7 @@ hunt_mcdi_poll_reboot(
*
* The Siena support for checking for MC reboot from status
* flags is broken - see comments in siena_mcdi_poll_reboot().
* As the generic MCDI code is shared the Huntington reboot
* As the generic MCDI code is shared the EF10 reboot
* detection suffers similar problems.
*
* Do not report an error when the boot status changes until
@ -346,7 +348,7 @@ fail1:
}
__checkReturn efx_rc_t
hunt_mcdi_feature_supported(
ef10_mcdi_feature_supported(
__in efx_nic_t *enp,
__in efx_mcdi_feature_id_t id,
__out boolean_t *supportedp)
@ -355,7 +357,8 @@ hunt_mcdi_feature_supported(
uint32_t privilege_mask = encp->enc_privilege_mask;
efx_rc_t rc;
EFSYS_ASSERT3U(enp->en_family, ==, EFX_FAMILY_HUNTINGTON);
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
enp->en_family == EFX_FAMILY_MEDFORD);
/*
* Use privilege mask state at MCDI attach.
@ -417,4 +420,4 @@ fail1:
#endif /* EFSYS_OPT_MCDI */
#endif /* EFSYS_OPT_HUNTINGTON */
#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */