On Mon, Mar 22, 2021 at 10:44 PM Emmanuel Grumbach <emmanuel.grumbach@xxxxxxxxx> wrote: I messed up this series. Please drop it. Resending. > > This patch series adds support for AMT over WLAN. > Information about Intel Active Management Technology is > available on the net, but in a nutshell, it is an application > running on an embedded CPU in the chipset. This application > can provide remote control to the system even when no OS is, > present or not even installed. By control, we mean, KVM, > the possibility to attach a remote driver, power up / down > / reset the machine and other options. > > When the host uses wireless, the embedded CPU can't access > the wireless device and hence, the traffic for AMT must be > routed through the host. The AMT <-> WLAN driver interface > is explained at lengh inside the patches. Basically, there > is a memory region that is mapped to a PCI devices that can > read / write to that memory and sends the data to the embedded > CPU. The driver for this PCI device is mei. We needed to add > code for that driver, those patches are in this series and > need to be routed through wireless-drivers tree as requested > by Greg KH. > There is also a cfg80211 patch that I should have sent earlier > to Johannes. I include this here. Hopefully, it'll not cause > trouble. > > Note about how to use this new feature: > In order to fully use this new feature, we need to add a few > vendor commands that are not included in this series. The > upstream process for those commands will take some more time > but it is definitely planned. The motivation to use vendor > commands as opposed to regular nl80211 APIs is that we do not > expect any other vendor to need similar APIs. We had no control > on the AMT APIs and this is why we needed to add vendor commands > for flows that differ just a tiny bit from the regular flow. For > example, AMT needs to know when we are associated, but it > requires to know whether we are associated in WPA or in WPA2. > This is not known to the kernel, so we, unfortunately, had > to add a vendor command for this. This is just an example. > > Integration with the connection manager is required to be able > to use this new feature. > In case the device is controlled by AMT and is actively used > by AMT, AMT will not release the device. To properly reflect > this state, we report hardware RF-Kill to the stack, but we > add a reason saying that we do not own the device. The > connection manager can then check what AP AMT is connected to > and signal to AMT that it can ensure the connetion to that > same AP can be kept. AMT will then release the device allowing > the host to connect to that AP. Doing this transition fast > enough will allow not to break the TCP connections that AMT > maintains. > > I worked with Ayala Beker on the iwlwifi part of this feature. > > Please do not apply those patches, they'll be part of a regular > pull request from Luca. > > Johannes, feel free to pick the cfg80211 patch although then, it > will require to merge mac80211-next into wireless-drivers-next so > maybe it's better to route it through Kalle as well? > > Alexander Usyskin (1): > mei: bus: add client dma interface > > Emmanuel Grumbach (3): > cfg80211: allow to specifying a reason for hw_rfkill > iwlwifi: mei: add the driver to allow cooperation with CSME > iwlwifi: integrate with iwlmei > > Tomas Winkler (1): > mei: allow map and unmap of client dma buffer only for disconnected > client > > drivers/misc/mei/bus.c | 67 +- > drivers/misc/mei/client.c | 20 +- > drivers/misc/mei/hw.h | 5 + > drivers/net/wireless/intel/iwlwifi/Kconfig | 13 + > drivers/net/wireless/intel/iwlwifi/Makefile | 2 + > .../wireless/intel/iwlwifi/iwl-nvm-parse.c | 61 + > .../wireless/intel/iwlwifi/iwl-nvm-parse.h | 11 +- > .../net/wireless/intel/iwlwifi/iwl-trans.h | 2 + > .../net/wireless/intel/iwlwifi/mei/Makefile | 8 + > .../net/wireless/intel/iwlwifi/mei/internal.h | 20 + > .../net/wireless/intel/iwlwifi/mei/iwl-mei.h | 440 ++++ > drivers/net/wireless/intel/iwlwifi/mei/main.c | 2026 +++++++++++++++++ > drivers/net/wireless/intel/iwlwifi/mei/net.c | 409 ++++ > drivers/net/wireless/intel/iwlwifi/mei/sap.h | 736 ++++++ > .../wireless/intel/iwlwifi/mei/trace-data.h | 69 + > .../net/wireless/intel/iwlwifi/mei/trace.c | 15 + > .../net/wireless/intel/iwlwifi/mei/trace.h | 62 + > drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 3 +- > .../net/wireless/intel/iwlwifi/mvm/mac80211.c | 42 +- > drivers/net/wireless/intel/iwlwifi/mvm/mvm.h | 70 + > drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 208 +- > drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 7 +- > drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 25 + > .../net/wireless/intel/iwlwifi/pcie/trans.c | 16 +- > include/linux/mei_cl_bus.h | 3 + > include/net/cfg80211.h | 11 +- > net/wireless/core.c | 7 +- > 27 files changed, 4322 insertions(+), 36 deletions(-) > create mode 100644 drivers/net/wireless/intel/iwlwifi/mei/Makefile > create mode 100644 drivers/net/wireless/intel/iwlwifi/mei/internal.h > create mode 100644 drivers/net/wireless/intel/iwlwifi/mei/iwl-mei.h > create mode 100644 drivers/net/wireless/intel/iwlwifi/mei/main.c > create mode 100644 drivers/net/wireless/intel/iwlwifi/mei/net.c > create mode 100644 drivers/net/wireless/intel/iwlwifi/mei/sap.h > create mode 100644 drivers/net/wireless/intel/iwlwifi/mei/trace-data.h > create mode 100644 drivers/net/wireless/intel/iwlwifi/mei/trace.c > create mode 100644 drivers/net/wireless/intel/iwlwifi/mei/trace.h > > -- > 2.25.1 >