carl9170 firmware: update copyright boilerplate
[carl9170fw.git] / carlfw / src / cmd.c
index 281ae9c9a1b19ad1f8befb896843e54c10a23771..fd8faf588e66c957915f2c95ef92d0df92195f24 100644 (file)
@@ -6,7 +6,7 @@
  * Copyright (c) 2000-2005 ZyDAS Technology Corporation
  * Copyright (c) 2007-2009 Atheros Communications, Inc.
  * Copyright   2009    Johannes Berg <johannes@sipsolutions.net>
- * Copyright 2009, 2010 Christian Lamparter <chunkeey@googlemail.com>
+ * Copyright 2009-2011 Christian Lamparter <chunkeey@googlemail.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -81,17 +81,24 @@ void handle_cmd(struct carl9170_rsp *resp)
                read_tsf((uint32_t *)resp->tsf.tsf);
                break;
 
+       case CARL9170_CMD_RX_FILTER:
+               resp->hdr.len = 0;
+               fw.wlan.rx_filter = cmd->rx_filter.rx_filter;
+               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_modify_beacon(cmd->bcn_ctrl.vif_id,
+                               cmd->bcn_ctrl.bcn_addr, cmd->bcn_ctrl.bcn_len);
+                       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 */