From: "John W. Linville" <linville@tuxdriver.com>
To: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Cc: linux-wireless@vger.kernel.org,
Meenakshi Venkataraman <meenakshi.venkataraman@intel.com>
Subject: Re: [PATCH RESEND 29/35] iwlwifi: move command queue number out of the iwl_shared struct
Date: Thu, 8 Mar 2012 14:19:26 -0500 [thread overview]
Message-ID: <20120308191926.GA2469@tuxdriver.com> (raw)
In-Reply-To: <1331142764-5750-30-git-send-email-wey-yi.w.guy@intel.com>
This one didn't apply...
On Wed, Mar 07, 2012 at 09:52:38AM -0800, Wey-Yi Guy wrote:
> From: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com>
>
> The command queue number is required by the transport
> layer, but it can be determined only by the op mode.
> Move this parameter to the dvm op mode, and configure
> the transport layer using an API.
>
> Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com>
> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
> ---
> drivers/net/wireless/iwlwifi/iwl-agn.c | 16 +++++-----
> drivers/net/wireless/iwlwifi/iwl-shared.h | 2 -
> drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h | 2 +
> drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c | 2 +-
> drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c | 24 +++++++-------
> drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | 34 +++++++++++++-------
> drivers/net/wireless/iwlwifi/iwl-trans.h | 9 +++++
> 7 files changed, 54 insertions(+), 35 deletions(-)
>
> diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
> index d45def3..76ee2dd 100644
> --- a/drivers/net/wireless/iwlwifi/iwl-agn.c
> +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
> @@ -1236,6 +1236,14 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans,
> */
> trans_cfg.op_mode = op_mode;
>
> + if (ucode_flags & IWL_UCODE_TLV_FLAGS_PAN) {
> + priv->sta_key_max_num = STA_KEY_MAX_NUM_PAN;
> + trans_cfg.cmd_queue = IWL_IPAN_CMD_QUEUE_NUM;
> + } else {
> + priv->sta_key_max_num = STA_KEY_MAX_NUM;
> + trans_cfg.cmd_queue = IWL_DEFAULT_CMD_QUEUE_NUM;
> + }
> +
> /* Configure transport layer */
> iwl_trans_configure(trans(priv), &trans_cfg);
>
> @@ -1336,14 +1344,6 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans,
> priv->new_scan_threshold_behaviour =
> !!(ucode_flags & IWL_UCODE_TLV_FLAGS_NEWSCAN);
>
> - if (ucode_flags & IWL_UCODE_TLV_FLAGS_PAN) {
> - priv->sta_key_max_num = STA_KEY_MAX_NUM_PAN;
> - priv->shrd->cmd_queue = IWL_IPAN_CMD_QUEUE_NUM;
> - } else {
> - priv->sta_key_max_num = STA_KEY_MAX_NUM;
> - priv->shrd->cmd_queue = IWL_DEFAULT_CMD_QUEUE_NUM;
> - }
> -
> priv->phy_calib_chain_noise_reset_cmd =
> fw->ucode_capa.standard_phy_calibration_size;
> priv->phy_calib_chain_noise_gain_cmd =
> diff --git a/drivers/net/wireless/iwlwifi/iwl-shared.h b/drivers/net/wireless/iwlwifi/iwl-shared.h
> index 0e24803..cf34087 100644
> --- a/drivers/net/wireless/iwlwifi/iwl-shared.h
> +++ b/drivers/net/wireless/iwlwifi/iwl-shared.h
> @@ -366,7 +366,6 @@ struct iwl_cfg {
> /**
> * struct iwl_shared - shared fields for all the layers of the driver
> *
> - * @cmd_queue: command queue number
> * @status: STATUS_*
> * @wowlan: are we running wowlan uCode
> * @valid_contexts: microcode/device supports multiple contexts
> @@ -383,7 +382,6 @@ struct iwl_cfg {
> * @device_pointers: pointers to ucode event tables
> */
> struct iwl_shared {
> - u8 cmd_queue;
> unsigned long status;
> u8 valid_contexts;
>
> diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h
> index dd64e69..14e5d52 100644
> --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h
> +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h
> @@ -248,6 +248,7 @@ struct iwl_tx_queue {
> * @ucode_write_complete: indicates that the ucode has been copied.
> * @ucode_write_waitq: wait queue for uCode load
> * @status - transport specific status flags
> + * @cmd_queue - command queue number
> */
> struct iwl_trans_pcie {
> struct iwl_rx_queue rxq;
> @@ -289,6 +290,7 @@ struct iwl_trans_pcie {
> bool ucode_write_complete;
> wait_queue_head_t ucode_write_waitq;
> unsigned long status;
> + u8 cmd_queue;
> };
>
> #define IWL_TRANS_GET_PCIE_TRANS(_iwl_trans) \
> diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
> index 17e1487..9bc3c73 100644
> --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
> +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
> @@ -361,7 +361,7 @@ static void iwl_rx_handle_rxbuf(struct iwl_trans *trans,
> {
> struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
> struct iwl_rx_queue *rxq = &trans_pcie->rxq;
> - struct iwl_tx_queue *txq = &trans_pcie->txq[trans->shrd->cmd_queue];
> + struct iwl_tx_queue *txq = &trans_pcie->txq[trans_pcie->cmd_queue];
> struct iwl_device_cmd *cmd;
> unsigned long flags;
> int len, err;
> diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c
> index 8d13362..565c664 100644
> --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c
> +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c
> @@ -397,7 +397,7 @@ static void iwlagn_txq_inval_byte_cnt_tbl(struct iwl_trans *trans,
>
> WARN_ON(read_ptr >= TFD_QUEUE_SIZE_MAX);
>
> - if (txq_id != trans->shrd->cmd_queue)
> + if (txq_id != trans_pcie->cmd_queue)
> sta_id = tx_cmd->sta_id;
>
> bc_ent = cpu_to_le16(1 | (sta_id << 12));
> @@ -665,7 +665,7 @@ int iwl_trans_pcie_tx_agg_disable(struct iwl_trans *trans, int sta_id, int tid)
> static int iwl_enqueue_hcmd(struct iwl_trans *trans, struct iwl_host_cmd *cmd)
> {
> struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
> - struct iwl_tx_queue *txq = &trans_pcie->txq[trans->shrd->cmd_queue];
> + struct iwl_tx_queue *txq = &trans_pcie->txq[trans_pcie->cmd_queue];
> struct iwl_queue *q = &txq->q;
> struct iwl_device_cmd *out_cmd;
> struct iwl_cmd_meta *out_meta;
> @@ -738,7 +738,7 @@ static int iwl_enqueue_hcmd(struct iwl_trans *trans, struct iwl_host_cmd *cmd)
> out_cmd->hdr.cmd = cmd->id;
> out_cmd->hdr.flags = 0;
> out_cmd->hdr.sequence =
> - cpu_to_le16(QUEUE_TO_SEQ(trans->shrd->cmd_queue) |
> + cpu_to_le16(QUEUE_TO_SEQ(trans_pcie->cmd_queue) |
> INDEX_TO_SEQ(q->write_ptr));
>
> /* and copy the data that needs to be copied */
> @@ -758,7 +758,7 @@ static int iwl_enqueue_hcmd(struct iwl_trans *trans, struct iwl_host_cmd *cmd)
> get_cmd_string(out_cmd->hdr.cmd),
> out_cmd->hdr.cmd,
> le16_to_cpu(out_cmd->hdr.sequence), cmd_size,
> - q->write_ptr, idx, trans->shrd->cmd_queue);
> + q->write_ptr, idx, trans_pcie->cmd_queue);
>
> phys_addr = dma_map_single(trans->dev, &out_cmd->hdr, copy_size,
> DMA_BIDIRECTIONAL);
> @@ -882,16 +882,16 @@ void iwl_tx_cmd_complete(struct iwl_trans *trans, struct iwl_rx_cmd_buffer *rxb,
> struct iwl_device_cmd *cmd;
> struct iwl_cmd_meta *meta;
> struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
> - struct iwl_tx_queue *txq = &trans_pcie->txq[trans->shrd->cmd_queue];
> + struct iwl_tx_queue *txq = &trans_pcie->txq[trans_pcie->cmd_queue];
>
> /* If a Tx command is being handled and it isn't in the actual
> * command queue then there a command routing bug has been introduced
> * in the queue management code. */
> - if (WARN(txq_id != trans->shrd->cmd_queue,
> + if (WARN(txq_id != trans_pcie->cmd_queue,
> "wrong command queue %d (should be %d), sequence 0x%X readp=%d writep=%d\n",
> - txq_id, trans->shrd->cmd_queue, sequence,
> - trans_pcie->txq[trans->shrd->cmd_queue].q.read_ptr,
> - trans_pcie->txq[trans->shrd->cmd_queue].q.write_ptr)) {
> + txq_id, trans_pcie->cmd_queue, sequence,
> + trans_pcie->txq[trans_pcie->cmd_queue].q.read_ptr,
> + trans_pcie->txq[trans_pcie->cmd_queue].q.write_ptr)) {
> iwl_print_hex_error(trans, pkt, 32);
> return;
> }
> @@ -998,7 +998,7 @@ static int iwl_send_cmd_sync(struct iwl_trans *trans, struct iwl_host_cmd *cmd)
> if (!ret) {
> if (test_bit(STATUS_HCMD_ACTIVE, &trans->shrd->status)) {
> struct iwl_tx_queue *txq =
> - &trans_pcie->txq[trans->shrd->cmd_queue];
> + &trans_pcie->txq[trans_pcie->cmd_queue];
> struct iwl_queue *q = &txq->q;
>
> IWL_ERR(trans,
> @@ -1035,7 +1035,7 @@ cancel:
> * in later, it will possibly set an invalid
> * address (cmd->meta.source).
> */
> - trans_pcie->txq[trans->shrd->cmd_queue].meta[cmd_idx].flags &=
> + trans_pcie->txq[trans_pcie->cmd_queue].meta[cmd_idx].flags &=
> ~CMD_WANT_SKB;
> }
>
> @@ -1066,7 +1066,7 @@ int iwl_tx_queue_reclaim(struct iwl_trans *trans, int txq_id, int index,
> int freed = 0;
>
> /* This function is not meant to release cmd queue*/
> - if (WARN_ON(txq_id == trans->shrd->cmd_queue))
> + if (WARN_ON(txq_id == trans_pcie->cmd_queue))
> return 0;
>
> lockdep_assert_held(&txq->lock);
> diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
> index b0d34f7..f28f4cb 100644
> --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
> +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
> @@ -78,9 +78,9 @@
>
> #define IWL_MASK(lo, hi) ((1 << (hi)) | ((1 << (hi)) - (1 << (lo))))
>
> -#define SCD_QUEUECHAIN_SEL_ALL(trans) \
> +#define SCD_QUEUECHAIN_SEL_ALL(trans, trans_pcie) \
> (((1<<cfg(trans)->base_params->num_of_queues) - 1) &\
> - (~(1<<(trans)->shrd->cmd_queue)))
> + (~(1<<(trans_pcie)->cmd_queue)))
>
>
> static int iwl_trans_rx_alloc(struct iwl_trans *trans)
> @@ -306,6 +306,7 @@ static int iwl_trans_txq_alloc(struct iwl_trans *trans,
> {
> size_t tfd_sz = sizeof(struct iwl_tfd) * TFD_QUEUE_SIZE_MAX;
> int i;
> + struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
>
> if (WARN_ON(txq->meta || txq->cmd || txq->skbs || txq->tfds))
> return -EINVAL;
> @@ -318,7 +319,7 @@ static int iwl_trans_txq_alloc(struct iwl_trans *trans,
> if (!txq->meta || !txq->cmd)
> goto error;
>
> - if (txq_id == trans->shrd->cmd_queue)
> + if (txq_id == trans_pcie->cmd_queue)
> for (i = 0; i < slots_num; i++) {
> txq->cmd[i] = kmalloc(sizeof(struct iwl_device_cmd),
> GFP_KERNEL);
> @@ -329,7 +330,7 @@ static int iwl_trans_txq_alloc(struct iwl_trans *trans,
> /* Alloc driver data array and TFD circular buffer */
> /* Driver private data, only for Tx (not command) queues,
> * not shared with device. */
> - if (txq_id != trans->shrd->cmd_queue) {
> + if (txq_id != trans_pcie->cmd_queue) {
> txq->skbs = kcalloc(TFD_QUEUE_SIZE_MAX, sizeof(txq->skbs[0]),
> GFP_KERNEL);
> if (!txq->skbs) {
> @@ -357,7 +358,7 @@ error:
> txq->skbs = NULL;
> /* since txq->cmd has been zeroed,
> * all non allocated cmd[i] will be NULL */
> - if (txq->cmd && txq_id == trans->shrd->cmd_queue)
> + if (txq->cmd && txq_id == trans_pcie->cmd_queue)
> for (i = 0; i < slots_num; i++)
> kfree(txq->cmd[i]);
> kfree(txq->meta);
> @@ -423,7 +424,7 @@ static void iwl_tx_queue_unmap(struct iwl_trans *trans, int txq_id)
> /* In the command queue, all the TBs are mapped as BIDI
> * so unmap them as such.
> */
> - if (txq_id == trans->shrd->cmd_queue)
> + if (txq_id == trans_pcie->cmd_queue)
> dma_dir = DMA_BIDIRECTIONAL;
> else
> dma_dir = DMA_TO_DEVICE;
> @@ -459,7 +460,7 @@ static void iwl_tx_queue_free(struct iwl_trans *trans, int txq_id)
>
> /* De-alloc array of command/tx buffers */
>
> - if (txq_id == trans->shrd->cmd_queue)
> + if (txq_id == trans_pcie->cmd_queue)
> for (i = 0; i < txq->q.n_window; i++)
> kfree(txq->cmd[i]);
>
> @@ -557,7 +558,7 @@ static int iwl_trans_tx_alloc(struct iwl_trans *trans)
> /* Alloc and init all Tx queues, including the command queue (#4/#9) */
> for (txq_id = 0; txq_id < cfg(trans)->base_params->num_of_queues;
> txq_id++) {
> - slots_num = (txq_id == trans->shrd->cmd_queue) ?
> + slots_num = (txq_id == trans_pcie->cmd_queue) ?
> TFD_CMD_SLOTS : TFD_TX_CMD_SLOTS;
> ret = iwl_trans_txq_alloc(trans, &trans_pcie->txq[txq_id],
> slots_num, txq_id);
> @@ -603,7 +604,7 @@ static int iwl_tx_init(struct iwl_trans *trans)
> /* Alloc and init all Tx queues, including the command queue (#4/#9) */
> for (txq_id = 0; txq_id < cfg(trans)->base_params->num_of_queues;
> txq_id++) {
> - slots_num = (txq_id == trans->shrd->cmd_queue) ?
> + slots_num = (txq_id == trans_pcie->cmd_queue) ?
> TFD_CMD_SLOTS : TFD_TX_CMD_SLOTS;
> ret = iwl_trans_txq_init(trans, &trans_pcie->txq[txq_id],
> slots_num, txq_id);
> @@ -1138,7 +1139,7 @@ static void iwl_tx_start(struct iwl_trans *trans)
> reg_val | FH_TX_CHICKEN_BITS_SCD_AUTO_RETRY_EN);
>
> iwl_write_prph(trans, SCD_QUEUECHAIN_SEL,
> - SCD_QUEUECHAIN_SEL_ALL(trans));
> + SCD_QUEUECHAIN_SEL_ALL(trans, trans_pcie));
> iwl_write_prph(trans, SCD_AGGR_SEL, 0);
>
> /* initiate the queues */
> @@ -1170,7 +1171,7 @@ static void iwl_tx_start(struct iwl_trans *trans)
> else
> queue_to_fifo = iwlagn_default_queue_to_tx_fifo;
>
> - iwl_trans_set_wr_ptrs(trans, trans->shrd->cmd_queue, 0);
> + iwl_trans_set_wr_ptrs(trans, trans_pcie->cmd_queue, 0);
>
> /* make sure all queue are not stopped */
> memset(&trans_pcie->queue_stopped[0], 0,
> @@ -1622,6 +1623,14 @@ static u32 iwl_trans_pcie_read32(struct iwl_trans *trans, u32 ofs)
> return readl(IWL_TRANS_GET_PCIE_TRANS(trans)->hw_base + ofs);
> }
>
> +static void iwl_trans_pcie_configure(struct iwl_trans *trans,
> + const struct iwl_trans_config *trans_cfg)
> +{
> + struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
> +
> + trans_pcie->cmd_queue = trans_cfg->cmd_queue;
> +}
> +
> static void iwl_trans_pcie_free(struct iwl_trans *trans)
> {
> struct iwl_trans_pcie *trans_pcie =
> @@ -1682,7 +1691,7 @@ static int iwl_trans_pcie_wait_tx_queue_empty(struct iwl_trans *trans)
>
> /* waiting for all the tx frames complete might take a while */
> for (cnt = 0; cnt < cfg(trans)->base_params->num_of_queues; cnt++) {
> - if (cnt == trans->shrd->cmd_queue)
> + if (cnt == trans_pcie->cmd_queue)
> continue;
> txq = &trans_pcie->txq[cnt];
> q = &txq->q;
> @@ -2213,6 +2222,7 @@ const struct iwl_trans_ops trans_ops_pcie = {
> .write8 = iwl_trans_pcie_write8,
> .write32 = iwl_trans_pcie_write32,
> .read32 = iwl_trans_pcie_read32,
> + .configure = iwl_trans_pcie_configure,
> };
>
> struct iwl_trans *iwl_trans_pcie_alloc(struct iwl_shared *shrd,
> diff --git a/drivers/net/wireless/iwlwifi/iwl-trans.h b/drivers/net/wireless/iwlwifi/iwl-trans.h
> index b6fd427..a40c272 100644
> --- a/drivers/net/wireless/iwlwifi/iwl-trans.h
> +++ b/drivers/net/wireless/iwlwifi/iwl-trans.h
> @@ -279,9 +279,12 @@ static inline struct page *rxb_steal_page(struct iwl_rx_cmd_buffer *r)
> *
> * @op_mode: pointer to the upper layer.
> * Must be set before any other call.
> + * @cmd_queue: the index of the command queue.
> + * Must be set before start_fw.
> */
> struct iwl_trans_config {
> struct iwl_op_mode *op_mode;
> + u8 cmd_queue;
> };
>
> /**
> @@ -331,6 +334,8 @@ struct iwl_trans_config {
> * @write8: write a u8 to a register at offset ofs from the BAR
> * @write32: write a u32 to a register at offset ofs from the BAR
> * @read32: read a u32 register at offset ofs from the BAR
> + * @configure: configure parameters required by the transport layer from
> + * the op_mode.
> */
> struct iwl_trans_ops {
>
> @@ -370,6 +375,8 @@ struct iwl_trans_ops {
> void (*write8)(struct iwl_trans *trans, u32 ofs, u8 val);
> void (*write32)(struct iwl_trans *trans, u32 ofs, u32 val);
> u32 (*read32)(struct iwl_trans *trans, u32 ofs);
> + void (*configure)(struct iwl_trans *trans,
> + const struct iwl_trans_config *trans_cfg);
> };
>
> /**
> @@ -425,6 +432,8 @@ static inline void iwl_trans_configure(struct iwl_trans *trans,
> * more
> */
> trans->op_mode = trans_cfg->op_mode;
> +
> + trans->ops->configure(trans, trans_cfg);
> }
>
> static inline int iwl_trans_start_hw(struct iwl_trans *trans)
> --
> 1.7.0.4
>
>
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
next prev parent reply other threads:[~2012-03-08 19:32 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-07 17:52 [PATCH 00/35] update for 3.4: iwlwifi 2012-03-07 Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 01/35] iwlwifi: remove unused arguments from iwlagn_gain_computation Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 02/35] iwlwifi: remove unused argument from rs_initialize_lq Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 03/35] iwlwifi: move iwl_sta_id_or_broadcast to user Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 04/35] iwlwifi: remove unused argument from iwl_init_hw_rates Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 05/35] iwlwifi: remove two unused arguments in testmode Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 06/35] iwlwifi: remove unused argument from iwlagn_suspend Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 07/35] iwlwifi: redesign PASSIVE_NO_RX workaround Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 08/35] iwlwifi: transport's tx_agg_disable must be atomic Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 09/35] iwlwifi: remove BT handlers from lib_ops Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 10/35] iwlwifi: move BT/HT params to shared Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 11/35] iwlwifi: make EEPROM enhanced TX power a bool Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 12/35] iwlwifi: remove unused max_nrg_cck from sensitivity and constify Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 13/35] iwlwifi: return error if loading uCode failed Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 14/35] iwlwifi: dump stack when fail to gain access to the device Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 15/35] iwlwifi: always check if got h/w access before write Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 16/35] iwlwifi: cleanup/fix memory barriers Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 17/35] iwlwifi: use writeb,writel,readl directly Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 18/35] iwlwifi: print DMA stop timeout error only if it happened Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 19/35] iwlwifi: reintroduce iwl_enable_rfkill_int Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 20/35] iwlwifi: add testmode command for rx forwarding Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 21/35] iwlwifi: fixed testmode notifications length Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 22/35] iwlwifi: add option to test MFP Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 23/35] iwlwifi: separate status to priv and trans Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 24/35] iwlwifi: make tx_cmd_pool kmem cache global Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 25/35] iwlwifi: log stop / wake queues Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 26/35] iwlwifi: configure transport layer from dvm op mode Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 27/35] iwlwifi: move setting up fw parameters Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 28/35] iwlwifi: more status bit factoring Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 29/35] iwlwifi: move command queue number out of the iwl_shared struct Wey-Yi Guy
2012-03-08 19:19 ` John W. Linville [this message]
2012-03-08 20:21 ` Guy, Wey-Yi
2012-03-07 17:52 ` [PATCH RESEND 30/35] iwlwifi: remove messages from queue wake/stop Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 31/35] iwlwifi: make iwl_init_context static Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 33/35] iwlwifi: restore PAN support Wey-Yi Guy
2012-03-08 19:20 ` John W. Linville
2012-03-08 18:29 ` Guy, Wey-Yi
2012-03-07 17:52 ` [PATCH RESEND 33/35] iwlwifi: don't delete AP station directly Wey-Yi Guy
2012-03-07 17:52 ` [PATCH RESEND 34/35] iwlwifi: correct status bit refactoring errors Wey-Yi Guy
2012-03-08 13:55 ` Stanislaw Gruszka
2012-03-08 14:04 ` Johannes Berg
2012-03-07 17:52 ` [PATCH RESEND 35/35] iwlwifi: always monitor for stuck queues Wey-Yi Guy
2012-03-07 20:23 ` [PATCH] iwlwifi: Add __printf verification Joe Perches
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120308191926.GA2469@tuxdriver.com \
--to=linville@tuxdriver.com \
--cc=linux-wireless@vger.kernel.org \
--cc=meenakshi.venkataraman@intel.com \
--cc=wey-yi.w.guy@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).