+Four types of filtering are supported which are referred to as Perfect Match, Signature, Perfect-mac-vlan and
+Perfect-tunnel filters, the match mode is set by the ``--pkt-filter-mode`` command-line parameter:
+
+* Perfect match filters.
+ The hardware checks a match between the masked fields of the received packets and the programmed filters.
+ The masked fields are for IP flow.
+
+* Signature filters.
+ The hardware checks a match between a hash-based signature of the masked fields of the received packet.
+
+* Perfect-mac-vlan match filters.
+ The hardware checks a match between the masked fields of the received packets and the programmed filters.
+ The masked fields are for MAC VLAN flow.
+
+* Perfect-tunnel match filters.
+ The hardware checks a match between the masked fields of the received packets and the programmed filters.
+ The masked fields are for tunnel flow.
+
+The Flow Director filters can match the different fields for different type of packet: flow type, specific input set
+per flow type and the flexible payload.
+
+The Flow Director can also mask out parts of all of these fields so that filters
+are only applied to certain fields or parts of the fields.
+
+Different NICs may have different capabilities, command show port fdir (port_id) can be used to acquire the information.
+
+# Commands to add flow director filters of different flow types::
+
+ flow_director_filter (port_id) mode IP (add|del|update) \
+ flow (ipv4-other|ipv4-frag|ipv6-other|ipv6-frag) \
+ src (src_ip_address) dst (dst_ip_address) \
+ tos (tos_value) proto (proto_value) ttl (ttl_value) \
+ vlan (vlan_value) flexbytes (flexbytes_value) \
+ (drop|fwd) pf|vf(vf_id) queue (queue_id) \
+ fd_id (fd_id_value)
+
+ flow_director_filter (port_id) mode IP (add|del|update) \
+ flow (ipv4-tcp|ipv4-udp|ipv6-tcp|ipv6-udp) \
+ src (src_ip_address) (src_port) \
+ dst (dst_ip_address) (dst_port) \
+ tos (tos_value) ttl (ttl_value) \
+ vlan (vlan_value) flexbytes (flexbytes_value) \
+ (drop|fwd) queue pf|vf(vf_id) (queue_id) \
+ fd_id (fd_id_value)
+
+ flow_director_filter (port_id) mode IP (add|del|update) \
+ flow (ipv4-sctp|ipv6-sctp) \
+ src (src_ip_address) (src_port) \
+ dst (dst_ip_address) (dst_port) \
+ tos (tos_value) ttl (ttl_value) \
+ tag (verification_tag) vlan (vlan_value) \
+ flexbytes (flexbytes_value) (drop|fwd) \
+ pf|vf(vf_id) queue (queue_id) fd_id (fd_id_value)
+
+ flow_director_filter (port_id) mode IP (add|del|update) flow l2_payload \
+ ether (ethertype) flexbytes (flexbytes_value) \
+ (drop|fwd) pf|vf(vf_id) queue (queue_id)
+ fd_id (fd_id_value)
+
+ flow_director_filter (port_id) mode MAC-VLAN (add|del|update) \
+ mac (mac_address) vlan (vlan_value) \
+ flexbytes (flexbytes_value) (drop|fwd) \
+ queue (queue_id) fd_id (fd_id_value)
+
+ flow_director_filter (port_id) mode Tunnel (add|del|update) \
+ mac (mac_address) vlan (vlan_value) \
+ tunnel (NVGRE|VxLAN) tunnel-id (tunnel_id_value) \
+ flexbytes (flexbytes_value) (drop|fwd) \
+ queue (queue_id) fd_id (fd_id_value)
+
+For example, to add an ipv4-udp flow type filter::
+
+ testpmd> flow_director_filter 0 mode IP add flow ipv4-udp src 2.2.2.3 32 \
+ dst 2.2.2.5 33 tos 2 ttl 40 vlan 0x1 flexbytes (0x88,0x48) \
+ fwd pf queue 1 fd_id 1
+
+For example, add an ipv4-other flow type filter::
+
+ testpmd> flow_director_filter 0 mode IP add flow ipv4-other src 2.2.2.3 \
+ dst 2.2.2.5 tos 2 proto 20 ttl 40 vlan 0x1 \
+ flexbytes (0x88,0x48) fwd pf queue 1 fd_id 1
+
+flush_flow_director
+~~~~~~~~~~~~~~~~~~~