提交 b8bedefd 编写于 作者: L Luis Carlos Cobo Rus 提交者: John W. Linville

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

Signed-off-by: NLuis Carlos Cobo Rus <luisca@cozybit.com>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 717c9339
......@@ -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)
{
......
......@@ -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)
{
......
......@@ -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:
......
......@@ -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);
......
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册