lkml.org 
[lkml]   [2011]   [Nov]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    SubjectRe: iwlagn is getting very shaky
    From
    On Fri, Nov 25, 2011 at 01:02, Norbert Preining <preining@logic.at> wrote:
    > On Do, 24 Nov 2011, Emmanuel Grumbach wrote:
    >> Please apply the patch attached on top of the one I previously sent.
    >> Let me know I you have trouble with patch.
    >
    > Which patch? Nothing attached, I also checked in the mail archives
    > in case I had again problems with attached patches. Nothing.
    > Please resend.
    >

    Oh well... Sorry again....
    diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
    index 8efa10f..4f7c758 100644
    --- a/drivers/net/wireless/iwlwifi/iwl-core.c
    +++ b/drivers/net/wireless/iwlwifi/iwl-core.c
    @@ -1596,6 +1596,7 @@ void iwl_start_tx_ba_trans_ready(struct iwl_priv *priv,
    ctx = priv->stations[sta_id].ctxid;
    vif = priv->contexts[ctx].vif;

    + IWL_DEBUG_TX_QUEUES(priv, "Telling mac start BA ready tid: %d", tid);
    ieee80211_start_tx_ba_cb_irqsafe(vif, addr, tid);
    }

    @@ -1610,6 +1611,7 @@ void iwl_stop_tx_ba_trans_ready(struct iwl_priv *priv,
    ctx = priv->stations[sta_id].ctxid;
    vif = priv->contexts[ctx].vif;

    + IWL_DEBUG_TX_QUEUES(priv, "Telling mac stop BA ready tid: %d", tid);
    ieee80211_stop_tx_ba_cb_irqsafe(vif, addr, tid);
    }

    diff --git a/drivers/net/wireless/iwlwifi/iwl-mac80211.c b/drivers/net/wireless/iwlwifi/iwl-mac80211.c
    index ec31482..14f89ee 100644
    --- a/drivers/net/wireless/iwlwifi/iwl-mac80211.c
    +++ b/drivers/net/wireless/iwlwifi/iwl-mac80211.c
    @@ -632,6 +632,7 @@ static int iwlagn_mac_ampdu_action(struct ieee80211_hw *hw,
    break;
    case IEEE80211_AMPDU_TX_STOP:
    IWL_DEBUG_HT(priv, "stop Tx\n");
    + IWL_DEBUG_TX_QUEUES(priv, "Stop Tx agg for tid %d", tid);
    ret = iwlagn_tx_agg_stop(priv, vif, sta, tid);
    if ((ret == 0) && (priv->agg_tids_count > 0)) {
    priv->agg_tids_count--;
    diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h
    index 84cf641..17e793f 100644
    --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h
    +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h
    @@ -424,12 +424,14 @@ static inline void iwl_stop_queue(struct iwl_trans *trans,
    static inline void iwl_txq_ctx_activate(struct iwl_trans_pcie *trans_pcie,
    int txq_id)
    {
    + IWL_DEBUG_TX_QUEUES(trans_pcie->trans, "Activate txq %d", txq_id);
    set_bit(txq_id, &trans_pcie->txq_ctx_active_msk);
    }

    static inline void iwl_txq_ctx_deactivate(struct iwl_trans_pcie *trans_pcie,
    int txq_id)
    {
    + IWL_DEBUG_TX_QUEUES(trans_pcie->trans, "Deactivate txq %d", txq_id);
    clear_bit(txq_id, &trans_pcie->txq_ctx_active_msk);
    }

    diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c
    index 049e3b6..11e0b56 100644
    --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c
    +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c
    @@ -472,6 +472,8 @@ void iwl_trans_pcie_tx_agg_setup(struct iwl_trans *trans,
    return;
    }

    + IWL_DEBUG_TX_QUEUES(trans, "Setup AGG for tid %d", tid);
    +
    spin_lock_irqsave(&trans->shrd->sta_lock, flags);
    tid_data = &trans->shrd->tid_data[sta_id][tid];
    ssn_idx = SEQ_TO_SN(tid_data->seq_number);
    @@ -536,8 +538,10 @@ static int iwlagn_txq_ctx_activate_free(struct iwl_trans *trans)

    for (txq_id = 0; txq_id < hw_params(trans).max_txq_num; txq_id++)
    if (!test_and_set_bit(txq_id,
    - &trans_pcie->txq_ctx_active_msk))
    + &trans_pcie->txq_ctx_active_msk)) {
    + IWL_DEBUG_TX_QUEUES(trans, "Activate txq %d", txq_id);
    return txq_id;
    + }
    return -1;
    }

    @@ -582,6 +586,8 @@ void iwl_trans_pcie_txq_agg_disable(struct iwl_trans *trans, int txq_id)
    struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
    iwlagn_tx_queue_stop_scheduler(trans, txq_id);

    + IWL_DEBUG_TX_QUEUES(trans, "Disable AGG txq_id %d", txq_id);
    +
    iwl_clear_bits_prph(bus(trans), SCD_AGGR_SEL, (1 << txq_id));

    trans_pcie->txq[txq_id].q.read_ptr = 0;
    \
     
     \ /
      Last update: 2011-11-25 05:53    [W:0.028 / U:60.176 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site