All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tom Rix <trix@redhat.com>
To: "Chautru, Nicolas" <nicolas.chautru@intel.com>,
	"dev@dpdk.org" <dev@dpdk.org>,
	"akhil.goyal@nxp.com" <akhil.goyal@nxp.com>
Cc: "Richardson, Bruce" <bruce.richardson@intel.com>,
	"Xu, Rosen" <rosen.xu@intel.com>,
	"dave.burley@accelercomm.com" <dave.burley@accelercomm.com>,
	"aidan.goddard@accelercomm.com" <aidan.goddard@accelercomm.com>,
	"Yigit, Ferruh" <ferruh.yigit@intel.com>,
	"Liu, Tianjiao" <tianjiao.liu@intel.com>
Subject: Re: [dpdk-dev] [PATCH v9 08/10] baseband/acc100: add interrupt support to PMD
Date: Thu, 1 Oct 2020 09:05:18 -0700	[thread overview]
Message-ID: <9f51d38e-4485-a844-6e63-d2fd4c2385f6@redhat.com> (raw)
In-Reply-To: <BY5PR11MB445171DE2029CC1C88757AE4F8330@BY5PR11MB4451.namprd11.prod.outlook.com>


On 9/30/20 12:45 PM, Chautru, Nicolas wrote:
> Hi Tom, 
>
>> From: Tom Rix <trix@redhat.com>
>> On 9/28/20 5:29 PM, Nicolas Chautru wrote:
>>> Adding capability and functions to support MSI interrupts, call backs
>>> and inforing.
>>>
>>> Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
>>> Acked-by: Liu Tianjiao <Tianjiao.liu@intel.com>
>>> ---
>>>  drivers/baseband/acc100/rte_acc100_pmd.c | 288
>>> ++++++++++++++++++++++++++++++-
>>> drivers/baseband/acc100/rte_acc100_pmd.h |  15 ++
>>>  2 files changed, 300 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/drivers/baseband/acc100/rte_acc100_pmd.c
>>> b/drivers/baseband/acc100/rte_acc100_pmd.c
>>> index 7d4c3df..b6d9e7c 100644
>>> --- a/drivers/baseband/acc100/rte_acc100_pmd.c
>>> +++ b/drivers/baseband/acc100/rte_acc100_pmd.c
>>> @@ -339,6 +339,213 @@
>>>  	free_base_addresses(base_addrs, i);
>>>  }
>>>
>>> +/*
>>> + * Find queue_id of a device queue based on details from the Info Ring.
>>> + * If a queue isn't found UINT16_MAX is returned.
>>> + */
>>> +static inline uint16_t
>>> +get_queue_id_from_ring_info(struct rte_bbdev_data *data,
>>> +		const union acc100_info_ring_data ring_data) {
>>> +	uint16_t queue_id;
>>> +
>>> +	for (queue_id = 0; queue_id < data->num_queues; ++queue_id) {
>>> +		struct acc100_queue *acc100_q =
>>> +				data->queues[queue_id].queue_private;
>>> +		if (acc100_q != NULL && acc100_q->aq_id == ring_data.aq_id
>> &&
>>> +				acc100_q->qgrp_id == ring_data.qg_id &&
>>> +				acc100_q->vf_id == ring_data.vf_id)
>>> +			return queue_id;
>> If num_queues is large, this linear search will be slow.
>>
>> Consider changing the search algorithm.
> This is not in the time critical part of the code
ok
>
>
>>> +	}
>>> +
>>> +	return UINT16_MAX;
>> the interrupt handlers that use this function do not a great job of handling
>> this error.
> if that error actualy happened then there is not much else that can be done except reporting the unexpected data.
ok
>
>>> +}
>>> +
>>> +/* Checks PF Info Ring to find the interrupt cause and handles it
>>> +accordingly */ static inline void acc100_check_ir(struct
>>> +acc100_device *acc100_dev) {
>>> +	volatile union acc100_info_ring_data *ring_data;
>>> +	uint16_t info_ring_head = acc100_dev->info_ring_head;
>>> +	if (acc100_dev->info_ring == NULL)
>>> +		return;
>>> +
>>> +	ring_data = acc100_dev->info_ring + (acc100_dev->info_ring_head &
>>> +			ACC100_INFO_RING_MASK);
>>> +
>>> +	while (ring_data->valid) {
>>> +		if ((ring_data->int_nb <
>> ACC100_PF_INT_DMA_DL_DESC_IRQ) || (
>>> +				ring_data->int_nb >
>>> +				ACC100_PF_INT_DMA_DL5G_DESC_IRQ))
>>> +			rte_bbdev_log(WARNING, "InfoRing: ITR:%d
>> Info:0x%x",
>>> +				ring_data->int_nb, ring_data-
>>> detailed_info);
>>> +		/* Initialize Info Ring entry and move forward */
>>> +		ring_data->val = 0;
>>> +		info_ring_head++;
>>> +		ring_data = acc100_dev->info_ring +
>>> +				(info_ring_head &
>> ACC100_INFO_RING_MASK);
>> These three statements are common for the ring handling, consider a macro
>> or inline function.
> ok
>
>>> +	}
>>> +}
>>> +
>>> +/* Checks PF Info Ring to find the interrupt cause and handles it
>>> +accordingly */ static inline void acc100_pf_interrupt_handler(struct
>>> +rte_bbdev *dev) {
>>> +	struct acc100_device *acc100_dev = dev->data->dev_private;
>>> +	volatile union acc100_info_ring_data *ring_data;
>>> +	struct acc100_deq_intr_details deq_intr_det;
>>> +
>>> +	ring_data = acc100_dev->info_ring + (acc100_dev->info_ring_head &
>>> +			ACC100_INFO_RING_MASK);
>>> +
>>> +	while (ring_data->valid) {
>>> +
>>> +		rte_bbdev_log_debug(
>>> +				"ACC100 PF Interrupt received, Info Ring
>> data: 0x%x",
>>> +				ring_data->val);
>>> +
>>> +		switch (ring_data->int_nb) {
>>> +		case ACC100_PF_INT_DMA_DL_DESC_IRQ:
>>> +		case ACC100_PF_INT_DMA_UL_DESC_IRQ:
>>> +		case ACC100_PF_INT_DMA_UL5G_DESC_IRQ:
>>> +		case ACC100_PF_INT_DMA_DL5G_DESC_IRQ:
>>> +			deq_intr_det.queue_id =
>> get_queue_id_from_ring_info(
>>> +					dev->data, *ring_data);
>>> +			if (deq_intr_det.queue_id == UINT16_MAX) {
>>> +				rte_bbdev_log(ERR,
>>> +						"Couldn't find queue: aq_id:
>> %u, qg_id: %u, vf_id: %u",
>>> +						ring_data->aq_id,
>>> +						ring_data->qg_id,
>>> +						ring_data->vf_id);
>>> +				return;
>>> +			}
>>> +			rte_bbdev_pmd_callback_process(dev,
>>> +					RTE_BBDEV_EVENT_DEQUEUE,
>> &deq_intr_det);
>>> +			break;
>>> +		default:
>>> +			rte_bbdev_pmd_callback_process(dev,
>>> +					RTE_BBDEV_EVENT_ERROR, NULL);
>>> +			break;
>>> +		}
>>> +
>>> +		/* Initialize Info Ring entry and move forward */
>>> +		ring_data->val = 0;
>>> +		++acc100_dev->info_ring_head;
>>> +		ring_data = acc100_dev->info_ring +
>>> +				(acc100_dev->info_ring_head &
>>> +				ACC100_INFO_RING_MASK);
>>> +	}
>>> +}
>>> +
>>> +/* Checks VF Info Ring to find the interrupt cause and handles it
>>> +accordingly */ static inline void acc100_vf_interrupt_handler(struct
>>> +rte_bbdev *dev)
>> very similar to pf case, consider combining.
>>> +{
>>> +	struct acc100_device *acc100_dev = dev->data->dev_private;
>>> +	volatile union acc100_info_ring_data *ring_data;
>>> +	struct acc100_deq_intr_details deq_intr_det;
>>> +
>>> +	ring_data = acc100_dev->info_ring + (acc100_dev->info_ring_head &
>>> +			ACC100_INFO_RING_MASK);
>>> +
>>> +	while (ring_data->valid) {
>>> +
>>> +		rte_bbdev_log_debug(
>>> +				"ACC100 VF Interrupt received, Info Ring
>> data: 0x%x",
>>> +				ring_data->val);
>>> +
>>> +		switch (ring_data->int_nb) {
>>> +		case ACC100_VF_INT_DMA_DL_DESC_IRQ:
>>> +		case ACC100_VF_INT_DMA_UL_DESC_IRQ:
>>> +		case ACC100_VF_INT_DMA_UL5G_DESC_IRQ:
>>> +		case ACC100_VF_INT_DMA_DL5G_DESC_IRQ:
>>> +			/* VFs are not aware of their vf_id - it's set to 0 in
>>> +			 * queue structures.
>>> +			 */
>>> +			ring_data->vf_id = 0;
>>> +			deq_intr_det.queue_id =
>> get_queue_id_from_ring_info(
>>> +					dev->data, *ring_data);
>>> +			if (deq_intr_det.queue_id == UINT16_MAX) {
>>> +				rte_bbdev_log(ERR,
>>> +						"Couldn't find queue: aq_id:
>> %u, qg_id: %u",
>>> +						ring_data->aq_id,
>>> +						ring_data->qg_id);
>>> +				return;
>>> +			}
>>> +			rte_bbdev_pmd_callback_process(dev,
>>> +					RTE_BBDEV_EVENT_DEQUEUE,
>> &deq_intr_det);
>>> +			break;
>>> +		default:
>>> +			rte_bbdev_pmd_callback_process(dev,
>>> +					RTE_BBDEV_EVENT_ERROR, NULL);
>>> +			break;
>>> +		}
>>> +
>>> +		/* Initialize Info Ring entry and move forward */
>>> +		ring_data->valid = 0;
>>> +		++acc100_dev->info_ring_head;
>>> +		ring_data = acc100_dev->info_ring + (acc100_dev-
>>> info_ring_head
>>> +				& ACC100_INFO_RING_MASK);
>>> +	}
>>> +}
>>> +
>>> +/* Interrupt handler triggered by ACC100 dev for handling specific
>>> +interrupt */ static void acc100_dev_interrupt_handler(void *cb_arg) {
>>> +	struct rte_bbdev *dev = cb_arg;
>>> +	struct acc100_device *acc100_dev = dev->data->dev_private;
>>> +
>>> +	/* Read info ring */
>>> +	if (acc100_dev->pf_device)
>>> +		acc100_pf_interrupt_handler(dev);
>> combined like ..
>>
>> acc100_interrupt_handler(dev, is_pf)
> unsure it will help readability. Much of the code would still be distinct
ok
>
>>> +	else
>>> +		acc100_vf_interrupt_handler(dev);
>>> +}
>>> +
>>> +/* Allocate and setup inforing */
>>> +static int
>>> +allocate_inforing(struct rte_bbdev *dev)
>> consider renaming
>>
>> allocate_info_ring
> ok
>
>>> +{
>>> +	struct acc100_device *d = dev->data->dev_private;
>>> +	const struct acc100_registry_addr *reg_addr;
>>> +	rte_iova_t info_ring_phys;
>>> +	uint32_t phys_low, phys_high;
>>> +
>>> +	if (d->info_ring != NULL)
>>> +		return 0; /* Already configured */
>>> +
>>> +	/* Choose correct registry addresses for the device type */
>>> +	if (d->pf_device)
>>> +		reg_addr = &pf_reg_addr;
>>> +	else
>>> +		reg_addr = &vf_reg_addr;
>>> +	/* Allocate InfoRing */
>>> +	d->info_ring = rte_zmalloc_socket("Info Ring",
>>> +			ACC100_INFO_RING_NUM_ENTRIES *
>>> +			sizeof(*d->info_ring), RTE_CACHE_LINE_SIZE,
>>> +			dev->data->socket_id);
>>> +	if (d->info_ring == NULL) {
>>> +		rte_bbdev_log(ERR,
>>> +				"Failed to allocate Info Ring for %s:%u",
>>> +				dev->device->driver->name,
>>> +				dev->data->dev_id);
>> The callers do not check that this fails.
> arguably the error would be self contained if that did fail. But doesn't hurt to add, ok. 
>
>>> +		return -ENOMEM;
>>> +	}
>>> +	info_ring_phys = rte_malloc_virt2iova(d->info_ring);
>>> +
>>> +	/* Setup Info Ring */
>>> +	phys_high = (uint32_t)(info_ring_phys >> 32);
>>> +	phys_low  = (uint32_t)(info_ring_phys);
>>> +	acc100_reg_write(d, reg_addr->info_ring_hi, phys_high);
>>> +	acc100_reg_write(d, reg_addr->info_ring_lo, phys_low);
>>> +	acc100_reg_write(d, reg_addr->info_ring_en,
>> ACC100_REG_IRQ_EN_ALL);
>>> +	d->info_ring_head = (acc100_reg_read(d, reg_addr->info_ring_ptr) &
>>> +			0xFFF) / sizeof(union acc100_info_ring_data);
>>> +	return 0;
>>> +}
>>> +
>>> +
>>>  /* Allocate 64MB memory used for all software rings */  static int
>>> acc100_setup_queues(struct rte_bbdev *dev, uint16_t num_queues, int
>>> socket_id) @@ -426,6 +633,7 @@
>>>  	acc100_reg_write(d, reg_addr->tail_ptrs_dl4g_hi, phys_high);
>>>  	acc100_reg_write(d, reg_addr->tail_ptrs_dl4g_lo, phys_low);
>>>
>>> +	allocate_inforing(dev);
>> need to check here
>>>  	d->harq_layout = rte_zmalloc_socket("HARQ Layout",
>>>  			ACC100_HARQ_LAYOUT * sizeof(*d->harq_layout),
>>>  			RTE_CACHE_LINE_SIZE, dev->data->socket_id); @@ -
>> 437,13 +645,53 @@
>>>  	return 0;
>>>  }
>>>
>>> +static int
>>> +acc100_intr_enable(struct rte_bbdev *dev) {
>>> +	int ret;
>>> +	struct acc100_device *d = dev->data->dev_private;
>>> +
>>> +	/* Only MSI are currently supported */
>>> +	if (dev->intr_handle->type == RTE_INTR_HANDLE_VFIO_MSI ||
>>> +			dev->intr_handle->type == RTE_INTR_HANDLE_UIO)
>> {
>>> +
>>> +		allocate_inforing(dev);
>> need to check here
>>> +
>>> +		ret = rte_intr_enable(dev->intr_handle);
>>> +		if (ret < 0) {
>>> +			rte_bbdev_log(ERR,
>>> +					"Couldn't enable interrupts for
>> device: %s",
>>> +					dev->data->name);
>>> +			rte_free(d->info_ring);
>>> +			return ret;
>>> +		}
>>> +		ret = rte_intr_callback_register(dev->intr_handle,
>>> +				acc100_dev_interrupt_handler, dev);
>>> +		if (ret < 0) {
>>> +			rte_bbdev_log(ERR,
>>> +					"Couldn't register interrupt callback
>> for device: %s",
>>> +					dev->data->name);
>>> +			rte_free(d->info_ring);
>> does intr need to be disabled here ?
> Well I don't see a lot of consistency with other drivers. Sometimes these are not even check for failure.
> I would rather defer changing through other future patch if required as this is same code on other bbdev drivers already used (if changed I would rather all changed the same way). 

ok.


>
>>> +			return ret;
>>> +		}
>>> +
>>> +		return 0;
>>> +	}
>>> +
>>> +	rte_bbdev_log(ERR, "ACC100 (%s) supports only VFIO MSI
>> interrupts",
>>> +			dev->data->name);
>>> +	return -ENOTSUP;
>>> +}
>>> +
>>>  /* Free 64MB memory used for software rings */  static int
>>> acc100_dev_close(struct rte_bbdev *dev)  {
>>>  	struct acc100_device *d = dev->data->dev_private;
>>> +	acc100_check_ir(d);
>>>  	if (d->sw_rings_base != NULL) {
>>>  		rte_free(d->tail_ptrs);
>>> +		rte_free(d->info_ring);
>>>  		rte_free(d->sw_rings_base);
>>>  		d->sw_rings_base = NULL;
>>>  	}
>>> @@ -643,6 +891,7 @@
>>>  					RTE_BBDEV_TURBO_CRC_TYPE_24B
>> |
>> 	RTE_BBDEV_TURBO_HALF_ITERATION_EVEN |
>> 	RTE_BBDEV_TURBO_EARLY_TERMINATION |
>>> +
>> 	RTE_BBDEV_TURBO_DEC_INTERRUPTS |
>> 	RTE_BBDEV_TURBO_NEG_LLR_1_BIT_IN |
>>>  					RTE_BBDEV_TURBO_MAP_DEC |
>>>
>> 	RTE_BBDEV_TURBO_DEC_TB_CRC_24B_KEEP | @@ -663,6 +912,7
>> @@
>> 	RTE_BBDEV_TURBO_CRC_24B_ATTACH |
>> 	RTE_BBDEV_TURBO_RV_INDEX_BYPASS |
>>>  					RTE_BBDEV_TURBO_RATE_MATCH |
>>> +
>> 	RTE_BBDEV_TURBO_ENC_INTERRUPTS |
>> 	RTE_BBDEV_TURBO_ENC_SCATTER_GATHER,
>>>  				.num_buffers_src =
>>>
>> 	RTE_BBDEV_TURBO_MAX_CODE_BLOCKS, @@ -676,7 +926,8 @@
>>>  				.capability_flags =
>>>  					RTE_BBDEV_LDPC_RATE_MATCH |
>>>
>> 	RTE_BBDEV_LDPC_CRC_24B_ATTACH |
>>> -
>> 	RTE_BBDEV_LDPC_INTERLEAVER_BYPASS,
>>> +
>> 	RTE_BBDEV_LDPC_INTERLEAVER_BYPASS |
>>> +
>> 	RTE_BBDEV_LDPC_ENC_INTERRUPTS,
>>>  				.num_buffers_src =
>>>
>> 	RTE_BBDEV_LDPC_MAX_CODE_BLOCKS,
>>>  				.num_buffers_dst =
>>> @@ -701,7 +952,8 @@
>>>  				RTE_BBDEV_LDPC_DECODE_BYPASS |
>>>  				RTE_BBDEV_LDPC_DEC_SCATTER_GATHER |
>>>
>> 	RTE_BBDEV_LDPC_HARQ_6BIT_COMPRESSION |
>>> -				RTE_BBDEV_LDPC_LLR_COMPRESSION,
>>> +				RTE_BBDEV_LDPC_LLR_COMPRESSION |
>>> +				RTE_BBDEV_LDPC_DEC_INTERRUPTS,
>>>  			.llr_size = 8,
>>>  			.llr_decimals = 1,
>>>  			.num_buffers_src =
>>> @@ -751,14 +1003,39 @@
>>>  #else
>>>  	dev_info->harq_buffer_size = 0;
>>>  #endif
>>> +	acc100_check_ir(d);
>>> +}
>>> +
>>> +static int
>>> +acc100_queue_intr_enable(struct rte_bbdev *dev, uint16_t queue_id) {
>>> +	struct acc100_queue *q = dev->data-
>>> queues[queue_id].queue_private;
>>> +
>>> +	if (dev->intr_handle->type != RTE_INTR_HANDLE_VFIO_MSI &&
>>> +			dev->intr_handle->type != RTE_INTR_HANDLE_UIO)
>>> +		return -ENOTSUP;
>>> +
>>> +	q->irq_enable = 1;
>>> +	return 0;
>>> +}
>>> +
>>> +static int
>>> +acc100_queue_intr_disable(struct rte_bbdev *dev, uint16_t queue_id) {
>>> +	struct acc100_queue *q = dev->data-
>>> queues[queue_id].queue_private;
>>> +	q->irq_enable = 0;
>> A -ENOTSUP above, should need similar check here.
> How can this fail when we purely disable?

It is for api consistency.

the enable fails

the disable succeeds

that is not consistent.

Tom

>
>>> +	return 0;
>>>  }
>>>
>>>  static const struct rte_bbdev_ops acc100_bbdev_ops = {
>>>  	.setup_queues = acc100_setup_queues,
>>> +	.intr_enable = acc100_intr_enable,
>>>  	.close = acc100_dev_close,
>>>  	.info_get = acc100_dev_info_get,
>>>  	.queue_setup = acc100_queue_setup,
>>>  	.queue_release = acc100_queue_release,
>>> +	.queue_intr_enable = acc100_queue_intr_enable,
>>> +	.queue_intr_disable = acc100_queue_intr_disable
>>>  };
>>>
>>>  /* ACC100 PCI PF address map */
>>> @@ -3018,8 +3295,10 @@
>>>  			? (1 << RTE_BBDEV_DATA_ERROR) : 0);
>>>  	op->status |= ((rsp.dma_err) ? (1 << RTE_BBDEV_DRV_ERROR) : 0);
>>>  	op->status |= ((rsp.fcw_err) ? (1 << RTE_BBDEV_DRV_ERROR) : 0);
>>> -	if (op->status != 0)
>>> +	if (op->status != 0) {
>>>  		q_data->queue_stats.dequeue_err_count++;
>>> +		acc100_check_ir(q->d);
>>> +	}
>>>
>>>  	/* CRC invalid if error exists */
>>>  	if (!op->status)
>>> @@ -3076,6 +3355,9 @@
>>>  		op->status |= 1 << RTE_BBDEV_SYNDROME_ERROR;
>>>  	op->ldpc_dec.iter_count = (uint8_t) rsp.iter_cnt;
>>>
>>> +	if (op->status & (1 << RTE_BBDEV_DRV_ERROR))
>>> +		acc100_check_ir(q->d);
>>> +
>>>  	/* Check if this is the last desc in batch (Atomic Queue) */
>>>  	if (desc->req.last_desc_in_batch) {
>>>  		(*aq_dequeued)++;
>>> diff --git a/drivers/baseband/acc100/rte_acc100_pmd.h
>>> b/drivers/baseband/acc100/rte_acc100_pmd.h
>>> index 78686c1..8980fa5 100644
>>> --- a/drivers/baseband/acc100/rte_acc100_pmd.h
>>> +++ b/drivers/baseband/acc100/rte_acc100_pmd.h
>>> @@ -559,7 +559,14 @@ struct acc100_device {
>>>  	/* Virtual address of the info memory routed to the this function
>> under
>>>  	 * operation, whether it is PF or VF.
>>>  	 */
>>> +	union acc100_info_ring_data *info_ring;
>> Need a comment that this array needs a sentinel ?
> Can clarify a bit expected HW behaviour
>
> Thanks
>
>> Tom
>>
>>> +
>>>  	union acc100_harq_layout_data *harq_layout;
>>> +	/* Virtual Info Ring head */
>>> +	uint16_t info_ring_head;
>>> +	/* Number of bytes available for each queue in device, depending
>> on
>>> +	 * how many queues are enabled with configure()
>>> +	 */
>>>  	uint32_t sw_ring_size;
>>>  	uint32_t ddr_size; /* Size in kB */
>>>  	uint32_t *tail_ptrs; /* Base address of response tail pointer buffer
>>> */ @@ -575,4 +582,12 @@ struct acc100_device {
>>>  	bool configured; /**< True if this ACC100 device is configured */
>>> };
>>>
>>> +/**
>>> + * Structure with details about RTE_BBDEV_EVENT_DEQUEUE event. It's
>>> +passed to
>>> + * the callback function.
>>> + */
>>> +struct acc100_deq_intr_details {
>>> +	uint16_t queue_id;
>>> +};
>>> +
>>>  #endif /* _RTE_ACC100_PMD_H_ */


  reply	other threads:[~2020-10-01 16:05 UTC|newest]

Thread overview: 213+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-19  0:25 [dpdk-dev] [PATCH v3 00/11] bbdev PMD ACC100 Nicolas Chautru
2020-08-19  0:25 ` [dpdk-dev] [PATCH v3 01/11] drivers/baseband: add PMD for ACC100 Nicolas Chautru
2020-08-29  9:44   ` Xu, Rosen
2020-09-04 16:44     ` Chautru, Nicolas
2020-08-19  0:25 ` [dpdk-dev] [PATCH v3 02/11] baseband/acc100: add register definition file Nicolas Chautru
2020-08-29  9:55   ` Xu, Rosen
2020-08-29 17:39     ` Chautru, Nicolas
2020-09-03  2:15       ` Xu, Rosen
2020-09-03  9:17         ` Ferruh Yigit
2020-08-19  0:25 ` [dpdk-dev] [PATCH v3 03/11] baseband/acc100: add info get function Nicolas Chautru
2020-08-19  0:25 ` [dpdk-dev] [PATCH v3 04/11] baseband/acc100: add queue configuration Nicolas Chautru
2020-08-29 10:39   ` Xu, Rosen
2020-08-29 17:48     ` Chautru, Nicolas
2020-09-03  2:30       ` Xu, Rosen
2020-09-03 22:48         ` Chautru, Nicolas
2020-09-04  2:01           ` Xu, Rosen
2020-08-19  0:25 ` [dpdk-dev] [PATCH v3 05/11] baseband/acc100: add LDPC processing functions Nicolas Chautru
2020-08-20 14:38   ` Dave Burley
2020-08-20 14:52     ` Chautru, Nicolas
2020-08-20 14:57       ` Dave Burley
2020-08-20 21:05         ` Chautru, Nicolas
2020-09-03  8:06           ` Dave Burley
2020-08-29 11:10   ` Xu, Rosen
2020-08-29 18:01     ` Chautru, Nicolas
2020-09-03  2:34       ` Xu, Rosen
2020-09-03  9:09         ` Ananyev, Konstantin
2020-09-03 20:45           ` Chautru, Nicolas
2020-09-15  1:45             ` Chautru, Nicolas
2020-09-15 10:21             ` Ananyev, Konstantin
2020-08-19  0:25 ` [dpdk-dev] [PATCH v3 06/11] baseband/acc100: add HARQ loopback support Nicolas Chautru
2020-08-19  0:25 ` [dpdk-dev] [PATCH v3 07/11] baseband/acc100: add support for 4G processing Nicolas Chautru
2020-08-19  0:25 ` [dpdk-dev] [PATCH v3 08/11] baseband/acc100: add interrupt support to PMD Nicolas Chautru
2020-08-19  0:25 ` [dpdk-dev] [PATCH v3 09/11] baseband/acc100: add debug function to validate input Nicolas Chautru
2020-08-19  0:25 ` [dpdk-dev] [PATCH v3 10/11] baseband/acc100: add configure function Nicolas Chautru
2020-09-03 10:06   ` Aidan Goddard
2020-09-03 18:53     ` Chautru, Nicolas
2020-08-19  0:25 ` [dpdk-dev] [PATCH v3 11/11] doc: update bbdev feature table Nicolas Chautru
2020-09-04 17:53   ` [dpdk-dev] [PATCH v4 00/11] bbdev PMD ACC100 Nicolas Chautru
2020-09-04 17:53     ` [dpdk-dev] [PATCH v4 01/11] drivers/baseband: add PMD for ACC100 Nicolas Chautru
2020-09-08  3:10       ` Liu, Tianjiao
2020-09-04 17:53     ` [dpdk-dev] [PATCH v4 02/11] baseband/acc100: add register definition file Nicolas Chautru
2020-09-15  2:31       ` Xu, Rosen
2020-09-18  2:39       ` Liu, Tianjiao
2020-09-04 17:53     ` [dpdk-dev] [PATCH v4 03/11] baseband/acc100: add info get function Nicolas Chautru
2020-09-18  2:47       ` Liu, Tianjiao
2020-09-04 17:54     ` [dpdk-dev] [PATCH v4 04/11] baseband/acc100: add queue configuration Nicolas Chautru
2020-09-15  2:31       ` Xu, Rosen
2020-09-18  3:01       ` Liu, Tianjiao
2020-09-04 17:54     ` [dpdk-dev] [PATCH v4 05/11] baseband/acc100: add LDPC processing functions Nicolas Chautru
2020-09-21  1:40       ` Liu, Tianjiao
2020-09-04 17:54     ` [dpdk-dev] [PATCH v4 06/11] baseband/acc100: add HARQ loopback support Nicolas Chautru
2020-09-21  1:41       ` Liu, Tianjiao
2020-09-04 17:54     ` [dpdk-dev] [PATCH v4 07/11] baseband/acc100: add support for 4G processing Nicolas Chautru
2020-09-21  1:43       ` Liu, Tianjiao
2020-09-04 17:54     ` [dpdk-dev] [PATCH v4 08/11] baseband/acc100: add interrupt support to PMD Nicolas Chautru
2020-09-21  1:45       ` Liu, Tianjiao
2020-09-04 17:54     ` [dpdk-dev] [PATCH v4 09/11] baseband/acc100: add debug function to validate input Nicolas Chautru
2020-09-21  1:46       ` Liu, Tianjiao
2020-09-04 17:54     ` [dpdk-dev] [PATCH v4 10/11] baseband/acc100: add configure function Nicolas Chautru
2020-09-21  1:48       ` Liu, Tianjiao
2020-09-04 17:54     ` [dpdk-dev] [PATCH v4 11/11] doc: update bbdev feature table Nicolas Chautru
2020-09-21  1:50       ` Liu, Tianjiao
2020-09-21 14:36     ` [dpdk-dev] [PATCH v4 00/11] bbdev PMD ACC100 Chautru, Nicolas
2020-09-22 19:32       ` Akhil Goyal
2020-09-23  2:21         ` Chautru, Nicolas
2020-09-23  2:12   ` [dpdk-dev] [PATCH v5 " Nicolas Chautru
2020-09-23  2:12     ` [dpdk-dev] [PATCH v5 01/11] drivers/baseband: add PMD for ACC100 Nicolas Chautru
2020-09-23  2:12     ` [dpdk-dev] [PATCH v5 02/11] baseband/acc100: add register definition file Nicolas Chautru
2020-09-23  2:12     ` [dpdk-dev] [PATCH v5 03/11] baseband/acc100: add info get function Nicolas Chautru
2020-09-23  2:12     ` [dpdk-dev] [PATCH v5 04/11] baseband/acc100: add queue configuration Nicolas Chautru
2020-09-23  2:12     ` [dpdk-dev] [PATCH v5 05/11] baseband/acc100: add LDPC processing functions Nicolas Chautru
2020-09-23  2:12     ` [dpdk-dev] [PATCH v5 06/11] baseband/acc100: add HARQ loopback support Nicolas Chautru
2020-09-23  2:12     ` [dpdk-dev] [PATCH v5 07/11] baseband/acc100: add support for 4G processing Nicolas Chautru
2020-09-23  2:12     ` [dpdk-dev] [PATCH v5 08/11] baseband/acc100: add interrupt support to PMD Nicolas Chautru
2020-09-23  2:12     ` [dpdk-dev] [PATCH v5 09/11] baseband/acc100: add debug function to validate input Nicolas Chautru
2020-09-23  2:12     ` [dpdk-dev] [PATCH v5 10/11] baseband/acc100: add configure function Nicolas Chautru
2020-09-23  2:12     ` [dpdk-dev] [PATCH v5 11/11] doc: update bbdev feature table Nicolas Chautru
2020-09-23  2:19   ` [dpdk-dev] [PATCH v6 00/11] bbdev PMD ACC100 Nicolas Chautru
2020-09-23  2:19     ` [dpdk-dev] [PATCH v6 01/11] service: retrieve lcore active state Nicolas Chautru
2020-09-23  2:19     ` [dpdk-dev] [PATCH v6 02/11] test/service: fix race condition on stopping lcore Nicolas Chautru
2020-09-23  2:19     ` [dpdk-dev] [PATCH v6 03/11] drivers/baseband: add PMD for ACC100 Nicolas Chautru
2020-09-23  2:19     ` [dpdk-dev] [PATCH v6 04/11] baseband/acc100: add register definition file Nicolas Chautru
2020-09-23  2:19     ` [dpdk-dev] [PATCH v6 05/11] baseband/acc100: add info get function Nicolas Chautru
2020-09-23  2:19     ` [dpdk-dev] [PATCH v6 06/11] baseband/acc100: add queue configuration Nicolas Chautru
2020-09-23  2:19     ` [dpdk-dev] [PATCH v6 07/11] baseband/acc100: add LDPC processing functions Nicolas Chautru
2020-09-23  2:19     ` [dpdk-dev] [PATCH v6 08/11] baseband/acc100: add HARQ loopback support Nicolas Chautru
2020-09-23  2:19     ` [dpdk-dev] [PATCH v6 09/11] baseband/acc100: add support for 4G processing Nicolas Chautru
2020-09-23  2:19     ` [dpdk-dev] [PATCH v6 10/11] baseband/acc100: add interrupt support to PMD Nicolas Chautru
2020-09-23  2:19     ` [dpdk-dev] [PATCH v6 11/11] baseband/acc100: add debug function to validate input Nicolas Chautru
2020-09-23  2:24   ` [dpdk-dev] [PATCH v7 00/11] bbdev PMD ACC100 Nicolas Chautru
2020-09-23  2:24     ` [dpdk-dev] [PATCH v7 01/11] drivers/baseband: add PMD for ACC100 Nicolas Chautru
2020-09-23  2:24     ` [dpdk-dev] [PATCH v7 02/11] baseband/acc100: add register definition file Nicolas Chautru
2020-09-23  2:24     ` [dpdk-dev] [PATCH v7 03/11] baseband/acc100: add info get function Nicolas Chautru
2020-09-23  2:24     ` [dpdk-dev] [PATCH v7 04/11] baseband/acc100: add queue configuration Nicolas Chautru
2020-09-23  2:25     ` [dpdk-dev] [PATCH v7 05/11] baseband/acc100: add LDPC processing functions Nicolas Chautru
2020-09-23  2:25     ` [dpdk-dev] [PATCH v7 06/11] baseband/acc100: add HARQ loopback support Nicolas Chautru
2020-09-23  2:25     ` [dpdk-dev] [PATCH v7 07/11] baseband/acc100: add support for 4G processing Nicolas Chautru
2020-09-23  2:25     ` [dpdk-dev] [PATCH v7 08/11] baseband/acc100: add interrupt support to PMD Nicolas Chautru
2020-09-23  2:25     ` [dpdk-dev] [PATCH v7 09/11] baseband/acc100: add debug function to validate input Nicolas Chautru
2020-09-23  2:25     ` [dpdk-dev] [PATCH v7 10/11] baseband/acc100: add configure function Nicolas Chautru
2020-09-23  2:25     ` [dpdk-dev] [PATCH v7 11/11] doc: update bbdev feature table Nicolas Chautru
2020-09-28 20:19       ` Akhil Goyal
2020-09-29  0:57         ` Chautru, Nicolas
2020-09-28 23:52   ` [dpdk-dev] [PATCH v8 00/10] bbdev PMD ACC100 Nicolas Chautru
2020-09-28 23:52     ` [dpdk-dev] [PATCH v8 01/10] drivers/baseband: add PMD for ACC100 Nicolas Chautru
2020-09-28 23:52     ` [dpdk-dev] [PATCH v8 02/10] baseband/acc100: add register definition file Nicolas Chautru
2020-09-28 23:52     ` [dpdk-dev] [PATCH v8 03/10] baseband/acc100: add info get function Nicolas Chautru
2020-09-28 23:52     ` [dpdk-dev] [PATCH v8 04/10] baseband/acc100: add queue configuration Nicolas Chautru
2020-09-28 23:52     ` [dpdk-dev] [PATCH v8 05/10] baseband/acc100: add LDPC processing functions Nicolas Chautru
2020-09-28 23:52     ` [dpdk-dev] [PATCH v8 06/10] baseband/acc100: add HARQ loopback support Nicolas Chautru
2020-09-28 23:52     ` [dpdk-dev] [PATCH v8 07/10] baseband/acc100: add support for 4G processing Nicolas Chautru
2020-09-28 23:52     ` [dpdk-dev] [PATCH v8 08/10] baseband/acc100: add interrupt support to PMD Nicolas Chautru
2020-09-28 23:52     ` [dpdk-dev] [PATCH v8 09/10] baseband/acc100: add debug function to validate input Nicolas Chautru
2020-09-28 23:52     ` [dpdk-dev] [PATCH v8 10/10] baseband/acc100: add configure function Nicolas Chautru
2020-09-29  0:29   ` [dpdk-dev] [PATCH v9 00/10] bbdev PMD ACC100 Nicolas Chautru
2020-09-29  0:29     ` [dpdk-dev] [PATCH v9 01/10] drivers/baseband: add PMD for ACC100 Nicolas Chautru
2020-09-29 19:53       ` Tom Rix
2020-09-29 23:17         ` Chautru, Nicolas
2020-09-30 23:06           ` Tom Rix
2020-09-30 23:30             ` Chautru, Nicolas
2020-09-29  0:29     ` [dpdk-dev] [PATCH v9 02/10] baseband/acc100: add register definition file Nicolas Chautru
2020-09-29 20:34       ` Tom Rix
2020-09-29 23:30         ` Chautru, Nicolas
2020-09-30 23:11           ` Tom Rix
2020-09-29  0:29     ` [dpdk-dev] [PATCH v9 03/10] baseband/acc100: add info get function Nicolas Chautru
2020-09-29 21:13       ` Tom Rix
2020-09-30  0:25         ` Chautru, Nicolas
2020-09-30 23:20           ` Tom Rix
2020-09-29  0:29     ` [dpdk-dev] [PATCH v9 04/10] baseband/acc100: add queue configuration Nicolas Chautru
2020-09-29 21:46       ` Tom Rix
2020-09-30  1:03         ` Chautru, Nicolas
2020-09-30 23:36           ` Tom Rix
2020-09-29  0:29     ` [dpdk-dev] [PATCH v9 05/10] baseband/acc100: add LDPC processing functions Nicolas Chautru
2020-09-30 16:53       ` Tom Rix
2020-09-30 18:52         ` Chautru, Nicolas
2020-10-01 15:31           ` Tom Rix
2020-10-01 16:07             ` Chautru, Nicolas
2020-09-29  0:29     ` [dpdk-dev] [PATCH v9 06/10] baseband/acc100: add HARQ loopback support Nicolas Chautru
2020-09-30 17:25       ` Tom Rix
2020-09-30 18:55         ` Chautru, Nicolas
2020-10-01 15:32           ` Tom Rix
2020-09-29  0:29     ` [dpdk-dev] [PATCH v9 07/10] baseband/acc100: add support for 4G processing Nicolas Chautru
2020-09-30 18:37       ` Tom Rix
2020-09-30 19:10         ` Chautru, Nicolas
2020-10-01 15:42           ` Tom Rix
2020-10-01 21:46             ` Chautru, Nicolas
2020-09-29  0:29     ` [dpdk-dev] [PATCH v9 08/10] baseband/acc100: add interrupt support to PMD Nicolas Chautru
2020-09-30 19:03       ` Tom Rix
2020-09-30 19:45         ` Chautru, Nicolas
2020-10-01 16:05           ` Tom Rix [this message]
2020-10-01 21:07             ` Chautru, Nicolas
2020-09-29  0:29     ` [dpdk-dev] [PATCH v9 09/10] baseband/acc100: add debug function to validate input Nicolas Chautru
2020-09-30 19:16       ` Tom Rix
2020-09-30 19:53         ` Chautru, Nicolas
2020-10-01 16:07           ` Tom Rix
2020-09-29  0:29     ` [dpdk-dev] [PATCH v9 10/10] baseband/acc100: add configure function Nicolas Chautru
2020-09-30 19:58       ` Tom Rix
2020-09-30 22:54         ` Chautru, Nicolas
2020-10-01 16:18           ` Tom Rix
2020-10-01 21:11             ` Chautru, Nicolas
2020-10-01  3:14   ` [dpdk-dev] [PATCH v10 00/10] bbdev PMD ACC100 Nicolas Chautru
2020-10-01  3:14     ` [dpdk-dev] [PATCH v10 01/10] drivers/baseband: add PMD for ACC100 Nicolas Chautru
2020-10-01  3:14     ` [dpdk-dev] [PATCH v10 02/10] baseband/acc100: add register definition file Nicolas Chautru
2020-10-01  3:14     ` [dpdk-dev] [PATCH v10 03/10] baseband/acc100: add info get function Nicolas Chautru
2020-10-01 14:34       ` Maxime Coquelin
2020-10-01 19:50         ` Chautru, Nicolas
2020-10-01  3:14     ` [dpdk-dev] [PATCH v10 04/10] baseband/acc100: add queue configuration Nicolas Chautru
2020-10-01 15:38       ` Maxime Coquelin
2020-10-01 19:50         ` Chautru, Nicolas
2020-10-01  3:14     ` [dpdk-dev] [PATCH v10 05/10] baseband/acc100: add LDPC processing functions Nicolas Chautru
2020-10-01  3:14     ` [dpdk-dev] [PATCH v10 06/10] baseband/acc100: add HARQ loopback support Nicolas Chautru
2020-10-01  3:14     ` [dpdk-dev] [PATCH v10 07/10] baseband/acc100: add support for 4G processing Nicolas Chautru
2020-10-01  3:14     ` [dpdk-dev] [PATCH v10 08/10] baseband/acc100: add interrupt support to PMD Nicolas Chautru
2020-10-01  3:14     ` [dpdk-dev] [PATCH v10 09/10] baseband/acc100: add debug function to validate input Nicolas Chautru
2020-10-01  3:14     ` [dpdk-dev] [PATCH v10 10/10] baseband/acc100: add configure function Nicolas Chautru
2020-10-01 14:11       ` Maxime Coquelin
2020-10-01 15:36         ` Chautru, Nicolas
2020-10-01 15:43           ` Maxime Coquelin
2020-10-01 19:50             ` Chautru, Nicolas
2020-10-01 21:44               ` Maxime Coquelin
2020-10-02  1:01   ` [dpdk-dev] [PATCH v11 00/10] bbdev PMD ACC100 Nicolas Chautru
2020-10-02  1:01     ` [dpdk-dev] [PATCH v11 01/10] drivers/baseband: add PMD for ACC100 Nicolas Chautru
2020-10-04 15:53       ` Tom Rix
2020-10-02  1:01     ` [dpdk-dev] [PATCH v11 02/10] baseband/acc100: add register definition file Nicolas Chautru
2020-10-04 15:56       ` Tom Rix
2020-10-02  1:01     ` [dpdk-dev] [PATCH v11 03/10] baseband/acc100: add info get function Nicolas Chautru
2020-10-04 16:09       ` Tom Rix
2020-10-05 16:38         ` Chautru, Nicolas
2020-10-05 22:19           ` Chautru, Nicolas
2020-10-02  1:01     ` [dpdk-dev] [PATCH v11 04/10] baseband/acc100: add queue configuration Nicolas Chautru
2020-10-04 16:18       ` Tom Rix
2020-10-05 16:42         ` Chautru, Nicolas
2020-10-02  1:01     ` [dpdk-dev] [PATCH v11 05/10] baseband/acc100: add LDPC processing functions Nicolas Chautru
2020-10-02  1:01     ` [dpdk-dev] [PATCH v11 06/10] baseband/acc100: add HARQ loopback support Nicolas Chautru
2020-10-02  1:01     ` [dpdk-dev] [PATCH v11 07/10] baseband/acc100: add support for 4G processing Nicolas Chautru
2020-10-02  1:01     ` [dpdk-dev] [PATCH v11 08/10] baseband/acc100: add interrupt support to PMD Nicolas Chautru
2020-10-02  1:01     ` [dpdk-dev] [PATCH v11 09/10] baseband/acc100: add debug function to validate input Nicolas Chautru
2020-10-02  1:01     ` [dpdk-dev] [PATCH v11 10/10] baseband/acc100: add configure function Nicolas Chautru
2020-10-05 22:12   ` [dpdk-dev] [PATCH v12 00/10] bbdev PMD ACC100 Nicolas Chautru
2020-10-05 22:12     ` [dpdk-dev] [PATCH v12 01/10] drivers/baseband: add PMD for ACC100 Nicolas Chautru
2020-11-02  9:25       ` Ferruh Yigit
2020-11-02 11:16         ` Ferruh Yigit
2020-10-05 22:12     ` [dpdk-dev] [PATCH v12 02/10] baseband/acc100: add register definition file Nicolas Chautru
2020-10-05 22:12     ` [dpdk-dev] [PATCH v12 03/10] baseband/acc100: add info get function Nicolas Chautru
2020-10-05 22:12     ` [dpdk-dev] [PATCH v12 04/10] baseband/acc100: add queue configuration Nicolas Chautru
2020-10-05 22:12     ` [dpdk-dev] [PATCH v12 05/10] baseband/acc100: add LDPC processing functions Nicolas Chautru
2020-10-05 22:12     ` [dpdk-dev] [PATCH v12 06/10] baseband/acc100: add HARQ loopback support Nicolas Chautru
2020-10-05 22:12     ` [dpdk-dev] [PATCH v12 07/10] baseband/acc100: add support for 4G processing Nicolas Chautru
2020-10-05 22:12     ` [dpdk-dev] [PATCH v12 08/10] baseband/acc100: add interrupt support to PMD Nicolas Chautru
2020-10-05 22:12     ` [dpdk-dev] [PATCH v12 09/10] baseband/acc100: add debug function to validate input Nicolas Chautru
2020-10-05 22:12     ` [dpdk-dev] [PATCH v12 10/10] baseband/acc100: add configure function Nicolas Chautru
2020-10-06 13:20     ` [dpdk-dev] [PATCH v12 00/10] bbdev PMD ACC100 Maxime Coquelin
2020-10-06 19:43       ` Akhil Goyal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9f51d38e-4485-a844-6e63-d2fd4c2385f6@redhat.com \
    --to=trix@redhat.com \
    --cc=aidan.goddard@accelercomm.com \
    --cc=akhil.goyal@nxp.com \
    --cc=bruce.richardson@intel.com \
    --cc=dave.burley@accelercomm.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=nicolas.chautru@intel.com \
    --cc=rosen.xu@intel.com \
    --cc=tianjiao.liu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.