aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/mwl8k.c
diff options
context:
space:
mode:
authorLennert Buytenhek <buytenh@wantstofly.org>2010-01-08 12:30:36 -0500
committerJohn W. Linville <linville@tuxdriver.com>2010-01-12 14:02:09 -0500
commit088aab8b62666a002907c912cd346ae6dc9f42b7 (patch)
tree376b1ad7424902cf218f94848e735f01c90ababd /drivers/net/wireless/mwl8k.c
parentb71ed2c6ce8b5c3782ed70d67dc9adbd7ed07684 (diff)
mwl8k: add the AP version of USE_FIXED_RATE
As with the STA version, unicast will use auto rate adaptation, but the AP version allows setting the rates to be used for management and multicast transmissions, which can be set based on the BSS basic rate set. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/mwl8k.c')
-rw-r--r--drivers/net/wireless/mwl8k.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c
index 20e7cf2e266c..ec79033801ab 100644
--- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c
@@ -2524,6 +2524,47 @@ static int mwl8k_cmd_use_fixed_rate_sta(struct ieee80211_hw *hw)
2524} 2524}
2525 2525
2526/* 2526/*
2527 * CMD_USE_FIXED_RATE (AP version).
2528 */
2529struct mwl8k_cmd_use_fixed_rate_ap {
2530 struct mwl8k_cmd_pkt header;
2531 __le32 action;
2532 __le32 allow_rate_drop;
2533 __le32 num_rates;
2534 struct mwl8k_rate_entry_ap {
2535 __le32 is_ht_rate;
2536 __le32 enable_retry;
2537 __le32 rate;
2538 __le32 retry_count;
2539 } rate_entry[4];
2540 u8 multicast_rate;
2541 u8 multicast_rate_type;
2542 u8 management_rate;
2543} __attribute__((packed));
2544
2545static int
2546mwl8k_cmd_use_fixed_rate_ap(struct ieee80211_hw *hw, int mcast, int mgmt)
2547{
2548 struct mwl8k_cmd_use_fixed_rate_ap *cmd;
2549 int rc;
2550
2551 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
2552 if (cmd == NULL)
2553 return -ENOMEM;
2554
2555 cmd->header.code = cpu_to_le16(MWL8K_CMD_USE_FIXED_RATE);
2556 cmd->header.length = cpu_to_le16(sizeof(*cmd));
2557 cmd->action = cpu_to_le32(MWL8K_USE_AUTO_RATE);
2558 cmd->multicast_rate = mcast;
2559 cmd->management_rate = mgmt;
2560
2561 rc = mwl8k_post_cmd(hw, &cmd->header);
2562 kfree(cmd);
2563
2564 return rc;
2565}
2566
2567/*
2527 * CMD_ENABLE_SNIFFER. 2568 * CMD_ENABLE_SNIFFER.
2528 */ 2569 */
2529struct mwl8k_cmd_enable_sniffer { 2570struct mwl8k_cmd_enable_sniffer {