.. | .. |
---|
275 | 275 | } |
---|
276 | 276 | } |
---|
277 | 277 | |
---|
278 | | -/** |
---|
| 278 | +/* |
---|
279 | 279 | * This function frees the WL per-device resources. |
---|
280 | 280 | * |
---|
281 | 281 | * This function frees resources owned by the WL device pointed to |
---|
282 | 282 | * by the wl parameter. |
---|
283 | 283 | * |
---|
284 | 284 | * precondition: can both be called locked and unlocked |
---|
285 | | - * |
---|
286 | 285 | */ |
---|
287 | 286 | static void brcms_free(struct brcms_info *wl) |
---|
288 | 287 | { |
---|
.. | .. |
---|
850 | 849 | "START: tid %d is not agg\'able\n", tid); |
---|
851 | 850 | return -EINVAL; |
---|
852 | 851 | } |
---|
853 | | - ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid); |
---|
854 | | - break; |
---|
| 852 | + return IEEE80211_AMPDU_TX_START_IMMEDIATE; |
---|
855 | 853 | |
---|
856 | 854 | case IEEE80211_AMPDU_TX_STOP_CONT: |
---|
857 | 855 | case IEEE80211_AMPDU_TX_STOP_FLUSH: |
---|
.. | .. |
---|
983 | 981 | .set_tim = brcms_ops_beacon_set_tim, |
---|
984 | 982 | }; |
---|
985 | 983 | |
---|
986 | | -void brcms_dpc(unsigned long data) |
---|
| 984 | +void brcms_dpc(struct tasklet_struct *t) |
---|
987 | 985 | { |
---|
988 | 986 | struct brcms_info *wl; |
---|
989 | 987 | |
---|
990 | | - wl = (struct brcms_info *) data; |
---|
| 988 | + wl = from_tasklet(wl, t, tasklet); |
---|
991 | 989 | |
---|
992 | 990 | spin_lock_bh(&wl->lock); |
---|
993 | 991 | |
---|
.. | .. |
---|
1116 | 1114 | return ieee_hw_rate_init(hw); |
---|
1117 | 1115 | } |
---|
1118 | 1116 | |
---|
1119 | | -/** |
---|
| 1117 | +/* |
---|
1120 | 1118 | * attach to the WL device. |
---|
1121 | 1119 | * |
---|
1122 | 1120 | * Attach to the WL device identified by vendor and device parameters. |
---|
.. | .. |
---|
1150 | 1148 | init_waitqueue_head(&wl->tx_flush_wq); |
---|
1151 | 1149 | |
---|
1152 | 1150 | /* setup the bottom half handler */ |
---|
1153 | | - tasklet_init(&wl->tasklet, brcms_dpc, (unsigned long) wl); |
---|
| 1151 | + tasklet_setup(&wl->tasklet, brcms_dpc); |
---|
1154 | 1152 | |
---|
1155 | 1153 | spin_lock_init(&wl->lock); |
---|
1156 | 1154 | spin_lock_init(&wl->isr_lock); |
---|
.. | .. |
---|
1211 | 1209 | |
---|
1212 | 1210 | |
---|
1213 | 1211 | |
---|
1214 | | -/** |
---|
| 1212 | +/* |
---|
1215 | 1213 | * determines if a device is a WL device, and if so, attaches it. |
---|
1216 | 1214 | * |
---|
1217 | 1215 | * This function determines if a device pointed to by pdev is a WL device, |
---|
.. | .. |
---|
1297 | 1295 | .id_table = brcms_coreid_table, |
---|
1298 | 1296 | }; |
---|
1299 | 1297 | |
---|
1300 | | -/** |
---|
| 1298 | +/* |
---|
1301 | 1299 | * This is the main entry point for the brcmsmac driver. |
---|
1302 | 1300 | * |
---|
1303 | 1301 | * This function is scheduled upon module initialization and |
---|
.. | .. |
---|
1324 | 1322 | return 0; |
---|
1325 | 1323 | } |
---|
1326 | 1324 | |
---|
1327 | | -/** |
---|
| 1325 | +/* |
---|
1328 | 1326 | * This function unloads the brcmsmac driver from the system. |
---|
1329 | 1327 | * |
---|
1330 | 1328 | * This function unconditionally unloads the brcmsmac driver module from the |
---|
.. | .. |
---|
1438 | 1436 | * precondition: perimeter lock has been acquired |
---|
1439 | 1437 | */ |
---|
1440 | 1438 | void brcms_down(struct brcms_info *wl) |
---|
| 1439 | + __must_hold(&wl->lock) |
---|
1441 | 1440 | { |
---|
1442 | 1441 | uint callbacks, ret_val = 0; |
---|
1443 | 1442 | |
---|
.. | .. |
---|
1724 | 1723 | * precondition: perimeter lock has been acquired |
---|
1725 | 1724 | */ |
---|
1726 | 1725 | bool brcms_rfkill_set_hw_state(struct brcms_info *wl) |
---|
| 1726 | + __must_hold(&wl->lock) |
---|
1727 | 1727 | { |
---|
1728 | 1728 | bool blocked = brcms_c_check_radio_disabled(wl->wlc); |
---|
1729 | 1729 | |
---|