Commit 6cd90b1c authored by David Kilroy's avatar David Kilroy Committed by John W. Linville

orinoco: Split wevent work thread from wevent sending

This allows us to send more wevents from the work thread. We will need
to do this to support WPA.
Signed-off-by: default avatarDavid Kilroy <kilroyd@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 4ae6ee2d
...@@ -1424,34 +1424,38 @@ static void orinoco_join_ap(struct work_struct *work) ...@@ -1424,34 +1424,38 @@ static void orinoco_join_ap(struct work_struct *work)
} }
/* Send new BSSID to userspace */ /* 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 net_device *dev = priv->ndev;
struct hermes *hw = &priv->hw; struct hermes *hw = &priv->hw;
union iwreq_data wrqu; union iwreq_data wrqu;
int err; int err;
unsigned long flags;
if (orinoco_lock(priv, &flags) != 0)
return;
err = hermes_read_ltv(hw, IRQ_BAP, HERMES_RID_CURRENTBSSID, err = hermes_read_ltv(hw, IRQ_BAP, HERMES_RID_CURRENTBSSID,
ETH_ALEN, NULL, wrqu.ap_addr.sa_data); ETH_ALEN, NULL, wrqu.ap_addr.sa_data);
if (err != 0) if (err != 0)
goto out; return;
wrqu.ap_addr.sa_family = ARPHRD_ETHER; wrqu.ap_addr.sa_family = ARPHRD_ETHER;
/* Send event to user space */ /* Send event to user space */
wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL); 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); orinoco_unlock(priv, &flags);
} }
static inline void orinoco_clear_scan_results(struct orinoco_private *priv, static inline void orinoco_clear_scan_results(struct orinoco_private *priv,
unsigned long scan_age) unsigned long scan_age)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment