Commit 72810379 authored by Ivo van Doorn's avatar Ivo van Doorn Committed by John W. Linville
Browse files

rt2x00: Rename config_preamble() to config_erp()



Rename config_preamble() to config_erp() and cleanup argument
list by putting it all into a single structure.
This will make the function more meaningful and easier to
expand later. This second option is mostly intended to make
the patch "mac80211: proper short-slot handling" from Johannes Berg
easier to apply for rt2x00.

Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent e4030a2f
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -304,10 +304,8 @@ static void rt2400pci_config_intf(struct rt2x00_dev *rt2x00dev,
					      conf->bssid, sizeof(conf->bssid));
}

static int rt2400pci_config_preamble(struct rt2x00_dev *rt2x00dev,
				     const int short_preamble,
				     const int ack_timeout,
				     const int ack_consume_time)
static int rt2400pci_config_erp(struct rt2x00_dev *rt2x00dev,
				struct rt2x00lib_erp *erp)
{
	int preamble_mask;
	u32 reg;
@@ -315,11 +313,13 @@ static int rt2400pci_config_preamble(struct rt2x00_dev *rt2x00dev,
	/*
	 * When short preamble is enabled, we should set bit 0x08
	 */
	preamble_mask = short_preamble << 3;
	preamble_mask = erp->short_preamble << 3;

	rt2x00pci_register_read(rt2x00dev, TXCSR1, &reg);
	rt2x00_set_field32(&reg, TXCSR1_ACK_TIMEOUT, ack_timeout);
	rt2x00_set_field32(&reg, TXCSR1_ACK_CONSUME_TIME, ack_consume_time);
	rt2x00_set_field32(&reg, TXCSR1_ACK_TIMEOUT,
			   erp->ack_timeout);
	rt2x00_set_field32(&reg, TXCSR1_ACK_CONSUME_TIME,
			   erp->ack_consume_time);
	rt2x00pci_register_write(rt2x00dev, TXCSR1, reg);

	rt2x00pci_register_read(rt2x00dev, ARCSR2, &reg);
@@ -1601,7 +1601,7 @@ static const struct rt2x00lib_ops rt2400pci_rt2x00_ops = {
	.kick_tx_queue		= rt2400pci_kick_tx_queue,
	.fill_rxdone		= rt2400pci_fill_rxdone,
	.config_intf		= rt2400pci_config_intf,
	.config_preamble	= rt2400pci_config_preamble,
	.config_erp		= rt2400pci_config_erp,
	.config			= rt2400pci_config,
};

+8 −8
Original line number Diff line number Diff line
@@ -307,10 +307,8 @@ static void rt2500pci_config_intf(struct rt2x00_dev *rt2x00dev,
					      conf->bssid, sizeof(conf->bssid));
}

static int rt2500pci_config_preamble(struct rt2x00_dev *rt2x00dev,
				     const int short_preamble,
				     const int ack_timeout,
				     const int ack_consume_time)
static int rt2500pci_config_erp(struct rt2x00_dev *rt2x00dev,
				struct rt2x00lib_erp *erp)
{
	int preamble_mask;
	u32 reg;
@@ -318,11 +316,13 @@ static int rt2500pci_config_preamble(struct rt2x00_dev *rt2x00dev,
	/*
	 * When short preamble is enabled, we should set bit 0x08
	 */
	preamble_mask = short_preamble << 3;
	preamble_mask = erp->short_preamble << 3;

	rt2x00pci_register_read(rt2x00dev, TXCSR1, &reg);
	rt2x00_set_field32(&reg, TXCSR1_ACK_TIMEOUT, ack_timeout);
	rt2x00_set_field32(&reg, TXCSR1_ACK_CONSUME_TIME, ack_consume_time);
	rt2x00_set_field32(&reg, TXCSR1_ACK_TIMEOUT,
			   erp->ack_timeout);
	rt2x00_set_field32(&reg, TXCSR1_ACK_CONSUME_TIME,
			   erp->ack_consume_time);
	rt2x00pci_register_write(rt2x00dev, TXCSR1, reg);

	rt2x00pci_register_read(rt2x00dev, ARCSR2, &reg);
@@ -1911,7 +1911,7 @@ static const struct rt2x00lib_ops rt2500pci_rt2x00_ops = {
	.kick_tx_queue		= rt2500pci_kick_tx_queue,
	.fill_rxdone		= rt2500pci_fill_rxdone,
	.config_intf		= rt2500pci_config_intf,
	.config_preamble	= rt2500pci_config_preamble,
	.config_erp		= rt2500pci_config_erp,
	.config			= rt2500pci_config,
};

+5 −7
Original line number Diff line number Diff line
@@ -356,10 +356,8 @@ static void rt2500usb_config_intf(struct rt2x00_dev *rt2x00dev,
					      (3 * sizeof(__le16)));
}

static int rt2500usb_config_preamble(struct rt2x00_dev *rt2x00dev,
				     const int short_preamble,
				     const int ack_timeout,
				     const int ack_consume_time)
static int rt2500usb_config_erp(struct rt2x00_dev *rt2x00dev,
				struct rt2x00lib_erp *erp)
{
	u16 reg;

@@ -371,12 +369,12 @@ static int rt2500usb_config_preamble(struct rt2x00_dev *rt2x00dev,
		return -EAGAIN;

	rt2500usb_register_read(rt2x00dev, TXRX_CSR1, &reg);
	rt2x00_set_field16(&reg, TXRX_CSR1_ACK_TIMEOUT, ack_timeout);
	rt2x00_set_field16(&reg, TXRX_CSR1_ACK_TIMEOUT, erp->ack_timeout);
	rt2500usb_register_write(rt2x00dev, TXRX_CSR1, reg);

	rt2500usb_register_read(rt2x00dev, TXRX_CSR10, &reg);
	rt2x00_set_field16(&reg, TXRX_CSR10_AUTORESPOND_PREAMBLE,
			   !!short_preamble);
			   !!erp->short_preamble);
	rt2500usb_register_write(rt2x00dev, TXRX_CSR10, reg);

	return 0;
@@ -1842,7 +1840,7 @@ static const struct rt2x00lib_ops rt2500usb_rt2x00_ops = {
	.kick_tx_queue		= rt2500usb_kick_tx_queue,
	.fill_rxdone		= rt2500usb_fill_rxdone,
	.config_intf		= rt2500usb_config_intf,
	.config_preamble	= rt2500usb_config_preamble,
	.config_erp		= rt2500usb_config_erp,
	.config			= rt2500usb_config,
};

+13 −5
Original line number Diff line number Diff line
@@ -384,7 +384,7 @@ struct rt2x00_intf {
	 */
	unsigned int delayed_flags;
#define DELAYED_UPDATE_BEACON		0x00000001
#define DELAYED_CONFIG_PREAMBLE		0x00000002
#define DELAYED_CONFIG_ERP		0x00000002
};

static inline struct rt2x00_intf* vif_to_intf(struct ieee80211_vif *vif)
@@ -450,6 +450,16 @@ struct rt2x00lib_conf {
	short eifs;
};

/*
 * Configuration structure for erp settings.
 */
struct rt2x00lib_erp {
	int short_preamble;

	int ack_timeout;
	int ack_consume_time;
};

/*
 * Configuration structure wrapper around the
 * rt2x00 interface configuration handler.
@@ -558,10 +568,8 @@ struct rt2x00lib_ops {
#define CONFIG_UPDATE_MAC		( 1 << 2 )
#define CONFIG_UPDATE_BSSID		( 1 << 3 )

	int (*config_preamble) (struct rt2x00_dev *rt2x00dev,
				const int short_preamble,
				const int ack_timeout,
				const int ack_consume_time);
	int (*config_erp) (struct rt2x00_dev *rt2x00dev,
			   struct rt2x00lib_erp *erp);
	void (*config) (struct rt2x00_dev *rt2x00dev,
			struct rt2x00lib_conf *libconf,
			const unsigned int flags);
+20 −23
Original line number Diff line number Diff line
@@ -75,44 +75,41 @@ void rt2x00lib_config_intf(struct rt2x00_dev *rt2x00dev,
	rt2x00dev->ops->lib->config_intf(rt2x00dev, intf, &conf, flags);
}

void rt2x00lib_config_preamble(struct rt2x00_dev *rt2x00dev,
void rt2x00lib_config_erp(struct rt2x00_dev *rt2x00dev,
			  struct rt2x00_intf *intf,
			       const unsigned int short_preamble)
			  struct ieee80211_bss_conf *bss_conf)
{
	struct rt2x00lib_erp erp;
	int retval;
	int ack_timeout;
	int ack_consume_time;

	ack_timeout = PLCP + get_duration(ACK_SIZE, 10);
	ack_consume_time = SIFS + PLCP + get_duration(ACK_SIZE, 10);
	memset(&erp, 0, sizeof(erp));

	erp.short_preamble = bss_conf->use_short_preamble;
	erp.ack_timeout = PLCP + get_duration(ACK_SIZE, 10);
	erp.ack_consume_time = SIFS + PLCP + get_duration(ACK_SIZE, 10);

	if (rt2x00dev->hw->conf.flags & IEEE80211_CONF_SHORT_SLOT_TIME)
		ack_timeout += SHORT_DIFS;
		erp.ack_timeout += SHORT_DIFS;
	else
		ack_timeout += DIFS;
		erp.ack_timeout += DIFS;

	if (short_preamble) {
		ack_timeout += SHORT_PREAMBLE;
		ack_consume_time += SHORT_PREAMBLE;
	if (bss_conf->use_short_preamble) {
		erp.ack_timeout += SHORT_PREAMBLE;
		erp.ack_consume_time += SHORT_PREAMBLE;
	} else {
		ack_timeout += PREAMBLE;
		ack_consume_time += PREAMBLE;
		erp.ack_timeout += PREAMBLE;
		erp.ack_consume_time += PREAMBLE;
	}

	retval = rt2x00dev->ops->lib->config_preamble(rt2x00dev,
						      short_preamble,
						      ack_timeout,
						      ack_consume_time);

	spin_lock(&intf->lock);
	retval = rt2x00dev->ops->lib->config_erp(rt2x00dev, &erp);

	if (retval) {
		intf->delayed_flags |= DELAYED_CONFIG_PREAMBLE;
		spin_lock(&intf->lock);
		intf->delayed_flags |= DELAYED_CONFIG_ERP;
		queue_work(rt2x00dev->hw->workqueue, &rt2x00dev->intf_work);
	}

		spin_unlock(&intf->lock);
	}
}

void rt2x00lib_config_antenna(struct rt2x00_dev *rt2x00dev,
			      enum antenna rx, enum antenna tx)
Loading