[dpdk-dev] [PATCH v2 3/3] net/sfc: support multi-process
Andrew Rybchenko
arybchenko at solarflare.com
Mon May 22 14:07:05 CEST 2017
On 05/22/2017 02:29 PM, Ferruh Yigit wrote:
> On 5/18/2017 3:00 PM, Andrew Rybchenko wrote:
>> Signed-off-by: Andrew Rybchenko <arybchenko at solarflare.com>
>> Reviewed-by: Andy Moreton <amoreton at solarflare.com>
> <...>
>
>> Linux VFIO = Y
>> diff --git a/drivers/net/sfc/sfc.h b/drivers/net/sfc/sfc.h
>> index 772a713..007ed24 100644
>> --- a/drivers/net/sfc/sfc.h
>> +++ b/drivers/net/sfc/sfc.h
>> @@ -225,7 +225,18 @@ struct sfc_adapter {
>> uint8_t rss_key[SFC_RSS_KEY_SIZE];
>> #endif
>>
>> + /*
>> + * Shared memory copy of the Rx datapath name to be used by
>> + * the secondary process to find Rx datapath to be used.
>> + */
>> + char *dp_rx_name;
> Why not use sa->dp_rx->dp.name to find the dp_rx? That variable should
> be shared between processes already?
sa->dp_rx is a pointer to .data section (sfc_efx_rx or sfc_ef10_rx)
which is (may be) different in primary and secondary processes.
> <...>
>
>> diff --git a/drivers/net/sfc/sfc_ef10_rx.c b/drivers/net/sfc/sfc_ef10_rx.c
>> index 1484bab..60812cb 100644
>> --- a/drivers/net/sfc/sfc_ef10_rx.c
>> +++ b/drivers/net/sfc/sfc_ef10_rx.c
>> @@ -699,7 +699,7 @@ struct sfc_dp_rx sfc_ef10_rx = {
>> .type = SFC_DP_RX,
>> .hw_fw_caps = SFC_DP_HW_FW_CAP_EF10,
>> },
>> - .features = 0,
>> + .features = SFC_DP_RX_FEAT_MULTI_PROCESS,
> Why this flag is needed, I mean why multi process support is not always
> enabled by default?
libefx-based datapath intensively uses function pointers (primary
process function pointers stored in data structures). So, it does not
work in multi process.
> <...>
More information about the dev
mailing list