rsi: update set_antenna command frame

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>
This commit is contained in:
Pavani Muthyala 2017-08-03 19:58:58 +05:30 committed by Kalle Valo
parent edba3532c6
commit 588349a1fe
2 changed files with 18 additions and 6 deletions

View 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) 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; struct sk_buff *skb;
skb = dev_alloc_skb(FRAME_DESC_SZ); 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); 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); skb_put(skb, FRAME_DESC_SZ);
return rsi_send_internal_mgmt_frame(common, skb); return rsi_send_internal_mgmt_frame(common, skb);

View File

@ -155,6 +155,8 @@
#define ANTENNA_SEL_INT 0x02 /* RF_OUT_2 / Integerated */ #define ANTENNA_SEL_INT 0x02 /* RF_OUT_2 / Integerated */
#define ANTENNA_SEL_UFL 0x03 /* RF_OUT_1 / U.FL */ #define ANTENNA_SEL_UFL 0x03 /* RF_OUT_1 / U.FL */
#define ANTENNA_MASK_VALUE 0x00ff
#define ANTENNA_SEL_TYPE 1
/* Rx filter word definitions */ /* Rx filter word definitions */
#define PROMISCOUS_MODE BIT(0) #define PROMISCOUS_MODE BIT(0)
@ -348,6 +350,15 @@ struct rsi_vap_caps {
__le16 beacon_miss_threshold; __le16 beacon_miss_threshold;
} __packed; } __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 */ /* Key descriptor flags */
#define RSI_KEY_TYPE_BROADCAST BIT(1) #define RSI_KEY_TYPE_BROADCAST BIT(1)
#define RSI_WEP_KEY BIT(2) #define RSI_WEP_KEY BIT(2)