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: David Kilroy <kilroyd@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
4ae6ee2d72
commit
6cd90b1cac
1 changed files with 15 additions and 11 deletions
|
@ -1424,33 +1424,37 @@ 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);
|
||||
|
||||
out:
|
||||
orinoco_unlock(priv, &flags);
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
orinoco_unlock(priv, &flags);
|
||||
}
|
||||
|
||||
static inline void orinoco_clear_scan_results(struct orinoco_private *priv,
|
||||
unsigned long scan_age)
|
||||
|
|
Loading…
Reference in a new issue