Thanks to stsp@ I looked into adding support for 8265 and 3168 variants of
iwm(4) this diff seems to work for me with a "Dual Band Wireless-AC 8265"
card.
You need to get the iwm-8265-22 and iwm-3168-22 firmware files yourself
and put them in /etc/firmware the iwm firmware package will be updated
once the ports tree is unlocked.
--
:wq Claudio
Index: dev/pci/if_iwm.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/if_iwm.c,v
retrieving revision 1.166
diff -u -p -r1.166 if_iwm.c
--- dev/pci/if_iwm.c 8 Mar 2017 12:02:41 -0000 1.166
+++ dev/pci/if_iwm.c 3 Apr 2017 19:44:17 -0000
@@ -789,6 +789,9 @@ iwm_read_firmware(struct iwm_softc *sc,
le32toh(((uint32_t *)tlv_data)[2]));
break;
+ case IWM_UCODE_TLV_FW_MEM_SEG:
+ break;
+
default:
err = EINVAL;
goto parse_out;
@@ -6673,6 +6676,13 @@ iwm_notif_intr(struct iwm_softc *sc)
break;
}
+ /*
+ * Firmware versions 21 and 22 generate some DEBUG_LOG_MSG
+ * messages. Just ignore them for now.
+ */
+ case IWM_DEBUG_LOG_MSG:
+ break;
+
case IWM_MCAST_FILTER_CMD:
break;
@@ -6858,12 +6868,14 @@ static const struct pci_matchid iwm_devi
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_3160_2 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_3165_1 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_3165_2 },
+ { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_3168_1 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_7260_1 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_7260_2 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_7265_1 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_7265_2 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_8260_1 },
{ PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_8260_2 },
+ { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_WL_8265_1 },
};
int
@@ -7029,6 +7041,12 @@ iwm_attach(struct device *parent, struct
sc->sc_device_family = IWM_DEVICE_FAMILY_7000;
sc->sc_fwdmasegsz = IWM_FWDMASEGSZ;
break;
+ case PCI_PRODUCT_INTEL_WL_3168_1:
+ sc->sc_fwname = "iwm-3168-22";
+ sc->host_interrupt_operation_mode = 0;
+ sc->sc_device_family = IWM_DEVICE_FAMILY_7000;
+ sc->sc_fwdmasegsz = IWM_FWDMASEGSZ;
+ break;
case PCI_PRODUCT_INTEL_WL_7260_1:
case PCI_PRODUCT_INTEL_WL_7260_2:
sc->sc_fwname = "iwm-7260-16";
@@ -7046,6 +7064,12 @@ iwm_attach(struct device *parent, struct
case PCI_PRODUCT_INTEL_WL_8260_1:
case PCI_PRODUCT_INTEL_WL_8260_2:
sc->sc_fwname = "iwm-8000C-16";
+ sc->host_interrupt_operation_mode = 0;
+ sc->sc_device_family = IWM_DEVICE_FAMILY_8000;
+ sc->sc_fwdmasegsz = IWM_FWDMASEGSZ_8000;
+ break;
+ case PCI_PRODUCT_INTEL_WL_8265_1:
+ sc->sc_fwname = "iwm-8265-22";
sc->host_interrupt_operation_mode = 0;
sc->sc_device_family = IWM_DEVICE_FAMILY_8000;
sc->sc_fwdmasegsz = IWM_FWDMASEGSZ_8000;
Index: dev/pci/if_iwmreg.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/if_iwmreg.h,v
retrieving revision 1.24
diff -u -p -r1.24 if_iwmreg.h
--- dev/pci/if_iwmreg.h 31 Jan 2017 10:17:50 -0000 1.24
+++ dev/pci/if_iwmreg.h 3 Apr 2017 19:49:32 -0000
@@ -906,6 +906,7 @@ struct iwm_ucode_header {
#define IWM_UCODE_TLV_FW_DBG_CONF 39
#define IWM_UCODE_TLV_FW_DBG_TRIGGER 40
#define IWM_UCODE_TLV_FW_GSCAN_CAPA 50
+#define IWM_UCODE_TLV_FW_MEM_SEG 51
struct iwm_ucode_tlv {
uint32_t type; /* see above */