diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index fd59071..97d22b8 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -133,10 +133,10 @@
 	printf("  --enable-lro: enable large receive offload.\n");
 	printf("  --enable-rx-cksum: enable rx hardware checksum offload.\n");
 	printf("  --enable-rx-timestamp: enable rx hardware timestamp offload.\n");
-	printf("  --disable-hw-vlan: disable hardware vlan.\n");
-	printf("  --disable-hw-vlan-filter: disable hardware vlan filter.\n");
-	printf("  --disable-hw-vlan-strip: disable hardware vlan strip.\n");
-	printf("  --disable-hw-vlan-extend: disable hardware vlan extend.\n");
+	printf("  --enable-hw-vlan: enable hardware vlan.\n");
+	printf("  --enable-hw-vlan-filter: enable hardware vlan filter.\n");
+	printf("  --enable-hw-vlan-strip: enable hardware vlan strip.\n");
+	printf("  --enable-hw-vlan-extend: enable hardware vlan extend.\n");
 	printf("  --enable-drop-en: enable per queue packet drop.\n");
 	printf("  --disable-rss: disable rss.\n");
 	printf("  --port-topology=N: set port topology (N: paired (default) or "
@@ -585,10 +585,10 @@
 		{ "enable-rx-cksum",            0, 0, 0 },
 		{ "enable-rx-timestamp",        0, 0, 0 },
 		{ "enable-scatter",             0, 0, 0 },
-		{ "disable-hw-vlan",            0, 0, 0 },
-		{ "disable-hw-vlan-filter",     0, 0, 0 },
-		{ "disable-hw-vlan-strip",      0, 0, 0 },
-		{ "disable-hw-vlan-extend",     0, 0, 0 },
+		{ "enable-hw-vlan",             0, 0, 0 },
+		{ "enable-hw-vlan-filter",      0, 0, 0 },
+		{ "enable-hw-vlan-strip",       0, 0, 0 },
+		{ "enable-hw-vlan-extend",      0, 0, 0 },
 		{ "enable-drop-en",            0, 0, 0 },
 		{ "disable-rss",                0, 0, 0 },
 		{ "port-topology",              1, 0, 0 },
@@ -886,20 +886,20 @@
 			if (!strcmp(lgopts[opt_idx].name,
 					"enable-rx-timestamp"))
 				rx_offloads |= DEV_RX_OFFLOAD_TIMESTAMP;
-			if (!strcmp(lgopts[opt_idx].name, "disable-hw-vlan"))
-				rx_offloads &= ~DEV_RX_OFFLOAD_VLAN;
+			if (!strcmp(lgopts[opt_idx].name, "enable-hw-vlan"))
+				rx_offloads |= DEV_RX_OFFLOAD_VLAN;
 
 			if (!strcmp(lgopts[opt_idx].name,
-					"disable-hw-vlan-filter"))
-				rx_offloads &= ~DEV_RX_OFFLOAD_VLAN_FILTER;
+					"enable-hw-vlan-filter"))
+				rx_offloads |= DEV_RX_OFFLOAD_VLAN_FILTER;
 
 			if (!strcmp(lgopts[opt_idx].name,
-					"disable-hw-vlan-strip"))
-				rx_offloads &= ~DEV_RX_OFFLOAD_VLAN_STRIP;
+					"enable-hw-vlan-strip"))
+				rx_offloads |= DEV_RX_OFFLOAD_VLAN_STRIP;
 
 			if (!strcmp(lgopts[opt_idx].name,
-					"disable-hw-vlan-extend"))
-				rx_offloads &= ~DEV_RX_OFFLOAD_VLAN_EXTEND;
+					"enable-hw-vlan-extend"))
+				rx_offloads |= DEV_RX_OFFLOAD_VLAN_EXTEND;
 
 			if (!strcmp(lgopts[opt_idx].name, "enable-drop-en"))
 				rx_drop_en = 1;
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 5dc8cca..14d40ac 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -305,9 +305,7 @@ struct fwd_engine * fwd_engines[] = {
  */
 struct rte_eth_rxmode rx_mode = {
 	.max_rx_pkt_len = ETHER_MAX_LEN, /**< Default maximum frame length. */
-	.offloads = (DEV_RX_OFFLOAD_VLAN_FILTER |
-		     DEV_RX_OFFLOAD_VLAN_STRIP |
-		     DEV_RX_OFFLOAD_CRC_STRIP),
+	.offloads = DEV_RX_OFFLOAD_CRC_STRIP,
 	.ignore_offload_bitfield = 1,
 };
 
@@ -667,7 +665,7 @@ static int eth_event_callback(portid_t port_id,
 
 	RTE_ETH_FOREACH_DEV(pid) {
 		port = &ports[pid];
-		/* Apply default Tx configuration for all ports */
+		/* Apply default TxRx configuration for all ports */
 		port->dev_conf.txmode = tx_mode;
 		port->dev_conf.rxmode = rx_mode;
 		rte_eth_dev_info_get(pid, &port->dev_info);
@@ -675,7 +673,10 @@ static int eth_event_callback(portid_t port_id,
 		      DEV_TX_OFFLOAD_MBUF_FAST_FREE))
 			port->dev_conf.txmode.offloads &=
 				~DEV_TX_OFFLOAD_MBUF_FAST_FREE;
-
+		if (!(port->dev_info.rx_offload_capa &
+		      DEV_RX_OFFLOAD_CRC_STRIP))
+			port->dev_conf.rxmode.offloads &=
+				~DEV_RX_OFFLOAD_CRC_STRIP;
 		if (numa_support) {
 			if (port_numa[pid] != NUMA_NO_CONFIG)
 				port_per_socket[port_numa[pid]]++;
diff --git a/doc/guides/contributing/documentation.rst b/doc/guides/contributing/documentation.rst
index 170dacd..82f2e1b 100644
--- a/doc/guides/contributing/documentation.rst
+++ b/doc/guides/contributing/documentation.rst
@@ -294,7 +294,7 @@ Line Length
 
      testpmd -l 2-3 -n 4 \
              --vdev=virtio_user0,path=/dev/vhost-net,queues=2,queue_size=1024 \
-             -- -i --txqflags=0x0 --disable-hw-vlan --enable-lro \
+             -- -i --txqflags=0x0 --enable-hw-vlan --enable-lro \
              --enable-rx-cksum --txq=2 --rxq=2 --rxd=1024  --txd=1024
 
 
diff --git a/doc/guides/howto/lm_virtio_vhost_user.rst b/doc/guides/howto/lm_virtio_vhost_user.rst
index 9402ed8..0661e88 100644
--- a/doc/guides/howto/lm_virtio_vhost_user.rst
+++ b/doc/guides/howto/lm_virtio_vhost_user.rst
@@ -466,4 +466,4 @@ run_testpmd_in_vm.sh
    # test system has 8 cpus (0-7), use cpus 2-7 for VM
 
    /root/dpdk/x86_64-default-linuxapp-gcc/app/testpmd \
-   -l 0-5 -n 4 --socket-mem 350 -- --burst=64 --i --disable-hw-vlan-filter
+   -l 0-5 -n 4 --socket-mem 350 -- --burst=64 --i
diff --git a/doc/guides/howto/pvp_reference_benchmark.rst b/doc/guides/howto/pvp_reference_benchmark.rst
index 228b4a2..67fa232 100644
--- a/doc/guides/howto/pvp_reference_benchmark.rst
+++ b/doc/guides/howto/pvp_reference_benchmark.rst
@@ -158,7 +158,7 @@ Testpmd launch
       $RTE_SDK/install/bin/testpmd -l 0,2,3,4,5 --socket-mem=1024 -n 4 \
           --vdev 'net_vhost0,iface=/tmp/vhost-user1' \
           --vdev 'net_vhost1,iface=/tmp/vhost-user2' -- \
-          --portmask=f --disable-hw-vlan -i --rxq=1 --txq=1 \
+          --portmask=f -i --rxq=1 --txq=1 \
           --nb-cores=4 --forward-mode=io
 
    With this command, isolated CPUs 2 to 5 will be used as lcores for PMD threads.
@@ -375,7 +375,7 @@ Start testpmd:
       $RTE_SDK/install/bin/testpmd -l 0,1,2 --socket-mem 1024 -n 4 \
           --proc-type auto --file-prefix pg -- \
           --portmask=3 --forward-mode=macswap --port-topology=chained \
-          --disable-hw-vlan --disable-rss -i --rxq=1 --txq=1 \
+          --disable-rss -i --rxq=1 --txq=1 \
           --rxd=256 --txd=256 --nb-cores=2 --auto-start
 
 Results template
diff --git a/doc/guides/howto/virtio_user_as_exceptional_path.rst b/doc/guides/howto/virtio_user_as_exceptional_path.rst
index 3f99fe8..393f002 100644
--- a/doc/guides/howto/virtio_user_as_exceptional_path.rst
+++ b/doc/guides/howto/virtio_user_as_exceptional_path.rst
@@ -84,7 +84,7 @@ compiling the kernel and those kernel modules should be inserted.
 
         $(testpmd) -l 2-3 -n 4 \
 		--vdev=virtio_user0,path=/dev/vhost-net,queue_size=1024 \
-		-- -i --txqflags=0x0 --disable-hw-vlan --enable-lro \
+		-- -i --txqflags=0x0 --enable-lro \
 		--enable-rx-cksum --rxd=1024 --txd=1024
 
     This command runs testpmd with two ports, one physical NIC to communicate
@@ -113,7 +113,7 @@ compiling the kernel and those kernel modules should be inserted.
 
         $(testpmd) -l 2-3 -n 4 \
 		--vdev=virtio_user0,path=/dev/vhost-net,queues=2,queue_size=1024 \
-		-- -i --txqflags=0x0 --disable-hw-vlan --enable-lro \
+		-- -i --txqflags=0x0 --enable-lro \
 		--enable-rx-cksum --txq=2 --rxq=2 --rxd=1024 \
 		--txd=1024
 
diff --git a/doc/guides/nics/mrvl.rst b/doc/guides/nics/mrvl.rst
index 77b2d66..b7f3292 100644
--- a/doc/guides/nics/mrvl.rst
+++ b/doc/guides/nics/mrvl.rst
@@ -215,7 +215,7 @@ Usage example
 .. code-block:: console
 
    ./testpmd --vdev=eth_mrvl,iface=eth0,iface=eth2,cfg=/home/user/mrvl.conf \
-     -c 7 -- -i -a --disable-hw-vlan-strip --rxq=2
+     -c 7 -- -i -a --rxq=2
 
 
 Building DPDK
@@ -272,4 +272,4 @@ In order to run testpmd example application following command can be used:
 
    ./testpmd --vdev=eth_mrvl,iface=eth0,iface=eth2 -c 7 -- \
      --burst=128 --txd=2048 --rxd=1024 --rxq=2 --txq=2  --nb-cores=2 \
-     -i -a --disable-hw-vlan-strip --rss-udp
+     -i -a --rss-udp
diff --git a/doc/guides/nics/octeontx.rst b/doc/guides/nics/octeontx.rst
index 212fe34..8e2a2b7 100644
--- a/doc/guides/nics/octeontx.rst
+++ b/doc/guides/nics/octeontx.rst
@@ -88,8 +88,8 @@ following ``make`` command:
                 --mbuf-pool-ops-name="octeontx_fpavf" \
                 --vdev='event_octeontx' \
                 --vdev='eth_octeontx,nr_port=2' \
-                -- --rxq=1 --txq=1 --nb-core=2 --total-num-mbufs=16384 \
-                --disable-hw-vlan-filter -i
+                -- --rxq=1 --txq=1 --nb-core=2 \
+                --total-num-mbufs=16384 -i
       .....
       EAL: Detected 24 lcore(s)
       EAL: Probing VFIO support...
diff --git a/doc/guides/nics/thunderx.rst b/doc/guides/nics/thunderx.rst
index 1c800e7..5270ef2 100644
--- a/doc/guides/nics/thunderx.rst
+++ b/doc/guides/nics/thunderx.rst
@@ -177,7 +177,7 @@ This section provides instructions to configure SR-IOV with Linux OS.
    .. code-block:: console
 
       ./arm64-thunderx-linuxapp-gcc/app/testpmd -l 0-3 -n 4 -w 0002:01:00.2 \
-        -- -i --disable-hw-vlan-filter --disable-crc-strip --no-flush-rx \
+        -- -i --no-flush-rx \
         --port-topology=loop
 
       ...
diff --git a/doc/guides/nics/virtio.rst b/doc/guides/nics/virtio.rst
index af82f86..90751e9 100644
--- a/doc/guides/nics/virtio.rst
+++ b/doc/guides/nics/virtio.rst
@@ -78,8 +78,9 @@ In this release, the virtio PMD driver provides the basic functionality of packe
     by default. Tx queue size is still hard-coded to be 256.
 
 *   Features of mac/vlan filter are supported, negotiation with vhost/backend are needed to support them.
-    When backend can't support vlan filter, virtio app on guest should disable vlan filter to make sure
-    the virtio port is configured correctly. E.g. specify '--disable-hw-vlan' in testpmd command line.
+    When backend can't support vlan filter, virtio app on guest should not enable vlan filter in order
+    to make sure the virtio port is configured correctly. E.g. do not specify '--enable-hw-vlan' in testpmd
+    command line.
 
 *   "RTE_PKTMBUF_HEADROOM" should be defined
     no less than "sizeof(struct virtio_net_hdr_mrg_rxbuf)", which is 12 bytes when mergeable or
diff --git a/doc/guides/testpmd_app_ug/run_app.rst b/doc/guides/testpmd_app_ug/run_app.rst
index 46da1df..782be3e 100644
--- a/doc/guides/testpmd_app_ug/run_app.rst
+++ b/doc/guides/testpmd_app_ug/run_app.rst
@@ -315,21 +315,21 @@ The commandline options are:
 
     Enable scatter (multi-segment) RX.
 
-*   ``--disable-hw-vlan``
+*   ``--enable-hw-vlan``
 
-    Disable hardware VLAN.
+    Enable hardware VLAN.
 
-*   ``--disable-hw-vlan-filter``
+*   ``--enable-hw-vlan-filter``
 
-    Disable hardware VLAN filter.
+    Enable hardware VLAN filter.
 
-*   ``--disable-hw-vlan-strip``
+*   ``--enable-hw-vlan-strip``
 
-    Disable hardware VLAN strip.
+    Enable hardware VLAN strip.
 
-*   ``--disable-hw-vlan-extend``
+*   ``--enable-hw-vlan-extend``
 
-    Disable hardware VLAN extend.
+    Enable hardware VLAN extend.
 
 *   ``--enable-drop-en``
 
diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
index d8c9ef0..a63b236 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -1706,9 +1706,9 @@ Set hardware VLAN on or off for all ports::
 
    testpmd> port config all hw-vlan (on|off)
 
-Hardware VLAN is on by default.
+Hardware VLAN is off by default.
 
-The ``off`` option is equivalent to the ``--disable-hw-vlan`` command-line option.
+The ``on`` option is equivalent to the ``--enable-hw-vlan`` command-line option.
 
 port config - VLAN filter
 ~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1717,9 +1717,9 @@ Set hardware VLAN filter on or off for all ports::
 
    testpmd> port config all hw-vlan-filter (on|off)
 
-Hardware VLAN filter is on by default.
+Hardware VLAN filter is off by default.
 
-The ``off`` option is equivalent to the ``--disable-hw-vlan-filter`` command-line option.
+The ``on`` option is equivalent to the ``--enable-hw-vlan-filter`` command-line option.
 
 port config - VLAN strip
 ~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1728,9 +1728,9 @@ Set hardware VLAN strip on or off for all ports::
 
    testpmd> port config all hw-vlan-strip (on|off)
 
-Hardware VLAN strip is on by default.
+Hardware VLAN strip is off by default.
 
-The ``off`` option is equivalent to the ``--disable-hw-vlan-strip`` command-line option.
+The ``on`` option is equivalent to the ``--enable-hw-vlan-strip`` command-line option.
 
 port config - VLAN extend
 ~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1741,7 +1741,7 @@ Set hardware VLAN extend on or off for all ports::
 
 Hardware VLAN extend is off by default.
 
-The ``off`` option is equivalent to the ``--disable-hw-vlan-extend`` command-line option.
+The ``on`` option is equivalent to the ``--enable-hw-vlan-extend`` command-line option.
 
 port config - Drop Packets
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
