• Emmanuel Grumbach's avatar
    iwlwifi: mvm: avoid unnecessary cache trashing in Tx path · 6f2f0194
    Emmanuel Grumbach authored
    When sending a Tx Command with a Tx packet, we allocate the
    Tx command separately from the payload of the packet.
    The WiFi MAC header is then copied into the buffer that was
    allocated for the Tx Command. This means that this buffer
    needs to be big enough to contain both. This is why it is
    allocated with iwl_trans_alloc_tx_cmd which returns a
    pointer to a newly allocated not zeroed struct
    iwl_device_cmd.
    
    The Tx command has a few bit fields and hence it needs to
    be zeroed, but all the rest of the buffer doesn't need to
    be zeroed since it will either be memcopy'ed with the MAC
    header, or not even sent to the device.
    This means that we don't need to zero all the
    iwl_device_cmd structure, but rather only the size of
    the iwl_tx_cmd structure.
    
    Since sizeof(iwl_tx_cmd) - sizeof(iwl_tx_cmd) is about
    260 bytes, this can avoid touching 4 cache lines for each
    packet.
    Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
    6f2f0194
tx.c 56.2 KB