From: pmikus Date: Fri, 30 Jul 2021 08:47:15 +0000 (+0000) Subject: Ansible: Intel driver compatibility matrix X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=commitdiff_plain;h=93285a12d79b2b14f4e6dad9faf450a51149ca37 Ansible: Intel driver compatibility matrix + implements Intel Ethernet 700/800 series driver installation based on compatiblity matrix + includes iavf, i40, ice, ddp driver/profiles installation + patch abstracts multiple compatibility scenarios (dpdk, intel product materials, custom override) and could be applied per testbed + if no matrix choosen, default operating system drivers are used Signed-off-by: pmikus Change-Id: Ifbdbf8c2ebc48d81941e66698708a2e0ff57b7de --- diff --git a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.50.yaml b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.50.yaml index 3bbae834f5..e7ee5be7ea 100644 --- a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.50.yaml +++ b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.50.yaml @@ -9,6 +9,8 @@ grub: inventory_ipmi_hostname: "10.30.50.47" cpu_microarchitecture: "skylake" +intel_800_matrix: "dpdk21.08" + # User management. users: - username: localadmin diff --git a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.51.yaml b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.51.yaml index 020ff03082..abbbe155de 100644 --- a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.51.yaml +++ b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.51.yaml @@ -9,6 +9,8 @@ grub: inventory_ipmi_hostname: "10.30.50.48" cpu_microarchitecture: "skylake" +intel_800_matrix: "dpdk21.08" + # User management. users: - username: localadmin diff --git a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.56.yaml b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.56.yaml index f2dd6212ae..4b3ca66efd 100644 --- a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.56.yaml +++ b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.56.yaml @@ -28,3 +28,5 @@ sysctl: inventory_ipmi_hostname: "10.30.50.53" cpu_microarchitecture: "skylake" + +intel_700_matrix: "dpdk21.08" diff --git a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.57.yaml b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.57.yaml index 07ab624137..5bfb97e768 100644 --- a/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.57.yaml +++ b/fdio.infra.ansible/inventories/lf_inventory/host_vars/10.30.51.57.yaml @@ -28,3 +28,5 @@ sysctl: inventory_ipmi_hostname: "10.30.50.54" cpu_microarchitecture: "skylake" + +intel_700_matrix: "dpdk21.02" diff --git a/fdio.infra.ansible/roles/intel/defaults/main.yaml b/fdio.infra.ansible/roles/intel/defaults/main.yaml index 0ad227d13b..a64989628f 100644 --- a/fdio.infra.ansible/roles/intel/defaults/main.yaml +++ b/fdio.infra.ansible/roles/intel/defaults/main.yaml @@ -16,20 +16,48 @@ packages_by_arch: x86_64: - [] +intel_sourceforge_download_url: "https://sourceforge.net/projects/e1000/files" intel_download_url: "https://downloadmirror.intel.com" - -intel_iavf_version: "4.1.1" -intel_iavf_driver_url: "{{ intel_download_url }}/24693/eng/iavf-{{ intel_iavf_version }}.tar.gz" -intel_iavf_driver_dir: "/opt" - -intel_i40e_version: "2.15.9" -intel_i40e_driver_url: "{{ intel_download_url }}/24411/eng/i40e-{{ intel_i40e_version }}.tar.gz" -intel_i40e_driver_dir: "/opt" - -intel_ice_version: "1.4.11" -intel_ice_driver_url: "{{ intel_download_url }}/29746/eng/ice-{{ intel_ice_version }}.tar.gz" -intel_ice_driver_dir: "/opt" - -intel_ddp_version: "1.3.28.0" -intel_ddp_profile_url: "{{ intel_download_url }}/29889/eng/800%20Series%20Comms%20Binary%20Package%20{{ intel_ddp_version }}.zip" -intel_ddp_profile_dir: "/opt" +intel_extract_dir: "/opt" + +intel_700_compatibility_matrix: + dpdk21.02: + # https://doc.dpdk.org/guides/rel_notes/release_21_02.html + i40e: "2.14.13" + iavf: "4.1.1" + nvm: "8.00" + dpdk21.08: + # https://doc.dpdk.org/guides/rel_notes/release_21_05.html + i40e: "2.15.9" + iavf: "4.1.1" + nvm: "8.30" + +intel_800_compatibility_matrix: + dpdk21.02: + # https://doc.dpdk.org/guides/rel_notes/release_21_02.html + ice: "1.4.11" + ddp: "1.3.28.0" + iavf: "4.1.1" + nvm: "2.40" + dpdk21.08: + # https://doc.dpdk.org/guides/rel_notes/release_21_05.html + ice: "1.6.4" + ddp: "1.3.30.0" + iavf: "4.2.7" + nvm: "3.00" + +intel_i40e_url: + "2.14.13": "i40e%20stable/2.14.13/i40e-2.14.13.tar.gz/download" + "2.15.9": "i40e%20stable/2.15.9/i40e-2.15.9.tar.gz/download" + +intel_ice_url: + "1.4.11": "ice%20stable/1.4.11/ice-1.4.11.tar.gz/download" + "1.6.4": "ice%20stable/1.6.4/ice-1.6.4.tar.gz/download" + +intel_iavf_url: + "4.1.1": "iavf%20stable/4.1.1/iavf-4.1.1.tar.gz/download" + "4.2.7": "iavf%20stable/4.2.7/iavf-4.2.7.tar.gz/download" + +intel_ddp_url: + "1.3.28.0": "29889/eng/800%20Series%20Comms%20Binary%20Package%201.3.28.0.zip" + "1.3.30.0": "30590/eng/800%20Series%20Comms%20Binary%20Package%201.3.30.0.zip" diff --git a/fdio.infra.ansible/roles/intel/tasks/i40e.yaml b/fdio.infra.ansible/roles/intel/tasks/i40e.yaml index 1831dd1dad..2299a3b1b8 100644 --- a/fdio.infra.ansible/roles/intel/tasks/i40e.yaml +++ b/fdio.infra.ansible/roles/intel/tasks/i40e.yaml @@ -2,19 +2,22 @@ # file: roles/intel/tasks/i40e.yaml - name: Inst - Get i40e Network Adapter Driver - get_url: - url: "{{ intel_i40e_driver_url }}" - dest: "{{ intel_i40e_driver_dir }}/i40e-{{ intel_i40e_version }}.tar.gz" - mode: 0644 + uri: + url: "{{ intel_sourceforge_download_url }}/{{ intel_i40e_url[i40e] }}" + follow_redirects: "all" + force: true + dest: "{{ intel_extract_dir }}/i40e-{{ i40e }}.tar.gz" + mode: "0644" + failed_when: false tags: - intel-inst - name: Inst - Extract i40e Network Adapter Driver unarchive: remote_src: true - src: "{{ intel_i40e_driver_dir }}/i40e-{{ intel_i40e_version }}.tar.gz" - dest: "{{ intel_i40e_driver_dir }}/" - creates: "{{ intel_i40e_driver_dir }}/i40e-{{ intel_i40e_version }}" + src: "{{ intel_extract_dir }}/i40e-{{ i40e }}.tar.gz" + dest: "{{ intel_extract_dir }}/" + creates: "{{ intel_extract_dir }}/i40e-{{ i40e }}" register: intel_driver_extracted tags: - intel-inst @@ -22,12 +25,12 @@ - name: Inst - i40e Network Adapter Driver command: "{{ item }}" args: - chdir: "{{ intel_i40e_driver_dir }}/i40e-{{ intel_i40e_version }}/src" + chdir: "{{ intel_extract_dir }}/i40e-{{ i40e }}/src" + become: true with_items: - "make install" - "modprobe -r i40e" - "modprobe i40e" - failed_when: true when: - intel_driver_extracted tags: diff --git a/fdio.infra.ansible/roles/intel/tasks/iavf.yaml b/fdio.infra.ansible/roles/intel/tasks/iavf.yaml index dfdb496085..44040cfd7e 100644 --- a/fdio.infra.ansible/roles/intel/tasks/iavf.yaml +++ b/fdio.infra.ansible/roles/intel/tasks/iavf.yaml @@ -2,19 +2,22 @@ # file: roles/intel/tasks/iavf.yaml - name: Inst - Get iavf Network Adapter Driver - get_url: - url: "{{ intel_iavf_driver_url }}" - dest: "{{ intel_iavf_driver_dir }}/iavf-{{ intel_iavf_version }}.tar.gz" - mode: 0644 + uri: + url: "{{ intel_sourceforge_download_url }}/{{ intel_iavf_url[iavf] }}" + follow_redirects: "all" + force: true + dest: "{{ intel_extract_dir }}/iavf-{{ iavf }}.tar.gz" + mode: "0644" + failed_when: false tags: - intel-inst - name: Inst - Extract iavf Network Adapter Driver unarchive: remote_src: true - src: "{{ intel_iavf_driver_dir }}/iavf-{{ intel_iavf_version }}.tar.gz" - dest: "{{ intel_iavf_driver_dir }}/" - creates: "{{ intel_iavf_driver_dir }}/iavf-{{ intel_iavf_version }}" + src: "{{ intel_extract_dir }}/iavf-{{ iavf }}.tar.gz" + dest: "{{ intel_extract_dir }}/" + creates: "{{ intel_extract_dir }}/iavf-{{ iavf }}" register: intel_driver_extracted tags: - intel-inst @@ -22,12 +25,12 @@ - name: Inst - iavf Network Adapter Driver command: "{{ item }}" args: - chdir: "{{ intel_iavf_driver_dir }}/iavf-{{ intel_iavf_version }}/src" + chdir: "{{ intel_extract_dir }}/iavf-{{ iavf }}/src" + become: true with_items: - "make install" - "modprobe -r iavf" - "modprobe iavf" - failed_when: true when: - intel_driver_extracted tags: diff --git a/fdio.infra.ansible/roles/intel/tasks/ice.yaml b/fdio.infra.ansible/roles/intel/tasks/ice.yaml index 9baa9d050d..bbd07c6539 100644 --- a/fdio.infra.ansible/roles/intel/tasks/ice.yaml +++ b/fdio.infra.ansible/roles/intel/tasks/ice.yaml @@ -2,19 +2,22 @@ # file: roles/intel/tasks/ice.yaml - name: Inst - Get ice Network Adapter Driver - get_url: - url: "{{ intel_ice_driver_url }}" - dest: "{{ intel_ice_driver_dir }}/ice-{{ intel_ice_version }}.tar.gz" - mode: 0644 + uri: + url: "{{ intel_sourceforge_download_url }}/{{ intel_ice_url[ice] }}" + follow_redirects: "all" + force: true + dest: "{{ intel_extract_dir }}/ice-{{ ice }}.tar.gz" + mode: "0644" + failed_when: false tags: - intel-inst - name: Inst - Extract ice Network Adapter Driver unarchive: remote_src: true - src: "{{ intel_ice_driver_dir }}/ice-{{ intel_ice_version }}.tar.gz" - dest: "{{ intel_ice_driver_dir }}/" - creates: "{{ intel_ice_driver_dir }}/ice-{{ intel_ice_version }}" + src: "{{ intel_extract_dir }}/ice-{{ ice }}.tar.gz" + dest: "{{ intel_extract_dir }}/" + creates: "{{ intel_extract_dir }}/ice-{{ ice }}" register: intel_driver_extracted tags: - intel-inst @@ -22,12 +25,12 @@ - name: Inst - ice Network Adapter Driver command: "{{ item }}" args: - chdir: "{{ intel_ice_driver_dir }}/ice-{{ intel_ice_version }}/src" + chdir: "{{ intel_extract_dir }}/ice-{{ ice }}/src" + become: true with_items: - "make install" - "modprobe -r ice" - "modprobe ice" - failed_when: false when: - intel_driver_extracted tags: @@ -35,8 +38,8 @@ - name: Inst - Get Dynamic Device Personalization (DDP) Package get_url: - url: "{{ intel_ddp_profile_url }}" - dest: "{{ intel_ddp_profile_dir }}/800-Series-Comms-Binary-Package-{{ intel_ddp_version }}.zip" + url: "{{ intel_download_url }}/{{ intel_ddp_url[ddp] }}" + dest: "{{ intel_extract_dir }}/800-Series-Comms-Binary-Package-{{ ddp }}.zip" mode: 0644 tags: - intel-inst @@ -44,9 +47,9 @@ - name: Inst - Extract Dynamic Device Personalization (DDP) Package unarchive: remote_src: true - src: "{{ intel_ddp_profile_dir }}/800-Series-Comms-Binary-Package-{{ intel_ddp_version }}.zip" - dest: "{{ intel_ddp_profile_dir }}/" - creates: "{{ intel_ddp_profile_dir }}/ice_comms-{{ intel_ddp_version }}.zip" + src: "{{ intel_extract_dir }}/800-Series-Comms-Binary-Package-{{ ddp }}.zip" + dest: "{{ intel_extract_dir }}/" + creates: "{{ intel_extract_dir }}/ice_comms-{{ ddp }}.zip" register: intel_driver_extracted tags: - intel-inst @@ -54,16 +57,16 @@ - name: Inst - Extract Dynamic Device Personalization (DDP) Package unarchive: remote_src: true - src: "{{ intel_ddp_profile_dir }}/ice_comms-{{ intel_ddp_version }}.zip" - dest: "{{ intel_ddp_profile_dir }}/" + src: "{{ intel_extract_dir }}/ice_comms-{{ ddp }}.zip" + dest: "{{ intel_extract_dir }}/" register: intel_driver_extracted tags: - intel-inst - name: Inst - Copy Dynamic Device Personalization (DDP) Package copy: - src: "{{ intel_ddp_profile_dir }}/ice_comms-{{ intel_ddp_version }}.pkg" - dest: "/lib/firmware/updates/intel/ice/ddp/ice-{{ intel_ddp_version }}.pkg" + src: "{{ intel_extract_dir }}/ice_comms-{{ ddp }}.pkg" + dest: "/lib/firmware/updates/intel/ice/ddp/ice-{{ ddp }}.pkg" remote_src: true follow: true tags: @@ -71,7 +74,7 @@ - name: Inst - Link Dynamic Device Personalization (DDP) Package file: - src: "ice-{{ intel_ddp_version }}.pkg" + src: "ice-{{ ddp }}.pkg" dest: "/lib/firmware/updates/intel/ice/ddp/ice.pkg" state: link tags: @@ -82,7 +85,7 @@ path: "{{ item }}" state: absent with_items: - - "{{ intel_ddp_profile_dir }}/E810 DDP for Comms TechGuide_Rev2.3.pdf" - - "{{ intel_ddp_profile_dir }}/Intel_800_series_market_segment_DDP_license.txt" + - "{{ intel_extract_dir }}/E810 DDP for Comms TechGuide_Rev2.3.pdf" + - "{{ intel_extract_dir }}/Intel_800_series_market_segment_DDP_license.txt" tags: - intel-inst diff --git a/fdio.infra.ansible/roles/intel/tasks/main.yaml b/fdio.infra.ansible/roles/intel/tasks/main.yaml index 0d361a951d..a73e6299a2 100644 --- a/fdio.infra.ansible/roles/intel/tasks/main.yaml +++ b/fdio.infra.ansible/roles/intel/tasks/main.yaml @@ -17,39 +17,65 @@ tags: - intel-inst-drivers -- name: Inst - Check Presence of Intel Ethernet 810 Series - shell: "lspci -d 8086:1592" - register: intel_e810_pcis +- name: Inst - Check Presence of Intel Ethernet 700 Series + shell: "lspci -d 8086:1583; lspci -d 8086:1585; lspci -d 8086:1572" + register: intel_700_pcis failed_when: false changed_when: false tags: - intel-inst-drivers -- name: Inst - Check Presence of Intel Ethernet 700 Series - shell: "lspci -d 8086:1583; lspci -d 8086:1585; lspci -d 8086:1572" - register: intel_700_pcis +- name: Inst - Check Presence of Intel Ethernet 800 Series + shell: "lspci -d 8086:1592" + register: intel_800_pcis failed_when: false changed_when: false tags: - intel-inst-drivers -- name: Inst - Driver Intel Ethernet 810 Series - import_tasks: ice.yaml - when: - - intel_e810_pcis.stdout_lines | length > 0 +- name: Inst - Get Intel Ethernet 700 Series driver versions + set_fact: + i40e: "{{ intel_700_compatibility_matrix[intel_700_matrix]['i40e'] }}" + iavf: "{{ intel_700_compatibility_matrix[intel_700_matrix]['iavf'] }}" + nvm: "{{ intel_700_compatibility_matrix[intel_700_matrix]['nvm'] }}" + when: > + intel_700_matrix is defined tags: - intel-inst-drivers -# - name: Inst - Driver Intel Ethernet 700 Series -# import_tasks: i40e.yaml -# when: -# - intel_700_pcis.stdout_lines | length > 0 -# tags: -# - intel-inst-drivers +- name: Inst - Get Intel Ethernet 800 Series driver versions + set_fact: + ice: "{{ intel_800_compatibility_matrix[intel_800_matrix]['ice'] }}" + ddp: "{{ intel_800_compatibility_matrix[intel_800_matrix]['ddp'] }}" + iavf: "{{ intel_800_compatibility_matrix[intel_800_matrix]['iavf'] }}" + nvm: "{{ intel_800_compatibility_matrix[intel_800_matrix]['nvm'] }}" + when: > + intel_800_matrix is defined + tags: + - intel-inst-drivers + +- name: Inst - Driver Intel Ethernet 700 Series + import_tasks: i40e.yaml + when: > + intel_700_pcis.stdout_lines | length > 0 and + intel_700_matrix is defined + tags: + - intel-inst-drivers + +- name: Inst - Driver Intel Ethernet 800 Series + import_tasks: ice.yaml + when: > + intel_800_pcis.stdout_lines | length > 0 and + intel_800_matrix is defined + tags: + - intel-inst-drivers -# - name: Inst - VF Driver Intel -# import_tasks: iavf.yaml -# when: -# - intel_700_pcis.stdout_lines | length > 0 or intel_e810_pcis.stdout_lines | length > 0 -# tags: -# - intel-inst-drivers +- name: Inst - Driver Intel iAVF + import_tasks: iavf.yaml + when: > + intel_700_pcis.stdout_lines | length > 0 or + intel_800_pcis.stdout_lines | length > 0 and + intel_700_matrix is defined or + intel_800_matrix is defined + tags: + - intel-inst-drivers