Re: [v8 4/8] rsi: add coex support
From: kbuild test robot <hidden>
Date: 2018-02-26 06:03:44
Also in:
linux-bluetooth
Hi Prameela, Thank you for the patch! Yet something to improve: [auto build test ERROR on wireless-drivers-next/master] [also build test ERROR on v4.16-rc3 next-20180223] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Amitkumar-Karwar/rsi-add-bluetooth-and-coex-support/20180226-073244 base: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git master config: x86_64-randconfig-ne0-02261019 (attached as .config) compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 Note: the linux-review/Amitkumar-Karwar/rsi-add-bluetooth-and-coex-support/20180226-073244 HEAD 9c5222af2b3dbf5143bc1fa4dc0af78fcfa3559d builds fine. It only hurts bisectibility. All errors (new ones prefixed by >>): drivers/net/wireless/rsi/rsi_91x_main.c: In function 'rsi_read_pkt':
quoted
drivers/net/wireless/rsi/rsi_91x_main.c:165:5: error: implicit declaration of function 'rsi_coex_recv_pkt' [-Werror=implicit-function-declaration]
rsi_coex_recv_pkt(common, frame_desc + offset);
^~~~~~~~~~~~~~~~~
drivers/net/wireless/rsi/rsi_91x_main.c: In function 'rsi_91x_init':quoted
drivers/net/wireless/rsi/rsi_91x_main.c:287:7: error: implicit declaration of function 'rsi_coex_attach' [-Werror=implicit-function-declaration]
if (rsi_coex_attach(common)) {
^~~~~~~~~~~~~~~
drivers/net/wireless/rsi/rsi_91x_main.c: In function 'rsi_91x_deinit':quoted
drivers/net/wireless/rsi/rsi_91x_main.c:323:3: error: implicit declaration of function 'rsi_coex_detach' [-Werror=implicit-function-declaration]
rsi_coex_detach(common);
^~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/rsi_coex_recv_pkt +165 drivers/net/wireless/rsi/rsi_91x_main.c
133
134 /**
135 * rsi_read_pkt() - This function reads frames from the card.
136 * @common: Pointer to the driver private structure.
137 * @rcv_pkt_len: Received pkt length. In case of USB it is 0.
138 *
139 * Return: 0 on success, -1 on failure.
140 */
141 int rsi_read_pkt(struct rsi_common *common, u8 *rx_pkt, s32 rcv_pkt_len)
142 {
143 u8 *frame_desc = NULL, extended_desc = 0;
144 u32 index, length = 0, queueno = 0;
145 u16 actual_length = 0, offset;
146 struct sk_buff *skb = NULL;
147
148 index = 0;
149 do {
150 frame_desc = &rx_pkt[index];
151 actual_length = *(u16 *)&frame_desc[0];
152 offset = *(u16 *)&frame_desc[2];
153
154 queueno = rsi_get_queueno(frame_desc, offset);
155 length = rsi_get_length(frame_desc, offset);
156
157 /* Extended descriptor is valid for WLAN queues only */
158 if (queueno == RSI_WIFI_DATA_Q || queueno == RSI_WIFI_MGMT_Q)
159 extended_desc = rsi_get_extended_desc(frame_desc,
160 offset);
161
162 switch (queueno) {
163 case RSI_COEX_Q:
164 if (common->coex_mode > 1)
> 165 rsi_coex_recv_pkt(common, frame_desc + offset);
166 else
167 rsi_mgmt_pkt_recv(common,
168 (frame_desc + offset));
169 break;
170
171 case RSI_WIFI_DATA_Q:
172 skb = rsi_prepare_skb(common,
173 (frame_desc + offset),
174 length,
175 extended_desc);
176 if (skb == NULL)
177 goto fail;
178
179 rsi_indicate_pkt_to_os(common, skb);
180 break;
181
182 case RSI_WIFI_MGMT_Q:
183 rsi_mgmt_pkt_recv(common, (frame_desc + offset));
184 break;
185
186 default:
187 rsi_dbg(ERR_ZONE, "%s: pkt from invalid queue: %d\n",
188 __func__, queueno);
189 goto fail;
190 }
191
192 index += actual_length;
193 rcv_pkt_len -= actual_length;
194 } while (rcv_pkt_len > 0);
195
196 return 0;
197 fail:
198 return -EINVAL;
199 }
200 EXPORT_SYMBOL_GPL(rsi_read_pkt);
201
202 /**
203 * rsi_tx_scheduler_thread() - This function is a kernel thread to send the
204 * packets to the device.
205 * @common: Pointer to the driver private structure.
206 *
207 * Return: None.
208 */
209 static void rsi_tx_scheduler_thread(struct rsi_common *common)
210 {
211 struct rsi_hw *adapter = common->priv;
212 u32 timeout = EVENT_WAIT_FOREVER;
213
214 do {
215 if (adapter->determine_event_timeout)
216 timeout = adapter->determine_event_timeout(adapter);
217 rsi_wait_event(&common->tx_thread.event, timeout);
218 rsi_reset_event(&common->tx_thread.event);
219
220 if (common->init_done)
221 rsi_core_qos_processor(common);
222 } while (atomic_read(&common->tx_thread.thread_done) == 0);
223 complete_and_exit(&common->tx_thread.completion, 0);
224 }
225
226 enum rsi_host_intf rsi_get_host_intf(void *priv)
227 {
228 struct rsi_common *common = (struct rsi_common *)priv;
229
230 return common->priv->rsi_host_intf;
231 }
232
233 /**
234 * rsi_91x_init() - This function initializes os interface operations.
235 * @void: Void.
236 *
237 * Return: Pointer to the adapter structure on success, NULL on failure .
238 */
239 struct rsi_hw *rsi_91x_init(void)
240 {
241 struct rsi_hw *adapter = NULL;
242 struct rsi_common *common = NULL;
243 u8 ii = 0;
244
245 adapter = kzalloc(sizeof(*adapter), GFP_KERNEL);
246 if (!adapter)
247 return NULL;
248
249 adapter->priv = kzalloc(sizeof(*common), GFP_KERNEL);
250 if (adapter->priv == NULL) {
251 rsi_dbg(ERR_ZONE, "%s: Failed in allocation of memory\n",
252 __func__);
253 kfree(adapter);
254 return NULL;
255 } else {
256 common = adapter->priv;
257 common->priv = adapter;
258 }
259
260 for (ii = 0; ii < NUM_SOFT_QUEUES; ii++)
261 skb_queue_head_init(&common->tx_queue[ii]);
262
263 rsi_init_event(&common->tx_thread.event);
264 mutex_init(&common->mutex);
265 mutex_init(&common->tx_lock);
266 mutex_init(&common->rx_lock);
267 mutex_init(&common->tx_bus_mutex);
268
269 if (rsi_create_kthread(common,
270 &common->tx_thread,
271 rsi_tx_scheduler_thread,
272 "Tx-Thread")) {
273 rsi_dbg(ERR_ZONE, "%s: Unable to init tx thrd\n", __func__);
274 goto err;
275 }
276
277 rsi_default_ps_params(adapter);
278 spin_lock_init(&adapter->ps_lock);
279 timer_setup(&common->roc_timer, rsi_roc_timeout, 0);
280 init_completion(&common->wlan_init_completion);
281 common->init_done = true;
282
283 common->coex_mode = RSI_DEV_COEX_MODE_WIFI_ALONE;
284 common->oper_mode = RSI_DEV_OPMODE_WIFI_ALONE;
285 adapter->device_model = RSI_DEV_9113;
286 if (common->coex_mode > 1) {
> 287 if (rsi_coex_attach(common)) {
288 rsi_dbg(ERR_ZONE, "Failed to init coex module\n");
289 goto err;
290 }
291 }
292
293 return adapter;
294
295 err:
296 kfree(common);
297 kfree(adapter);
298 return NULL;
299 }
300 EXPORT_SYMBOL_GPL(rsi_91x_init);
301
302 /**
303 * rsi_91x_deinit() - This function de-intializes os intf operations.
304 * @adapter: Pointer to the adapter structure.
305 *
306 * Return: None.
307 */
308 void rsi_91x_deinit(struct rsi_hw *adapter)
309 {
310 struct rsi_common *common = adapter->priv;
311 u8 ii;
312
313 rsi_dbg(INFO_ZONE, "%s: Performing deinit os ops\n", __func__);
314
315 rsi_kill_thread(&common->tx_thread);
316
317 for (ii = 0; ii < NUM_SOFT_QUEUES; ii++)
318 skb_queue_purge(&common->tx_queue[ii]);
319
320 common->init_done = false;
321
322 if (common->coex_mode > 1)
> 323 rsi_coex_detach(common);
324
325 kfree(common);
326 kfree(adapter->rsi_dev);
327 kfree(adapter);
328 }
329 EXPORT_SYMBOL_GPL(rsi_91x_deinit);
330
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation Attachments
- .config.gz [application/gzip] 34863 bytes