On Mon, Jan 15, 2024 at 11:10:17AM +0100, Mark Kettenis wrote:
> 
> > Date: Mon, 15 Jan 2024 00:17:53 -0800
> > From: Mike Larkin <mlar...@nested.page>
> > 
> > On Mon, Jan 15, 2024 at 08:58:52AM +0100, Mizsei Zolt?n wrote:
> > > Thanks, that did the trick, see new dmesg below. Would it possible to 
> > > enable iwn* in the upstream sources?
> > >
> > > Best Regards,
> > > --Zoltan
> > >
> > 
> > I think that should be doable. Mark, Patrick, any objections (and if no, do 
> > we
> > want iwm in there too?)
> 
> If we add iwn(4), we probably should add iwm(4) too.
> 
> I think I had some worries that these Intel wireless cards were
> somehow closely tied to Intel chipsets and therefore adding them made
> only sense for amd64.  But iwx(4) works and if iwn(4) works, I think
> we cane safely assume that iwm(4) should work as well.
> 
> So no objection from me.

iwm(4) failed to build:

In file included from /usr/src/sys/dev/pci/if_iwm.c:167:
/usr/src/sys/dev/pci/if_iwmreg.h:3358:2: error: field  within 'struct 
iwm_rx_mpdu_desc_v1' is less aligned than 'union 
iwm_rx_mpdu_desc_v1::(anonymous at /usr/src/sys/dev/pci/if_iwmreg.h:3358:2)' 
and is usually due to 'struct iwm_rx_mpdu_desc_v1' being packed, which can lead 
to unaligned accesses [-Werror,-Wunaligned-access]
        union {
        ^
1 error generated.
*** Error 1 in /usr/src/sys/arch/arm64/compile/GENERIC.MP (Makefile:1562 
'if_iwm.o')

The below diff fixes clang warning about possible unaligned access.
With that fixed, iwm(4) works as expected on my Rock 3A.

iwm0 at pci1 dev 0 function 0 "Intel Dual Band Wireless-AC 9260" rev 0x29, msix
iwm0: hw rev 0x320, fw ver 46.ff18e32a.0, address fc:77:74:xx:xx:xx

Index: sys/dev/pci/if_iwmreg.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/if_iwmreg.h,v
retrieving revision 1.68
diff -u -p -u -p -r1.68 if_iwmreg.h
--- sys/dev/pci/if_iwmreg.h     19 Mar 2022 10:26:52 -0000      1.68
+++ sys/dev/pci/if_iwmreg.h     16 Jan 2024 06:06:00 -0000
@@ -3361,7 +3361,7 @@ struct iwm_rx_mpdu_desc_v1 {
                        uint32_t phy_data0;
                        uint32_t phy_data1;
                };
-       };
+       } __packed;
 } __packed;
 
 #define IWM_RX_REORDER_DATA_INVALID_BAID       0x7f

Reply via email to