Page MenuHomeFreeBSD

D4274.diff
No OneTemporary

D4274.diff

Index: head/sys/dev/usb/wlan/if_urtwn.c
===================================================================
--- head/sys/dev/usb/wlan/if_urtwn.c
+++ head/sys/dev/usb/wlan/if_urtwn.c
@@ -1707,27 +1707,22 @@
static int
urtwn_r88e_read_rom(struct urtwn_softc *sc)
{
- uint8_t *rom = sc->rom.r88e_rom;
- uint16_t addr;
- int error, i;
+ struct r88e_rom *rom = &sc->rom.r88e_rom;
+ int error;
- error = urtwn_efuse_read(sc, rom, sizeof(sc->rom.r88e_rom));
+ error = urtwn_efuse_read(sc, (uint8_t *)rom, sizeof(sc->rom.r88e_rom));
if (error != 0)
return (error);
- addr = 0x10;
- for (i = 0; i < 6; i++)
- sc->cck_tx_pwr[i] = rom[addr++];
- for (i = 0; i < 5; i++)
- sc->ht40_tx_pwr[i] = rom[addr++];
- sc->bw20_tx_pwr_diff = (rom[addr] & 0xf0) >> 4;
+ sc->bw20_tx_pwr_diff = (rom->tx_pwr_diff >> 4);
if (sc->bw20_tx_pwr_diff & 0x08)
sc->bw20_tx_pwr_diff |= 0xf0;
- sc->ofdm_tx_pwr_diff = (rom[addr] & 0xf);
+ sc->ofdm_tx_pwr_diff = (rom->tx_pwr_diff & 0xf);
if (sc->ofdm_tx_pwr_diff & 0x08)
sc->ofdm_tx_pwr_diff |= 0xf0;
- sc->regulatory = MS(rom[0xc1], R92C_ROM_RF1_REGULATORY);
- IEEE80211_ADDR_COPY(sc->sc_ic.ic_macaddr, &rom[0xd7]);
+ sc->regulatory = MS(rom->rf_board_opt, R92C_ROM_RF1_REGULATORY);
+ DPRINTF("regulatory type=%d\n", sc->regulatory);
+ IEEE80211_ADDR_COPY(sc->sc_ic.ic_macaddr, rom->macaddr);
sc->sc_rf_write = urtwn_r88e_rf_write;
sc->sc_power_on = urtwn_r88e_power_on;
@@ -3620,7 +3615,7 @@
urtwn_bb_write(sc, R92C_OFDM0_AGCCORE1(0), 0x69553420);
urtwn_ms_delay(sc);
- crystalcap = sc->rom.r88e_rom[0xb9];
+ crystalcap = sc->rom.r88e_rom.crystalcap;
if (crystalcap == 0xff)
crystalcap = 0x20;
crystalcap &= 0x3f;
@@ -4002,6 +3997,7 @@
uint16_t power[URTWN_RIDX_COUNT])
{
struct ieee80211com *ic = &sc->sc_ic;
+ struct r88e_rom *rom = &sc->rom.r88e_rom;
uint16_t cckpow, ofdmpow, bw20pow, htpow;
const struct urtwn_r88e_txpwr *base;
int ridx, chan, group;
@@ -4040,14 +4036,14 @@
}
/* Compute per-CCK rate Tx power. */
- cckpow = sc->cck_tx_pwr[group];
+ cckpow = rom->cck_tx_pwr[group];
for (ridx = URTWN_RIDX_CCK1; ridx <= URTWN_RIDX_CCK11; ridx++) {
power[ridx] += cckpow;
if (power[ridx] > R92C_MAX_TX_PWR)
power[ridx] = R92C_MAX_TX_PWR;
}
- htpow = sc->ht40_tx_pwr[group];
+ htpow = rom->ht40_tx_pwr[group];
/* Compute per-OFDM rate Tx power. */
ofdmpow = htpow + sc->ofdm_tx_pwr_diff;
Index: head/sys/dev/usb/wlan/if_urtwnreg.h
===================================================================
--- head/sys/dev/usb/wlan/if_urtwnreg.h
+++ head/sys/dev/usb/wlan/if_urtwnreg.h
@@ -953,7 +953,7 @@
uint16_t reserved3;
uint8_t usb_phy;
uint8_t reserved4[3];
- uint8_t macaddr[6];
+ uint8_t macaddr[IEEE80211_ADDR_LEN];
uint8_t string[61]; /* "Realtek" */
uint8_t subcustomer_id;
uint8_t cck_tx_pwr[R92C_MAX_CHAINS][3];
@@ -982,7 +982,37 @@
uint8_t rf_opt4;
uint8_t channel_plan;
uint8_t version;
- uint8_t curstomer_id;
+ uint8_t customer_id;
+} __packed;
+
+/*
+ * RTL8188EU ROM image.
+ */
+struct r88e_rom {
+ uint8_t reserved1[16];
+ uint8_t cck_tx_pwr[6];
+ uint8_t ht40_tx_pwr[5];
+ uint8_t tx_pwr_diff;
+ uint8_t reserved2[156];
+ uint8_t channel_plan;
+ uint8_t crystalcap;
+ uint8_t reserved3[7];
+ uint8_t rf_board_opt;
+ uint8_t rf_feature_opt;
+ uint8_t rf_bt_opt;
+ uint8_t version;
+ uint8_t customer_id;
+ uint8_t reserved4[3];
+ uint8_t rf_ant_opt;
+ uint8_t reserved5[6];
+ uint16_t vid;
+ uint16_t pid;
+ uint8_t usb_opt;
+ uint8_t reserved6[2];
+ uint8_t macaddr[IEEE80211_ADDR_LEN];
+ uint8_t reserved7[2];
+ uint8_t string[33]; /* "realtek 802.11n NIC" */
+ uint8_t reserved8[256];
} __packed;
#define URTWN_EFUSE_MAX_LEN 512
Index: head/sys/dev/usb/wlan/if_urtwnvar.h
===================================================================
--- head/sys/dev/usb/wlan/if_urtwnvar.h
+++ head/sys/dev/usb/wlan/if_urtwnvar.h
@@ -141,7 +141,7 @@
union urtwn_rom {
struct r92c_rom r92c_rom;
- uint8_t r88e_rom[URTWN_EFUSE_MAX_LEN];
+ struct r88e_rom r88e_rom;
};
struct urtwn_softc {
@@ -176,6 +176,8 @@
uint8_t board_type;
uint8_t regulatory;
uint8_t pa_setting;
+ int8_t ofdm_tx_pwr_diff;
+ int8_t bw20_tx_pwr_diff;
int avg_pwdb;
int thcal_state;
int thcal_lctemp;
@@ -199,10 +201,6 @@
void *fw_virtaddr;
union urtwn_rom rom;
- uint8_t cck_tx_pwr[6];
- uint8_t ht40_tx_pwr[5];
- int8_t bw20_tx_pwr_diff;
- int8_t ofdm_tx_pwr_diff;
uint16_t last_rom_addr;
struct callout sc_watchdog_ch;

File Metadata

Mime Type
text/plain
Expires
Tue, Feb 10, 2:52 AM (2 h, 22 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28611298
Default Alt Text
D4274.diff (4 KB)

Event Timeline