Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 183606
b: refs/heads/master
c: b71ed2c
h: refs/heads/master
v: v3
  • Loading branch information
Lennert Buytenhek authored and John W. Linville committed Jan 12, 2010
1 parent 3f17769 commit b9f2c5f
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 67 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 62abd3cfb2f1a0ab1963ac4c4087c477da6b1f2a
refs/heads/master: b71ed2c6ce8b5c3782ed70d67dc9adbd7ed07684
88 changes: 22 additions & 66 deletions trunk/drivers/net/wireless/mwl8k.c
Original file line number Diff line number Diff line change
Expand Up @@ -2482,49 +2482,30 @@ static int mwl8k_cmd_mimo_config(struct ieee80211_hw *hw, __u8 rx, __u8 tx)
}

/*
* CMD_USE_FIXED_RATE.
* CMD_USE_FIXED_RATE (STA version).
*/
#define MWL8K_RATE_TABLE_SIZE 8
#define MWL8K_UCAST_RATE 0
#define MWL8K_USE_AUTO_RATE 0x0002

struct mwl8k_rate_entry {
/* Set to 1 if HT rate, 0 if legacy. */
__le32 is_ht_rate;

/* Set to 1 to use retry_count field. */
__le32 enable_retry;

/* Specified legacy rate or MCS. */
__le32 rate;

/* Number of allowed retries. */
__le32 retry_count;
} __attribute__((packed));

struct mwl8k_rate_table {
/* 1 to allow specified rate and below */
__le32 allow_rate_drop;
__le32 num_rates;
struct mwl8k_rate_entry rate_entry[MWL8K_RATE_TABLE_SIZE];
struct mwl8k_cmd_use_fixed_rate_sta {
struct mwl8k_cmd_pkt header;
__le32 action;
__le32 allow_rate_drop;
__le32 num_rates;
struct {
__le32 is_ht_rate;
__le32 enable_retry;
__le32 rate;
__le32 retry_count;
} rate_entry[8];
__le32 rate_type;
__le32 reserved1;
__le32 reserved2;
} __attribute__((packed));

struct mwl8k_cmd_use_fixed_rate {
struct mwl8k_cmd_pkt header;
__le32 action;
struct mwl8k_rate_table rate_table;

/* Unicast, Broadcast or Multicast */
__le32 rate_type;
__le32 reserved1;
__le32 reserved2;
} __attribute__((packed));
#define MWL8K_USE_AUTO_RATE 0x0002
#define MWL8K_UCAST_RATE 0

static int mwl8k_cmd_use_fixed_rate(struct ieee80211_hw *hw,
u32 action, u32 rate_type, struct mwl8k_rate_table *rate_table)
static int mwl8k_cmd_use_fixed_rate_sta(struct ieee80211_hw *hw)
{
struct mwl8k_cmd_use_fixed_rate *cmd;
int count;
struct mwl8k_cmd_use_fixed_rate_sta *cmd;
int rc;

cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
Expand All @@ -2533,32 +2514,8 @@ static int mwl8k_cmd_use_fixed_rate(struct ieee80211_hw *hw,

cmd->header.code = cpu_to_le16(MWL8K_CMD_USE_FIXED_RATE);
cmd->header.length = cpu_to_le16(sizeof(*cmd));

cmd->action = cpu_to_le32(action);
cmd->rate_type = cpu_to_le32(rate_type);

if (rate_table != NULL) {
/*
* Copy over each field manually so that endian
* conversion can be done.
*/
cmd->rate_table.allow_rate_drop =
cpu_to_le32(rate_table->allow_rate_drop);
cmd->rate_table.num_rates =
cpu_to_le32(rate_table->num_rates);

for (count = 0; count < rate_table->num_rates; count++) {
struct mwl8k_rate_entry *dst =
&cmd->rate_table.rate_entry[count];
struct mwl8k_rate_entry *src =
&rate_table->rate_entry[count];

dst->is_ht_rate = cpu_to_le32(src->is_ht_rate);
dst->enable_retry = cpu_to_le32(src->enable_retry);
dst->rate = cpu_to_le32(src->rate);
dst->retry_count = cpu_to_le32(src->retry_count);
}
}
cmd->action = cpu_to_le32(MWL8K_USE_AUTO_RATE);
cmd->rate_type = cpu_to_le32(MWL8K_UCAST_RATE);

rc = mwl8k_post_cmd(hw, &cmd->header);
kfree(cmd);
Expand Down Expand Up @@ -3062,8 +3019,7 @@ static void mwl8k_bss_info_changed(struct ieee80211_hw *hw,
if (rc)
goto out;

rc = mwl8k_cmd_use_fixed_rate(hw, MWL8K_USE_AUTO_RATE,
MWL8K_UCAST_RATE, NULL);
rc = mwl8k_cmd_use_fixed_rate_sta(hw);
if (rc)
goto out;
}
Expand Down

0 comments on commit b9f2c5f

Please sign in to comment.