Commit 59e006dc authored by Prameela Rani Garnepudi's avatar Prameela Rani Garnepudi Committed by Kalle Valo

rsi: Update peer notify command frame

TX command frame peer notify is updated to use common descriptor
structure. MPDU density value added to the frame.
Signed-off-by: default avatarPrameela Rani Garnepudi <prameela.j04cs@gmail.com>
Signed-off-by: default avatarAmitkumar Karwar <amit.karwar@redpinesignals.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent dff80fc5
...@@ -460,10 +460,11 @@ static int rsi_hal_send_sta_notify_frame(struct rsi_common *common, ...@@ -460,10 +460,11 @@ static int rsi_hal_send_sta_notify_frame(struct rsi_common *common,
struct rsi_peer_notify *peer_notify; struct rsi_peer_notify *peer_notify;
u16 vap_id = 0; u16 vap_id = 0;
int status; int status;
u16 frame_len = sizeof(struct rsi_peer_notify);
rsi_dbg(MGMT_TX_ZONE, "%s: Sending sta notify frame\n", __func__); rsi_dbg(MGMT_TX_ZONE, "%s: Sending sta notify frame\n", __func__);
skb = dev_alloc_skb(sizeof(struct rsi_peer_notify)); skb = dev_alloc_skb(frame_len);
if (!skb) { if (!skb) {
rsi_dbg(ERR_ZONE, "%s: Failed in allocation of skb\n", rsi_dbg(ERR_ZONE, "%s: Failed in allocation of skb\n",
...@@ -471,7 +472,7 @@ static int rsi_hal_send_sta_notify_frame(struct rsi_common *common, ...@@ -471,7 +472,7 @@ static int rsi_hal_send_sta_notify_frame(struct rsi_common *common,
return -ENOMEM; return -ENOMEM;
} }
memset(skb->data, 0, sizeof(struct rsi_peer_notify)); memset(skb->data, 0, frame_len);
peer_notify = (struct rsi_peer_notify *)skb->data; peer_notify = (struct rsi_peer_notify *)skb->data;
peer_notify->command = cpu_to_le16(opmode << 1); peer_notify->command = cpu_to_le16(opmode << 1);
...@@ -489,16 +490,16 @@ static int rsi_hal_send_sta_notify_frame(struct rsi_common *common, ...@@ -489,16 +490,16 @@ static int rsi_hal_send_sta_notify_frame(struct rsi_common *common,
peer_notify->command |= cpu_to_le16((aid & 0xfff) << 4); peer_notify->command |= cpu_to_le16((aid & 0xfff) << 4);
ether_addr_copy(peer_notify->mac_addr, bssid); ether_addr_copy(peer_notify->mac_addr, bssid);
peer_notify->mpdu_density = cpu_to_le16(RSI_MPDU_DENSITY);
peer_notify->sta_flags = cpu_to_le32((qos_enable) ? 1 : 0); peer_notify->sta_flags = cpu_to_le32((qos_enable) ? 1 : 0);
peer_notify->desc_word[0] = rsi_set_len_qno(&peer_notify->desc.desc_dword0.len_qno,
cpu_to_le16((sizeof(struct rsi_peer_notify) - FRAME_DESC_SZ) | (frame_len - FRAME_DESC_SZ),
(RSI_WIFI_MGMT_Q << 12)); RSI_WIFI_MGMT_Q);
peer_notify->desc_word[1] = cpu_to_le16(PEER_NOTIFY); peer_notify->desc.desc_dword0.frame_type = PEER_NOTIFY;
peer_notify->desc_word[7] |= cpu_to_le16(vap_id << 8); peer_notify->desc.desc_dword3.sta_id = vap_id;
skb_put(skb, sizeof(struct rsi_peer_notify)); skb_put(skb, frame_len);
status = rsi_send_internal_mgmt_frame(common, skb); status = rsi_send_internal_mgmt_frame(common, skb);
......
...@@ -165,6 +165,8 @@ ...@@ -165,6 +165,8 @@
#define ALLOW_CONN_PEER_MGMT_WHILE_BUF_FULL BIT(5) #define ALLOW_CONN_PEER_MGMT_WHILE_BUF_FULL BIT(5)
#define DISALLOW_BROADCAST_DATA BIT(6) #define DISALLOW_BROADCAST_DATA BIT(6)
#define RSI_MPDU_DENSITY 0x8
enum opmode { enum opmode {
STA_OPMODE = 1, STA_OPMODE = 1,
AP_OPMODE = 2 AP_OPMODE = 2
...@@ -270,7 +272,7 @@ struct rsi_boot_params { ...@@ -270,7 +272,7 @@ struct rsi_boot_params {
} __packed; } __packed;
struct rsi_peer_notify { struct rsi_peer_notify {
__le16 desc_word[8]; struct rsi_cmd_desc desc;
u8 mac_addr[6]; u8 mac_addr[6];
__le16 command; __le16 command;
__le16 mpdu_density; __le16 mpdu_density;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment