Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+14 −10
Original line number Diff line number Diff line
@@ -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)
{