From 791f06b8c2e3372ccc0051be187a405a5736db48 Mon Sep 17 00:00:00 2001
From: handreas <andreas.hamacher@monash.edu>
Date: Mon, 6 Dec 2021 17:02:44 +1100
Subject: [PATCH] disabling global pause on hypervisors

---
 roles/mellanox_config/tasks/rocev2.yml               | 6 ++++--
 roles/mellanox_config/templates/roce_mode.service.j2 | 8 ++++++++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/roles/mellanox_config/tasks/rocev2.yml b/roles/mellanox_config/tasks/rocev2.yml
index cf68174c..945e8c4f 100644
--- a/roles/mellanox_config/tasks/rocev2.yml
+++ b/roles/mellanox_config/tasks/rocev2.yml
@@ -9,6 +9,7 @@
   shell: /usr/sbin/ibstat | grep mlx5 | awk '{print $2}' | sed -r "s#'##g"
   register: qibdevicenames
   check_mode: no
+  changed_when: false
   #when: not statrocemode.stat.exists
 
 - name: print qibdevicenames
@@ -23,6 +24,7 @@
     owner: root
     group: root
     mode: u+rwx,g-wx,o-rwx
+  register: pfcecn
 
 - name: template roce_mode.service file
   template: dest=/etc/systemd/system/roce_mode.service src=roce_mode.service.j2 owner=root group=root mode=0644
@@ -38,9 +40,9 @@
   register: reload_service
 
 - name: enable roce_mode setting
-  service: name=roce_mode state=started enabled=yes
+  service: name=roce_mode state=restarted enabled=yes
   become: true
-  when: service_file.changed
+  when: service_file.changed or pfcecn.changed
 
 - name: enable roce_mode setting
   service: name=roce_mode state=started enabled=yes
diff --git a/roles/mellanox_config/templates/roce_mode.service.j2 b/roles/mellanox_config/templates/roce_mode.service.j2
index a44d473f..3c36753a 100644
--- a/roles/mellanox_config/templates/roce_mode.service.j2
+++ b/roles/mellanox_config/templates/roce_mode.service.j2
@@ -18,6 +18,14 @@ ExecStart=/usr/sbin/cma_roce_mode -d {{ device }} -p 1 -m {{ rocemode }}
 ExecStartPost=/usr/sbin/pfc-ecn.sh
 {% endif %}
 
+{% if "OpenStack Nova" not in ansible_product_name %}
+ExecStartPost=/sbin/ethtool -A p1p1 rx off tx off
+ExecStartPost=/sbin/ethtool -A p1p2 rx off tx off
+{% else %}
+# disable global pause counters. Query via ethtool -a mlx0. Commented because they are always off anyway and turning them of returns code 78
+#ExecStartPost=/sbin/ethtool -A mlx0 rx off tx off
+{% endif %}
+
 
 [Install]
 WantedBy=multi-user.target
-- 
GitLab