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

Commit baaffe67 authored by Gertjan van Wingerde's avatar Gertjan van Wingerde Committed by Ivo van Doorn
Browse files

rt2x00: Reverse calling order of bus write_tx_desc and driver write_tx_desc.



For rt2800 reverse the calling order of rt2x00pci_write_data and
rt2800pci_write_data. Currently rt2800pci_write_data calls rt2x00pci_write_data
as there can be only 1 driver callback function specified by the driver.
Reverse this calling order by introducing a new driver callback function,
called write_tx_datadesc, which is called from the bus-specific write_tx_data
functions.
Preparation for futher cleanups in the skb data handling of rt2x00.

Signed-off-by: default avatarGertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
parent 5c3b685c
Loading
Loading
Loading
Loading
+4 −11
Original line number Diff line number Diff line
@@ -613,18 +613,10 @@ static int rt2800pci_set_device_state(struct rt2x00_dev *rt2x00dev,
/*
 * TX descriptor initialization
 */
static int rt2800pci_write_tx_data(struct queue_entry* entry,
static void rt2800pci_write_tx_datadesc(struct queue_entry* entry,
					 struct txentry_desc *txdesc)
{
	int ret;

	ret = rt2x00pci_write_tx_data(entry, txdesc);
	if (ret)
		return ret;

	rt2800_write_txwi(entry->skb, txdesc);

	return 0;
}


@@ -1079,7 +1071,8 @@ static const struct rt2x00lib_ops rt2800pci_rt2x00_ops = {
	.reset_tuner		= rt2800_reset_tuner,
	.link_tuner		= rt2800_link_tuner,
	.write_tx_desc		= rt2800pci_write_tx_desc,
	.write_tx_data		= rt2800pci_write_tx_data,
	.write_tx_data		= rt2x00pci_write_tx_data,
	.write_tx_datadesc	= rt2800pci_write_tx_datadesc,
	.write_beacon		= rt2800pci_write_beacon,
	.kick_tx_queue		= rt2800pci_kick_tx_queue,
	.kill_tx_queue		= rt2800pci_kill_tx_queue,
+2 −0
Original line number Diff line number Diff line
@@ -552,6 +552,8 @@ struct rt2x00lib_ops {
			       struct txentry_desc *txdesc);
	int (*write_tx_data) (struct queue_entry *entry,
			      struct txentry_desc *txdesc);
	void (*write_tx_datadesc) (struct queue_entry *entry,
				   struct txentry_desc *txdesc);
	void (*write_beacon) (struct queue_entry *entry,
			      struct txentry_desc *txdesc);
	int (*get_tx_data_len) (struct queue_entry *entry);
+6 −0
Original line number Diff line number Diff line
@@ -81,6 +81,12 @@ int rt2x00pci_write_tx_data(struct queue_entry *entry,
		return -EINVAL;
	}

	/*
	 * Call the driver's write_tx_datadesc function, if it exists.
	 */
	if (rt2x00dev->ops->lib->write_tx_datadesc)
		rt2x00dev->ops->lib->write_tx_datadesc(entry, txdesc);

	return 0;
}
EXPORT_SYMBOL_GPL(rt2x00pci_write_tx_data);
+6 −0
Original line number Diff line number Diff line
@@ -248,6 +248,12 @@ int rt2x00usb_write_tx_data(struct queue_entry *entry,
	 */
	skb_pull(entry->skb, entry->queue->desc_size);

	/*
	 * Call the driver's write_tx_datadesc function, if it exists.
	 */
	if (rt2x00dev->ops->lib->write_tx_datadesc)
		rt2x00dev->ops->lib->write_tx_datadesc(entry, txdesc);

	return 0;
}
EXPORT_SYMBOL_GPL(rt2x00usb_write_tx_data);