iwlwifi: configure transport layer from dvm op mode
authorMeenakshi Venkataraman <meenakshi.venkataraman@intel.com>
Wed, 7 Mar 2012 17:52:35 +0000 (09:52 -0800)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 8 Mar 2012 18:59:55 +0000 (13:59 -0500)
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>
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-trans.h

index 6ed2f78..83018ec 100644 (file)
@@ -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. */
 
index ed6ab44..b6fd427 100644 (file)
@@ -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)