[dpdk-dev] [PATCH] doc: announce ABI change for rte_eth_dev structure
On 07/31/2016 10:46 AM, Vlad Zolotarov wrote: > > > On 07/20/2016 05:24 PM, Tomasz Kulasek wrote: >> This is an ABI deprecation notice for DPDK 16.11 in librte_ether about >> changes in rte_eth_dev and rte_eth_desc_lim structures. >> >> In 16.11, we plan to introduce rte_eth_tx_prep() function to do >> necessary preparations of packet burst to be safely transmitted on >> device for desired HW offloads (set/reset checksum field according to >> the hardware requirements) and check HW constraints (number of segments >> per packet, etc). >> >> While the limitations and requirements may differ for devices, it >> requires to extend rte_eth_dev structure with new function pointer >> "tx_pkt_prep" which can be implemented in the driver to prepare and >> verify packets, in devices specific way, before burst, what should to >> prevent application to send malformed packets. >> >> Also new fields will be introduced in rte_eth_desc_lim: nb_seg_max and >> nb_mtu_seg_max, providing an information about max segments in TSO and >> non TSO packets acceptable by device. >> >> Signed-off-by: Tomasz Kulasek > > Acked-by: Vlad Zolotarov One small comment however. Although this function is a must we need a way to clearly understand which one the clusters are malformed since dropping the whole bulk is usually not an option and sending the malformed packets anyway may cause a HW hang, thus not an option as well. Another thing - I've pulled the current master and I couldn't find the way an application may query the mentioned Tx offload HW limitation, e.g. maximum number of segments. Knowing this limitation would avoid extra liniarization. thanks, vlad > >> --- >> doc/guides/rel_notes/deprecation.rst |7 +++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/doc/guides/rel_notes/deprecation.rst >> b/doc/guides/rel_notes/deprecation.rst >> index f502f86..485aacb 100644 >> --- a/doc/guides/rel_notes/deprecation.rst >> +++ b/doc/guides/rel_notes/deprecation.rst >> @@ -41,3 +41,10 @@ Deprecation Notices >> * The mempool functions for single/multi producer/consumer are >> deprecated and >> will be removed in 16.11. >> It is replaced by rte_mempool_generic_get/put functions. >> + >> +* In 16.11 ABI changes are plained: the ``rte_eth_dev`` structure >> will be >> + extended with new function pointer ``tx_pkt_prep`` allowing >> verification >> + and processing of packet burst to meet HW specific requirements >> before >> + transmit. Also new fields will be added to the >> ``rte_eth_desc_lim`` structure: >> + ``nb_seg_max`` and ``nb_mtu_seg_max`` provideing information about >> number of >> + segments limit to be transmitted by device for TSO/non-TSO packets. >
[dpdk-dev] [PATCH] doc: announce ABI change for rte_eth_dev structure
On 07/20/2016 05:24 PM, Tomasz Kulasek wrote: > This is an ABI deprecation notice for DPDK 16.11 in librte_ether about > changes in rte_eth_dev and rte_eth_desc_lim structures. > > In 16.11, we plan to introduce rte_eth_tx_prep() function to do > necessary preparations of packet burst to be safely transmitted on > device for desired HW offloads (set/reset checksum field according to > the hardware requirements) and check HW constraints (number of segments > per packet, etc). > > While the limitations and requirements may differ for devices, it > requires to extend rte_eth_dev structure with new function pointer > "tx_pkt_prep" which can be implemented in the driver to prepare and > verify packets, in devices specific way, before burst, what should to > prevent application to send malformed packets. > > Also new fields will be introduced in rte_eth_desc_lim: nb_seg_max and > nb_mtu_seg_max, providing an information about max segments in TSO and > non TSO packets acceptable by device. > > Signed-off-by: Tomasz Kulasek Acked-by: Vlad Zolotarov > --- > doc/guides/rel_notes/deprecation.rst |7 +++ > 1 file changed, 7 insertions(+) > > diff --git a/doc/guides/rel_notes/deprecation.rst > b/doc/guides/rel_notes/deprecation.rst > index f502f86..485aacb 100644 > --- a/doc/guides/rel_notes/deprecation.rst > +++ b/doc/guides/rel_notes/deprecation.rst > @@ -41,3 +41,10 @@ Deprecation Notices > * The mempool functions for single/multi producer/consumer are deprecated > and > will be removed in 16.11. > It is replaced by rte_mempool_generic_get/put functions. > + > +* In 16.11 ABI changes are plained: the ``rte_eth_dev`` structure will be > + extended with new function pointer ``tx_pkt_prep`` allowing verification > + and processing of packet burst to meet HW specific requirements before > + transmit. Also new fields will be added to the ``rte_eth_desc_lim`` > structure: > + ``nb_seg_max`` and ``nb_mtu_seg_max`` provideing information about number > of > + segments limit to be transmitted by device for TSO/non-TSO packets.
[dpdk-dev] [PATCH] doc: announce ABI change for rte_eth_dev structure
2016-07-20 15:13, Ananyev, Konstantin: > Hi Thomas, > > > Hi, > > > > This patch announces an interesting change in the DPDK design. > > > > 2016-07-20 16:24, Tomasz Kulasek: > > > This is an ABI deprecation notice for DPDK 16.11 in librte_ether about > > > changes in rte_eth_dev and rte_eth_desc_lim structures. > > > > > > In 16.11, we plan to introduce rte_eth_tx_prep() function to do > > > necessary preparations of packet burst to be safely transmitted on > > > device for desired HW offloads (set/reset checksum field according to > > > the hardware requirements) and check HW constraints (number of > > > segments per packet, etc). > > > > > > While the limitations and requirements may differ for devices, it > > > requires to extend rte_eth_dev structure with new function pointer > > > "tx_pkt_prep" which can be implemented in the driver to prepare and > > > verify packets, in devices specific way, before burst, what should to > > > prevent application to send malformed packets. > > > > > > Also new fields will be introduced in rte_eth_desc_lim: nb_seg_max and > > > nb_mtu_seg_max, providing an information about max segments in TSO and > > > non TSO packets acceptable by device. > > > > We cannot acknowledge such notice without a prior design discussion. > > Please explain why you plan to work on this change and give a draft of the > > new structures (a RFC patch would be ideal). > > I think it is not really a deprecation note, but announce ABI change for > rte_ethdev.h structures. An ABI break requires a deprecation notice. So it is :) > The plan is to implement what was proposed & discussed the following thread: > http://dpdk.org/ml/archives/dev/2015-September/023603.html Please could you summarize it here?
[dpdk-dev] [PATCH] doc: announce ABI change for rte_eth_dev structure
Hi, This patch announces an interesting change in the DPDK design. 2016-07-20 16:24, Tomasz Kulasek: > This is an ABI deprecation notice for DPDK 16.11 in librte_ether about > changes in rte_eth_dev and rte_eth_desc_lim structures. > > In 16.11, we plan to introduce rte_eth_tx_prep() function to do > necessary preparations of packet burst to be safely transmitted on > device for desired HW offloads (set/reset checksum field according to > the hardware requirements) and check HW constraints (number of segments > per packet, etc). > > While the limitations and requirements may differ for devices, it > requires to extend rte_eth_dev structure with new function pointer > "tx_pkt_prep" which can be implemented in the driver to prepare and > verify packets, in devices specific way, before burst, what should to > prevent application to send malformed packets. > > Also new fields will be introduced in rte_eth_desc_lim: nb_seg_max and > nb_mtu_seg_max, providing an information about max segments in TSO and > non TSO packets acceptable by device. We cannot acknowledge such notice without a prior design discussion. Please explain why you plan to work on this change and give a draft of the new structures (a RFC patch would be ideal). Thanks
[dpdk-dev] [PATCH] doc: announce ABI change for rte_eth_dev structure
This is an ABI deprecation notice for DPDK 16.11 in librte_ether about changes in rte_eth_dev and rte_eth_desc_lim structures. In 16.11, we plan to introduce rte_eth_tx_prep() function to do necessary preparations of packet burst to be safely transmitted on device for desired HW offloads (set/reset checksum field according to the hardware requirements) and check HW constraints (number of segments per packet, etc). While the limitations and requirements may differ for devices, it requires to extend rte_eth_dev structure with new function pointer "tx_pkt_prep" which can be implemented in the driver to prepare and verify packets, in devices specific way, before burst, what should to prevent application to send malformed packets. Also new fields will be introduced in rte_eth_desc_lim: nb_seg_max and nb_mtu_seg_max, providing an information about max segments in TSO and non TSO packets acceptable by device. Signed-off-by: Tomasz Kulasek --- doc/guides/rel_notes/deprecation.rst |7 +++ 1 file changed, 7 insertions(+) diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index f502f86..485aacb 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -41,3 +41,10 @@ Deprecation Notices * The mempool functions for single/multi producer/consumer are deprecated and will be removed in 16.11. It is replaced by rte_mempool_generic_get/put functions. + +* In 16.11 ABI changes are plained: the ``rte_eth_dev`` structure will be + extended with new function pointer ``tx_pkt_prep`` allowing verification + and processing of packet burst to meet HW specific requirements before + transmit. Also new fields will be added to the ``rte_eth_desc_lim`` structure: + ``nb_seg_max`` and ``nb_mtu_seg_max`` provideing information about number of + segments limit to be transmitted by device for TSO/non-TSO packets. -- 1.7.9.5
[dpdk-dev] [PATCH] doc: announce ABI change for rte_eth_dev structure
> -Original Message- > From: Thomas Monjalon [mailto:thomas.monjalon at 6wind.com] > Sent: Wednesday, July 20, 2016 17:22 > To: Ananyev, Konstantin > Cc: Kulasek, TomaszX ; dev at dpdk.org > Subject: Re: [dpdk-dev] [PATCH] doc: announce ABI change for rte_eth_dev > structure > > 2016-07-20 15:13, Ananyev, Konstantin: > > Hi Thomas, > > > > > Hi, > > > > > > This patch announces an interesting change in the DPDK design. > > > > > > 2016-07-20 16:24, Tomasz Kulasek: > > > > This is an ABI deprecation notice for DPDK 16.11 in librte_ether > > > > about changes in rte_eth_dev and rte_eth_desc_lim structures. > > > > > > > > In 16.11, we plan to introduce rte_eth_tx_prep() function to do > > > > necessary preparations of packet burst to be safely transmitted on > > > > device for desired HW offloads (set/reset checksum field according > > > > to the hardware requirements) and check HW constraints (number of > > > > segments per packet, etc). > > > > > > > > While the limitations and requirements may differ for devices, it > > > > requires to extend rte_eth_dev structure with new function pointer > > > > "tx_pkt_prep" which can be implemented in the driver to prepare > > > > and verify packets, in devices specific way, before burst, what > > > > should to prevent application to send malformed packets. > > > > > > > > Also new fields will be introduced in rte_eth_desc_lim: nb_seg_max > > > > and nb_mtu_seg_max, providing an information about max segments in > > > > TSO and non TSO packets acceptable by device. > > > > > > We cannot acknowledge such notice without a prior design discussion. > > > Please explain why you plan to work on this change and give a draft of > the new structures (a RFC patch would be ideal). > > > > I think it is not really a deprecation note, but announce ABI change for > rte_ethdev.h structures. > > An ABI break requires a deprecation notice. So it is :) > > > The plan is to implement what was proposed & discussed the following > thread: > > http://dpdk.org/ml/archives/dev/2015-September/023603.html > > Please could you summarize it here? Hi Thomas, The implementation of rte_eth_tx_prep() will be similar to the rte_eth_tx_burst(), passing same arguments to the driver, so packets can be checked and modified before real burst will be done. The API for new function will be implemented in the fallowed way: +/** + * Process a burst of output packets on a transmit queue of an Ethernet device. + * + * The rte_eth_tx_prep() function is invoked to prepare output packets to be + * transmitted on the output queue *queue_id* of the Ethernet device designated + * by its *port_id*. + * The *nb_pkts* parameter is the number of packets to be prepared which are + * supplied in the *tx_pkts* array of *rte_mbuf* structures, each of them + * allocated from a pool created with rte_pktmbuf_pool_create(). + * For each packet to send, the rte_eth_tx_prep() function performs + * the following operations: + * + * - Check if packet meets devices requirements for tx offloads. + * + * - Check limitations about number of segments. + * + * - Check additional requirements when debug is enabled. + * + * - Update and/or reset required checksums when tx offload is set for packet. + * + * The rte_eth_tx_prep() function returns the number of packets ready it + * actually sent. A return value equal to *nb_pkts* means that all packets + * are valid and ready to be sent. + * + * @param port_id + * The port identifier of the Ethernet device. + * @param queue_id + * The index of the transmit queue through which output packets must be + * sent. + * The value must be in the range [0, nb_tx_queue - 1] previously supplied + * to rte_eth_dev_configure(). + * @param tx_pkts + * The address of an array of *nb_pkts* pointers to *rte_mbuf* structures + * which contain the output packets. + * @param nb_pkts + * The maximum number of packets to process. + * @return + * The number of packets correct and ready to be sent. The return value can be + * less than the value of the *tx_pkts* parameter when some packet doesn't + * meet devices requirements with rte_errno set appropriately. + */ +static inline uint16_t +rte_eth_tx_prep(uint8_t port_id, uint16_t queue_id, struct rte_mbuf **tx_pkts, + uint16_t nb_pkts) +{ + struct rte_eth_dev *dev = &rte_eth_devices[port_id]; + + if (!dev->tx_pkt_prep) { + rte_errno = -ENOTSUP; + return 0; + } + +#ifdef RTE_LIBRTE_ETHDEV_DEBUG + if (queue_id >= dev->data->nb_tx_queues) { + RTE_PMD_DEBUG_TRACE("Invalid TX queue_id=%d\n", queue_id); + rte_errno = -EINVAL; + return 0; + } +#endif + + return (*dev->tx_pkt_prep)(dev->data->tx_queues[queue_id], tx_pkts, nb_pkts); +} Tomasz
[dpdk-dev] [PATCH] doc: announce ABI change for rte_eth_dev structure
Hi Thomas, > Hi, > > This patch announces an interesting change in the DPDK design. > > 2016-07-20 16:24, Tomasz Kulasek: > > This is an ABI deprecation notice for DPDK 16.11 in librte_ether about > > changes in rte_eth_dev and rte_eth_desc_lim structures. > > > > In 16.11, we plan to introduce rte_eth_tx_prep() function to do > > necessary preparations of packet burst to be safely transmitted on > > device for desired HW offloads (set/reset checksum field according to > > the hardware requirements) and check HW constraints (number of > > segments per packet, etc). > > > > While the limitations and requirements may differ for devices, it > > requires to extend rte_eth_dev structure with new function pointer > > "tx_pkt_prep" which can be implemented in the driver to prepare and > > verify packets, in devices specific way, before burst, what should to > > prevent application to send malformed packets. > > > > Also new fields will be introduced in rte_eth_desc_lim: nb_seg_max and > > nb_mtu_seg_max, providing an information about max segments in TSO and > > non TSO packets acceptable by device. > > We cannot acknowledge such notice without a prior design discussion. > Please explain why you plan to work on this change and give a draft of the > new structures (a RFC patch would be ideal). I think it is not really a deprecation note, but announce ABI change for rte_ethdev.h structures. The plan is to implement what was proposed & discussed the following thread: http://dpdk.org/ml/archives/dev/2015-September/023603.html Konstantin