Handle min kernel requirement for some sysctl parameters

Related-Prod: PROD-28434 (PROD:28434)
Related-Prod: PROD-25587 (PROD:25587)
Change-Id: I53424756f621a61e190fdb1cdab1734d175cf4b8
(cherry picked from commit f8232e0d564f34d480a931cdc1bd52022924f2a0)
diff --git a/linux/map.jinja b/linux/map.jinja
index b24e9ce..61e45ee 100644
--- a/linux/map.jinja
+++ b/linux/map.jinja
@@ -455,3 +455,7 @@
         }
     },
 }, grain='os_family', merge=salt['pillar.get']('linux:monitoring')) %}
+
+{%- set sysctl_min_kernel = {
+    'net.core.netdev_budget_usecs': '4.12',
+} %}
diff --git a/linux/system/kernel.sls b/linux/system/kernel.sls
index 3dc3046..59405d0 100644
--- a/linux/system/kernel.sls
+++ b/linux/system/kernel.sls
@@ -1,4 +1,5 @@
 {%- from "linux/map.jinja" import system with context %}
+{%- from "linux/map.jinja" import sysctl_min_kernel %}
 {%- if system.enabled %}
 
 {%- if system.kernel is defined %}
@@ -82,13 +83,19 @@
   {%- endfor %}
 {%- endif %}
 
+{%- set cur_kernel = salt['grains.get']('kernelrelease') %}
+
 {%- for sysctl_name, sysctl_value in system.kernel.get('sysctl', {}).items() %}
 
+  {%- if not sysctl_name in sysctl_min_kernel or salt['pkg.version_cmp'](cur_kernel, sysctl_min_kernel[sysctl_name]) >= 0 %}
+
 linux_kernel_{{ sysctl_name }}:
   sysctl.present:
   - name: {{ sysctl_name }}
   - value: {{ sysctl_value }}
 
+  {%- endif %}
+
 {%- endfor %}
 
 {%- endif %}