diff options
author | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2010-09-01 20:10:51 -0400 |
---|---|---|
committer | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2010-09-11 11:51:31 -0400 |
commit | c6abdc0dc3440b9b6ae00a59c3560ab2160c7c7d (patch) | |
tree | 049cf16325e38f67d54a7e3293fc9a7bc6767cff /drivers/net/wireless/iwlwifi/iwl-debugfs.c | |
parent | 2a3aeb44f555b2b51bbe58792e8ab172a69172c5 (diff) |
iwlwifi: allow configure protection mode
Even driver use rts/cts protection mode for aggregation packets by default.
Allow the protection mode to be configure through debugfs
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-debugfs.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-debugfs.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-debugfs.c b/drivers/net/wireless/iwlwifi/iwl-debugfs.c index 86017eda1f0..e0b31a2a1da 100644 --- a/drivers/net/wireless/iwlwifi/iwl-debugfs.c +++ b/drivers/net/wireless/iwlwifi/iwl-debugfs.c | |||
@@ -1604,6 +1604,44 @@ static ssize_t iwl_dbgfs_bt_traffic_read(struct file *file, | |||
1604 | return ret; | 1604 | return ret; |
1605 | } | 1605 | } |
1606 | 1606 | ||
1607 | static ssize_t iwl_dbgfs_protection_mode_read(struct file *file, | ||
1608 | char __user *user_buf, | ||
1609 | size_t count, loff_t *ppos) | ||
1610 | { | ||
1611 | struct iwl_priv *priv = (struct iwl_priv *)file->private_data; | ||
1612 | |||
1613 | int pos = 0; | ||
1614 | char buf[40]; | ||
1615 | const size_t bufsz = sizeof(buf); | ||
1616 | |||
1617 | pos += scnprintf(buf + pos, bufsz - pos, "use %s for aggregation\n", | ||
1618 | (priv->cfg->use_rts_for_aggregation) ? "rts/cts" : | ||
1619 | "cts-to-self"); | ||
1620 | return simple_read_from_buffer(user_buf, count, ppos, buf, pos); | ||
1621 | } | ||
1622 | |||
1623 | static ssize_t iwl_dbgfs_protection_mode_write(struct file *file, | ||
1624 | const char __user *user_buf, | ||
1625 | size_t count, loff_t *ppos) { | ||
1626 | |||
1627 | struct iwl_priv *priv = file->private_data; | ||
1628 | char buf[8]; | ||
1629 | int buf_size; | ||
1630 | int rts; | ||
1631 | |||
1632 | memset(buf, 0, sizeof(buf)); | ||
1633 | buf_size = min(count, sizeof(buf) - 1); | ||
1634 | if (copy_from_user(buf, user_buf, buf_size)) | ||
1635 | return -EFAULT; | ||
1636 | if (sscanf(buf, "%d", &rts) != 1) | ||
1637 | return -EINVAL; | ||
1638 | if (rts) | ||
1639 | priv->cfg->use_rts_for_aggregation = true; | ||
1640 | else | ||
1641 | priv->cfg->use_rts_for_aggregation = false; | ||
1642 | return count; | ||
1643 | } | ||
1644 | |||
1607 | DEBUGFS_READ_FILE_OPS(rx_statistics); | 1645 | DEBUGFS_READ_FILE_OPS(rx_statistics); |
1608 | DEBUGFS_READ_FILE_OPS(tx_statistics); | 1646 | DEBUGFS_READ_FILE_OPS(tx_statistics); |
1609 | DEBUGFS_READ_WRITE_FILE_OPS(traffic_log); | 1647 | DEBUGFS_READ_WRITE_FILE_OPS(traffic_log); |
@@ -1629,6 +1667,7 @@ DEBUGFS_WRITE_FILE_OPS(txfifo_flush); | |||
1629 | DEBUGFS_READ_FILE_OPS(ucode_bt_stats); | 1667 | DEBUGFS_READ_FILE_OPS(ucode_bt_stats); |
1630 | DEBUGFS_WRITE_FILE_OPS(monitor_period); | 1668 | DEBUGFS_WRITE_FILE_OPS(monitor_period); |
1631 | DEBUGFS_READ_FILE_OPS(bt_traffic); | 1669 | DEBUGFS_READ_FILE_OPS(bt_traffic); |
1670 | DEBUGFS_READ_WRITE_FILE_OPS(protection_mode); | ||
1632 | 1671 | ||
1633 | /* | 1672 | /* |
1634 | * Create the debugfs files and directories | 1673 | * Create the debugfs files and directories |
@@ -1689,6 +1728,7 @@ int iwl_dbgfs_register(struct iwl_priv *priv, const char *name) | |||
1689 | DEBUGFS_ADD_FILE(ucode_general_stats, dir_debug, S_IRUSR); | 1728 | DEBUGFS_ADD_FILE(ucode_general_stats, dir_debug, S_IRUSR); |
1690 | if (priv->cfg->ops->lib->dev_txfifo_flush) | 1729 | if (priv->cfg->ops->lib->dev_txfifo_flush) |
1691 | DEBUGFS_ADD_FILE(txfifo_flush, dir_debug, S_IWUSR); | 1730 | DEBUGFS_ADD_FILE(txfifo_flush, dir_debug, S_IWUSR); |
1731 | DEBUGFS_ADD_FILE(protection_mode, dir_debug, S_IWUSR | S_IRUSR); | ||
1692 | 1732 | ||
1693 | if (priv->cfg->sensitivity_calib_by_driver) | 1733 | if (priv->cfg->sensitivity_calib_by_driver) |
1694 | DEBUGFS_ADD_FILE(sensitivity, dir_debug, S_IRUSR); | 1734 | DEBUGFS_ADD_FILE(sensitivity, dir_debug, S_IRUSR); |