wlcore: add print logs of radio_status in case of BIP calibration
authorYair Shapira <yair.shapira@ti.com>
Wed, 13 Jun 2012 14:14:22 +0000 (17:14 +0300)
committerLuciano Coelho <coelho@ti.com>
Wed, 13 Jun 2012 18:56:37 +0000 (21:56 +0300)
FEM BIP calibration may fail with fw/phy radio status. In order to
recognize these failures a log is added to the calibration answer
(TEST_CMD_P2G_CAL)

Signed-off-by: Yair Shapira <yair.shapira@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/ti/wlcore/cmd.h
drivers/net/wireless/ti/wlcore/testmode.c

index 85171f2..c8a6510 100644 (file)
@@ -652,4 +652,25 @@ struct wl12xx_cmd_stop_channel_switch {
        struct wl1271_cmd_header header;
 } __packed;
 
+/* Used to check radio status after calibration */
+#define MAX_TLV_LENGTH         500
+#define TEST_CMD_P2G_CAL       2       /* TX BiP */
+
+struct wl1271_cmd_cal_p2g {
+       struct wl1271_cmd_header header;
+
+       struct wl1271_cmd_test_header test;
+
+       __le32 ver;
+       __le16 len;
+       u8 buf[MAX_TLV_LENGTH];
+       u8 type;
+       u8 padding;
+
+       __le16 radio_status;
+
+       u8 sub_band_mask;
+       u8 padding2;
+} __packed;
+
 #endif /* __WL1271_CMD_H__ */
index 0e59ea2..eeb339d 100644 (file)
@@ -108,6 +108,20 @@ static int wl1271_tm_cmd_test(struct wl1271 *wl, struct nlattr *tb[])
        }
 
        if (answer) {
+               /* If we got bip calibration answer print radio status */
+               struct wl1271_cmd_cal_p2g *params =
+                       (struct wl1271_cmd_cal_p2g *) buf;
+
+               s16 radio_status = (s16) le16_to_cpu(params->radio_status);
+
+               if (params->test.id == TEST_CMD_P2G_CAL &&
+                   radio_status < 0)
+                       wl1271_warning("testmode cmd: radio status=%d",
+                                       radio_status);
+               else
+                       wl1271_info("testmode cmd: radio status=%d",
+                                       radio_status);
+
                len = nla_total_size(buf_len);
                skb = cfg80211_testmode_alloc_reply_skb(wl->hw->wiphy, len);
                if (!skb) {