lkml.org 
[lkml]   [2016]   [Mar]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 340/342] iwlwifi: pcie: properly configure the debug buffer size for 8000
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>

    commit 62d7476d958ce06d7a10b02bdb30006870286fe2 upstream.

    8000 device family has a new debug engine that needs to be
    configured differently than 7000's.
    The debug engine's DMA works in chunks of memory and the
    size of the buffer really means the start of the last
    chunk. Since one chunk is 256-byte long, we should
    configure the device to write to buffer_size - 256.
    This fixes a situation were the device would write to
    memory it is not allowed to access.

    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/net/wireless/iwlwifi/pcie/trans.c | 15 ++++++++++++---
    1 file changed, 12 insertions(+), 3 deletions(-)

    --- a/drivers/net/wireless/iwlwifi/pcie/trans.c
    +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
    @@ -7,6 +7,7 @@
    *
    * Copyright(c) 2007 - 2015 Intel Corporation. All rights reserved.
    * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
    + * Copyright(c) 2016 Intel Deutschland GmbH
    *
    * This program is free software; you can redistribute it and/or modify
    * it under the terms of version 2 of the GNU General Public License as
    @@ -33,6 +34,7 @@
    *
    * Copyright(c) 2005 - 2015 Intel Corporation. All rights reserved.
    * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
    + * Copyright(c) 2016 Intel Deutschland GmbH
    * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    @@ -924,9 +926,16 @@ monitor:
    if (dest->monitor_mode == EXTERNAL_MODE && trans_pcie->fw_mon_size) {
    iwl_write_prph(trans, le32_to_cpu(dest->base_reg),
    trans_pcie->fw_mon_phys >> dest->base_shift);
    - iwl_write_prph(trans, le32_to_cpu(dest->end_reg),
    - (trans_pcie->fw_mon_phys +
    - trans_pcie->fw_mon_size) >> dest->end_shift);
    + if (trans->cfg->device_family == IWL_DEVICE_FAMILY_8000)
    + iwl_write_prph(trans, le32_to_cpu(dest->end_reg),
    + (trans_pcie->fw_mon_phys +
    + trans_pcie->fw_mon_size - 256) >>
    + dest->end_shift);
    + else
    + iwl_write_prph(trans, le32_to_cpu(dest->end_reg),
    + (trans_pcie->fw_mon_phys +
    + trans_pcie->fw_mon_size) >>
    + dest->end_shift);
    }
    }
    \
     
     \ /
      Last update: 2016-03-02 01:41    [W:2.256 / U:0.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site