Merge "[DPDK] Add ability to set pmd_rxq_affinity for dpdk interfaces"
diff --git a/README.rst b/README.rst
index afad3df..6170e0b 100644
--- a/README.rst
+++ b/README.rst
@@ -1057,6 +1057,7 @@
             enabled: true
             type: dpdk_ovs_port
             n_rxq: 2
+            pmd_rxq_affinity: "0:1,1:2"
             bridge: br-prv
             mtu: 9000
           br-prv:
@@ -1087,6 +1088,7 @@
             enabled: true
             type: dpdk_ovs_port
             n_rxq: 2
+            pmd_rxq_affinity: "0:1,1:2"
             mtu: 9000
           dpdk_first_nic:
             name: ${_param:primary_first_nic}
@@ -1096,6 +1098,7 @@
             enabled: true
             type: dpdk_ovs_port
             n_rxq: 2
+            pmd_rxq_affinity: "0:1,1:2"
             mtu: 9000
           dpdkbond0:
             enabled: true
diff --git a/linux/network/dpdk.sls b/linux/network/dpdk.sls
index 6ddd856..4df8b63 100644
--- a/linux/network/dpdk.sls
+++ b/linux/network/dpdk.sls
@@ -147,8 +147,8 @@
     - require:
       - cmd: linux_network_dpdk_bridge_interface_{{ interface.bridge }}
 
-  {# Multiqueue n_rxq and mtu setup on interfaces #}
-  {%- elif interface.type == 'dpdk_ovs_port' and (interface.n_rxq is defined or interface.mtu is defined) %}
+  {# Multiqueue n_rxq, pmd_rxq_affinity and mtu setup on interfaces #}
+  {%- elif interface.type == 'dpdk_ovs_port' and (interface.n_rxq is defined or interface.mtu is defined or interface.pmd_rxq_affinity is defined) %}
 
   {%- if interface.n_rxq is defined %}
 
@@ -160,6 +160,16 @@
 
   {%- endif %}
 
+  {%- if interface.pmd_rxq_affinity is defined %}
+
+linux_network_dpdk_bridge_port_interface_pmd_rxq_affinity_{{ interface_name }}:
+  cmd.run:
+    - name: "ovs-vsctl set Interface {{ interface_name }} other_config:pmd-rxq-affinity={{ interface.pmd_rxq_affinity }} "
+    - unless: |
+        ovs-vsctl get Interface {{ interface_name }} other_config | grep 'pmd-rxq-affinity="{{ interface.pmd_rxq_affinity }}"'
+
+  {%- endif %}
+
   {%- if interface.mtu is defined %}
 
 {# MTU ovs dpdk setup on interfaces #}