rsi: update set_antenna command frame
authorPavani Muthyala <pavani.muthyala@redpinesignals.com>
Thu, 3 Aug 2017 14:28:58 +0000 (19:58 +0530)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 8 Aug 2017 11:46:01 +0000 (14:46 +0300)
TX command frame set_antenna is modified to use common
descriptor structure. Also it's subframe type is set.

Signed-off-by: Pavani Muthyala <pavani.muthyala@redpinesignals.com>
Signed-off-by: Amitkumar Karwar <amit.karwar@redpinesignals.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/rsi/rsi_91x_mgmt.c
drivers/net/wireless/rsi/rsi_mgmt.h

index c488f4b..e00d4ed 100644 (file)
@@ -1407,7 +1407,7 @@ int rsi_send_rx_filter_frame(struct rsi_common *common, u16 rx_filter_word)
  */
 int rsi_set_antenna(struct rsi_common *common, u8 antenna)
 {
-       struct rsi_mac_frame *cmd_frame;
+       struct rsi_ant_sel_frame *ant_sel_frame;
        struct sk_buff *skb;
 
        skb = dev_alloc_skb(FRAME_DESC_SZ);
@@ -1418,12 +1418,13 @@ int rsi_set_antenna(struct rsi_common *common, u8 antenna)
        }
 
        memset(skb->data, 0, FRAME_DESC_SZ);
-       cmd_frame = (struct rsi_mac_frame *)skb->data;
-
-       cmd_frame->desc_word[1] = cpu_to_le16(ANT_SEL_FRAME);
-       cmd_frame->desc_word[3] = cpu_to_le16(antenna & 0x00ff);
-       cmd_frame->desc_word[0] = cpu_to_le16(RSI_WIFI_MGMT_Q << 12);
 
+       ant_sel_frame = (struct rsi_ant_sel_frame *)skb->data;
+       ant_sel_frame->desc_dword0.frame_type = ANT_SEL_FRAME;
+       ant_sel_frame->sub_frame_type = ANTENNA_SEL_TYPE;
+       ant_sel_frame->ant_value = cpu_to_le16(antenna & ANTENNA_MASK_VALUE);
+       rsi_set_len_qno(&ant_sel_frame->desc_dword0.len_qno,
+                       0, RSI_WIFI_MGMT_Q);
        skb_put(skb, FRAME_DESC_SZ);
 
        return rsi_send_internal_mgmt_frame(common, skb);
index cb0b17e..1060edc 100644 (file)
 
 #define ANTENNA_SEL_INT                        0x02 /* RF_OUT_2 / Integerated */
 #define ANTENNA_SEL_UFL                        0x03 /* RF_OUT_1 / U.FL */
+#define ANTENNA_MASK_VALUE             0x00ff
+#define ANTENNA_SEL_TYPE               1
 
 /* Rx filter word definitions */
 #define PROMISCOUS_MODE                        BIT(0)
@@ -348,6 +350,15 @@ struct rsi_vap_caps {
        __le16 beacon_miss_threshold;
 } __packed;
 
+struct rsi_ant_sel_frame {
+       struct rsi_cmd_desc_dword0 desc_dword0;
+       u8 reserved;
+       u8 sub_frame_type;
+       __le16 ant_value;
+       __le32 reserved1;
+       __le32 reserved2;
+} __packed;
+
 /* Key descriptor flags */
 #define RSI_KEY_TYPE_BROADCAST BIT(1)
 #define RSI_WEP_KEY            BIT(2)