== Release 2.08 ==
* Scapy JSON-RPC server for GUI packet crafting, see link:trex_scapy_rpc_server.html[trex_scapy_rpc_server]
-* Client.start Python API supports Core mask - significantly improve the Stateless performance. link:cp_stl_docs/_modules/trex_stl_lib/trex_stl_client.html#STLClient.start[start API], *TBD*- Itay to update the pointer here
+* Client.start Python API supports Core mask - significantly improve the Stateless performance. link:cp_stl_docs/_modules/trex_stl_lib/trex_stl_client.html#STLClient.start[start API], and link:trex_stateless.html#_core_masking_per_interface[core_masking]
* Upgrade the ./dpdk_setup_ports.py script. It simplifies the way to create first time *optimized* config file (/etc/trex_cfg.yaml). More info at the manual: link:trex_manual.html#_script_for_creating_config_file[Script for creating config file]
[source,bash]
$sudo ./dpdk_setup_ports.py -c 03:00.0 03:00.1 -o /etc/trex_cfg.yaml # create optimum /etc/trex_cfg.yaml file
----
-* Basic Cisco VIC functionality works now. Advanced Stateless/Stateful functionality is still not supported.
+* Preliminary Cisco VIC support. Advanced Stateless/Stateful functionality is still not supported.
* Enforce latest firmware for XL710/X710 (5.04)
* Add a way to stop/close NICS at TRex termination (link would be down) `-close-at-end`
* IPv6 XL710 ICMP packets are supported now
==== Tutorial: Field Engine, Significantly improve performance
+anchor:trex_cache_mbuf[]
+
The following example demonstrates a way to significantly improve Field Engine performance in case it is needed.
Field Engine has a cost of CPU instructions and CPU memory bandwidth. There is a way to significantly improve performance by caching the packets and run the Field Engine offline(before sending the packets).
that requires the user to explicitly give up on those.
==== Caching MBUFs
-*<TBD>*
+
+
+see xref:trex_cache_mbuf[here]
+
==== Core masking per interface
By default, TRex will regard any TX command with a **greedy approach**:
----
+
+.API example to PIN cores
+[source,python]
+----
+ c.start(ports = [port_a, port_b], mult = rate,core_mask=STLClient.CORE_MASK_PIN) <1>
+----
+<1> core_mask = STLClient.CORE_MASK_PIN
+
+.API example to MASK cores
+[source,python]
+----
+ c.start(ports = [port_a, port_b], mult = rate, core_mask=[0x1,0x2])<1>
+----
+<1> DP Core 0 (mask==1) is assign to port 1 and DP core 1 (mask==2) is for port 2
+
+
[source,bash]
----
trex>
----
+[source,python]
+----
+ c.start(ports = [port_a, port_b], mult = rate,core_mask=[0x0xe,0x1]) <1>
+----
+<1> mask of cores per port
+
+
+
The following output is received on the TUI CPU util window:
[source,bash]