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 */

Reply via email to