]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
rsi: Update baseband RF programming frame
authorPrameela Rani Garnepudi <prameela.j04cs@gmail.com>
Mon, 10 Jul 2017 12:40:38 +0000 (18:10 +0530)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 28 Jul 2017 14:25:39 +0000 (17:25 +0300)
Baseband RF programming frame configured to device is modified
to use common descriptor structure.

Signed-off-by: Prameela Rani Garnepudi <prameela.j04cs@gmail.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 a1a60f7dd42fbc04c3932c8c0e44792b8db34dd9..ead3573b027ba4413a4f504824171fce72c90595 100644 (file)
@@ -577,34 +577,36 @@ int rsi_send_aggregation_params_frame(struct rsi_common *common,
 static int rsi_program_bb_rf(struct rsi_common *common)
 {
        struct sk_buff *skb;
-       struct rsi_mac_frame *mgmt_frame;
+       struct rsi_bb_rf_prog *bb_rf_prog;
+       u16 frame_len = sizeof(struct rsi_bb_rf_prog);
 
        rsi_dbg(MGMT_TX_ZONE, "%s: Sending program BB/RF frame\n", __func__);
 
-       skb = dev_alloc_skb(FRAME_DESC_SZ);
+       skb = dev_alloc_skb(frame_len);
        if (!skb) {
                rsi_dbg(ERR_ZONE, "%s: Failed in allocation of skb\n",
                        __func__);
                return -ENOMEM;
        }
 
-       memset(skb->data, 0, FRAME_DESC_SZ);
-       mgmt_frame = (struct rsi_mac_frame *)skb->data;
+       memset(skb->data, 0, frame_len);
+       bb_rf_prog = (struct rsi_bb_rf_prog *)skb->data;
 
-       mgmt_frame->desc_word[0] = cpu_to_le16(RSI_WIFI_MGMT_Q << 12);
-       mgmt_frame->desc_word[1] = cpu_to_le16(BBP_PROG_IN_TA);
-       mgmt_frame->desc_word[4] = cpu_to_le16(common->endpoint);
+       rsi_set_len_qno(&bb_rf_prog->desc_dword0.len_qno, 0, RSI_WIFI_MGMT_Q);
+       bb_rf_prog->desc_dword0.frame_type = BBP_PROG_IN_TA;
+       bb_rf_prog->endpoint = common->endpoint;
+       bb_rf_prog->rf_power_mode = common->wlan_rf_power_mode;
 
        if (common->rf_reset) {
-               mgmt_frame->desc_word[7] =  cpu_to_le16(RF_RESET_ENABLE);
+               bb_rf_prog->flags =  cpu_to_le16(RF_RESET_ENABLE);
                rsi_dbg(MGMT_TX_ZONE, "%s: ===> RF RESET REQUEST SENT <===\n",
                        __func__);
                common->rf_reset = 0;
        }
        common->bb_rf_prog_count = 1;
-       mgmt_frame->desc_word[7] |= cpu_to_le16(PUT_BBP_RESET |
-                                    BBP_REG_WRITE | (RSI_RF_TYPE << 4));
-       skb_put(skb, FRAME_DESC_SZ);
+       bb_rf_prog->flags |= cpu_to_le16(PUT_BBP_RESET | BBP_REG_WRITE |
+                                        (RSI_RF_TYPE << 4));
+       skb_put(skb, frame_len);
 
        return rsi_send_internal_mgmt_frame(common, skb);
 }
index 68863c814c82157b7135d8e47a9e1b40f7f6f9eb..d44c79f7488255884b8ed7ee254a579214fb4409 100644 (file)
@@ -294,6 +294,18 @@ struct rsi_aggr_params {
        u8 peer_id;
 } __packed;
 
+struct rsi_bb_rf_prog {
+       struct rsi_cmd_desc_dword0 desc_dword0;
+       __le16 reserved1;
+       u8 rf_power_mode;
+       u8 reserved2;
+       u8 endpoint;
+       u8 reserved3;
+       __le16 reserved4;
+       __le16 reserved5;
+       __le16 flags;
+} __packed;
+
 struct rsi_vap_caps {
        __le16 desc_word[8];
        u8 mac_addr[6];