aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt2x00dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2x00dev.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index a11421274f79..b26c634f210b 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -103,6 +103,46 @@ void rt2x00lib_reset_link_tuner(struct rt2x00_dev *rt2x00dev)
103} 103}
104 104
105/* 105/*
106 * Ring initialization
107 */
108static void rt2x00lib_init_rxrings(struct rt2x00_dev *rt2x00dev)
109{
110 struct data_ring *ring = rt2x00dev->rx;
111 unsigned int i;
112
113 if (!rt2x00dev->ops->lib->init_rxentry)
114 return;
115
116 if (ring->data_addr)
117 memset(ring->data_addr, 0, rt2x00_get_ring_size(ring));
118
119 for (i = 0; i < ring->stats.limit; i++)
120 rt2x00dev->ops->lib->init_rxentry(rt2x00dev, &ring->entry[i]);
121
122 rt2x00_ring_index_clear(ring);
123}
124
125static void rt2x00lib_init_txrings(struct rt2x00_dev *rt2x00dev)
126{
127 struct data_ring *ring;
128 unsigned int i;
129
130 if (!rt2x00dev->ops->lib->init_txentry)
131 return;
132
133 txringall_for_each(rt2x00dev, ring) {
134 if (ring->data_addr)
135 memset(ring->data_addr, 0, rt2x00_get_ring_size(ring));
136
137 for (i = 0; i < ring->stats.limit; i++)
138 rt2x00dev->ops->lib->init_txentry(rt2x00dev,
139 &ring->entry[i]);
140
141 rt2x00_ring_index_clear(ring);
142 }
143}
144
145/*
106 * Radio control handlers. 146 * Radio control handlers.
107 */ 147 */
108int rt2x00lib_enable_radio(struct rt2x00_dev *rt2x00dev) 148int rt2x00lib_enable_radio(struct rt2x00_dev *rt2x00dev)
@@ -118,6 +158,12 @@ int rt2x00lib_enable_radio(struct rt2x00_dev *rt2x00dev)
118 return 0; 158 return 0;
119 159
120 /* 160 /*
161 * Initialize all data rings.
162 */
163 rt2x00lib_init_rxrings(rt2x00dev);
164 rt2x00lib_init_txrings(rt2x00dev);
165
166 /*
121 * Enable radio. 167 * Enable radio.
122 */ 168 */
123 status = rt2x00dev->ops->lib->set_device_state(rt2x00dev, 169 status = rt2x00dev->ops->lib->set_device_state(rt2x00dev,