sfxge(4): add API to set an RSS context for a filter
Submitted by: Mark Spender <mspender at solarflare.com> Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18081
This commit is contained in:
parent
469d2e136a
commit
cced2ad775
@ -229,10 +229,20 @@ efx_mcdi_filter_op_add(
|
||||
MC_CMD_FILTER_OP_EXT_IN_RX_DEST_HOST);
|
||||
MCDI_IN_SET_DWORD(req, FILTER_OP_EXT_IN_RX_QUEUE,
|
||||
spec->efs_dmaq_id);
|
||||
|
||||
#if EFSYS_OPT_RX_SCALE
|
||||
if (spec->efs_flags & EFX_FILTER_FLAG_RX_RSS) {
|
||||
uint32_t rss_context;
|
||||
|
||||
if (spec->efs_rss_context == EFX_RSS_CONTEXT_DEFAULT)
|
||||
rss_context = enp->en_rss_context;
|
||||
else
|
||||
rss_context = spec->efs_rss_context;
|
||||
MCDI_IN_SET_DWORD(req, FILTER_OP_EXT_IN_RX_CONTEXT,
|
||||
spec->efs_rss_context);
|
||||
rss_context);
|
||||
}
|
||||
#endif
|
||||
|
||||
MCDI_IN_SET_DWORD(req, FILTER_OP_EXT_IN_RX_MODE,
|
||||
spec->efs_flags & EFX_FILTER_FLAG_RX_RSS ?
|
||||
MC_CMD_FILTER_OP_EXT_IN_RX_MODE_RSS :
|
||||
@ -589,10 +599,6 @@ ef10_filter_add_internal(
|
||||
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
|
||||
enp->en_family == EFX_FAMILY_MEDFORD);
|
||||
|
||||
#if EFSYS_OPT_RX_SCALE
|
||||
spec->efs_rss_context = enp->en_rss_context;
|
||||
#endif
|
||||
|
||||
hash = ef10_filter_hash(spec);
|
||||
|
||||
/*
|
||||
|
@ -2426,7 +2426,12 @@ efx_filter_spec_set_encap_type(
|
||||
__in efx_tunnel_protocol_t encap_type,
|
||||
__in efx_filter_inner_frame_match_t inner_frame_match);
|
||||
|
||||
|
||||
#if EFSYS_OPT_RX_SCALE
|
||||
extern __checkReturn efx_rc_t
|
||||
efx_filter_spec_set_rss_context(
|
||||
__inout efx_filter_spec_t *spec,
|
||||
__in uint32_t rss_context);
|
||||
#endif
|
||||
#endif /* EFSYS_OPT_FILTER */
|
||||
|
||||
/* HASH */
|
||||
|
@ -122,10 +122,6 @@ efx_filter_remove(
|
||||
EFSYS_ASSERT3P(spec, !=, NULL);
|
||||
EFSYS_ASSERT3U(spec->efs_flags, &, EFX_FILTER_FLAG_RX);
|
||||
|
||||
#if EFSYS_OPT_RX_SCALE
|
||||
spec->efs_rss_context = enp->en_rss_context;
|
||||
#endif
|
||||
|
||||
return (efop->efo_delete(enp, spec));
|
||||
}
|
||||
|
||||
@ -495,7 +491,32 @@ efx_filter_spec_set_encap_type(
|
||||
return (rc);
|
||||
}
|
||||
|
||||
#if EFSYS_OPT_RX_SCALE
|
||||
__checkReturn efx_rc_t
|
||||
efx_filter_spec_set_rss_context(
|
||||
__inout efx_filter_spec_t *spec,
|
||||
__in uint32_t rss_context)
|
||||
{
|
||||
efx_rc_t rc;
|
||||
|
||||
EFSYS_ASSERT3P(spec, !=, NULL);
|
||||
|
||||
/* The filter must have been created with EFX_FILTER_FLAG_RX_RSS. */
|
||||
if ((spec->efs_flags & EFX_FILTER_FLAG_RX_RSS) == 0) {
|
||||
rc = EINVAL;
|
||||
goto fail1;
|
||||
}
|
||||
|
||||
spec->efs_rss_context = rss_context;
|
||||
|
||||
return (0);
|
||||
|
||||
fail1:
|
||||
EFSYS_PROBE1(fail1, efx_rc_t, rc);
|
||||
|
||||
return (rc);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if EFSYS_OPT_SIENA
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user