source: trunk/target/linux/generic/patches-2.6.32/903-hostap_txpower.patch @ 25641

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

kernel: remove imq support, refresh patches

File size: 5.1 KB
  • drivers/net/wireless/hostap/hostap_ap.c

    a b int prism2_ap_get_sta_qual(local_info_t  
    23352335                addr[count].sa_family = ARPHRD_ETHER; 
    23362336                memcpy(addr[count].sa_data, sta->addr, ETH_ALEN); 
    23372337                if (sta->last_rx_silence == 0) 
    2338                         qual[count].qual = sta->last_rx_signal < 27 ? 
    2339                                 0 : (sta->last_rx_signal - 27) * 92 / 127; 
     2338                        qual[count].qual = (sta->last_rx_signal - 156) == 0 ? 
     2339                                0 : (sta->last_rx_signal - 156) * 92 / 64; 
    23402340                else 
    2341                         qual[count].qual = sta->last_rx_signal - 
    2342                                 sta->last_rx_silence - 35; 
    2343                 qual[count].level = HFA384X_LEVEL_TO_dBm(sta->last_rx_signal); 
    2344                 qual[count].noise = HFA384X_LEVEL_TO_dBm(sta->last_rx_silence); 
     2341                        qual[count].qual = (sta->last_rx_signal - 
     2342                                sta->last_rx_silence) * 92 / 64; 
     2343                qual[count].level = sta->last_rx_signal; 
     2344                qual[count].noise = sta->last_rx_silence; 
    23452345                qual[count].updated = sta->last_rx_updated; 
    23462346 
    23472347                sta->last_rx_updated = IW_QUAL_DBM; 
    int prism2_ap_translate_scan(struct net_ 
    24072407                memset(&iwe, 0, sizeof(iwe)); 
    24082408                iwe.cmd = IWEVQUAL; 
    24092409                if (sta->last_rx_silence == 0) 
    2410                         iwe.u.qual.qual = sta->last_rx_signal < 27 ? 
    2411                                 0 : (sta->last_rx_signal - 27) * 92 / 127; 
     2410                        iwe.u.qual.qual = (sta->last_rx_signal -156) == 0 ? 
     2411                                0 : (sta->last_rx_signal - 156) * 92 / 64; 
    24122412                else 
    2413                         iwe.u.qual.qual = sta->last_rx_signal - 
    2414                                 sta->last_rx_silence - 35; 
    2415                 iwe.u.qual.level = HFA384X_LEVEL_TO_dBm(sta->last_rx_signal); 
    2416                 iwe.u.qual.noise = HFA384X_LEVEL_TO_dBm(sta->last_rx_silence); 
     2413                        iwe.u.qual.qual = (sta->last_rx_signal - 
     2414                                sta->last_rx_silence) * 92 / 64; 
     2415                iwe.u.qual.level = sta->last_rx_signal; 
     2416                iwe.u.qual.noise = sta->last_rx_silence; 
    24172417                iwe.u.qual.updated = sta->last_rx_updated; 
    24182418                iwe.len = IW_EV_QUAL_LEN; 
    24192419                current_ev = iwe_stream_add_event(info, current_ev, end_buf, 
  • drivers/net/wireless/hostap/hostap_config.h

    a b  
    4545 */ 
    4646/* #define PRISM2_NO_STATION_MODES */ 
    4747 
     48/* Enable TX power Setting functions 
     49 * (min att = -128 , max att =  127) 
     50 */ 
     51#define RAW_TXPOWER_SETTING 
     52 
    4853#endif /* HOSTAP_CONFIG_H */ 
  • drivers/net/wireless/hostap/hostap.h

    a b extern const struct iw_handler_def hosta 
    9090extern const struct ethtool_ops prism2_ethtool_ops; 
    9191 
    9292int hostap_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd); 
     93int hostap_restore_power(struct net_device *dev); 
    9394 
    9495 
    9596#endif /* HOSTAP_H */ 
  • drivers/net/wireless/hostap/hostap_hw.c

    a b static int hfa384x_set_rid(struct net_de 
    932932                        prism2_hw_reset(dev); 
    933933        } 
    934934 
     935        hostap_restore_power(dev); 
    935936        return res; 
    936937} 
    937938 
  • drivers/net/wireless/hostap/hostap_info.c

    a b static void handle_info_queue_linkstatus 
    432432        } 
    433433 
    434434        /* Get BSSID if we have a valid AP address */ 
     435 
     436        if ( val == HFA384X_LINKSTATUS_CONNECTED || 
     437             val == HFA384X_LINKSTATUS_DISCONNECTED ) 
     438                        hostap_restore_power(local->dev); 
     439 
    435440        if (connected) { 
    436441                netif_carrier_on(local->dev); 
    437442                netif_carrier_on(local->ddev); 
  • drivers/net/wireless/hostap/hostap_ioctl.c

    a b static int prism2_txpower_hfa386x_to_dBm 
    14761476                val = 255; 
    14771477 
    14781478        tmp = val; 
    1479         tmp >>= 2; 
    14801479 
    1481         return -12 - tmp; 
     1480        return tmp; 
    14821481} 
    14831482 
    14841483static u16 prism2_txpower_dBm_to_hfa386x(int val) 
    14851484{ 
    14861485        signed char tmp; 
    14871486 
    1488         if (val > 20) 
    1489                 return 128; 
    1490         else if (val < -43) 
     1487        if (val > 127) 
    14911488                return 127; 
     1489        else if (val < -128) 
     1490                return 128; 
    14921491 
    14931492        tmp = val; 
    1494         tmp = -12 - tmp; 
    1495         tmp <<= 2; 
    14961493 
    14971494        return (unsigned char) tmp; 
    14981495} 
    int hostap_ioctl(struct net_device *dev, 
    40564053 
    40574054        return ret; 
    40584055} 
     4056 
     4057/* BUG FIX: Restore power setting value when lost due to F/W bug */ 
     4058 
     4059int hostap_restore_power(struct net_device *dev) 
     4060{ 
     4061        struct hostap_interface *iface = netdev_priv(dev); 
     4062       local_info_t *local = iface->local; 
     4063 
     4064       u16 val; 
     4065       int ret = 0; 
     4066 
     4067       if (local->txpower_type == PRISM2_TXPOWER_OFF) { 
     4068                       val = 0xff; /* use all standby and sleep modes */ 
     4069                       ret = local->func->cmd(dev, HFA384X_CMDCODE_WRITEMIF, 
     4070                                              HFA386X_CR_A_D_TEST_MODES2, 
     4071                                              &val, NULL); 
     4072       } 
     4073 
     4074#ifdef RAW_TXPOWER_SETTING 
     4075       if (local->txpower_type == PRISM2_TXPOWER_FIXED) { 
     4076               val = HFA384X_TEST_CFG_BIT_ALC; 
     4077               local->func->cmd(dev, HFA384X_CMDCODE_TEST | 
     4078                                (HFA384X_TEST_CFG_BITS << 8), 0, &val, NULL); 
     4079               val = prism2_txpower_dBm_to_hfa386x(local->txpower); 
     4080               ret = (local->func->cmd(dev, HFA384X_CMDCODE_WRITEMIF, 
     4081                            HFA386X_CR_MANUAL_TX_POWER, &val, NULL)); 
     4082       } 
     4083#endif /* RAW_TXPOWER_SETTING */ 
     4084       return (ret ? -EOPNOTSUPP : 0); 
     4085} 
     4086 
     4087EXPORT_SYMBOL(hostap_restore_power); 
Note: See TracBrowser for help on using the repository browser.