|
@@ -952,6 +952,43 @@ int rsi_set_channel(struct rsi_common *common, u16 channel)
|
|
|
return rsi_send_internal_mgmt_frame(common, skb);
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * rsi_send_radio_params_update() - This function sends the radio
|
|
|
+ * parameters update to device
|
|
|
+ * @common: Pointer to the driver private structure.
|
|
|
+ * @channel: Channel value to be set.
|
|
|
+ *
|
|
|
+ * Return: 0 on success, corresponding error code on failure.
|
|
|
+ */
|
|
|
+int rsi_send_radio_params_update(struct rsi_common *common)
|
|
|
+{
|
|
|
+ struct rsi_mac_frame *cmd_frame;
|
|
|
+ struct sk_buff *skb = NULL;
|
|
|
+
|
|
|
+ rsi_dbg(MGMT_TX_ZONE,
|
|
|
+ "%s: Sending Radio Params update frame\n", __func__);
|
|
|
+
|
|
|
+ skb = dev_alloc_skb(FRAME_DESC_SZ);
|
|
|
+ if (!skb) {
|
|
|
+ rsi_dbg(ERR_ZONE, "%s: Failed in allocation of skb\n",
|
|
|
+ __func__);
|
|
|
+ return -ENOMEM;
|
|
|
+ }
|
|
|
+
|
|
|
+ memset(skb->data, 0, FRAME_DESC_SZ);
|
|
|
+ cmd_frame = (struct rsi_mac_frame *)skb->data;
|
|
|
+
|
|
|
+ cmd_frame->desc_word[0] = cpu_to_le16(RSI_WIFI_MGMT_Q << 12);
|
|
|
+ cmd_frame->desc_word[1] = cpu_to_le16(RADIO_PARAMS_UPDATE);
|
|
|
+ cmd_frame->desc_word[3] = cpu_to_le16(BIT(0));
|
|
|
+
|
|
|
+ cmd_frame->desc_word[3] |= cpu_to_le16(common->tx_power << 8);
|
|
|
+
|
|
|
+ skb_put(skb, FRAME_DESC_SZ);
|
|
|
+
|
|
|
+ return rsi_send_internal_mgmt_frame(common, skb);
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* rsi_compare() - This function is used to compare two integers
|
|
|
* @a: pointer to the first integer
|