Lines Matching refs:conn
102 static bool ath6kl_process_uapsdq(struct ath6kl_sta *conn, in ath6kl_process_uapsdq() argument
114 if (conn->sta_flags & STA_PS_APSD_TRIGGER) { in ath6kl_process_uapsdq()
120 spin_lock_bh(&conn->psq_lock); in ath6kl_process_uapsdq()
121 if (!skb_queue_empty(&conn->apsdq)) in ath6kl_process_uapsdq()
123 else if (conn->sta_flags & STA_PS_APSD_EOSP) in ath6kl_process_uapsdq()
126 spin_unlock_bh(&conn->psq_lock); in ath6kl_process_uapsdq()
128 } else if (!conn->apsd_info) { in ath6kl_process_uapsdq()
152 if ((conn->apsd_info & (1 << traffic_class)) == 0) in ath6kl_process_uapsdq()
156 spin_lock_bh(&conn->psq_lock); in ath6kl_process_uapsdq()
157 is_apsdq_empty = skb_queue_empty(&conn->apsdq); in ath6kl_process_uapsdq()
158 skb_queue_tail(&conn->apsdq, skb); in ath6kl_process_uapsdq()
159 spin_unlock_bh(&conn->psq_lock); in ath6kl_process_uapsdq()
168 conn->aid, 1, 0); in ath6kl_process_uapsdq()
175 static bool ath6kl_process_psq(struct ath6kl_sta *conn, in ath6kl_process_psq() argument
183 if (conn->sta_flags & STA_PS_POLLED) { in ath6kl_process_psq()
184 spin_lock_bh(&conn->psq_lock); in ath6kl_process_psq()
185 if (!skb_queue_empty(&conn->psq)) in ath6kl_process_psq()
187 spin_unlock_bh(&conn->psq_lock); in ath6kl_process_psq()
192 spin_lock_bh(&conn->psq_lock); in ath6kl_process_psq()
193 is_psq_empty = skb_queue_empty(&conn->psq); in ath6kl_process_psq()
194 skb_queue_tail(&conn->psq, skb); in ath6kl_process_psq()
195 spin_unlock_bh(&conn->psq_lock); in ath6kl_process_psq()
205 conn->aid, 1); in ath6kl_process_psq()
213 struct ath6kl_sta *conn = NULL; in ath6kl_powersave_ap() local
265 conn = ath6kl_find_sta(vif, datap->h_dest); in ath6kl_powersave_ap()
266 if (!conn) { in ath6kl_powersave_ap()
273 if (conn->sta_flags & STA_PS_SLEEP) { in ath6kl_powersave_ap()
274 ps_queued = ath6kl_process_uapsdq(conn, in ath6kl_powersave_ap()
277 ps_queued = ath6kl_process_psq(conn, in ath6kl_powersave_ap()
1238 struct ath6kl_sta *conn) in ath6kl_uapsd_trigger_frame_rx() argument
1254 num_frames_to_deliver = (conn->apsd_info >> ATH6KL_APSD_NUM_OF_AC) & in ath6kl_uapsd_trigger_frame_rx()
1265 spin_lock_bh(&conn->psq_lock); in ath6kl_uapsd_trigger_frame_rx()
1266 is_apsdq_empty = skb_queue_empty(&conn->apsdq); in ath6kl_uapsd_trigger_frame_rx()
1267 spin_unlock_bh(&conn->psq_lock); in ath6kl_uapsd_trigger_frame_rx()
1271 spin_lock_bh(&conn->psq_lock); in ath6kl_uapsd_trigger_frame_rx()
1272 skb = skb_dequeue(&conn->apsdq); in ath6kl_uapsd_trigger_frame_rx()
1273 is_apsdq_empty = skb_queue_empty(&conn->apsdq); in ath6kl_uapsd_trigger_frame_rx()
1274 spin_unlock_bh(&conn->psq_lock); in ath6kl_uapsd_trigger_frame_rx()
1280 conn->sta_flags |= STA_PS_APSD_TRIGGER; in ath6kl_uapsd_trigger_frame_rx()
1285 conn->sta_flags |= STA_PS_APSD_EOSP; in ath6kl_uapsd_trigger_frame_rx()
1288 conn->sta_flags &= ~(STA_PS_APSD_TRIGGER); in ath6kl_uapsd_trigger_frame_rx()
1289 conn->sta_flags &= ~(STA_PS_APSD_EOSP); in ath6kl_uapsd_trigger_frame_rx()
1300 conn->aid, 0, flags); in ath6kl_uapsd_trigger_frame_rx()
1319 struct ath6kl_sta *conn = NULL; in ath6kl_rx() local
1428 conn = ath6kl_find_sta(vif, datap->h_source); in ath6kl_rx()
1430 if (!conn) { in ath6kl_rx()
1444 prev_ps = !!(conn->sta_flags & STA_PS_SLEEP); in ath6kl_rx()
1447 conn->sta_flags |= STA_PS_SLEEP; in ath6kl_rx()
1449 conn->sta_flags &= ~STA_PS_SLEEP; in ath6kl_rx()
1452 if ((conn->sta_flags & STA_PS_SLEEP) && trig_state) in ath6kl_rx()
1453 ath6kl_uapsd_trigger_frame_rx(vif, conn); in ath6kl_rx()
1455 if (prev_ps ^ !!(conn->sta_flags & STA_PS_SLEEP)) { in ath6kl_rx()
1456 if (!(conn->sta_flags & STA_PS_SLEEP)) { in ath6kl_rx()
1462 spin_lock_bh(&conn->psq_lock); in ath6kl_rx()
1463 while (conn->mgmt_psq_len > 0) { in ath6kl_rx()
1465 &conn->mgmt_psq, in ath6kl_rx()
1469 conn->mgmt_psq_len--; in ath6kl_rx()
1470 spin_unlock_bh(&conn->psq_lock); in ath6kl_rx()
1483 spin_lock_bh(&conn->psq_lock); in ath6kl_rx()
1485 conn->mgmt_psq_len = 0; in ath6kl_rx()
1486 while ((skbuff = skb_dequeue(&conn->psq))) { in ath6kl_rx()
1487 spin_unlock_bh(&conn->psq_lock); in ath6kl_rx()
1489 spin_lock_bh(&conn->psq_lock); in ath6kl_rx()
1492 is_apsdq_empty = skb_queue_empty(&conn->apsdq); in ath6kl_rx()
1493 while ((skbuff = skb_dequeue(&conn->apsdq))) { in ath6kl_rx()
1494 spin_unlock_bh(&conn->psq_lock); in ath6kl_rx()
1496 spin_lock_bh(&conn->psq_lock); in ath6kl_rx()
1498 spin_unlock_bh(&conn->psq_lock); in ath6kl_rx()
1504 conn->aid, 0, 0); in ath6kl_rx()
1508 conn->aid, 0); in ath6kl_rx()
1584 conn = ath6kl_find_sta(vif, datap->h_dest); in ath6kl_rx()
1586 if (conn && ar->intra_bss) { in ath6kl_rx()
1589 } else if (conn && !ar->intra_bss) { in ath6kl_rx()
1607 conn = ath6kl_find_sta(vif, datap->h_source); in ath6kl_rx()
1608 if (!conn) in ath6kl_rx()
1610 aggr_conn = conn->aggr_conn; in ath6kl_rx()