diff --git a/server/Android.mk b/server/Android.mk
index 8653919..51d2918 100644
--- a/server/Android.mk
+++ b/server/Android.mk
@@ -92,6 +92,7 @@
         libbase \
         libutils \
         libpcap \
+        libqtaguid \
 
 LOCAL_SRC_FILES := \
         BandwidthController.cpp \
diff --git a/server/TrafficController.cpp b/server/TrafficController.cpp
index aed2bf1..c9ed75f 100644
--- a/server/TrafficController.cpp
+++ b/server/TrafficController.cpp
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+#include <inttypes.h>
 #include <linux/bpf.h>
 #include <linux/if_ether.h>
 #include <linux/in.h>
@@ -22,6 +23,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/socket.h>
+#include <sys/utsname.h>
 
 #include "BpfProgSets.h"
 #include "BpfUtils.h"
@@ -29,6 +31,7 @@
 
 #define LOG_TAG "Netd"
 #include "log/log.h"
+#include "qtaguid/qtaguid.h"
 
 using namespace android::net::bpf;
 using namespace android::net::bpf_prog;
@@ -38,6 +41,28 @@
 
 int TrafficController::start() {
     int ret;
+    struct utsname buf;
+    int kernel_version_major;
+    int kernel_version_minor;
+
+    ret = uname(&buf);
+    if (ret) {
+        ret = -errno;
+        ALOGE("Get system information failed: %s\n", strerror(errno));
+        return ret;
+    }
+    ret = sscanf(buf.release, "%d.%d", &kernel_version_major, &kernel_version_minor);
+    if (ret >= 2 && ((kernel_version_major == 4 && kernel_version_minor >= 9) ||
+                     (kernel_version_major > 4))) {
+        // Turn off the eBPF feature temporarily since the selinux rules and kernel changes are not
+        // landed yet.
+        // TODO: turn back on when all the other dependencies are ready.
+        ebpfSupported = false;
+        return 0;
+    } else {
+        ebpfSupported = false;
+        return 0;
+    }
     ALOGI("START to load TrafficController\n");
     mCookieTagMap = setUpBPFMap(sizeof(uint64_t), sizeof(struct UidTag), COOKIE_UID_MAP_SIZE,
                                 COOKIE_UID_MAP_PATH, BPF_MAP_TYPE_HASH);
@@ -132,6 +157,12 @@
 }
 
 int TrafficController::tagSocket(int sockFd, uint32_t tag, uid_t uid) {
+
+    if (legacy_tagSocket(sockFd, tag, uid))
+      return -errno;
+    if (!ebpfSupported)
+      return 0;
+
     uint64_t sock_cookie = getSocketCookie(sockFd);
     if (sock_cookie == INET_DIAG_NOCOOKIE) return -errno;
     UidTag newKey = {.uid = (uint32_t)uid, .tag = tag};
@@ -151,6 +182,10 @@
 }
 
 int TrafficController::untagSocket(int sockFd) {
+
+    if (legacy_untagSocket(sockFd))
+        return -errno;
+    if (!ebpfSupported) return 0;
     uint64_t sock_cookie = getSocketCookie(sockFd);
 
     if (sock_cookie == INET_DIAG_NOCOOKIE) return -errno;
@@ -164,8 +199,10 @@
 
 int TrafficController::setCounterSet(int counterSetNum, uid_t uid) {
     if (counterSetNum < 0 || counterSetNum >= COUNTERSETS_LIMIT) return -EINVAL;
-
     int res;
+    if (legacy_setCounterSet(counterSetNum, uid))
+        return -errno;
+    if (!ebpfSupported) return 0;;
     if (counterSetNum == 0) {
         res = deleteMapEntry(mUidCounterSetMap, &uid);
         if (res == 0 || (res == -1 && errno == ENOENT)) {
@@ -186,6 +223,11 @@
 
 int TrafficController::deleteTagData(uint32_t tag, uid_t uid) {
     int res = 0;
+
+    if (legacy_deleteTagData(tag, uid))
+        return -errno;
+    if (!ebpfSupported) return 0;
+
     uint64_t curCookie = 0;
     uint64_t nextCookie = 0;
     UidTag tmp_uidtag;
@@ -261,10 +303,5 @@
     return res;
 }
 
-int TrafficController::setPacifier(uint32_t on) {
-    ALOGI("TrafficController Pacifier set to: %d", on);
-    return 0;
-}
-
 }  // namespace net
 }  // namespace android
diff --git a/server/TrafficController.h b/server/TrafficController.h
index bbb3640..f0ab694 100644
--- a/server/TrafficController.h
+++ b/server/TrafficController.h
@@ -170,6 +170,7 @@
      * monitoring the traffic on egress side.
      */
     int mOutProgFd;
+    bool ebpfSupported;
 };
 
 }  // namespace net
