Skip to content

Commit

Permalink
rt2x00: Reverse calling order of bus write_tx_desc and driver write_t…
Browse files Browse the repository at this point in the history
…x_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: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
  • Loading branch information
Gertjan van Wingerde authored and Ivo van Doorn committed Jun 3, 2010
1 parent 5c3b685 commit baaffe6
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 11 deletions.
15 changes: 4 additions & 11 deletions drivers/net/wireless/rt2x00/rt2800pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
struct txentry_desc *txdesc)
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;
}


Expand Down Expand Up @@ -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,
Expand Down
2 changes: 2 additions & 0 deletions drivers/net/wireless/rt2x00/rt2x00.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
6 changes: 6 additions & 0 deletions drivers/net/wireless/rt2x00/rt2x00pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
6 changes: 6 additions & 0 deletions drivers/net/wireless/rt2x00/rt2x00usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit baaffe6

Please sign in to comment.