source: branches/backfire/package/mac80211/patches/513-ath9k_channelbw_debugfs.patch @ 29297

Last change on this file since 29297 was 29297, checked in by nbd, 5 years ago

mac80211: merge latest changes from trunk (as of r29296)

File size: 4.0 KB
  • drivers/net/wireless/ath/ath9k/ath9k.h

    a b struct ath_softc { 
    591591        struct ieee80211_hw *hw; 
    592592        struct device *dev; 
    593593 
     594        u32 chan_bw; 
    594595        int chan_idx; 
    595596        int chan_is_ht; 
    596597        struct survey_info *cur_survey; 
    struct ath_softc { 
    654655        u8 ant_tx, ant_rx; 
    655656}; 
    656657 
     658int ath9k_config(struct ieee80211_hw *hw, u32 changed); 
    657659void ath9k_tasklet(unsigned long data); 
    658660int ath_cabq_update(struct ath_softc *); 
    659661 
  • drivers/net/wireless/ath/ath9k/debug.c

    a b static const struct file_operations fops 
    16631663        .owner = THIS_MODULE 
    16641664}; 
    16651665 
     1666 
     1667static ssize_t read_file_chan_bw(struct file *file, char __user *user_buf, 
     1668                             size_t count, loff_t *ppos) 
     1669{ 
     1670        struct ath_softc *sc = file->private_data; 
     1671        char buf[32]; 
     1672        unsigned int len; 
     1673 
     1674        len = sprintf(buf, "0x%08x\n", sc->chan_bw); 
     1675        return simple_read_from_buffer(user_buf, count, ppos, buf, len); 
     1676} 
     1677 
     1678static ssize_t write_file_chan_bw(struct file *file, const char __user *user_buf, 
     1679                             size_t count, loff_t *ppos) 
     1680{ 
     1681        struct ath_softc *sc = file->private_data; 
     1682        unsigned long chan_bw; 
     1683        char buf[32]; 
     1684        ssize_t len; 
     1685 
     1686        len = min(count, sizeof(buf) - 1); 
     1687        if (copy_from_user(buf, user_buf, len)) 
     1688                return -EFAULT; 
     1689 
     1690        buf[len] = '\0'; 
     1691        if (strict_strtoul(buf, 0, &chan_bw)) 
     1692                return -EINVAL; 
     1693 
     1694        sc->chan_bw = chan_bw; 
     1695        if (!(sc->sc_flags & SC_OP_INVALID)) 
     1696                ath9k_config(sc->hw, IEEE80211_CONF_CHANGE_CHANNEL); 
     1697 
     1698        return count; 
     1699} 
     1700 
     1701static const struct file_operations fops_chanbw = { 
     1702        .read = read_file_chan_bw, 
     1703        .write = write_file_chan_bw, 
     1704        .open = ath9k_debugfs_open, 
     1705        .owner = THIS_MODULE, 
     1706        .llseek = default_llseek, 
     1707}; 
     1708 
     1709 
    16661710int ath9k_init_debug(struct ath_hw *ah) 
    16671711{ 
    16681712        struct ath_common *common = ath9k_hw_common(ah); 
    int ath9k_init_debug(struct ath_hw *ah) 
    17241768        debugfs_create_file("eeprom", S_IRUSR, sc->debug.debugfs_phy, sc, 
    17251769                            &fops_eeprom); 
    17261770 
     1771        debugfs_create_file("chanbw", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, 
     1772                            sc, &fops_chanbw); 
     1773 
    17271774        sc->debug.regidx = 0; 
    17281775        memset(&sc->debug.bb_mac_samp, 0, sizeof(sc->debug.bb_mac_samp)); 
    17291776        sc->debug.sampidx = 0; 
  • drivers/net/wireless/ath/ath9k/main.c

    a b static void ath9k_disable_ps(struct ath_ 
    15541554 
    15551555} 
    15561556 
    1557 static int ath9k_config(struct ieee80211_hw *hw, u32 changed) 
     1557int ath9k_config(struct ieee80211_hw *hw, u32 changed) 
    15581558{ 
    15591559        struct ath_softc *sc = hw->priv; 
    15601560        struct ath_hw *ah = sc->sc_ah; 
    static int ath9k_config(struct ieee80211 
    16061606 
    16071607        if (changed & IEEE80211_CONF_CHANGE_CHANNEL) { 
    16081608                struct ieee80211_channel *curchan = hw->conf.channel; 
    1609                 struct ath9k_channel old_chan; 
     1609                struct ath9k_channel old_chan, *hchan; 
    16101610                int pos = curchan->hw_value; 
    16111611                int old_pos = -1; 
     1612                u32 oldflags; 
    16121613                unsigned long flags; 
    16131614 
    16141615                if (ah->curchan) 
    static int ath9k_config(struct ieee80211 
    16611662                        memset(&sc->survey[pos], 0, sizeof(struct survey_info)); 
    16621663                } 
    16631664 
    1664                 if (ath_set_channel(sc, hw, &sc->sc_ah->channels[pos]) < 0) { 
     1665                hchan = &sc->sc_ah->channels[pos]; 
     1666                oldflags = hchan->channelFlags; 
     1667                switch (sc->chan_bw) { 
     1668                case 5: 
     1669                        hchan->channelFlags &= ~CHANNEL_HALF; 
     1670                        hchan->channelFlags |= CHANNEL_QUARTER; 
     1671                        break; 
     1672                case 10: 
     1673                        hchan->channelFlags &= ~CHANNEL_QUARTER; 
     1674                        hchan->channelFlags |= CHANNEL_HALF; 
     1675                        break; 
     1676                default: 
     1677                        hchan->channelFlags &= ~(CHANNEL_HALF | CHANNEL_QUARTER); 
     1678                        break; 
     1679                } 
     1680 
     1681                if (ath_set_channel(sc, hw, hchan) < 0) { 
    16651682                        ath_err(common, "Unable to set channel\n"); 
    16661683                        mutex_unlock(&sc->mutex); 
    16671684                        return -EINVAL; 
  • drivers/net/wireless/ath/ath9k/hw.c

    a b int ath9k_hw_reset(struct ath_hw *ah, st 
    15491549            caldata->rtt_hist.num_readings) 
    15501550                allow_fbs = true; 
    15511551 
     1552        if (!ah->curchan || ((ah->curchan->channelFlags ^ chan->channelFlags) & 
     1553            (CHANNEL_HALF | CHANNEL_QUARTER))) 
     1554                bChannelChange = false; 
     1555 
    15521556        if (bChannelChange && 
    15531557            (ah->chip_fullsleep != true) && 
    15541558            (ah->curchan != NULL) && 
Note: See TracBrowser for help on using the repository browser.