Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b5e41567 authored by David S. Miller's avatar David S. Miller
Browse files
parents 6b353088 b1d771ee
Loading
Loading
Loading
Loading
+9 −23
Original line number Diff line number Diff line
@@ -642,31 +642,13 @@ static void __init omap3pandora_init_irq(void)
	omap_gpio_init();
}

static void pandora_wl1251_set_power(bool enable)
{
	/*
	 * Keep power always on until wl1251_sdio driver learns to re-init
	 * the chip after powering it down and back up.
	 */
}

static struct wl12xx_platform_data pandora_wl1251_pdata = {
	.set_power	= pandora_wl1251_set_power,
	.use_eeprom	= true,
};

static struct platform_device pandora_wl1251_data = {
	.name           = "wl1251_data",
	.id             = -1,
	.dev		= {
		.platform_data	= &pandora_wl1251_pdata,
	},
};

static void pandora_wl1251_init(void)
static void __init pandora_wl1251_init(void)
{
	struct wl12xx_platform_data pandora_wl1251_pdata;
	int ret;

	memset(&pandora_wl1251_pdata, 0, sizeof(pandora_wl1251_pdata));

	ret = gpio_request(PANDORA_WIFI_IRQ_GPIO, "wl1251 irq");
	if (ret < 0)
		goto fail;
@@ -679,6 +661,11 @@ static void pandora_wl1251_init(void)
	if (pandora_wl1251_pdata.irq < 0)
		goto fail_irq;

	pandora_wl1251_pdata.use_eeprom = true;
	ret = wl12xx_set_platform_data(&pandora_wl1251_pdata);
	if (ret < 0)
		goto fail_irq;

	return;

fail_irq:
@@ -691,7 +678,6 @@ static struct platform_device *omap3pandora_devices[] __initdata = {
	&pandora_leds_gpio,
	&pandora_keys_gpio,
	&pandora_dss_device,
	&pandora_wl1251_data,
	&pandora_vwlan_device,
};

+21 −3
Original line number Diff line number Diff line
@@ -566,7 +566,7 @@ static void ath_do_set_opmode(struct ath5k_softc *sc)
		  sc->opmode, ath_opmode_to_string(sc->opmode));
}

void ath5k_update_bssid_mask_and_opmode(struct ath5k_softc *sc,
static void ath5k_update_bssid_mask_and_opmode(struct ath5k_softc *sc,
					       struct ieee80211_vif *vif)
{
	struct ath_common *common = ath5k_hw_common(sc->ah);
@@ -3206,6 +3206,9 @@ static int ath5k_get_survey(struct ieee80211_hw *hw, int idx,
{
	struct ath5k_softc *sc = hw->priv;
	struct ieee80211_conf *conf = &hw->conf;
	struct ath_common *common = ath5k_hw_common(sc->ah);
	struct ath_cycle_counters *cc = &common->cc_survey;
	unsigned int div = common->clockrate * 1000;

	if (idx != 0)
		return -ENOENT;
@@ -3214,6 +3217,21 @@ static int ath5k_get_survey(struct ieee80211_hw *hw, int idx,
	survey->filled = SURVEY_INFO_NOISE_DBM;
	survey->noise = sc->ah->ah_noise_floor;

	spin_lock_bh(&common->cc_lock);
	ath_hw_cycle_counters_update(common);
	if (cc->cycles > 0) {
		survey->filled |= SURVEY_INFO_CHANNEL_TIME |
			SURVEY_INFO_CHANNEL_TIME_BUSY |
			SURVEY_INFO_CHANNEL_TIME_RX |
			SURVEY_INFO_CHANNEL_TIME_TX;
		survey->channel_time += cc->cycles / div;
		survey->channel_time_busy += cc->rx_busy / div;
		survey->channel_time_rx += cc->rx_frame / div;
		survey->channel_time_tx += cc->tx_frame / div;
	}
	memset(cc, 0, sizeof(*cc));
	spin_unlock_bh(&common->cc_lock);

	return 0;
}

+15 −15
Original line number Diff line number Diff line
@@ -554,63 +554,63 @@ static ssize_t read_file_frameerrors(struct file *file, char __user *user_buf,

	len += snprintf(buf+len, sizeof(buf)-len,
			"RX\n---------------------\n");
	len += snprintf(buf+len, sizeof(buf)-len, "CRC\t%d\t(%d%%)\n",
	len += snprintf(buf+len, sizeof(buf)-len, "CRC\t%u\t(%u%%)\n",
			st->rxerr_crc,
			st->rx_all_count > 0 ?
				st->rxerr_crc*100/st->rx_all_count : 0);
	len += snprintf(buf+len, sizeof(buf)-len, "PHY\t%d\t(%d%%)\n",
	len += snprintf(buf+len, sizeof(buf)-len, "PHY\t%u\t(%u%%)\n",
			st->rxerr_phy,
			st->rx_all_count > 0 ?
				st->rxerr_phy*100/st->rx_all_count : 0);
	for (i = 0; i < 32; i++) {
		if (st->rxerr_phy_code[i])
			len += snprintf(buf+len, sizeof(buf)-len,
				" phy_err[%d]\t%d\n",
				" phy_err[%u]\t%u\n",
				i, st->rxerr_phy_code[i]);
	}

	len += snprintf(buf+len, sizeof(buf)-len, "FIFO\t%d\t(%d%%)\n",
	len += snprintf(buf+len, sizeof(buf)-len, "FIFO\t%u\t(%u%%)\n",
			st->rxerr_fifo,
			st->rx_all_count > 0 ?
				st->rxerr_fifo*100/st->rx_all_count : 0);
	len += snprintf(buf+len, sizeof(buf)-len, "decrypt\t%d\t(%d%%)\n",
	len += snprintf(buf+len, sizeof(buf)-len, "decrypt\t%u\t(%u%%)\n",
			st->rxerr_decrypt,
			st->rx_all_count > 0 ?
				st->rxerr_decrypt*100/st->rx_all_count : 0);
	len += snprintf(buf+len, sizeof(buf)-len, "MIC\t%d\t(%d%%)\n",
	len += snprintf(buf+len, sizeof(buf)-len, "MIC\t%u\t(%u%%)\n",
			st->rxerr_mic,
			st->rx_all_count > 0 ?
				st->rxerr_mic*100/st->rx_all_count : 0);
	len += snprintf(buf+len, sizeof(buf)-len, "process\t%d\t(%d%%)\n",
	len += snprintf(buf+len, sizeof(buf)-len, "process\t%u\t(%u%%)\n",
			st->rxerr_proc,
			st->rx_all_count > 0 ?
				st->rxerr_proc*100/st->rx_all_count : 0);
	len += snprintf(buf+len, sizeof(buf)-len, "jumbo\t%d\t(%d%%)\n",
	len += snprintf(buf+len, sizeof(buf)-len, "jumbo\t%u\t(%u%%)\n",
			st->rxerr_jumbo,
			st->rx_all_count > 0 ?
				st->rxerr_jumbo*100/st->rx_all_count : 0);
	len += snprintf(buf+len, sizeof(buf)-len, "[RX all\t%d]\n",
	len += snprintf(buf+len, sizeof(buf)-len, "[RX all\t%u]\n",
			st->rx_all_count);
	len += snprintf(buf+len, sizeof(buf)-len, "RX-all-bytes\t%d\n",
	len += snprintf(buf+len, sizeof(buf)-len, "RX-all-bytes\t%u\n",
			st->rx_bytes_count);

	len += snprintf(buf+len, sizeof(buf)-len,
			"\nTX\n---------------------\n");
	len += snprintf(buf+len, sizeof(buf)-len, "retry\t%d\t(%d%%)\n",
	len += snprintf(buf+len, sizeof(buf)-len, "retry\t%u\t(%u%%)\n",
			st->txerr_retry,
			st->tx_all_count > 0 ?
				st->txerr_retry*100/st->tx_all_count : 0);
	len += snprintf(buf+len, sizeof(buf)-len, "FIFO\t%d\t(%d%%)\n",
	len += snprintf(buf+len, sizeof(buf)-len, "FIFO\t%u\t(%u%%)\n",
			st->txerr_fifo,
			st->tx_all_count > 0 ?
				st->txerr_fifo*100/st->tx_all_count : 0);
	len += snprintf(buf+len, sizeof(buf)-len, "filter\t%d\t(%d%%)\n",
	len += snprintf(buf+len, sizeof(buf)-len, "filter\t%u\t(%u%%)\n",
			st->txerr_filt,
			st->tx_all_count > 0 ?
				st->txerr_filt*100/st->tx_all_count : 0);
	len += snprintf(buf+len, sizeof(buf)-len, "[TX all\t%d]\n",
	len += snprintf(buf+len, sizeof(buf)-len, "[TX all\t%u]\n",
			st->tx_all_count);
	len += snprintf(buf+len, sizeof(buf)-len, "TX-all-bytes\t%d\n",
	len += snprintf(buf+len, sizeof(buf)-len, "TX-all-bytes\t%u\n",
			st->tx_bytes_count);

	if (len > sizeof(buf))
+9 −9
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@
struct ath5k_hw_rx_ctl {
	u32	rx_control_0; /* RX control word 0 */
	u32	rx_control_1; /* RX control word 1 */
} __packed;
} __packed __aligned(4);

/* RX control word 1 fields/flags */
#define AR5K_DESC_RX_CTL1_BUF_LEN		0x00000fff /* data buffer length */
@@ -39,7 +39,7 @@ struct ath5k_hw_rx_ctl {
struct ath5k_hw_rx_status {
	u32	rx_status_0; /* RX status word 0 */
	u32	rx_status_1; /* RX status word 1 */
} __packed;
} __packed __aligned(4);

/* 5210/5211 */
/* RX status word 0 fields/flags */
@@ -129,7 +129,7 @@ enum ath5k_phy_error_code {
struct ath5k_hw_2w_tx_ctl {
	u32	tx_control_0; /* TX control word 0 */
	u32	tx_control_1; /* TX control word 1 */
} __packed;
} __packed __aligned(4);

/* TX control word 0 fields/flags */
#define AR5K_2W_TX_DESC_CTL0_FRAME_LEN		0x00000fff /* frame length */
@@ -185,7 +185,7 @@ struct ath5k_hw_4w_tx_ctl {
	u32	tx_control_1; /* TX control word 1 */
	u32	tx_control_2; /* TX control word 2 */
	u32	tx_control_3; /* TX control word 3 */
} __packed;
} __packed __aligned(4);

/* TX control word 0 fields/flags */
#define AR5K_4W_TX_DESC_CTL0_FRAME_LEN		0x00000fff /* frame length */
@@ -244,7 +244,7 @@ struct ath5k_hw_4w_tx_ctl {
struct ath5k_hw_tx_status {
	u32	tx_status_0; /* TX status word 0 */
	u32	tx_status_1; /* TX status word 1 */
} __packed;
} __packed __aligned(4);

/* TX status word 0 fields/flags */
#define AR5K_DESC_TX_STATUS0_FRAME_XMIT_OK	0x00000001 /* TX success */
@@ -282,7 +282,7 @@ struct ath5k_hw_tx_status {
struct ath5k_hw_5210_tx_desc {
	struct ath5k_hw_2w_tx_ctl	tx_ctl;
	struct ath5k_hw_tx_status	tx_stat;
} __packed;
} __packed __aligned(4);

/*
 * 5212 hardware TX descriptor
@@ -290,7 +290,7 @@ struct ath5k_hw_5210_tx_desc {
struct ath5k_hw_5212_tx_desc {
	struct ath5k_hw_4w_tx_ctl	tx_ctl;
	struct ath5k_hw_tx_status	tx_stat;
} __packed;
} __packed __aligned(4);

/*
 * Common hardware RX descriptor
@@ -298,7 +298,7 @@ struct ath5k_hw_5212_tx_desc {
struct ath5k_hw_all_rx_desc {
	struct ath5k_hw_rx_ctl		rx_ctl;
	struct ath5k_hw_rx_status	rx_stat;
} __packed;
} __packed __aligned(4);

/*
 * Atheros hardware DMA descriptor
@@ -313,7 +313,7 @@ struct ath5k_desc {
		struct ath5k_hw_5212_tx_desc	ds_tx5212;
		struct ath5k_hw_all_rx_desc	ds_rx;
	} ud;
} __packed;
} __packed __aligned(4);

#define AR5K_RXDESC_INTREQ	0x0020

+1 −7
Original line number Diff line number Diff line
@@ -1102,18 +1102,12 @@ int ath5k_hw_channel(struct ath5k_hw *ah, struct ieee80211_channel *channel)
  PHY calibration
\*****************/

static int sign_extend(int val, const int nbits)
{
	int order = BIT(nbits-1);
	return (val ^ order) - order;
}

static s32 ath5k_hw_read_measured_noise_floor(struct ath5k_hw *ah)
{
	s32 val;

	val = ath5k_hw_reg_read(ah, AR5K_PHY_NF);
	return sign_extend(AR5K_REG_MS(val, AR5K_PHY_NF_MINCCA_PWR), 9);
	return sign_extend32(AR5K_REG_MS(val, AR5K_PHY_NF_MINCCA_PWR), 8);
}

void ath5k_hw_init_nfcal_hist(struct ath5k_hw *ah)
Loading