[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