Skip to content

Commit

Permalink
iwlwifi: add notification infrastructure to iwlcore
Browse files Browse the repository at this point in the history
This patch add notification function to be called by low level
iwl driver to notify iwlcore with current state. This function
will call iwlcore subsystem with the new state. This will
help make the code more consistent and easy to extend. For example
the rf-kill need to know when the driver in init, start, stop or
remove state. Instead doing the same call in 3945 and 4965, we
just do it from this function.

Signed-off-by: Mohamed Abbas <mabbas@linux.intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Mohamed Abbas authored and John W. Linville committed Apr 1, 2008
1 parent 0675abd commit c8381fd
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 0 deletions.
21 changes: 21 additions & 0 deletions drivers/net/wireless/iwlwifi/iwl-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -249,3 +249,24 @@ int iwl_setup(struct iwl_priv *priv)
}
EXPORT_SYMBOL(iwl_setup);

/* Low level driver call this function to update iwlcore with
* driver status.
*/
int iwlcore_low_level_notify(struct iwl_priv *priv,
enum iwlcore_card_notify notify)
{
switch (notify) {
case IWLCORE_INIT_EVT:
break;
case IWLCORE_START_EVT:
break;
case IWLCORE_STOP_EVT:
break;
case IWLCORE_REMOVE_EVT:
break;
}

return 0;
}
EXPORT_SYMBOL(iwlcore_low_level_notify);

9 changes: 9 additions & 0 deletions drivers/net/wireless/iwlwifi/iwl-core.h
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,13 @@ int iwl_send_cmd_pdu_async(struct iwl_priv *priv, u8 id, u16 len,
struct iwl_cmd *cmd,
struct sk_buff *skb));

enum iwlcore_card_notify {
IWLCORE_INIT_EVT = 0,
IWLCORE_START_EVT = 1,
IWLCORE_STOP_EVT = 2,
IWLCORE_REMOVE_EVT = 3,
};

int iwlcore_low_level_notify(struct iwl_priv *priv,
enum iwlcore_card_notify notify);
#endif /* __iwl_core_h__ */
6 changes: 6 additions & 0 deletions drivers/net/wireless/iwlwifi/iwl4965-base.c
Original file line number Diff line number Diff line change
Expand Up @@ -5724,6 +5724,7 @@ static void iwl4965_alive_start(struct iwl_priv *priv)
if (priv->error_recovering)
iwl4965_error_recovery(priv);

iwlcore_low_level_notify(priv, IWLCORE_START_EVT);
return;

restart:
Expand All @@ -5747,6 +5748,8 @@ static void __iwl4965_down(struct iwl_priv *priv)

iwl_leds_unregister(priv);

iwlcore_low_level_notify(priv, IWLCORE_STOP_EVT);

iwlcore_clear_stations_table(priv);

/* Unblock any waiting calls */
Expand Down Expand Up @@ -8167,6 +8170,8 @@ static int iwl4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e
pci_save_state(pdev);
pci_disable_device(pdev);

/* notify iwlcore to init */
iwlcore_low_level_notify(priv, IWLCORE_INIT_EVT);
return 0;

out_remove_sysfs:
Expand Down Expand Up @@ -8209,6 +8214,7 @@ static void __devexit iwl4965_pci_remove(struct pci_dev *pdev)
}
}

iwlcore_low_level_notify(priv, IWLCORE_REMOVE_EVT);
iwl_dbgfs_unregister(priv);
sysfs_remove_group(&pdev->dev.kobj, &iwl4965_attribute_group);

Expand Down

0 comments on commit c8381fd

Please sign in to comment.