Bill Paul
55ad415824
When ndis_attach() runs, it has to very briefly initialize the card
...
in order to query the underlying Windows driver for the station address
and some other properties. There is a slim chance that the card may
receive a packet and indicate it up to us before ndis_attach() can call
ndis_halt_nic(). This is bad, because both the softc structure and
the ifnet structure aren't fully initialized yet: many pointers are
still NULL, so if we make it into ndis_rxeof(), we will panic.
To fix this, we need to do the following:
- Move the calls to IoAllocateWorkItem() to before the call to ndis_init_nic().
- Move the initialization of the RX DPC and status callback function pointers
to before ndis_init_nic() as well.
- Modify ndis_rxeof() to check if the IFF_DRV_RUNNING flag is set. If it
isn't, we return any supplied NDIS_PACKETs to the NIC without processing
them.
This fixes a crash than can occur when activating a wireless NIC in
close proximity to a very busy wireless network, reported by Ryan
Beasley (ryan%^$!ATgoddamnbastard-****!!!DOTorg.
MFC after: 3 days
2006-02-04 19:42:49 +00:00
..
2005-12-28 21:18:55 +00:00
2006-01-29 23:59:43 +00:00
2006-01-20 22:01:34 +00:00
2005-09-24 20:46:02 +00:00
2005-12-04 02:12:43 +00:00
2006-02-01 15:45:29 +00:00
2005-09-20 19:45:08 +00:00
2005-12-06 11:19:37 +00:00
2006-02-02 17:51:47 +00:00
2006-01-26 19:55:29 +00:00
2005-08-09 10:20:02 +00:00
2005-12-04 02:12:43 +00:00
2005-11-11 16:04:59 +00:00
2006-02-04 17:56:17 +00:00
2006-01-25 23:07:42 +00:00
2006-01-23 20:58:05 +00:00
2006-01-05 19:24:01 +00:00
2006-01-26 19:04:18 +00:00
2005-09-20 19:46:54 +00:00
2005-11-11 16:04:59 +00:00
2006-02-02 09:58:31 +00:00
2006-01-27 08:42:48 +00:00
2006-01-20 22:00:50 +00:00
2006-02-03 20:55:30 +00:00
2005-12-16 06:50:55 +00:00
2005-09-19 03:10:21 +00:00
2005-09-19 03:10:21 +00:00
2005-12-17 07:09:17 +00:00
2005-09-20 19:49:33 +00:00
2005-09-27 16:12:49 +00:00
2005-10-26 15:52:16 +00:00
2005-10-26 06:44:59 +00:00
2005-12-28 18:00:37 +00:00
2006-01-04 09:20:41 +00:00
2005-12-22 16:18:23 +00:00
2005-10-16 20:22:56 +00:00
2005-12-20 22:44:36 +00:00
2006-01-27 19:10:13 +00:00
2005-08-01 07:09:15 +00:00
2006-02-04 16:50:14 +00:00
2005-10-27 21:08:12 +00:00
2006-02-04 08:16:07 +00:00
2005-12-04 10:06:06 +00:00
2006-02-04 08:16:41 +00:00
2005-10-19 00:25:39 +00:00
2005-09-19 21:59:49 +00:00
2005-12-06 11:19:37 +00:00
2005-09-11 18:39:03 +00:00
2005-11-19 23:26:57 +00:00
2005-12-24 22:22:17 +00:00
2006-01-04 23:00:01 +00:00
2005-12-05 11:58:35 +00:00
2005-09-19 22:04:41 +00:00
2006-01-17 06:02:22 +00:00
2005-12-04 02:12:43 +00:00
2006-01-17 16:53:50 +00:00
2005-12-02 22:36:14 +00:00
2006-01-03 17:01:43 +00:00
2005-12-05 11:58:35 +00:00
2006-01-14 09:46:27 +00:00
2006-02-04 19:42:49 +00:00
2005-08-10 07:10:02 +00:00
2006-01-21 19:56:19 +00:00
2006-01-03 23:03:39 +00:00
2005-11-20 16:13:00 +00:00
2006-02-04 08:39:02 +00:00
2005-12-04 10:03:00 +00:00
2006-01-29 12:03:03 +00:00
2005-12-18 18:24:27 +00:00
2005-11-09 20:26:00 +00:00
2005-07-13 23:58:57 +00:00
2005-10-18 06:38:14 +00:00
2006-01-31 14:48:58 +00:00
2005-11-23 18:51:34 +00:00
2005-12-05 11:58:35 +00:00
2005-11-12 19:14:21 +00:00
2006-01-31 13:35:30 +00:00
2005-12-08 13:31:52 +00:00
2005-07-30 15:53:40 +00:00
2005-08-08 12:23:27 +00:00
2006-01-21 00:29:52 +00:00
2005-12-04 10:06:06 +00:00
2005-09-20 19:54:11 +00:00
2005-12-18 18:24:27 +00:00
2006-01-04 08:34:23 +00:00
2005-09-20 19:54:11 +00:00
2005-12-12 06:23:43 +00:00
2005-11-22 16:37:45 +00:00
2005-09-19 22:04:41 +00:00
2005-12-28 05:30:09 +00:00
2005-12-31 20:04:39 +00:00
2006-02-02 23:57:31 +00:00
2006-02-01 15:45:29 +00:00
2005-11-11 07:36:14 +00:00
2005-12-21 10:54:47 +00:00
2005-12-21 10:54:47 +00:00
2005-12-08 22:29:42 +00:00
2006-01-29 12:47:07 +00:00
2005-12-20 21:41:52 +00:00
2005-11-11 16:04:59 +00:00
2005-10-26 15:52:16 +00:00
2005-12-18 18:24:27 +00:00
2006-01-25 14:55:11 +00:00
2005-10-26 15:52:16 +00:00
2005-11-11 16:04:59 +00:00
2005-09-19 03:10:21 +00:00
2005-11-11 16:04:59 +00:00
2006-01-06 20:17:48 +00:00
2005-12-07 07:23:53 +00:00
2006-01-17 06:58:25 +00:00
2005-12-21 15:49:51 +00:00
2006-02-04 08:19:00 +00:00
2005-12-06 11:19:37 +00:00
2005-09-19 13:48:45 +00:00
2006-01-29 16:48:41 +00:00
2005-11-11 09:57:32 +00:00
2005-08-09 10:20:02 +00:00
2005-09-21 22:45:14 +00:00
2005-12-05 22:37:37 +00:00
2006-01-14 17:57:17 +00:00
2005-10-31 15:41:29 +00:00
2006-01-03 06:14:07 +00:00
2005-11-08 22:51:43 +00:00
2005-10-31 15:41:29 +00:00
2006-01-21 20:07:19 +00:00
2005-12-18 18:24:27 +00:00
2005-12-12 21:00:58 +00:00
2006-01-31 19:09:38 +00:00
2005-12-18 18:24:27 +00:00
2005-08-08 19:55:32 +00:00
2005-11-11 16:04:59 +00:00
2005-11-11 16:04:59 +00:00
2005-09-29 12:31:44 +00:00
2005-11-11 16:04:59 +00:00
2005-11-11 16:04:59 +00:00
2005-11-11 16:04:59 +00:00
2005-10-26 15:52:16 +00:00