.hw_features = MTK_HW_FEATURES,
        .required_clks = MT7621_CLKS_BITMAP,
        .required_pctl = false,
-       .offload_version = 2,
+       .offload_version = 1,
        .hash_offset = 2,
        .foe_entry_size = sizeof(struct mtk_foe_entry) - 16,
        .txrx = {
        .hw_features = MTK_HW_FEATURES,
        .required_clks = MT7623_CLKS_BITMAP,
        .required_pctl = true,
-       .offload_version = 2,
+       .offload_version = 1,
        .hash_offset = 2,
        .foe_entry_size = sizeof(struct mtk_foe_entry) - 16,
        .txrx = {
 
                val = FIELD_PREP(MTK_FOE_IB2_DEST_PORT_V2, pse_port) |
                      FIELD_PREP(MTK_FOE_IB2_PORT_AG_V2, 0xf);
        } else {
+               int port_mg = eth->soc->offload_version > 1 ? 0 : 0x3f;
+
                val = FIELD_PREP(MTK_FOE_IB1_STATE, MTK_FOE_STATE_BIND) |
                      FIELD_PREP(MTK_FOE_IB1_PACKET_TYPE, type) |
                      FIELD_PREP(MTK_FOE_IB1_UDP, l4proto == IPPROTO_UDP) |
                entry->ib1 = val;
 
                val = FIELD_PREP(MTK_FOE_IB2_DEST_PORT, pse_port) |
-                     FIELD_PREP(MTK_FOE_IB2_PORT_MG, 0x3f) |
+                     FIELD_PREP(MTK_FOE_IB2_PORT_MG, port_mg) |
                      FIELD_PREP(MTK_FOE_IB2_PORT_AG, 0x1f);
        }