solos: Swap upstream/downstream rates in status packet, clean up some more
authorDavid Woodhouse <David.Woodhouse@intel.com>
Fri, 30 Jan 2009 03:31:36 +0000 (14:31 +1100)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Fri, 30 Jan 2009 03:57:48 +0000 (14:57 +1100)
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
drivers/atm/solos-pci.c

index 7c26bd2ac11355e9f95ccd6f3e8ea992945618f2..eef920a9c4488b90b5250c10524b420af53bbecc 100644 (file)
@@ -314,14 +314,16 @@ static char *next_string(struct sk_buff *skb)
  * for the information therein. Fields are....
  *
  *     packet version
- *     TxBitRate       (version >= 1)
  *     RxBitRate       (version >= 1)
+ *     TxBitRate       (version >= 1)
  *     State           (version >= 1)
+ *     LocalSNRMargin  (version >= 1)
+ *     LocalLineAttn   (version >= 1)
  */       
 static int process_status(struct solos_card *card, int port, struct sk_buff *skb)
 {
-       char *str, *end, *state_str;
-       int ver, rate_up, rate_down, state;
+       char *str, *end, *state_str, *snr, *attn;
+       int ver, rate_up, rate_down;
 
        if (!card->atmdev[port])
                return -ENODEV;
@@ -346,45 +348,42 @@ static int process_status(struct solos_card *card, int port, struct sk_buff *skb
                return 0;
        }
 
-       rate_up = simple_strtol(str, &end, 10);
+       rate_down = simple_strtol(str, &end, 10);
        if (*end)
                return -EIO;
 
        str = next_string(skb);
        if (!str)
                return -EIO;
-       rate_down = simple_strtol(str, &end, 10);
+       rate_up = simple_strtol(str, &end, 10);
        if (*end)
                return -EIO;
 
        state_str = next_string(skb);
        if (!state_str)
                return -EIO;
-       if (!strcmp(state_str, "Showtime"))
-               state = ATM_PHY_SIG_FOUND;
-       else {
-               state = ATM_PHY_SIG_LOST;
+
+       /* Anything but 'Showtime' is down */
+       if (strcmp(state_str, "Showtime")) {
+               card->atmdev[port]->signal = ATM_PHY_SIG_LOST;
                release_vccs(card->atmdev[port]);
+               dev_info(&card->dev->dev, "Port %d: %s\n", port, state_str);
+               return 0;
        }
 
-       if (state == ATM_PHY_SIG_LOST) {
-               dev_info(&card->dev->dev, "Port %d: %s\n", port, state_str);
-       } else {
-               char *snr, *attn;
-
-               snr = next_string(skb);
-               if (!str)
-                       return -EIO;
-               attn = next_string(skb);
-               if (!attn)
-                       return -EIO;
-
-               dev_info(&card->dev->dev, "Port %d: %s @%d/%d kb/s%s%s%s%s\n",
-                        port, state_str, rate_down/1000, rate_up/1000,
-                        snr[0]?", SNR ":"", snr, attn[0]?", Attn ":"", attn);
-       }               
+       snr = next_string(skb);
+       if (!str)
+               return -EIO;
+       attn = next_string(skb);
+       if (!attn)
+               return -EIO;
+
+       dev_info(&card->dev->dev, "Port %d: %s @%d/%d kb/s%s%s%s%s\n",
+                port, state_str, rate_down/1000, rate_up/1000,
+                snr[0]?", SNR ":"", snr, attn[0]?", Attn ":"", attn);
+       
        card->atmdev[port]->link_rate = rate_down / 424;
-       card->atmdev[port]->signal = state;
+       card->atmdev[port]->signal = ATM_PHY_SIG_FOUND;
 
        return 0;
 }