summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorMeenakshi Venkataraman <meenakshi.venkataraman@intel.com>2012-03-07 09:52:35 -0800
committerJohn W. Linville <linville@tuxdriver.com>2012-03-08 13:59:55 -0500
commit92d743ae105314a865b3fca9128da11525d22203 (patch)
tree6298acf9da2fab5531449e15182ee01acdb120ba /drivers
parent3251715dc51a8cbd2cd030ff94fe36f37b4b9e74 (diff)
iwlwifi: configure transport layer from dvm op mode
Introduce the iwl_trans_config struct which contains state variables that only the op mode can determine, but which the transport layer needs to know. Signed-off-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c10
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-trans.h14
2 files changed, 21 insertions, 3 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 6ed2f782177..83018ec11bc 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -1185,6 +1185,7 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans,
struct iwl_op_mode *op_mode;
u16 num_mac;
u32 ucode_flags;
+ struct iwl_trans_config trans_cfg;
/************************
* 1. Allocating HW data
@@ -1205,7 +1206,14 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans,
/* TODO: remove fw from shared data later */
priv->shrd->fw = fw;
- iwl_trans_configure(trans(priv), op_mode);
+ /*
+ * Populate the state variables that the transport layer needs
+ * to know about.
+ */
+ trans_cfg.op_mode = op_mode;
+
+ /* Configure transport layer */
+ iwl_trans_configure(trans(priv), &trans_cfg);
/* At this point both hw and priv are allocated. */
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans.h b/drivers/net/wireless/iwlwifi/iwl-trans.h
index ed6ab449e43..b6fd4277962 100644
--- a/drivers/net/wireless/iwlwifi/iwl-trans.h
+++ b/drivers/net/wireless/iwlwifi/iwl-trans.h
@@ -275,6 +275,16 @@ static inline struct page *rxb_steal_page(struct iwl_rx_cmd_buffer *r)
}
/**
+ * struct iwl_trans_config - transport configuration
+ *
+ * @op_mode: pointer to the upper layer.
+ * Must be set before any other call.
+ */
+struct iwl_trans_config {
+ struct iwl_op_mode *op_mode;
+};
+
+/**
* struct iwl_trans_ops - transport specific operations
*
* All the handlers MUST be implemented
@@ -408,13 +418,13 @@ struct iwl_trans {
};
static inline void iwl_trans_configure(struct iwl_trans *trans,
- struct iwl_op_mode *op_mode)
+ const struct iwl_trans_config *trans_cfg)
{
/*
* only set the op_mode for the moment. Later on, this function will do
* more
*/
- trans->op_mode = op_mode;
+ trans->op_mode = trans_cfg->op_mode;
}
static inline int iwl_trans_start_hw(struct iwl_trans *trans)