Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 588349a1 authored by Pavani Muthyala's avatar Pavani Muthyala Committed by Kalle Valo
Browse files

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: default avatarPavani Muthyala <pavani.muthyala@redpinesignals.com>
Signed-off-by: default avatarAmitkumar Karwar <amit.karwar@redpinesignals.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent edba3532
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -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);
+11 −0
Original line number Diff line number Diff line
@@ -155,6 +155,8 @@

#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)