}
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);
+
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__ */
if (priv->error_recovering)
iwl4965_error_recovery(priv);
+ iwlcore_low_level_notify(priv, IWLCORE_START_EVT);
return;
restart:
iwl_leds_unregister(priv);
+ iwlcore_low_level_notify(priv, IWLCORE_STOP_EVT);
+
iwlcore_clear_stations_table(priv);
/* Unblock any waiting calls */
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:
}
}
+ iwlcore_low_level_notify(priv, IWLCORE_REMOVE_EVT);
iwl_dbgfs_unregister(priv);
sysfs_remove_group(&pdev->dev.kobj, &iwl4965_attribute_group);