aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Roskin <proski@gnu.org>2007-07-10 02:21:50 -0400
committerGuido Guenther <agx@bogon.sigxcpu.org>2007-07-15 12:19:03 -0400
commit27bb36a2039deb90d38f7cf1cabcbb00c40d31ff (patch)
treeee92f5803805ffb6d52e7bb7e0740abc3943e6b3
parent52f394bd20798f8eb5618986fcf53dd4ff03eb78 (diff)
[PATCH] Eliminate priv->rx_urb, it shouldn't be there
Pass the urb as data to the tasklet instead of priv. Remove some paranoid sanity checks in at76_rx_tasklet(). Rename at76_submit_rx_urb() to at76_submit_read_urb() to avoid confusion. Signed-off-by: Pavel Roskin <proski@gnu.org>
-rw-r--r--at76_usb.c34
-rw-r--r--at76_usb.h1
2 files changed, 12 insertions, 23 deletions
diff --git a/at76_usb.c b/at76_usb.c
index c8bc55c..f08e886 100644
--- a/at76_usb.c
+++ b/at76_usb.c
@@ -1571,7 +1571,7 @@ static void at76_read_bulk_callback(struct urb *urb)
{
struct at76_priv *priv = urb->context;
- priv->rx_urb = urb;
+ priv->rx_tasklet.data = (unsigned long)urb;
tasklet_schedule(&priv->rx_tasklet);
return;
}
@@ -3782,7 +3782,7 @@ static void at76_tx_timeout(struct net_device *netdev)
priv->stats.tx_errors++;
}
-static int at76_submit_rx_urb(struct at76_priv *priv)
+static int at76_submit_read_urb(struct at76_priv *priv)
{
int ret, size;
struct sk_buff *skb = priv->rx_skb;
@@ -3865,9 +3865,9 @@ static int at76_open(struct net_device *netdev)
priv->last_scan = jiffies;
priv->nr_submit_rx_tries = NR_SUBMIT_RX_TRIES; /* init counter */
- ret = at76_submit_rx_urb(priv);
+ ret = at76_submit_read_urb(priv);
if (ret < 0) {
- err("%s: open: submit_rx_urb failed: %d", netdev->name, ret);
+ err("%s: open: submit_read_urb failed: %d", netdev->name, ret);
goto err;
}
@@ -4696,7 +4696,7 @@ static void at76_work_submit_rx(struct work_struct *work)
work_submit_rx);
mutex_lock(&priv->mtx);
- at76_submit_rx_urb(priv);
+ at76_submit_read_urb(priv);
mutex_unlock(&priv->mtx);
}
@@ -5562,7 +5562,7 @@ static struct sk_buff *at76_check_for_rx_frags(struct at76_priv *priv)
} else {
/* take the skb from priv->rx_skb */
optr->skb = priv->rx_skb;
- /* let at76_submit_rx_urb() allocate a new skb */
+ /* let at76_submit_read_urb() allocate a new skb */
priv->rx_skb = NULL;
at76_dbg(DBG_RX_FRAGS, "%s: use a free entry",
@@ -5710,18 +5710,13 @@ static void at76_iwspy_update(struct at76_priv *priv,
static void at76_rx_tasklet(unsigned long param)
{
- struct at76_priv *priv = (struct at76_priv *)param;
- struct urb *urb;
- struct net_device *netdev;
+ struct urb *urb = (struct urb *)param;
+ struct at76_priv *priv = urb->context;
+ struct net_device *netdev = priv->netdev;
struct at76_rx_buffer *buf;
struct ieee80211_hdr_3addr *i802_11_hdr;
u16 frame_ctl;
- if (!priv)
- return;
- urb = priv->rx_urb;
- netdev = priv->netdev;
-
if (priv->device_unplugged) {
at76_dbg(DBG_DEVSTART, "device unplugged");
if (urb)
@@ -5729,17 +5724,12 @@ static void at76_rx_tasklet(unsigned long param)
return;
}
- if (!urb || !priv->rx_skb || !netdev || !priv->rx_skb->data)
+ if (!priv->rx_skb || !netdev || !priv->rx_skb->data)
return;
buf = (struct at76_rx_buffer *)priv->rx_skb->data;
- if (!buf)
- return;
-
i802_11_hdr = (struct ieee80211_hdr_3addr *)buf->packet;
- if (!i802_11_hdr)
- return;
frame_ctl = le16_to_cpu(i802_11_hdr->frame_ctl);
@@ -5793,7 +5783,7 @@ static void at76_rx_tasklet(unsigned long param)
priv->netdev->name, frame_ctl);
}
finish:
- at76_submit_rx_urb(priv);
+ at76_submit_read_urb(priv);
no_more_urb:
return;
}
@@ -5850,7 +5840,7 @@ static struct at76_priv *at76_alloc_new_device(struct usb_device *udev)
priv->rx_data[i].skb = NULL;
priv->rx_tasklet.func = at76_rx_tasklet;
- priv->rx_tasklet.data = (unsigned long)priv;
+ priv->rx_tasklet.data = 0;
priv->pm_mode = AT76_PM_OFF;
priv->pm_period = 0;
diff --git a/at76_usb.h b/at76_usb.h
index af33785..ec022c6 100644
--- a/at76_usb.h
+++ b/at76_usb.h
@@ -470,7 +470,6 @@ struct at76_priv {
int nr_submit_rx_tries; /* number of tries to submit an rx urb left */
struct tasklet_struct rx_tasklet;
- struct urb *rx_urb; /* tmp urb pointer for rx_tasklet */
/* the WEP stuff */
int wep_enabled; /* 1 if WEP is enabled */