phylink_set(modes, 2500baseX_Full);
 }
 
+static void sfp_quirk_ubnt_uf_instant(const struct sfp_eeprom_id *id,
+                                     unsigned long *modes)
+{
+       /* Ubiquiti U-Fiber Instant module claims that support all transceiver
+        * types including 10G Ethernet which is not truth. So clear all claimed
+        * modes and set only one mode which module supports: 1000baseX_Full.
+        */
+       phylink_zero(modes);
+       phylink_set(modes, 1000baseX_Full);
+}
+
 static const struct sfp_quirk sfp_quirks[] = {
        {
                // Alcatel Lucent G-010S-P can operate at 2500base-X, but
                .vendor = "HUAWEI",
                .part = "MA5671A",
                .modes = sfp_quirk_2500basex,
+       }, {
+               .vendor = "UBNT",
+               .part = "UF-INSTANT",
+               .modes = sfp_quirk_ubnt_uf_instant,
        },
 };
 
 
 
 static bool sfp_module_supported(const struct sfp_eeprom_id *id)
 {
-       return id->base.phys_id == SFF8024_ID_SFP &&
-              id->base.phys_ext_id == SFP_PHYS_EXT_ID_SFP;
+       if (id->base.phys_id == SFF8024_ID_SFP &&
+           id->base.phys_ext_id == SFP_PHYS_EXT_ID_SFP)
+               return true;
+
+       /* SFP GPON module Ubiquiti U-Fiber Instant has in its EEPROM stored
+        * phys id SFF instead of SFP. Therefore mark this module explicitly
+        * as supported based on vendor name and pn match.
+        */
+       if (id->base.phys_id == SFF8024_ID_SFF_8472 &&
+           id->base.phys_ext_id == SFP_PHYS_EXT_ID_SFP &&
+           !memcmp(id->base.vendor_name, "UBNT            ", 16) &&
+           !memcmp(id->base.vendor_pn, "UF-INSTANT      ", 16))
+               return true;
+
+       return false;
 }
 
 static const struct sff_data sfp_data = {