X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=carlfw%2Fsrc%2Fcmd.c;h=fd8faf588e66c957915f2c95ef92d0df92195f24;hb=12d3f1ba6ba522cd1ef11483d813fe2c2e64f04b;hp=281ae9c9a1b19ad1f8befb896843e54c10a23771;hpb=bc1a720197add99d877e4099a4ad272aec88b74f;p=carl9170fw.git diff --git a/carlfw/src/cmd.c b/carlfw/src/cmd.c index 281ae9c..fd8faf5 100644 --- a/carlfw/src/cmd.c +++ b/carlfw/src/cmd.c @@ -6,7 +6,7 @@ * Copyright (c) 2000-2005 ZyDAS Technology Corporation * Copyright (c) 2007-2009 Atheros Communications, Inc. * Copyright 2009 Johannes Berg - * Copyright 2009, 2010 Christian Lamparter + * Copyright 2009-2011 Christian Lamparter * * 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 */