diff --git a/test_plans/ddp_gtp_qregion_test_plan.rst b/test_plans/ddp_gtp_qregion_test_plan.rst
index bc3b9b68..ba928386 100644
--- a/test_plans/ddp_gtp_qregion_test_plan.rst
+++ b/test_plans/ddp_gtp_qregion_test_plan.rst
@@ -53,12 +53,9 @@ Prerequisites
     ./tools/dpdk-devbind.py -b igb_uio 81:00.0
 
 2. Start testpmd on host, set chained port topology mode, add txq/rxq to 
-   enable multi-queues. If test PF flow director, need to add 
-   --pkt-filter-mode=perfect on testpmd to enable flow director. In general, 
-   PF's max queue is 64::
+   enable multi-queues. In general, PF's max queue is 64::
 
-    ./<build>/app/dpdk-testpmd -c f -n 4 -- -i --pkt-filter-mode=perfect
-    --port-topology=chained --txq=64 --rxq=64
+    ./<build>/app/dpdk-testpmd -c f -n 4 -- -i --port-topology=chained --txq=64 --rxq=64
 
 
 Load/delete dynamic device personalization 
@@ -668,419 +665,6 @@ Test Case: Inner IPv6 dst controls GTP-U IPv6 queue in queue region
      IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0002",
      dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/UDP()/Raw('x'*20)
 
-
-Test Case: Flow director for GTP IPv4 with default fd input set
-===============================================================
-1. Check flow type to pctype mapping::
-
-    testpmd> show port 0 pctype mapping
-
-2. Update GTP IPv4 flow type id 26 to pctype id 22 mapping item::
-
-    testpmd> port config 0 pctype mapping update 22 26
-
-3. Default flow director input set is teid, start testpmd, set fwd rxonly,
-   enable output print
-
-4. Send GTP IPv4 packets, check to receive packet from queue 0::
-
-    p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/IP(src="1.1.1.1",
-    dst="2.2.2.2")/UDP(sport=40, dport=50)/Raw('x'*20)
-
-5. Use scapy to generate GTP IPv4 raw packet test_gtp.raw, source/destination
-   address and port should be swapped in the template and traffic packets::
-
-    a=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/IP(dst="1.1.1.1",
-    src="2.2.2.2")/UDP(dport=40, sport=50)/Raw('x'*20)
-
-6. Setup raw flow type filter for flow director, configured queue is random 
-   queue between 1~63, such as 36::
-
-    testpmd> flow_director_filter 0 mode raw add flow 26 fwd queue 36
-             fd_id 1 packet test_gtp.raw
-
-7. Send matched swapped traffic packet, check to receive packet from
-   configured queue 36::
-
-    p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/IP(src="1.1.1.1",
-    dst="2.2.2.2")/UDP(sport=40, dport=50)/Raw('x'*20)
-
-10. Send non-matched inner src IPv4/dst IPv4/sport/dport packets, check to 
-    receive packets from queue 36::
-
-     p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/IP(src="1.1.1.2",
-     dst="2.2.2.2")/UDP(sport=40, dport=50)/Raw('x'*20)
-     p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/IP(src="1.1.1.1",
-     dst="2.2.2.3")/UDP(sport=40, dport=50)/Raw('x'*20)
-     p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/IP(src="1.1.1.1",
-     dst="2.2.2.2")/UDP(sport=41, dport=50)/Raw('x'*20)
-     p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/IP(src="1.1.1.1",
-     dst="2.2.2.2")/UDP(sport=40, dport=51)/Raw('x'*20)
-
-11. Send non-matched teid GTP IPv4 packets, check to receive packet from
-    queue 0::
-
-     p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header(teid=0xff)/IP(src="1.1.1.1",
-     dst="2.2.2.2")/UDP(sport=40, dport=50)/Raw('x'*20)
-
-
-Test Case: Flow director for GTP IPv4 according to inner dst IPv4
-=================================================================
-1. Check flow type to pctype mapping::
-
-    testpmd> show port 0 pctype mapping
-
-2. Update GTP IPv4 flow type id 26 to pctype id 22 mapping item::
-
-    testpmd> port config 0 pctype mapping update 22 26
-
-3. Reset GTP IPv4 flow director configure::
-
-    testpmd> port config 0 pctype 22 fdir_inset clear all
-
-4. Inner dst IPv4 words are 27 and 28, enable flow director input set for
-   them::
-
-    testpmd> port config 0 pctype 22 fdir_inset set field 27
-    testpmd> port config 0 pctype 22 fdir_inset set field 28
-
-5. Start testpmd, set fwd rxonly, enable output print
-
-6. Send GTP IPv4 packets, check to receive packet from queue 0::
-
-    p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header()/IP(src="1.1.1.1",
-    dst="2.2.2.2")/UDP(sport=40, dport=50)/Raw('x'*20)
-
-7. Use scapy to generate GTP IPv4 raw packet test_gtp.raw, source/destination
-   address and port should be swapped in the template and traffic packets::
-
-    a=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header()/IP(dst="1.1.1.1",
-    src="2.2.2.2")/UDP(dport=40, sport=50)/Raw('x'*20)
-
-8. Setup raw flow type filter for flow director, configured queue is random 
-   queue between 1~63, such as 36::
-
-    testpmd> flow_director_filter 0 mode raw add flow 26 fwd queue 36
-             fd_id 1 packet test_gtp.raw
-
-9. Send matched swapped traffic packet, check to receive packet from
-   configured queue 36::
-
-    p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header()/IP(src="1.1.1.1",
-    dst="2.2.2.2")/UDP(sport=40, dport=50)/Raw('x'*20)
-
-10. Send non-matched inner src IPv4/sport/dport packets, check to receive
-    packets from queue 36::
- 
-     p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header()/IP(src="1.1.1.2",
-     dst="2.2.2.2")/UDP(sport=40, dport=50)/Raw('x'*20)
-     p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header()/IP(src="1.1.1.1",
-     dst="2.2.2.2")/UDP(sport=41, dport=50)/Raw('x'*20)
-     p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header()/IP(src="1.1.1.1",
-     dst="2.2.2.2")/UDP(sport=40, dport=51)/Raw('x'*20)
-
-11. Send non-matched inner dst IPv4 packets, check to receive packet from
-    queue 0::
-
-     p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header()/IP(src="1.1.1.1",
-     dst="2.2.2.3")/UDP(sport=40, dport=50)/Raw('x'*20)
-
-
-Test Case: Flow director for GTP IPv4 according to inner src IPv4
-=================================================================
-1. Check flow ptype to pctype mapping::
-
-    testpmd> show port 0 pctype mapping
-
-2. Update GTP IPv4 flow type id 26 to pctype id 22 mapping item::
-
-    testpmd> port config 0 pctype mapping update 22 26
-
-3. Reset GTP IPv4 flow director configure::
-
-    testpmd> port config 0 pctype 22 fdir_inset clear all
-
-4. Inner src IPv4 words are 15 and 16, enable flow director input set for
-   them::
-
-    testpmd> port config 0 pctype 22 fdir_inset set field 15
-    testpmd> port config 0 pctype 22 fdir_inset set field 16
-
-5. Start testpmd, set fwd rxonly, enable output print
-
-6. Send GTP IPv4 packets, check to receive packet from queue 0::
-
-    p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header()/IP(src="1.1.1.1",
-    dst="2.2.2.2")/UDP(sport=40, dport=50)/Raw('x'*20)
-
-7. Use scapy to generate GTP IPv4 raw packet test_gtp.raw, source/destination
-   address and port should be swapped in the template and traffic packets::
-
-    a=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header()/IP(dst="1.1.1.1",
-    src="2.2.2.2")/UDP(dport=40, sport=50)/Raw('x'*20)
-
-8. Setup raw flow type filter for flow director, configured queue is random 
-   queue between 1~63, such as 36::
-
-    testpmd> flow_director_filter 0 mode raw add flow 26 fwd queue 36
-             fd_id 1 packet test_gtp.raw
-
-9. Send matched swapped traffic packet, check to receive packet from
-   configured queue 36::
-
-    p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header()/IP(src="1.1.1.1",
-    dst="2.2.2.2")/UDP(sport=40, dport=50)/Raw('x'*20)
-
-10. Send non-matched inner dst IPv4/sport/dport packets, check to receive
-    packets from queue 36::
-
-     p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header()/IP(src="1.1.1.1",
-     dst="2.2.2.3")/UDP(sport=40, dport=50)/Raw('x'*20)
-     p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header()/IP(src="1.1.1.1",
-     dst="2.2.2.2")/UDP(sport=41, dport=50)/Raw('x'*20)
-     p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header()/IP(src="1.1.1.1",
-     dst="2.2.2.2")/UDP(sport=40, dport=51)/Raw('x'*20)
-
-11. Send non-matched inner src IPv4 packets, check to receive packet
-    from queue 0::
-
-     p=Ether()/IPv6()/UDP(dport=2152)/GTP_U_Header()/IP(src="1.1.1.2",
-     dst="2.2.2.2")/UDP(sport=40, dport=50)/Raw('x'*20)
-
-
-Test Case: Flow director for GTP IPv6 with default fd input set
-===============================================================
-1. Check flow type to pctype mapping::
-
-    testpmd> show port 0 pctype mapping
-
-2. Update GTP IPv6 flow type id 23 to pctype id 23 mapping item::
-
-    testpmd> port config 0 pctype mapping update 23 23
-
-3. Default flow director input set is teid, start testpmd, set fwd rxonly,
-   enable output print
-
-4. Send GTP IPv6 packets, check to receive packet from queue 0::
-
-    p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-    IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-    dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-    UDP(sport=40,dport=50)/Raw('x'*20)
-
-5. Use scapy to generate GTP IPv6 raw packet test_gtp.raw, source/destination
-   address and port should be swapped in the template and traffic packets::
-
-    a=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-    IPv6(dst="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-    src="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-    UDP(dport=40,sport=50)/Raw('x'*20)
-
-6. Setup raw flow type filter for flow director, configured queue is random 
-   queue between 1~63, such as 36::
-
-    testpmd> flow_director_filter 0 mode raw add flow 23 fwd queue 36
-             fd_id 1 packet test_gtp.raw
-
-7. Send matched swapped traffic packet, check to receive packet from
-   configured queue 36::
-    
-    p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-    IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-    dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-    UDP(sport=40,dport=50)/Raw('x'*20)
-
-8. Send non-matched inner src IPv6/dst IPv6/sport/dport packets, check to 
-   receive packets from queue 36::
-
-    p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-    IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0002",
-    dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-    UDP(sport=40,dport=50)/Raw('x'*20)
-    p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-    IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-    dst="2001:0db8:85a3:0000:0000:8a2e:0370:0002")/
-    UDP(sport=40,dport=50)/Raw('x'*20)
-    p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-    IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-    dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-    UDP(sport=41,dport=50)/Raw('x'*20)
-    p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-    IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-    dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-    UDP(sport=40,dport=51)/Raw('x'*20)
-
-11. Send non-matched teid packets, check to receive packet
-    from queue 0::
-
-     p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xff)/
-     IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-     dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-     UDP(sport=40,dport=50)/Raw('x'*20)
-
-
-Test Case: Flow director for GTP IPv6 according to inner dst IPv6
-=================================================================
-1. Check flow type to pctype mapping::
-
-    testpmd> show port 0 pctype mapping
-
-2. Update GTP IPv6 flow type id 23 to pctype id 23 mapping item::
-
-    testpmd> port config 0 pctype mapping update 23 23
-
-3. Reset GTP IPv6 flow director configure::
-
-    testpmd> port config 0 pctype 23 fdir_inset clear all
-
-4. Inner dst IPv6 words are 21~28 , enable flow director input set for them::
-
-    testpmd> port config 0 pctype 23 fdir_inset set field 21
-    testpmd> port config 0 pctype 23 fdir_inset set field 22
-    testpmd> port config 0 pctype 23 fdir_inset set field 23
-    testpmd> port config 0 pctype 23 fdir_inset set field 24
-    testpmd> port config 0 pctype 23 fdir_inset set field 25
-    testpmd> port config 0 pctype 23 fdir_inset set field 26
-    testpmd> port config 0 pctype 23 fdir_inset set field 27
-    testpmd> port config 0 pctype 23 fdir_inset set field 28
-
-5. Start testpmd, set fwd rxonly, enable output print
-
-6. Send GTP IPv6 packets, check to receive packet from queue 0::
-
-    p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-    IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-    dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-    UDP(sport=40,dport=50)/Raw('x'*20)
-
-7. Use scapy to generate GTP IPv6 raw packet test_gtp.raw, source/destination
-   address and port should be swapped in the template and traffic packets::
-
-    a=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-    IPv6(dst="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-    src="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-    UDP(dport=40,sport=50)/Raw('x'*20)
-
-8. Setup raw flow type filter for flow director, configured queue is random 
-   queue between 1~63, such as 36::
-
-    testpmd> flow_director_filter 0 mode raw add flow 23 fwd queue 36
-             fd_id 1 packet test_gtp.raw
-
-9. Send matched swapped traffic packet, check to receive packet from
-   configured queue 36::
-    
-    p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-    IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-    dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-    UDP(sport=40,dport=50)/Raw('x'*20)
-
-10. Send non-matched inner src IPv6/sport/dport packets, check to receive
-    packets from queue 36::
-
-     p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-     IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0002",
-     dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-     UDP(sport=40,dport=50)/Raw('x'*20)
-     p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-     IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-     dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-     UDP(sport=41,dport=50)/Raw('x'*20)
-     p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-     IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-     dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-     UDP(sport=40,dport=51)/Raw('x'*20)
-
-11. Send non-matched inner dst IPv6 packets, check to receive packet
-    from queue 0::
-
-     p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-     IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-     dst="2001:0db8:85a3:0000:0000:8a2e:0370:0002")/
-     UDP(sport=40,dport=50)/Raw('x'*20)
-
-
-Test Case: Flow director for GTP IPv6 according to inner src IPv6
-=================================================================
-1. Check flow type to pctype mapping::
-
-    testpmd> show port 0 pctype mapping
-
-2. Update GTP IPv6 flow type id 23 to pctype id 23 mapping item::
-
-    testpmd> port config 0 pctype mapping update 23 23
-
-3. Reset GTP IPv6 flow director configure::
-
-    testpmd> port config 0 pctype 23 fdir_inset clear all
-
-4. Inner src IPv6 words are 13~20, enable flow director input set for them::
-
-    testpmd> port config 0 pctype 23 fdir_inset set field 13
-    testpmd> port config 0 pctype 23 fdir_inset set field 14
-    testpmd> port config 0 pctype 23 fdir_inset set field 15
-    testpmd> port config 0 pctype 23 fdir_inset set field 16
-    testpmd> port config 0 pctype 23 fdir_inset set field 17
-    testpmd> port config 0 pctype 23 fdir_inset set field 18
-    testpmd> port config 0 pctype 23 fdir_inset set field 19
-    testpmd> port config 0 pctype 23 fdir_inset set field 20
-
-5. Start testpmd, set fwd rxonly, enable output print
-
-6. Send GTP IPv6 packets, check to receive packet from queue 0::
-
-    p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-    IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-    dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-    UDP(sport=40,dport=50)/Raw('x'*20)
-
-7. Use scapy to generate GTP IPv6 raw packet test_gtp.raw, source/destination
-   address and port should be swapped in the template and traffic packets::
-
-    a=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-    IPv6(dst="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-    src="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-    UDP(dport=40,sport=50)/Raw('x'*20)
-
-8. Setup raw flow type filter for flow director, configured queue is random 
-   queue between 1~63, such as 36::
-
-    testpmd> flow_director_filter 0 mode raw add flow 23 fwd queue 36
-             fd_id 1 packet test_gtp.raw
-
-9. Send matched swapped traffic packet, check to receive packet from
-   configured queue 36::
-
-    p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-    IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-    dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-    UDP(sport=40,dport=50)/Raw('x'*20)
-
-10. Send non-matched inner dst IPv6/sport/dport packets, check to receive
-    packets from queue 36::
-
-     p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-     IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-     dst="2001:0db8:85a3:0000:0000:8a2e:0370:0002")/
-     UDP(sport=40,dport=50)/Raw('x'*20)
-     p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-     IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-     dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-     UDP(sport=41,dport=50)/Raw('x'*20)
-     p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-     IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0001",
-     dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-     UDP(sport=40,dport=51)/Raw('x'*20)
-
-11. Send non-matched inner src IPv6 packets, check to receive packet from
-    queue 0::
-
-     p=Ether()/IP()/UDP(dport=2152)/GTP_U_Header(teid=0xfe)/
-     IPv6(src="1001:0db8:85a3:0000:0000:8a2e:0370:0002",
-     dst="2001:0db8:85a3:0000:0000:8a2e:0370:0001")/
-     UDP(sport=40,dport=50)/Raw('x'*20)
-
-
 Test Case: Outer 64 bit prefix dst controls GTP-C queue
 =======================================================
 1. Check flow type to pctype mapping::
