diff --git a/daemon/face/generic-link-service.cpp b/daemon/face/generic-link-service.cpp
index 20c1cb8..25d52bd 100644
--- a/daemon/face/generic-link-service.cpp
+++ b/daemon/face/generic-link-service.cpp
@@ -305,14 +305,10 @@
   }
 
   if (firstPkt.has<lp::CachePolicyField>()) {
-    if (m_options.allowLocalFields) {
-      // In case of an invalid CachePolicyType, get<lp::CachePolicyField> will throw,
-      // so it's unnecessary to check here.
-      data->setTag(make_shared<lp::CachePolicyTag>(firstPkt.get<lp::CachePolicyField>()));
-    }
-    else {
-      NFD_LOG_FACE_WARN("received CachePolicy, but local fields disabled: IGNORE");
-    }
+    // CachePolicy is unprivileged and does not require allowLocalFields option.
+    // In case of an invalid CachePolicyType, get<lp::CachePolicyField> will throw,
+    // so it's unnecessary to check here.
+    data->setTag(make_shared<lp::CachePolicyTag>(firstPkt.get<lp::CachePolicyField>()));
   }
 
   if (firstPkt.has<lp::IncomingFaceIdField>()) {
diff --git a/tests/daemon/face/generic-link-service.t.cpp b/tests/daemon/face/generic-link-service.t.cpp
index d252078..bcff9de 100644
--- a/tests/daemon/face/generic-link-service.t.cpp
+++ b/tests/daemon/face/generic-link-service.t.cpp
@@ -537,12 +537,13 @@
   BOOST_CHECK(receivedNacks.empty());
 }
 
-BOOST_AUTO_TEST_CASE(ReceiveCacheControl)
+BOOST_AUTO_TEST_CASE(ReceiveCachePolicy)
 {
-  // Initialize with Options that enables local fields
+  // Initialize with Options that disables local fields
   GenericLinkService::Options options;
-  options.allowLocalFields = true;
+  options.allowLocalFields = false;
   initialize(options);
+  // CachePolicy is unprivileged and does not require allowLocalFields option.
 
   shared_ptr<Data> data = makeData("/12345678");
   lp::Packet packet(data->wireEncode());
@@ -556,27 +557,7 @@
   BOOST_CHECK_EQUAL(tag->get().getPolicy(), lp::CachePolicyType::NO_CACHE);
 }
 
-BOOST_AUTO_TEST_CASE(ReceiveCacheControlDisabled)
-{
-  // Initialize with Options that disables local fields
-  GenericLinkService::Options options;
-  options.allowLocalFields = false;
-  initialize(options);
-
-  shared_ptr<Data> data = makeData("/12345678");
-  lp::Packet packet(data->wireEncode());
-  lp::CachePolicy policy;
-  policy.setPolicy(lp::CachePolicyType::NO_CACHE);
-  packet.set<lp::CachePolicyField>(policy);
-
-  transport->receivePacket(packet.wireEncode());
-
-  BOOST_CHECK_EQUAL(service->getCounters().nInNetInvalid, 0); // not an error
-  BOOST_REQUIRE_EQUAL(receivedData.size(), 1);
-  BOOST_CHECK(receivedData.back().getTag<lp::CachePolicyTag>() == nullptr);
-}
-
-BOOST_AUTO_TEST_CASE(ReceiveCacheControlDropInterest)
+BOOST_AUTO_TEST_CASE(ReceiveCachePolicyDropInterest)
 {
   // Initialize with Options that enables local fields
   GenericLinkService::Options options;
@@ -595,7 +576,7 @@
   BOOST_CHECK(receivedInterests.empty());
 }
 
-BOOST_AUTO_TEST_CASE(ReceiveCacheControlDropNack)
+BOOST_AUTO_TEST_CASE(ReceiveCachePolicyDropNack)
 {
   // Initialize with Options that enables local fields
   GenericLinkService::Options options;
