diff options
author | Gertjan van Wingerde <gwingerde@gmail.com> | 2010-06-03 04:51:43 -0400 |
---|---|---|
committer | Ivo van Doorn <IvDoorn@gmail.com> | 2010-06-03 04:51:43 -0400 |
commit | baaffe67b5b33e4215409669226ef623cb65e15c (patch) | |
tree | 5f92b460a5b960ca96ca843f6b10c2c22096cb7b | |
parent | 5c3b685c79f38ac6b909b3650f3dad3993614cfb (diff) |
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: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2800pci.c | 15 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00pci.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00usb.c | 6 |
4 files changed, 18 insertions, 11 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c index 88dba7f76aef..72e4f29a2fc7 100644 --- a/drivers/net/wireless/rt2x00/rt2800pci.c +++ b/drivers/net/wireless/rt2x00/rt2800pci.c | |||
@@ -613,18 +613,10 @@ static int rt2800pci_set_device_state(struct rt2x00_dev *rt2x00dev, | |||
613 | /* | 613 | /* |
614 | * TX descriptor initialization | 614 | * TX descriptor initialization |
615 | */ | 615 | */ |
616 | static int rt2800pci_write_tx_data(struct queue_entry* entry, | 616 | static void rt2800pci_write_tx_datadesc(struct queue_entry* entry, |
617 | struct txentry_desc *txdesc) | 617 | struct txentry_desc *txdesc) |
618 | { | 618 | { |
619 | int ret; | ||
620 | |||
621 | ret = rt2x00pci_write_tx_data(entry, txdesc); | ||
622 | if (ret) | ||
623 | return ret; | ||
624 | |||
625 | rt2800_write_txwi(entry->skb, txdesc); | 619 | rt2800_write_txwi(entry->skb, txdesc); |
626 | |||
627 | return 0; | ||
628 | } | 620 | } |
629 | 621 | ||
630 | 622 | ||
@@ -1079,7 +1071,8 @@ static const struct rt2x00lib_ops rt2800pci_rt2x00_ops = { | |||
1079 | .reset_tuner = rt2800_reset_tuner, | 1071 | .reset_tuner = rt2800_reset_tuner, |
1080 | .link_tuner = rt2800_link_tuner, | 1072 | .link_tuner = rt2800_link_tuner, |
1081 | .write_tx_desc = rt2800pci_write_tx_desc, | 1073 | .write_tx_desc = rt2800pci_write_tx_desc, |
1082 | .write_tx_data = rt2800pci_write_tx_data, | 1074 | .write_tx_data = rt2x00pci_write_tx_data, |
1075 | .write_tx_datadesc = rt2800pci_write_tx_datadesc, | ||
1083 | .write_beacon = rt2800pci_write_beacon, | 1076 | .write_beacon = rt2800pci_write_beacon, |
1084 | .kick_tx_queue = rt2800pci_kick_tx_queue, | 1077 | .kick_tx_queue = rt2800pci_kick_tx_queue, |
1085 | .kill_tx_queue = rt2800pci_kill_tx_queue, | 1078 | .kill_tx_queue = rt2800pci_kill_tx_queue, |
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h index c8e5fed4dc07..811844be0053 100644 --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h | |||
@@ -552,6 +552,8 @@ struct rt2x00lib_ops { | |||
552 | struct txentry_desc *txdesc); | 552 | struct txentry_desc *txdesc); |
553 | int (*write_tx_data) (struct queue_entry *entry, | 553 | int (*write_tx_data) (struct queue_entry *entry, |
554 | struct txentry_desc *txdesc); | 554 | struct txentry_desc *txdesc); |
555 | void (*write_tx_datadesc) (struct queue_entry *entry, | ||
556 | struct txentry_desc *txdesc); | ||
555 | void (*write_beacon) (struct queue_entry *entry, | 557 | void (*write_beacon) (struct queue_entry *entry, |
556 | struct txentry_desc *txdesc); | 558 | struct txentry_desc *txdesc); |
557 | int (*get_tx_data_len) (struct queue_entry *entry); | 559 | int (*get_tx_data_len) (struct queue_entry *entry); |
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.c b/drivers/net/wireless/rt2x00/rt2x00pci.c index f71eee67f977..494b960e811c 100644 --- a/drivers/net/wireless/rt2x00/rt2x00pci.c +++ b/drivers/net/wireless/rt2x00/rt2x00pci.c | |||
@@ -81,6 +81,12 @@ int rt2x00pci_write_tx_data(struct queue_entry *entry, | |||
81 | return -EINVAL; | 81 | return -EINVAL; |
82 | } | 82 | } |
83 | 83 | ||
84 | /* | ||
85 | * Call the driver's write_tx_datadesc function, if it exists. | ||
86 | */ | ||
87 | if (rt2x00dev->ops->lib->write_tx_datadesc) | ||
88 | rt2x00dev->ops->lib->write_tx_datadesc(entry, txdesc); | ||
89 | |||
84 | return 0; | 90 | return 0; |
85 | } | 91 | } |
86 | EXPORT_SYMBOL_GPL(rt2x00pci_write_tx_data); | 92 | EXPORT_SYMBOL_GPL(rt2x00pci_write_tx_data); |
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c index bd1546ba7ad2..25cc376d388e 100644 --- a/drivers/net/wireless/rt2x00/rt2x00usb.c +++ b/drivers/net/wireless/rt2x00/rt2x00usb.c | |||
@@ -248,6 +248,12 @@ int rt2x00usb_write_tx_data(struct queue_entry *entry, | |||
248 | */ | 248 | */ |
249 | skb_pull(entry->skb, entry->queue->desc_size); | 249 | skb_pull(entry->skb, entry->queue->desc_size); |
250 | 250 | ||
251 | /* | ||
252 | * Call the driver's write_tx_datadesc function, if it exists. | ||
253 | */ | ||
254 | if (rt2x00dev->ops->lib->write_tx_datadesc) | ||
255 | rt2x00dev->ops->lib->write_tx_datadesc(entry, txdesc); | ||
256 | |||
251 | return 0; | 257 | return 0; |
252 | } | 258 | } |
253 | EXPORT_SYMBOL_GPL(rt2x00usb_write_tx_data); | 259 | EXPORT_SYMBOL_GPL(rt2x00usb_write_tx_data); |