diff options
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00.h | 13 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00dev.c | 21 |
2 files changed, 34 insertions, 0 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h index 985982bb65e2..696513113d9f 100644 --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h | |||
@@ -520,6 +520,10 @@ struct rt2x00lib_ops { | |||
520 | * TX status tasklet handler. | 520 | * TX status tasklet handler. |
521 | */ | 521 | */ |
522 | void (*txstatus_tasklet) (unsigned long data); | 522 | void (*txstatus_tasklet) (unsigned long data); |
523 | void (*pretbtt_tasklet) (unsigned long data); | ||
524 | void (*tbtt_tasklet) (unsigned long data); | ||
525 | void (*rxdone_tasklet) (unsigned long data); | ||
526 | void (*autowake_tasklet) (unsigned long data); | ||
523 | 527 | ||
524 | /* | 528 | /* |
525 | * Device init handlers. | 529 | * Device init handlers. |
@@ -905,6 +909,15 @@ struct rt2x00_dev { | |||
905 | * Tasklet for processing tx status reports (rt2800pci). | 909 | * Tasklet for processing tx status reports (rt2800pci). |
906 | */ | 910 | */ |
907 | struct tasklet_struct txstatus_tasklet; | 911 | struct tasklet_struct txstatus_tasklet; |
912 | struct tasklet_struct pretbtt_tasklet; | ||
913 | struct tasklet_struct tbtt_tasklet; | ||
914 | struct tasklet_struct rxdone_tasklet; | ||
915 | struct tasklet_struct autowake_tasklet; | ||
916 | |||
917 | /* | ||
918 | * Protect the interrupt mask register. | ||
919 | */ | ||
920 | spinlock_t irqmask_lock; | ||
908 | }; | 921 | }; |
909 | 922 | ||
910 | /* | 923 | /* |
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c index 50b379a6c9ee..7d4dece64c1a 100644 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c | |||
@@ -831,6 +831,26 @@ static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev) | |||
831 | } | 831 | } |
832 | 832 | ||
833 | /* | 833 | /* |
834 | * Initialize tasklets if used by the driver. Tasklets are | ||
835 | * disabled until the interrupts are turned on. The driver | ||
836 | * has to handle that. | ||
837 | */ | ||
838 | #define RT2X00_TASKLET_INIT(taskletname) \ | ||
839 | if (rt2x00dev->ops->lib->taskletname) { \ | ||
840 | tasklet_init(&rt2x00dev->taskletname, \ | ||
841 | rt2x00dev->ops->lib->taskletname, \ | ||
842 | (unsigned long)rt2x00dev); \ | ||
843 | tasklet_disable(&rt2x00dev->taskletname); \ | ||
844 | } | ||
845 | |||
846 | RT2X00_TASKLET_INIT(pretbtt_tasklet); | ||
847 | RT2X00_TASKLET_INIT(tbtt_tasklet); | ||
848 | RT2X00_TASKLET_INIT(rxdone_tasklet); | ||
849 | RT2X00_TASKLET_INIT(autowake_tasklet); | ||
850 | |||
851 | #undef RT2X00_TASKLET_INIT | ||
852 | |||
853 | /* | ||
834 | * Register HW. | 854 | * Register HW. |
835 | */ | 855 | */ |
836 | status = ieee80211_register_hw(rt2x00dev->hw); | 856 | status = ieee80211_register_hw(rt2x00dev->hw); |
@@ -958,6 +978,7 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev) | |||
958 | { | 978 | { |
959 | int retval = -ENOMEM; | 979 | int retval = -ENOMEM; |
960 | 980 | ||
981 | spin_lock_init(&rt2x00dev->irqmask_lock); | ||
961 | mutex_init(&rt2x00dev->csr_mutex); | 982 | mutex_init(&rt2x00dev->csr_mutex); |
962 | 983 | ||
963 | set_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags); | 984 | set_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags); |