• Cindy H. Kao's avatar
    iwlwifi: support the svtool messages interactions through nl80211 test mode · 4613e72d
    Cindy H. Kao authored
    This patch adds the feature to support the test mode operation through
    the generic netlink channel NL80211_CMD_TESTMODE between intel
    wireless device iwlwifi and the user space application svtool.
    
    The main purpose is to create a transportation layer between the iwlwifi
    device and the user space application so that the interaction between the
    user space application svtool and the iwlwifi device in the kernel space is
    in a way of generic netlink messaging.
    
    The detail specific functions are:
    
    1. The function iwl_testmode_cmd() is added to digest the svtool test command
       from the user space application. The svtool test commands are categorized  to
       three types : commands to be processed by the device ucode, commands to access
       the registers, and commands to be processed at the driver level(such as reload
       the ucode). iwl_testmode_cmd() dispatches the commands the corresponding handlers
       and reply to user space regarding the command execution status. Extra data is
       returned to the user space application if there's any.
    
    2. The function iwl_testmode_ucode_rx_pkt() is added to multicast all the spontaneous
       messages from the iwlwifi device to the user space. Regardless the message types,
       whenever there is a valid spontaneous message received by the iwlwifi ISR,
       iwl_testmode_ucode_rx_pkt() is invoked to multicast the message content to user
       space. The message content is not attacked and the message parsing is left to
       the user space application.
    
    Implementation guidelines:
    
    1. The generic netlink messaging for iwliwif test mode is through  NL80211_CMD_TESTMODE
       channel, therefore, the codes need to follow the regulations set by cfg80211.ko
       to get the actual device instance ieee80211_ops via cfg80211.ko, so that the iwlwifi
       device is indicated with ieee80211_ops and can be actually accessed.
    
       Therefore, a callback iwl_testmode_cmd() is added to the structure
       iwlagn_hw_ops in iwl-agn.c.
    
    2. It intends to utilize those low level device access APIs from iwlwifi device driver
       (ie. iwlagn.ko) rather than creating it's own set of device access functions.
       For example, iwl_send_cmd(), iwl_read32(), iwl_write8(), and iwl_write32() are reused.
    
    3. The main functions are maintained in new files instead of spreading all over the
       existing iwlwifi driver files.
    
       The new files added are :
    
       drivers/net/wireless/iwlwifi/iwl-sv-open.c
            - to handle the user space test mode application command
              and reply the respective command status to the user space application.
            - to multicast the spontaneous messages from device to user space.
    
       drivers/net/wireless/iwlwifi/iwl-testmode.h
            - the commonly referenced definitions for the TLVs used in
              the generic netlink messages
    Signed-off-by: default avatarCindy H. Kao <cindy.h.kao@intel.com>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
    4613e72d
iwl-dev.h 42.2 KB