Revert "bpf: change how we detect device bpf support level"
This reverts commit 8daa0b607043e70cb9a897752e6348fc0d492dab.
Reason for revert: Not clear if O -> R will be supported or not.
Change-Id: I02818f35b4468cb3676a02951876c7768bb0451f
diff --git a/libbpf_android/BpfUtils.cpp b/libbpf_android/BpfUtils.cpp
index 4a4761b..b3ff108 100644
--- a/libbpf_android/BpfUtils.cpp
+++ b/libbpf_android/BpfUtils.cpp
@@ -265,22 +265,28 @@
int kernel_version_major;
int kernel_version_minor;
- // Check the device kernel version
+ uint64_t api_level = GetUintProperty<uint64_t>("ro.product.first_api_level", 0);
+ if (api_level == 0) {
+ ALOGE("Cannot determine initial API level of the device");
+ api_level = GetUintProperty<uint64_t>("ro.build.version.sdk", 0);
+ }
+
+ // Check if the device is shipped originally with android P.
+ if (api_level < MINIMUM_API_REQUIRED) return BpfLevel::NONE;
+
int ret = uname(&buf);
- if (ret) return BpfLevel::NONE;
+ if (ret) {
+ return BpfLevel::NONE;
+ }
char dummy;
ret = sscanf(buf.release, "%d.%d%c", &kernel_version_major, &kernel_version_minor, &dummy);
+ // Check the device kernel version
if (ret < 2) return BpfLevel::NONE;
- if (kernel_version_major > 4) // 5.4+ R+
+ if (kernel_version_major > 4 || (kernel_version_major == 4 && kernel_version_minor >= 14))
return BpfLevel::EXTENDED;
- if (kernel_version_major == 4 && kernel_version_minor >= 19) // 4.19 Q+
- return BpfLevel::EXTENDED;
- if (kernel_version_major == 4 && kernel_version_minor >= 14) // 4.14 P+
- return BpfLevel::EXTENDED;
- if (kernel_version_major == 4 && kernel_version_minor >= 9) // 4.9 P+
- return BpfLevel::BASIC;
+ if (kernel_version_major == 4 && kernel_version_minor >= 9) return BpfLevel::BASIC;
- return BpfLevel::NONE; // 4.4-P
+ return BpfLevel::NONE;
}
} // namespace bpf