carl9170 firmware: rename cab_flush to bcn_ctrl and fix update delay
[carl9170fw.git] / carlfw / src / cmd.c
index 112bf871fe34eb8d6c2236a8954719103d5b21c6..6c9f45e91c06ef0dddfe6e2582e9e0f16c3915bd 100644 (file)
@@ -59,12 +59,14 @@ void handle_cmd(struct carl9170_rsp *resp)
                break;
 
        case CARL9170_CMD_SWRST:
+#ifdef CONFIG_CARL9170FW_FW_MAC_RESET
                /*
                 * Command has no payload, so the response
                 * has no payload either.
                 * resp->hdr.len = 0;
                 */
                fw.wlan.mac_reset = CARL9170_MAC_RESET_FORCE;
+#endif /* CONFIG_CARL9170FW_FW_MAC_RESET */
                break;
 
        case CARL9170_CMD_REBOOT:
@@ -80,16 +82,17 @@ void handle_cmd(struct carl9170_rsp *resp)
                break;
 
 #ifdef CONFIG_CARL9170FW_CAB_QUEUE
-       case CARL9170_CMD_FLUSH_CAB:
+       case CARL9170_CMD_BCN_CTRL:
                resp->hdr.len = 0;
 
-               if (cmd->cab_flush.mode & CARL9170_CAB_FLUSH_CAB_TRIGGER) {
-                       wlan_cab_modify_dtim_beacon(cmd->cab_flush.vif_id);
+               if (cmd->bcn_ctrl.mode & CARL9170_BCN_CTRL_CAB_TRIGGER) {
+                       wlan_cab_modify_dtim_beacon(cmd->bcn_ctrl.vif_id);
+                       set(AR9170_MAC_REG_BCN_ADDR, cmd->bcn_ctrl.bcn_addr);
+                       set(AR9170_MAC_REG_BCN_LENGTH, cmd->bcn_ctrl.bcn_len);
                        set(AR9170_MAC_REG_BCN_CTRL, AR9170_BCN_CTRL_READY);
                } else {
-                       wlan_cab_flush_queue(cmd->cab_flush.vif_id);
-                       if (fw.wlan.cab_flush_vif == cmd->cab_flush.vif_id)
-                               fw.wlan.cab_flush_trigger = CARL9170_CAB_TRIGGER_EMPTY;
+                       wlan_cab_flush_queue(cmd->bcn_ctrl.vif_id);
+                       fw.wlan.cab_flush_trigger[i] = CARL9170_CAB_TRIGGER_EMPTY;
                }
                break;
 #endif /* CONFIG_CARL9170FW_CAB_QUEUE */
@@ -129,6 +132,7 @@ void handle_cmd(struct carl9170_rsp *resp)
 #endif /* CONFIG_CARL9170FW_RADIO_FUNCTIOS */
 
        default:
+               BUG("Unknown command %x\n", cmd->hdr.cmd);
                break;
        }
 }