aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Roskin <proski@gnu.org>2007-06-20 23:56:30 -0400
committerGuido Guenther <agx@sigxcpu.org>2007-06-26 09:53:14 -0400
commitf07969fb89b9e50efb797382a6d054fe56057781 (patch)
tree02175f43c5b1040097743939e70433d460ccb546
parent992875b481b3354067b8b3323864510fe0389103 (diff)
[PATCH] Re-examine and simplify code where "return" is followed by "else"
Try to make the code flow more linear. Handle easy cases early. This avoids unnecessary identation and a complex tree structure of the code. In at76_iw_handler_get_power(), an at76_dbg() call was supposed to cover the "disabled" case but would not actually be called. Fix it. Signed-off-by: Pavel Roskin <proski@gnu.org>
-rw-r--r--at76_usb.c199
1 files changed, 96 insertions, 103 deletions
diff --git a/at76_usb.c b/at76_usb.c
index 3e84c7b..d6572f7 100644
--- a/at76_usb.c
+++ b/at76_usb.c
@@ -396,10 +396,10 @@ static int at76_usbdfu_download(struct usb_device *udev, u8 *dfu_buffer,
exit:
kfree(dmabuf);
- if (ret < 0)
- return ret;
- else
- return 0;
+ if (ret >= 0)
+ ret = 0;
+
+ return ret;
}
/* Report that the scan results are ready */
@@ -3247,17 +3247,14 @@ static int at76_iw_handler_get_power(struct net_device *netdev,
{
struct at76_priv *priv = netdev_priv(netdev);
- if ((power->disabled = (priv->pm_mode == AT76_PM_OFF)))
- return 0;
- else {
- power->flags = IW_POWER_PERIOD;
+ power->disabled = (priv->pm_mode == AT76_PM_OFF);
+ if (!power->disabled) {
+ power->flags = IW_POWER_PERIOD | IW_POWER_ALL_R;
power->value = priv->pm_period;
}
- power->flags |= IW_POWER_ALL_R;
- at76_dbg(DBG_IOCTL,
- "%s: SIOCGIWPOWER - disabled %s flags x%x value x%x",
- netdev->name, (power->disabled) ? "true" : "false",
+ at76_dbg(DBG_IOCTL, "%s: SIOCGIWPOWER - %s flags x%x value x%x",
+ netdev->name, power->disabled ? "disabled" : "enabled",
power->flags, power->value);
return 0;
@@ -5501,113 +5498,109 @@ static struct sk_buff *at76_check_for_rx_frags(struct at76_priv *priv)
if (bptr->seqnr == seqnr) {
int left;
/* the fragment has the current sequence number */
- if (((bptr->fragnr + 1) & 0xf) == fragnr) {
- bptr->last_rx = jiffies;
- /* the next following fragment number ->
- add the data at the end */
- /* is & 0xf necessary above ??? */
-
- /* for test only ??? */
- left = skb_tailroom(bptr->skb);
- if (left < data_len) {
- printk(KERN_INFO
- "%s: only %d byte free (need %d)\n",
- priv->netdev->name, left,
- data_len);
- } else
- memcpy(skb_put(bptr->skb, data_len),
- data, data_len);
- bptr->fragnr = fragnr;
- if (!(frame_ctl & IEEE80211_FCTL_MOREFRAGS)) {
- /* this was the last fragment - send it */
- skb = bptr->skb;
- bptr->skb = NULL; /* free the entry */
- at76_dbg(DBG_RX_FRAGS,
- "%s: last frag of seq %d",
- priv->netdev->name, seqnr);
- return skb;
- } else
- return NULL;
- } else {
+ if (((bptr->fragnr + 1) & 0xf) != fragnr) {
/* wrong fragment number -> ignore it */
+ /* is & 0xf necessary above ??? */
at76_dbg(DBG_RX_FRAGS,
"%s: frag nr does not match: %d+1 != %d",
priv->netdev->name, bptr->fragnr,
fragnr);
return NULL;
}
- } else {
- /* got another sequence number */
- if (fragnr == 0) {
- /* it's the start of a new chain - replace the
- old one by this */
- /* bptr->sender has the correct value already */
- at76_dbg(DBG_RX_FRAGS,
- "%s: start of new seq %d, "
- "removing old seq %d",
- priv->netdev->name, seqnr,
- bptr->seqnr);
- bptr->seqnr = seqnr;
- bptr->fragnr = 0;
- bptr->last_rx = jiffies;
- /* swap bptr->skb and priv->rx_skb */
- skb = bptr->skb;
- bptr->skb = priv->rx_skb;
- priv->rx_skb = skb;
- } else {
- /* it from the middle of a new chain ->
- delete the old entry and skip the new one */
- at76_dbg(DBG_RX_FRAGS,
- "%s: middle of new seq %d (%d) "
- "removing old seq %d",
- priv->netdev->name, seqnr, fragnr,
- bptr->seqnr);
- dev_kfree_skb(bptr->skb);
- bptr->skb = NULL;
- }
- return NULL;
- }
- } else {
- /* if we didn't find a chain for the sender address optr
- points either to the first free or the oldest entry */
+ bptr->last_rx = jiffies;
+ /* the next following fragment number ->
+ add the data at the end */
- if (fragnr != 0) {
- /* this is not the begin of a fragment chain ... */
- at76_dbg(DBG_RX_FRAGS,
- "%s: no chain for non-first fragment (%d)",
- priv->netdev->name, fragnr);
- return NULL;
+ /* for test only ??? */
+ left = skb_tailroom(bptr->skb);
+ if (left < data_len) {
+ printk(KERN_INFO
+ "%s: only %d byte free (need %d)\n",
+ priv->netdev->name, left, data_len);
+ } else
+ memcpy(skb_put(bptr->skb, data_len), data,
+ data_len);
+ bptr->fragnr = fragnr;
+ if (frame_ctl & IEEE80211_FCTL_MOREFRAGS)
+ return NULL;
+
+ /* this was the last fragment - send it */
+ skb = bptr->skb;
+ bptr->skb = NULL; /* free the entry */
+ at76_dbg(DBG_RX_FRAGS, "%s: last frag of seq %d",
+ priv->netdev->name, seqnr);
+ return skb;
}
- at76_assert(optr != NULL);
- if (optr == NULL)
- return NULL;
-
- if (optr->skb != NULL) {
- /* swap the skb's */
- skb = optr->skb;
- optr->skb = priv->rx_skb;
- priv->rx_skb = skb;
+ /* got another sequence number */
+ if (fragnr == 0) {
+ /* it's the start of a new chain - replace the
+ old one by this */
+ /* bptr->sender has the correct value already */
at76_dbg(DBG_RX_FRAGS,
- "%s: free old contents: sender %s seq/frag %d/%d",
- priv->netdev->name, mac2str(optr->sender),
- optr->seqnr, optr->fragnr);
-
+ "%s: start of new seq %d, removing old seq %d",
+ priv->netdev->name, seqnr, bptr->seqnr);
+ bptr->seqnr = seqnr;
+ bptr->fragnr = 0;
+ bptr->last_rx = jiffies;
+ /* swap bptr->skb and priv->rx_skb */
+ skb = bptr->skb;
+ bptr->skb = priv->rx_skb;
+ priv->rx_skb = skb;
} else {
- /* take the skb from priv->rx_skb */
- optr->skb = priv->rx_skb;
- priv->rx_skb = NULL; /* let at76_submit_rx_urb() allocate a new skb */
-
- at76_dbg(DBG_RX_FRAGS, "%s: use a free entry",
- priv->netdev->name);
+ /* it from the middle of a new chain ->
+ delete the old entry and skip the new one */
+ at76_dbg(DBG_RX_FRAGS,
+ "%s: middle of new seq %d (%d) "
+ "removing old seq %d",
+ priv->netdev->name, seqnr, fragnr,
+ bptr->seqnr);
+ dev_kfree_skb(bptr->skb);
+ bptr->skb = NULL;
}
- memcpy(optr->sender, i802_11_hdr->addr2, ETH_ALEN);
- optr->seqnr = seqnr;
- optr->fragnr = 0;
- optr->last_rx = jiffies;
+ return NULL;
+ }
+ /* if we didn't find a chain for the sender address, optr
+ points either to the first free or the oldest entry */
+
+ if (fragnr != 0) {
+ /* this is not the begin of a fragment chain ... */
+ at76_dbg(DBG_RX_FRAGS,
+ "%s: no chain for non-first fragment (%d)",
+ priv->netdev->name, fragnr);
return NULL;
}
+ at76_assert(optr != NULL);
+ if (optr == NULL)
+ return NULL;
+
+ if (optr->skb != NULL) {
+ /* swap the skb's */
+ skb = optr->skb;
+ optr->skb = priv->rx_skb;
+ priv->rx_skb = skb;
+
+ at76_dbg(DBG_RX_FRAGS,
+ "%s: free old contents: sender %s seq/frag %d/%d",
+ priv->netdev->name, mac2str(optr->sender),
+ optr->seqnr, optr->fragnr);
+
+ } else {
+ /* take the skb from priv->rx_skb */
+ optr->skb = priv->rx_skb;
+ /* let at76_submit_rx_urb() allocate a new skb */
+ priv->rx_skb = NULL;
+
+ at76_dbg(DBG_RX_FRAGS, "%s: use a free entry",
+ priv->netdev->name);
+ }
+ memcpy(optr->sender, i802_11_hdr->addr2, ETH_ALEN);
+ optr->seqnr = seqnr;
+ optr->fragnr = 0;
+ optr->last_rx = jiffies;
+
+ return NULL;
}
/* Rx interrupt: we expect the complete data buffer in priv->rx_skb */