source: branches/backfire/package/mac80211/patches/500-ath9k_debugfs_chainmask.patch @ 21354

Last change on this file since 21354 was 21354, checked in by nbd, 7 years ago

[backfire] backport mac80211 and hostapd from trunk

File size: 3.8 KB
  • drivers/net/wireless/ath/ath9k/debug.c

    a b static const struct file_operations fops 
    7878 
    7979#define DMA_BUF_LEN 1024 
    8080 
     81static ssize_t read_file_tx_chainmask(struct file *file, char __user *user_buf, 
     82                             size_t count, loff_t *ppos) 
     83{ 
     84        struct ath_softc *sc = file->private_data; 
     85        struct ath_common *common = ath9k_hw_common(sc->sc_ah); 
     86        char buf[32]; 
     87        unsigned int len; 
     88 
     89        len = snprintf(buf, sizeof(buf), "0x%08x\n", common->tx_chainmask); 
     90        return simple_read_from_buffer(user_buf, count, ppos, buf, len); 
     91} 
     92 
     93static ssize_t write_file_tx_chainmask(struct file *file, const char __user *user_buf, 
     94                             size_t count, loff_t *ppos) 
     95{ 
     96        struct ath_softc *sc = file->private_data; 
     97        struct ath_common *common = ath9k_hw_common(sc->sc_ah); 
     98        unsigned long mask; 
     99        char buf[32]; 
     100        ssize_t len; 
     101 
     102        len = min(count, sizeof(buf) - 1); 
     103        if (copy_from_user(buf, user_buf, len)) 
     104                return -EINVAL; 
     105 
     106        buf[len] = '\0'; 
     107        if (strict_strtoul(buf, 0, &mask)) 
     108                return -EINVAL; 
     109 
     110        common->tx_chainmask = mask; 
     111        sc->sc_ah->caps.tx_chainmask = mask; 
     112        return count; 
     113} 
     114 
     115static const struct file_operations fops_tx_chainmask = { 
     116        .read = read_file_tx_chainmask, 
     117        .write = write_file_tx_chainmask, 
     118        .open = ath9k_debugfs_open, 
     119        .owner = THIS_MODULE 
     120}; 
     121 
     122 
     123static ssize_t read_file_rx_chainmask(struct file *file, char __user *user_buf, 
     124                             size_t count, loff_t *ppos) 
     125{ 
     126        struct ath_softc *sc = file->private_data; 
     127        struct ath_common *common = ath9k_hw_common(sc->sc_ah); 
     128        char buf[32]; 
     129        unsigned int len; 
     130 
     131        len = snprintf(buf, sizeof(buf), "0x%08x\n", common->rx_chainmask); 
     132        return simple_read_from_buffer(user_buf, count, ppos, buf, len); 
     133} 
     134 
     135static ssize_t write_file_rx_chainmask(struct file *file, const char __user *user_buf, 
     136                             size_t count, loff_t *ppos) 
     137{ 
     138        struct ath_softc *sc = file->private_data; 
     139        struct ath_common *common = ath9k_hw_common(sc->sc_ah); 
     140        unsigned long mask; 
     141        char buf[32]; 
     142        ssize_t len; 
     143 
     144        len = min(count, sizeof(buf) - 1); 
     145        if (copy_from_user(buf, user_buf, len)) 
     146                return -EINVAL; 
     147 
     148        buf[len] = '\0'; 
     149        if (strict_strtoul(buf, 0, &mask)) 
     150                return -EINVAL; 
     151 
     152        common->rx_chainmask = mask; 
     153        sc->sc_ah->caps.rx_chainmask = mask; 
     154        return count; 
     155} 
     156 
     157static const struct file_operations fops_rx_chainmask = { 
     158        .read = read_file_rx_chainmask, 
     159        .write = write_file_rx_chainmask, 
     160        .open = ath9k_debugfs_open, 
     161        .owner = THIS_MODULE 
     162}; 
     163 
     164 
    81165static ssize_t read_file_dma(struct file *file, char __user *user_buf, 
    82166                             size_t count, loff_t *ppos) 
    83167{ 
    int ath9k_init_debug(struct ath_hw *ah) 
    731815                goto err; 
    732816#endif 
    733817 
     818        sc->debug.debugfs_rx_chainmask = debugfs_create_file("rx_chainmask", 
     819                S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, sc, &fops_rx_chainmask); 
     820        if (!sc->debug.debugfs_rx_chainmask) 
     821                goto err; 
     822 
     823        sc->debug.debugfs_tx_chainmask = debugfs_create_file("tx_chainmask", 
     824                S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, sc, &fops_tx_chainmask); 
     825        if (!sc->debug.debugfs_tx_chainmask) 
     826                goto err; 
     827 
    734828        sc->debug.debugfs_dma = debugfs_create_file("dma", S_IRUSR, 
    735829                                       sc->debug.debugfs_phy, sc, &fops_dma); 
    736830        if (!sc->debug.debugfs_dma) 
    void ath9k_exit_debug(struct ath_hw *ah) 
    781875        struct ath_common *common = ath9k_hw_common(ah); 
    782876        struct ath_softc *sc = (struct ath_softc *) common->priv; 
    783877 
     878        debugfs_remove(sc->debug.debugfs_tx_chainmask); 
     879        debugfs_remove(sc->debug.debugfs_rx_chainmask); 
    784880        debugfs_remove(sc->debug.debugfs_recv); 
    785881        debugfs_remove(sc->debug.debugfs_xmit); 
    786882        debugfs_remove(sc->debug.debugfs_wiphy); 
  • drivers/net/wireless/ath/ath9k/debug.h

    a b struct ath_stats { 
    152152}; 
    153153 
    154154struct ath9k_debug { 
     155        struct dentry *debugfs_rx_chainmask; 
     156        struct dentry *debugfs_tx_chainmask; 
    155157        struct dentry *debugfs_phy; 
    156158        struct dentry *debugfs_debug; 
    157159        struct dentry *debugfs_dma; 
Note: See TracBrowser for help on using the repository browser.