Mm6108 Linux 6.12 support

Greetings,

The latest LTS kernel is now 6.12. Do we have patches yet for the 6.12 kernel appropriate for morse_driver?

I would really like to see MorseMicro publically post their kernel patches required for the mm610x and work on getting them in the mainline kernel.

The latest kernel patches related to mac80211 are for 6.6 and not being a mac80211 developer I’m wondering how these patches may adversley affect other mac80211 radios in the system (envision a system with both a wifi6/7 card and a 802.11ah) card:

  • 0018-mac80211_ndp_block_ack.patch
  • 0012-mac80211-mlme-ps-recalc-for-dynamic-ps-v5.15.patch
  • 0009-mac80211-Mesh-support.patch
  • 0008-mac80211-IBSS-bridge-support.patch
  • 0007-mac80211_tx_s1g_AP_ecsa_support.patch
  • 0006-mac80211_mlme_s1g_ecsa_support.patch
1 Like

Hi @tharvey

We don’t have 6.12 support yet, I’ll let you know as soon as it is made available - likely our 1.15 release. (1.14 has just been made and is in the backlog to go out onto GitHub).
Our internal software team is aware of the gap!

I would really like to see Morse Micro publicly post their kernel patches required for the mm610x

Sorry for the delay in getting this out, there are a few more moving pieces to this than I would like. But it’s high on the list of things to get done.

and work on getting them in the mainline kernel.
This is actively happening too!

A basic AP/station HaLow network without powersave requirements or extended channel switch will function without these patches. At the very least I would recommend taking the NDP block ack patch, as its use is gated on a flag being set.

For what it’s worth, we have hardware utilising both 802.11ah and 802.11n radios with all of these patches applied (see the HaLowLink 1 for example), and customers have products with 802.11ac/802.11ax alongside HaLow. No obvious issues with other radios have been noticed to be caused by these patches.

Do you have any ETA for the 1.14 github release and the following 1.15 github release? I’m trying to gauge if the Linux 6.12 support expected in 1.15 is weeks, or months away.

Hi @tharvey

1.14 will be made available on GitHub in the second half of next week.

At this stage 1.15 should be on the order of “weeks” away.

@tharvey you replied on my post about openwrt halow support on the bpi openwrt one. Are you doing something similar, if so how much progress have you made?

I’ve been working with OpenWrt 24.10 but I have not been needing mm6108 support there. At some point soon I will need 6.12 support for mm6108 but it sounds like that will come by the time I need it.

I’m on 6.13-rc5 and have it (seemingly) running well, although I haven’t exhaustively tested it?

I forget everything I did, but if you’d just like to get it running in the meantime, the main thing is to edit the ieee80211_ops struct and add op pointers for the add / remove / change_chanctx functions. Point them to the mac80211 emulate add / change / remove chanctx functions:

struct ieee80211_ops mors_ops = {
   ... some mac ops
   #ifdef CONFIG_MORSE_RC
   .sta_statistics = morse_sta_tx_rate_stats,
   .get_expected_throughput = morse_get_expected_throughput,
   #endif
   .add_chanctx = ieee80211_emulate_add_chanctx,
   .remove_chanctx = ieee80211_emulate_remove_chanctx,
   .change_chanctx = ieee80211_emulate_change_chanctx,
};

Without these, the driver will blow up when you probe it.

On previous versions, I think I had to do some pointer footsie with changing ieee80211 structure references that changed (i.e. bss_conf becomes vif->bss_conf ) type stuff; but I think that may have already been fixed up in 1.12.4.

I forget when they added MLO support to mac80211, that was something I had to patch in an earlier version of the driver to support 6.6, but I think 1.14.1 includes those “link_id” changes to the function signatures.

Make sure your MAC80211_VERSION_CODE and LINUX_VERSION_CODE are coming through correctly for the

#if KERNEL_VERSION(5, 9, 0) > MAC80211_VERSION_CODE
do_stuff()
#endif

type macro blocks.

lastly, i’m not sure when the change came in that broke it, because i jumped from 6.6 to 6.13-rc5 on bringup of the latest driver, but module BTF info verification might be bronken on really new kernels. Pass

 CONFIG_MODULE_ALLOW_BTF_MISMATCH=y 

in your kernel defconfig to allow the out-of-tree module build to be loaded in and verified. I still haven’t figured out why that one is breaking yet, but that’s a workaround.

I think those should at least get you going. I haven’t exhaustively tested everything yet, but the thing associates, does SAE, etc, and hasn’t panicked once so far.

1 Like

Just wanted to add a +1 for the changes mentioned here by @ianholland, and confirm they are essentially the changes we are making for the driver to compile under 6.12.

We also have

.switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx,

Its good to see some progress here. When can we expect to see an official update to the morse_driver and linux (your kernel patches) repos? I would like to know when something ‘official’ is landing.

In case it’s useful to others to see a full commit of what it takes to get the morse_driver running on Linux 6.12 here is what I came up with which appears to be working well:

2 Likes