Lines Matching full:local
27 struct ieee802154_local *local = in ieee802154_xmit_sync_worker() local
29 struct sk_buff *skb = local->tx_skb; in ieee802154_xmit_sync_worker()
33 res = drv_xmit_sync(local, skb); in ieee802154_xmit_sync_worker()
40 ieee802154_xmit_complete(&local->hw, skb, false); in ieee802154_xmit_sync_worker()
46 ieee802154_release_queue(local); in ieee802154_xmit_sync_worker()
47 if (atomic_dec_and_test(&local->phy->ongoing_txs)) in ieee802154_xmit_sync_worker()
48 wake_up(&local->phy->sync_txq); in ieee802154_xmit_sync_worker()
54 ieee802154_tx(struct ieee802154_local *local, struct sk_buff *skb) in ieee802154_tx() argument
59 if (!(local->hw.flags & IEEE802154_HW_TX_OMIT_CKSUM)) { in ieee802154_tx()
79 ieee802154_hold_queue(local); in ieee802154_tx()
80 atomic_inc(&local->phy->ongoing_txs); in ieee802154_tx()
86 if (local->ops->xmit_async) { in ieee802154_tx()
89 ret = drv_xmit_async(local, skb); in ieee802154_tx()
96 local->tx_skb = skb; in ieee802154_tx()
97 queue_work(local->workqueue, &local->sync_tx_work); in ieee802154_tx()
103 ieee802154_release_queue(local); in ieee802154_tx()
104 if (atomic_dec_and_test(&local->phy->ongoing_txs)) in ieee802154_tx()
105 wake_up(&local->phy->sync_txq); in ieee802154_tx()
111 static int ieee802154_sync_queue(struct ieee802154_local *local) in ieee802154_sync_queue() argument
115 ieee802154_hold_queue(local); in ieee802154_sync_queue()
116 ieee802154_disable_queue(local); in ieee802154_sync_queue()
117 wait_event(local->phy->sync_txq, !atomic_read(&local->phy->ongoing_txs)); in ieee802154_sync_queue()
118 ret = local->tx_result; in ieee802154_sync_queue()
119 ieee802154_release_queue(local); in ieee802154_sync_queue()
124 int ieee802154_sync_and_hold_queue(struct ieee802154_local *local) in ieee802154_sync_and_hold_queue() argument
128 ieee802154_hold_queue(local); in ieee802154_sync_and_hold_queue()
129 ret = ieee802154_sync_queue(local); in ieee802154_sync_and_hold_queue()
130 set_bit(WPAN_PHY_FLAG_STATE_QUEUE_STOPPED, &local->phy->flags); in ieee802154_sync_and_hold_queue()
135 int ieee802154_mlme_op_pre(struct ieee802154_local *local) in ieee802154_mlme_op_pre() argument
137 return ieee802154_sync_and_hold_queue(local); in ieee802154_mlme_op_pre()
140 int ieee802154_mlme_tx_locked(struct ieee802154_local *local, in ieee802154_mlme_tx_locked() argument
150 if (!local->open_count) in ieee802154_mlme_tx_locked()
159 ieee802154_tx(local, skb); in ieee802154_mlme_tx_locked()
160 return ieee802154_sync_queue(local); in ieee802154_mlme_tx_locked()
163 int ieee802154_mlme_tx(struct ieee802154_local *local, in ieee802154_mlme_tx() argument
170 ret = ieee802154_mlme_tx_locked(local, sdata, skb); in ieee802154_mlme_tx()
176 void ieee802154_mlme_op_post(struct ieee802154_local *local) in ieee802154_mlme_op_post() argument
178 ieee802154_release_queue(local); in ieee802154_mlme_op_post()
181 int ieee802154_mlme_tx_one(struct ieee802154_local *local, in ieee802154_mlme_tx_one() argument
187 ieee802154_mlme_op_pre(local); in ieee802154_mlme_tx_one()
188 ret = ieee802154_mlme_tx(local, sdata, skb); in ieee802154_mlme_tx_one()
189 ieee802154_mlme_op_post(local); in ieee802154_mlme_tx_one()
194 int ieee802154_mlme_tx_one_locked(struct ieee802154_local *local, in ieee802154_mlme_tx_one_locked() argument
200 ieee802154_mlme_op_pre(local); in ieee802154_mlme_tx_one_locked()
201 ret = ieee802154_mlme_tx_locked(local, sdata, skb); in ieee802154_mlme_tx_one_locked()
202 ieee802154_mlme_op_post(local); in ieee802154_mlme_tx_one_locked()
207 static bool ieee802154_queue_is_stopped(struct ieee802154_local *local) in ieee802154_queue_is_stopped() argument
209 return test_bit(WPAN_PHY_FLAG_STATE_QUEUE_STOPPED, &local->phy->flags); in ieee802154_queue_is_stopped()
213 ieee802154_hot_tx(struct ieee802154_local *local, struct sk_buff *skb) in ieee802154_hot_tx() argument
218 WARN_ON_ONCE(ieee802154_queue_is_stopped(local)); in ieee802154_hot_tx()
220 return ieee802154_tx(local, skb); in ieee802154_hot_tx()
230 return ieee802154_hot_tx(sdata->local, skb); in ieee802154_monitor_start_xmit()
252 return ieee802154_hot_tx(sdata->local, skb); in ieee802154_subif_start_xmit()