aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGertjan van Wingerde <gwingerde@gmail.com>2010-06-03 04:51:43 -0400
committerIvo van Doorn <IvDoorn@gmail.com>2010-06-03 04:51:43 -0400
commitbaaffe67b5b33e4215409669226ef623cb65e15c (patch)
tree5f92b460a5b960ca96ca843f6b10c2c22096cb7b
parent5c3b685c79f38ac6b909b3650f3dad3993614cfb (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.c15
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00.h2
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00pci.c6
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00usb.c6
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 */
616static int rt2800pci_write_tx_data(struct queue_entry* entry, 616static 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}
86EXPORT_SYMBOL_GPL(rt2x00pci_write_tx_data); 92EXPORT_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}
253EXPORT_SYMBOL_GPL(rt2x00usb_write_tx_data); 259EXPORT_SYMBOL_GPL(rt2x00usb_write_tx_data);