Skip to content

Commit

Permalink
orinoco: Split wevent work thread from wevent sending
Browse files Browse the repository at this point in the history
This allows us to send more wevents from the work thread. We will need
to do this to support WPA.

Signed-off-by: David Kilroy <kilroyd@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
David Kilroy authored and John W. Linville committed Aug 22, 2008
1 parent 4ae6ee2 commit 6cd90b1
Showing 1 changed file with 14 additions and 10 deletions.
24 changes: 14 additions & 10 deletions drivers/net/wireless/orinoco.c
Original file line number Diff line number Diff line change
Expand Up @@ -1424,34 +1424,38 @@ static void orinoco_join_ap(struct work_struct *work)
}

/* Send new BSSID to userspace */
static void orinoco_send_wevents(struct work_struct *work)
static void orinoco_send_bssid_wevent(struct orinoco_private *priv)
{
struct orinoco_private *priv =
container_of(work, struct orinoco_private, wevent_work);
struct net_device *dev = priv->ndev;
struct hermes *hw = &priv->hw;
union iwreq_data wrqu;
int err;
unsigned long flags;

if (orinoco_lock(priv, &flags) != 0)
return;

err = hermes_read_ltv(hw, IRQ_BAP, HERMES_RID_CURRENTBSSID,
ETH_ALEN, NULL, wrqu.ap_addr.sa_data);
if (err != 0)
goto out;
return;

wrqu.ap_addr.sa_family = ARPHRD_ETHER;

/* Send event to user space */
wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL);
}

static void orinoco_send_wevents(struct work_struct *work)
{
struct orinoco_private *priv =
container_of(work, struct orinoco_private, wevent_work);
unsigned long flags;

if (orinoco_lock(priv, &flags) != 0)
return;

orinoco_send_bssid_wevent(priv);

out:
orinoco_unlock(priv, &flags);
}


static inline void orinoco_clear_scan_results(struct orinoco_private *priv,
unsigned long scan_age)
{
Expand Down

0 comments on commit 6cd90b1

Please sign in to comment.