[dpdk-dev] [PATCH v7 2/2] mbuf: implement generic format for sched field

Rao, Nikhil nikhil.rao at intel.com
Thu Dec 20 15:55:50 CET 2018


> -----Original Message-----
> From: Pattan, Reshma
> Sent: Thursday, December 20, 2018 5:46 PM
> To: dev at dpdk.org; jerin.jacob at caviumnetworks.com; Rao, Nikhil
> <nikhil.rao at intel.com>; olivier.matz at 6wind.com; thomas at monjalon.net;
> Singh, Jasvinder <jasvinder.singh at intel.com>; Dumitrescu, Cristian
> <cristian.dumitrescu at intel.com>; Ananyev, Konstantin
> <konstantin.ananyev at intel.com>
> Cc: Pattan, Reshma <reshma.pattan at intel.com>
> Subject: [PATCH v7 2/2] mbuf: implement generic format for sched field
> 
> This patch implements the changes proposed in the deprecation notes [1][2].
> 
> librte_mbuf changes:
> The mbuf->hash.sched field is updated to support generic definition in line
> with the ethdev traffic manager and meter APIs.
> The new generic format contains: queue ID, traffic class, color.
> 
> Added public APIs to set and get these new fields to and from mbuf.
> 
> librte_sched changes:
> In addtion, following API functions of the sched library have been modified
> with an additional parameter of type struct rte_sched_port to accommodate
> the changes made to mbuf sched field.
> (i)rte_sched_port_pkt_write()
> (ii) rte_sched_port_pkt_read_tree_path()
> 
> librte_pipeline, qos_sched UT, qos_sched app are updated to make use of
> new changes.
> 
> Also mbuf->hash.txadapter has been added for eventdev txq,
> rte_event_eth_tx_adapter_txq_set and rte_event_eth_tx_adapter_txq_get()
> are updated to use mbuf->hash.txadapter.txq.
> 
> doc:
> Release notes updated.
> Removed deprecation notice for mbuf->hash.sched and sched API.
> 
> [1] http://mails.dpdk.org/archives/dev/2018-February/090651.html
> [2] https://mails.dpdk.org/archives/dev/2018-November/119051.html
> 
> Signed-off-by: Jasvinder Singh <jasvinder.singh at intel.com>
> Signed-off-by: Reshma Pattan <reshma.pattan at intel.com>
> Acked-by: Cristian Dumitrescu <cristian.dumitrescu at intel.com>
> Acked-by: Konstantin Ananyev <konstantin.ananyev at intel.com>
> ---
> v7:
> 
> Edited the commit message.
> Moved rte_mbuf_sched inside the rte_mbuf struct.
> Added missing empty line in doxygen comments of sched set and get
> functions.
> 
> v6: added scheduler comment
> 
> v5:
> Removed librte_meter from librte_mbuf dependency list.
> Changed the mbuf set/get functions to use uint8_t for color.
> 
> v4: converted mbuf->hash.sched as instantiation of rte_mbuf_sched.
> 
> v3: addressed review comments given in the below link.
> http://patches.dpdk.org/patch/48587/
> Updated library ABI versioning in meson build.
> ---
> ---
>  doc/guides/rel_notes/deprecation.rst          |  10 --
>  doc/guides/rel_notes/release_19_02.rst        |   4 +-
>  examples/qos_sched/app_thread.c               |   7 +-
>  examples/qos_sched/main.c                     |   1 +
>  .../rte_event_eth_tx_adapter.h                |  18 ++-
>  lib/librte_mbuf/Makefile                      |   2 +-
>  lib/librte_mbuf/meson.build                   |   2 +-
>  lib/librte_mbuf/rte_mbuf.h                    | 119 +++++++++++++++++-
>  lib/librte_pipeline/rte_table_action.c        |  44 +++----
>  lib/librte_sched/Makefile                     |   2 +-
>  lib/librte_sched/meson.build                  |   1 +
>  lib/librte_sched/rte_sched.c                  |  90 ++++++-------
>  lib/librte_sched/rte_sched.h                  |  10 +-
>  test/test/test_sched.c                        |   9 +-
>  14 files changed, 197 insertions(+), 122 deletions(-)
> 

> diff --git a/lib/librte_eventdev/rte_event_eth_tx_adapter.h
> b/lib/librte_eventdev/rte_event_eth_tx_adapter.h
> index 81456d4a9..2a50656d9 100644
> --- a/lib/librte_eventdev/rte_event_eth_tx_adapter.h
> +++ b/lib/librte_eventdev/rte_event_eth_tx_adapter.h
> @@ -63,13 +63,11 @@
>   * function can be used to retrieve the adapter's service function ID.
>   *
>   * The ethernet port and transmit queue index to transmit the mbuf on are
> - * specified using the mbuf port and the higher 16 bits of
> - * struct rte_mbuf::hash::sched:hi. The application should use the
> - * rte_event_eth_tx_adapter_txq_set() and
> rte_event_eth_tx_adapter_txq_get()
> - * functions to access the transmit queue index since it is expected that the
> - * transmit queue will be eventually defined within struct rte_mbuf and using
> - * these macros will help with minimizing application impact due to
> - * a change in how the transmit queue index is specified.
> + * specified using the mbuf port struct rte_mbuf::hash::txadapter:txq.
> + * The application should use the rte_event_eth_tx_adapter_txq_set()
> + * and rte_event_eth_tx_adapter_txq_get() functions to access the
> + transmit
> + * queue index, using these macros will help with minimizing
> + application
> + * impact due to a change in how the transmit queue index is specified.
>   */
> 
>  #ifdef __cplusplus
> @@ -300,8 +298,7 @@ rte_event_eth_tx_adapter_queue_del(uint8_t id,
> static __rte_always_inline void __rte_experimental
> rte_event_eth_tx_adapter_txq_set(struct rte_mbuf *pkt, uint16_t queue)  {
> -	uint16_t *p = (uint16_t *)&pkt->hash.sched.hi;
> -	p[1] = queue;
> +	pkt->hash.txadapter.txq = queue;
>  }
> 
>  /**
> @@ -320,8 +317,7 @@ rte_event_eth_tx_adapter_txq_set(struct rte_mbuf
> *pkt, uint16_t queue)  static __rte_always_inline uint16_t
> __rte_experimental  rte_event_eth_tx_adapter_txq_get(struct rte_mbuf
> *pkt)  {
> -	uint16_t *p = (uint16_t *)&pkt->hash.sched.hi;
> -	return p[1];
> +	return pkt->hash.txadapter.txq;
>  }
> 
Event Tx adapter changes 

Tested-by: Nikhil Rao <nikhil.rao at intel.com>
Reviewed-by: Nikhil Rao <nikhil.rao at intel.com>


More information about the dev mailing list