aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/intel/iwlwifi/mvm/link.c
Commit message (Collapse)AuthorAgeFilesLines
...
* wifi: iwlwifi: mvm: don't add dummy phy contextEmmanuel Grumbach2023-10-231-0/+1
| | | | | | | | | | | | | | | | | | | | | | | From its very first stages of development, iwlmvm added all the PHY context immediately upon firmware boot. Then, all we needed to do is to modify the contexts. This was fine if the addition of a PHY context that we don't need is free. This was true until now. Newer devices will run calibrations upon the addition of a PHY context. Change the way we work with PHY context in iwlmvm. Fortunately, we already have all the ref counting in place so that it is not very hard to do. Also, since we now remove the PHY context before the link is removed (but after it has been de-activated of course), it'll confuse the firmware if we put the late phy_id into the LINK command that removes the link. Change this to put an invalid phy_id just like we do when we add a link that has no PHY context yet. Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20231011130030.55a1a78719be.I2032a7d227b57f4fc4370a2793476d47538404fd@changeid Signed-off-by: Johannes Berg <[email protected]>
* wifi: iwlwifi: mvm: Correctly set link configurationIlan Peer2023-10-231-5/+8
| | | | | | | | | | | | | | | In case the link puncturing is changed such that the channel is no longer punctured, configure the FW correctly indicating the EHT parameters changed (with a 0 punctured map). Allow EHT parameters configuration only when the link really supports EHT. Fixes: 55eb1c5fa4b2 ("wifi: iwlwifi: mvm: add support for the new LINK command") Signed-off-by: Ilan Peer <[email protected]> Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20231004123422.2666ef86e032.I4b0e95722660acc5345ceefba7e8866a69572e8e@changeid Signed-off-by: Johannes Berg <[email protected]>
* wifi: iwlwifi: mvm: Don't always bind/link the P2P Device interfaceIlan Peer2023-10-231-7/+2
| | | | | | | | | | | | | | It is not necessary to keep the P2P Device bound/linked to a PHY context when there is no active ROC. Modify the P2P Device flows so the binding/linking would be done only while ROC is active. With this change the switch_phy_ctxt() is no longer needed so remove it. Signed-off-by: Ilan Peer <[email protected]> Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20231004123422.c5b83b4bf9de.Ia80daf3ba0b5fec7d0919247fcbdbdb58bddf02b@changeid Signed-off-by: Johannes Berg <[email protected]>
* wifi: iwlwifi: mvm: make iwl_mvm_set_fw_mu_edca_params mld awareEmmanuel Grumbach2023-06-211-1/+1
| | | | | | | | | We need to work on the right link there. Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20230620125813.8762a90e8857.Ic5b8e96140a449fd1ed7008907d67fc36fe98506@changeid Signed-off-by: Johannes Berg <[email protected]>
* wifi: iwlwifi: handle eSR transitionsMiri Korenblit2023-06-191-4/+3
| | | | | | | | | | | | | There several transitions to handle in eSR mode: * SMPS should be disabled when in eSR mode * indicate to the fw whether the new added link should use the listen lmac or the main lmac * RLC is offloaded when in eSR mode; adjust RLC command accordingly Signed-off-by: Miri Korenblit <[email protected]> Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20230615094410.fb6409f44aca.I502460dec15e0b76035ad3cd809afa4ac16e9fe1@changeid Signed-off-by: Johannes Berg <[email protected]>
* wifi: iwlwifi: fix max number of fw active linksMiri Korenblit2023-06-191-18/+0
| | | | | | | | | | | | | | The max active links that are supported by the FW is hard coded. This is wrong since this value is HW-dependent. Fix this by determining according to the actual HW. Also remove a redundant check that the number of active links doesn't exceeds the maximum. Signed-off-by: Miri Korenblit <[email protected]> Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20230615094410.e78ad74c6715.I68b26911c0a312d72eaf25344b448d03b1c61f4e@changeid Signed-off-by: Johannes Berg <[email protected]>
* wifi: iwlwifi: mvm: always send spec link ID in link commandsJohannes Berg2023-06-191-0/+2
| | | | | | | | | | | The firmware technically only needs this when the link is newly added, but it's much easier for debugging if it's always available, so include it. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20230614123446.daecd0e626f7.I0f8a16a6d80a283c9f947c9bb0fc50a7c6853948@changeid Signed-off-by: Johannes Berg <[email protected]>
* wifi: iwlwifi: use array as array argumentJohannes Berg2023-06-191-1/+1
| | | | | | | | | | | | When calling iwl_mvm_set_fw_qos_params() we explicitly pass a pointer to the first array element, but the function will treat it as an array. Simplify and clarify the code and pass the array instead. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20230614123446.6fb4a9743b1b.I801007d207f6539a9e0996366ec593e2038b1f90@changeid Signed-off-by: Johannes Berg <[email protected]>
* Merge wireless into wireless-nextJohannes Berg2023-06-071-5/+7
|\ | | | | | | | | | | | | | | There are a number of upcoming things in both the stack and drivers that would otherwise conflict, so merge wireless to wireless-next to be able to avoid those conflicts. Signed-off-by: Johannes Berg <[email protected]>
| * wifi: iwlwifi: mvm: fix number of concurrent link checksJohannes Berg2023-05-161-5/+7
| | | | | | | | | | | | | | | | | | | | The concurrent link checks need to correctly differentiate between AP and non-AP, fix that. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20230514120631.992b2f981ef6.I7d386c19354e9be39c4822f436dd22c93422b660@changeid Signed-off-by: Johannes Berg <[email protected]>
* | wifi: iwlwifi: mvm: update the FW apis for LINK and MAC commandsEmmanuel Grumbach2023-06-061-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | The firmware added new fields to be able to pass the link_id as the AP knows it and the esr_transition_timeout. For now, pass only the link_id since we don't have access to the esr_transition_timeout yet. Signed-off-by: Emmanuel Grumbach <[email protected]> Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20230524203151.bf80ce717458.Icd4174911227c00cd12783fe1f517ae8097809b9@changeid Signed-off-by: Johannes Berg <[email protected]>
* | wifi: iwlwifi: mvm: use link ID in missed beacon notificationYedidya Benshimol2023-06-061-0/+5
|/ | | | | | | | | | | This new version of missed beacon notification uses link_id instead of mac_id. Also add an option to use link id for retrieving vif. Signed-off-by: Yedidya Benshimol <[email protected]> Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20230524203151.17fe1cc632f1.Id1fabb532e2174712fe17d4ad86a2c8c64ae84da@changeid Signed-off-by: Johannes Berg <[email protected]>
* wifi: iwlwifi: mvm: rework active links countingGregory Greenman2023-03-301-16/+17
| | | | | | | | | | Remove fw_active_links_num counter since we now have a bitmap of active links in vif. Also, update link activation status only when LINK_CONTEXT_MODIFY_ACTIVE bit set in changes parameter. Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20230329100040.1ecfb27b6b84.I3a5e0bc32b3728e4caae8a231bc3f04ea1d89cad@changeid Signed-off-by: Johannes Berg <[email protected]>
* wifi: iwlwifi: mvm: implement link change opsJohannes Berg2023-03-301-0/+43
| | | | | | | | | | | | | Implement the link change ops for links and stations. Note that the stations one is empty for now as we only have support for a single link so far, and then the stations are created with the first link as deflink by mac80211, so right now we don't really need anything. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20230328104949.6186c5a37e99.Ifd00d3ee93356ddef273aa18f1e081cd8f2c84ae@changeid Signed-off-by: Johannes Berg <[email protected]>
* wifi: iwlwifi: mvm: add fw link id allocationGregory Greenman2023-03-301-13/+74
| | | | | | | | | | | Driver uses link_id as an index in the array. FW currently can support only 2 concurrently active links per vif with the ids in the range 0-3. Add a mapping of dirver link ids to fw link id and track the number of active link ids. Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20230328104949.a53e5df49c33.I02b25648d2d5ca370c0697bf19d0d34724eae8a1@changeid Signed-off-by: Johannes Berg <[email protected]>
* wifi: iwlwifi: mvm: replace bss_info_changed() with vif_cfg/link_info_changed()Gregory Greenman2023-03-301-1/+1
| | | | | | | | | | | These are two new handlers for MLO. As the configurations done in bss_info_changed() are now split into two separate flows, use MLO specific implementation instead of common functions with the non-MLO code. Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20230328104949.7b238cae0895.Ieb87f204787fb1c7cb7562e1cbf54ef518d87123@changeid Signed-off-by: Johannes Berg <[email protected]>
* wifi: iwlwifi: mvm: add link_conf parameter for add/remove/change linkGregory Greenman2023-03-301-31/+50
| | | | | | | | Add link_conf parameter and change all the relevant calls accordingly. Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20230328104949.374015eed2e3.Icbf15a18e2599b53f4fa1c92fe3db64b551b84b1@changeid Signed-off-by: Johannes Berg <[email protected]>
* wifi: iwlwifi: mvm: add link to firmware earlierJohannes Berg2023-03-301-11/+10
| | | | | | | | | | | | | | The firmware now allows adding a link that's not yet bound to a PHY context. Make use of that to align the driver with mac80211's API expectations. For now, just add the link at the same time as the MAC since we don't yet have real MLD support, but that'll obviously change later. This fixes an issue with apStaId tracking in the firmware. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20230328104949.097e5008b637.I4e75c6c11e21c08d28ff6a066be36629d3975db6@changeid Signed-off-by: Johannes Berg <[email protected]>
* wifi: iwlwifi: mvm: align to the LINK cmd update in the FWMiri Korenblit2023-03-301-13/+9
| | | | | | | | | | | | | | | | The LINK cmd host api has been updated. Align the driver to the new changes. Also, temporary use mac_id for link_id. Using the phy_id as the link_id is wrong since we might have 2 macs operating on the same phy - in this case we will have 2 different links (one for each mac) with the same link_id. On the other hand, since we don't have MLO implemented yet, we won't have 2 different links of the same mac. Therefore, we can use the mac_id as the link_id. Signed-off-by: Miri Korenblit <[email protected]> Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20230328104948.78ae716884fe.Icfeb2794d9652baaccf9b0cdddbd751d0db4f952@changeid Signed-off-by: Johannes Berg <[email protected]>
* wifi: iwlwifi: mvm: vif preparation for MLOGregory Greenman2023-03-301-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In MLO, some fields of iwl_mvm_vif should be defined in the context of a link. Define a separate structure for these fields and add a deflink object to hold it as part of iwl_mvm_vif. Non-MLO legacy code will use only deflink object while MLO related code will use the corresponding link from the link array. It follows the strategy applied in mac80211 for introducing MLO changes. The below spatch takes care of updating all driver code to access fields separated into MLD specific data structure via deflink (need to convert all references to the fields listed in var to deflink.var and also to take care of calls like iwl_mvm_vif_from_mac80211(vif)->field). @iwl_mld_vif@ struct iwl_mvm_vif *v; struct ieee80211_vif *vv; identifier fn; identifier var = {bssid, ap_sta_id, bcast_sta, mcast_sta, beacon_stats, smps_requests, probe_resp_data, he_ru_2mhz_block, cab_queue, phy_ctxt, queue_params}; @@ ( v-> - var + deflink.var | fn(vv)-> - var + deflink.var ) Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20230328104948.4896576f0a9f.Ifaf0187c96b9fe52b24bd629331165831a877691@changeid Signed-off-by: Johannes Berg <[email protected]>
* wifi: iwlwifi: mvm: add support for the new LINK commandMiri Korenblit2023-03-151-0/+175
As a part of the new MLD FW API changes, we have a new LINK command to add/remove/configure a link. Add structures and enum definitions, along with the functions that sends this command (i.e. add, remove and change mac ctxt). These functions will be in used in the next patches. Signed-off-by: Miri Korenblit <[email protected]> Signed-off-by: Gregory Greenman <[email protected]> Link: https://lore.kernel.org/r/20230314194113.d7808329effb.I13bea2db206b78540bc866bc3ab755ad5be78c53@changeid Signed-off-by: Johannes Berg <[email protected]>