[PATCH] libertas: pull current channel from firmware on mesh autostart

Signed-off-by: Luis Carlos Cobo Rus <luisca@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Luis Carlos Cobo Rus 2007-05-30 12:14:34 -04:00 committed by John W. Linville
parent 717c933920
commit b8bedefd8f
5 changed files with 13 additions and 0 deletions

View File

@ -200,6 +200,14 @@ static int update_channel(wlan_private * priv)
cmd_option_waitforrsp, 0, NULL);
}
void libertas_sync_channel(struct work_struct *work)
{
wlan_private *priv = container_of(work, wlan_private, sync_channel);
if (update_channel(priv) != 0)
lbs_pr_info("Channel synchronization failed.");
}
static int assoc_helper_channel(wlan_private *priv,
struct assoc_request * assoc_req)
{

View File

@ -9,6 +9,8 @@ void libertas_association_worker(struct work_struct *work);
struct assoc_request * wlan_get_association_request(wlan_adapter *adapter);
void libertas_sync_channel(struct work_struct *work);
#define ASSOC_DELAY (HZ / 2)
static inline void wlan_postpone_association_work(wlan_private *priv)
{

View File

@ -987,6 +987,7 @@ int libertas_process_event(wlan_private * priv)
netif_carrier_on(priv->mesh_dev) ;
}
adapter->mode = IW_MODE_ADHOC ;
schedule_work(&priv->sync_channel);
break;
default:

View File

@ -150,6 +150,7 @@ struct _wlan_private {
struct delayed_work assoc_work;
struct workqueue_struct *assoc_thread;
struct work_struct sync_channel;
/** Hardware access */
int (*hw_register_dev) (wlan_private * priv);

View File

@ -847,6 +847,7 @@ int libertas_activate_card(wlan_private *priv, char *fw_name)
priv->assoc_thread =
create_singlethread_workqueue("libertas_assoc");
INIT_DELAYED_WORK(&priv->assoc_work, libertas_association_worker);
INIT_WORK(&priv->sync_channel, libertas_sync_channel);
/*
* Register the device. Fillup the private data structure with