Skip to content

Commit

Permalink
[PATCH] libertas: pull current channel from firmware on mesh autostart
Browse files Browse the repository at this point in the history
Signed-off-by: Luis Carlos Cobo Rus <luisca@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Luis Carlos Cobo Rus authored and John W. Linville committed Jun 12, 2007
1 parent 717c933 commit b8bedef
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 0 deletions.
8 changes: 8 additions & 0 deletions drivers/net/wireless/libertas/assoc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down
2 changes: 2 additions & 0 deletions drivers/net/wireless/libertas/assoc.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down
1 change: 1 addition & 0 deletions drivers/net/wireless/libertas/cmdresp.c
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
1 change: 1 addition & 0 deletions drivers/net/wireless/libertas/dev.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
1 change: 1 addition & 0 deletions drivers/net/wireless/libertas/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit b8bedef

Please sign in to comment.