diff options
Diffstat (limited to 'drivers/net/wireless/mwl8k.c')
-rw-r--r-- | drivers/net/wireless/mwl8k.c | 41 |
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 | */ | ||
2529 | struct 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 | |||
2545 | static int | ||
2546 | mwl8k_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 | */ |
2529 | struct mwl8k_cmd_enable_sniffer { | 2570 | struct mwl8k_cmd_enable_sniffer { |