1. 20 Jun, 2022 9 commits
    • Johannes Berg's avatar
      wifi: mac80211: make channel context code MLO-aware · b4f85443
      Johannes Berg authored
      Make the channel context code MLO aware, along with some
      functions that it uses, so that the chan.c file is now
      MLD-clean and no longer uses deflink/bss_conf/etc.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      b4f85443
    • Johannes Berg's avatar
      wifi: mac80211: pass link ID where already present · 7fc83a2b
      Johannes Berg authored
      In a few cases we already have the link ID in the APIs,
      pass it already even if it cannot be non-zero yet.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      7fc83a2b
    • Johannes Berg's avatar
      wifi: mac80211: add per-link configuration pointer · 8e14130d
      Johannes Berg authored
      Add pointers so we can start using link_id throughout the
      code, even if for now only link ID 0 is valid, pointing
      to the "built-in" bss_conf, which is used by drivers that
      are not aware of MLD.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      8e14130d
    • Johannes Berg's avatar
      wifi: mac80211: split bss_info_changed method · 7b7090b4
      Johannes Berg authored
      Split the bss_info_changed method to vif_cfg_changed and
      link_info_changed, with the latter getting a link ID.
      Also change the 'changed' parameter to u64 already, we
      know we need that.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      7b7090b4
    • Johannes Berg's avatar
      wifi: mac80211: reorg some iface data structs for MLD · bfd8403a
      Johannes Berg authored
      Start reorganizing interface related data structures toward
      MLD. The most complex part here is for the keys, since we
      have to split the various kinds of GTKs off to the link but
      still need to use (for WEP) the other keys as a fallback
      even for multicast frames.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      bfd8403a
    • Johannes Berg's avatar
      wifi: mac80211: move interface config to new struct · f276e20b
      Johannes Berg authored
      We'll use bss_conf for per-link configuration later, so
      move out all the non-link-specific data out into a new
      struct ieee80211_vif_cfg used in the vif.
      
      Some adjustments were done with the following spatch:
      
          @@
          expression sdata;
          struct ieee80211_vif *vifp;
          identifier var = { assoc, ibss_joined, aid, arp_addr_list, arp_addr_cnt, ssid, ssid_len, s1g, ibss_creator };
          @@
          (
          -sdata->vif.bss_conf.var
          +sdata->vif.cfg.var
          |
          -vifp->bss_conf.var
          +vifp->cfg.var
          )
      
          @bss_conf@
          struct ieee80211_bss_conf *bss_conf;
          identifier var = { assoc, ibss_joined, aid, arp_addr_list, arp_addr_cnt, ssid, ssid_len, s1g, ibss_creator };
          @@
          -bss_conf->var
          +vif_cfg->var
      
      (though more manual fixups were needed, e.g. replacing
      "vif_cfg->" by "vif->cfg." in many files.)
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      f276e20b
    • Johannes Berg's avatar
      wifi: mac80211: move some future per-link data to bss_conf · d0a9123e
      Johannes Berg authored
      To add MLD, reuse the bss_conf structure later for per-link
      information, so move some things into it that are per link.
      
      Most transformations were done with the following spatch:
      
          @@
          expression sdata;
          identifier var = { chanctx_conf, mu_mimo_owner, csa_active, color_change_active, color_change_color };
          @@
          -sdata->vif.var
          +sdata->vif.bss_conf.var
      
          @@
          struct ieee80211_vif *vif;
          identifier var = { chanctx_conf, mu_mimo_owner, csa_active, color_change_active, color_change_color };
          @@
          -vif->var
          +vif->bss_conf.var
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      d0a9123e
    • Johannes Berg's avatar
      wifi: cfg80211: do some rework towards MLO link APIs · 7b0a0e3c
      Johannes Berg authored
      In order to support multi-link operation with multiple links,
      start adding some APIs. The notable addition here is to have
      the link ID in a new nl80211 attribute, that will be used to
      differentiate the links in many nl80211 operations.
      
      So far, this patch adds the netlink NL80211_ATTR_MLO_LINK_ID
      attribute (as well as the NL80211_ATTR_MLO_LINKS attribute)
      and plugs it through the system in some places, checking the
      validity etc. along with other infrastructure needed for it.
      
      For now, I've decided to include only the over-the-air link
      ID in the API. I know we discussed that we eventually need to
      have to have other ways of identifying a link, but for local
      AP mode and auth/assoc commands as well as set_key etc. we'll
      use the OTA ID.
      
      Also included in this patch is some refactoring of the data
      structures in struct wireless_dev, splitting for the first
      time the data into type dependent pieces, to make reasoning
      about these things easier.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      7b0a0e3c
    • Johannes Berg's avatar
      wifi: mac80211: reject WEP or pairwise keys with key ID > 3 · 92ea8df1
      Johannes Berg authored
      We don't really care too much right now since our data
      structures are set up to not have a problem with this,
      but clearly it's wrong to accept WEP and pairwise keys
      with key ID > 3.
      
      However, with MLD we need to split into per-link (GTK,
      IGTK, BIGTK) and per interface/MLD (including WEP) keys
      so make sure this is not a problem.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      92ea8df1
  2. 15 Jun, 2022 27 commits
  3. 14 Jun, 2022 3 commits
  4. 13 Jun, 2022 1 commit