Lines Matching refs:msg

149 static void ssip_rxcmd_complete(struct hsi_msg *msg);
151 static inline void ssip_set_cmd(struct hsi_msg *msg, u32 cmd) in ssip_set_cmd() argument
155 data = sg_virt(msg->sgt.sgl); in ssip_set_cmd()
159 static inline u32 ssip_get_cmd(struct hsi_msg *msg) in ssip_get_cmd() argument
163 data = sg_virt(msg->sgt.sgl); in ssip_get_cmd()
168 static void ssip_skb_to_msg(struct sk_buff *skb, struct hsi_msg *msg) in ssip_skb_to_msg() argument
174 BUG_ON(msg->sgt.nents != (unsigned int)(skb_shinfo(skb)->nr_frags + 1)); in ssip_skb_to_msg()
176 sg = msg->sgt.sgl; in ssip_skb_to_msg()
187 static void ssip_free_data(struct hsi_msg *msg) in ssip_free_data() argument
191 skb = msg->context; in ssip_free_data()
192 pr_debug("free data: msg %p context %p skb %p\n", msg, msg->context, in ssip_free_data()
194 msg->destructor = NULL; in ssip_free_data()
196 hsi_free_msg(msg); in ssip_free_data()
202 struct hsi_msg *msg; in ssip_alloc_data() local
204 msg = hsi_alloc_msg(skb_shinfo(skb)->nr_frags + 1, flags); in ssip_alloc_data()
205 if (!msg) in ssip_alloc_data()
207 ssip_skb_to_msg(skb, msg); in ssip_alloc_data()
208 msg->destructor = ssip_free_data; in ssip_alloc_data()
209 msg->channel = ssi->channel_id_data; in ssip_alloc_data()
210 msg->context = skb; in ssip_alloc_data()
212 return msg; in ssip_alloc_data()
215 static inline void ssip_release_cmd(struct hsi_msg *msg) in ssip_release_cmd() argument
217 struct ssi_protocol *ssi = hsi_client_drvdata(msg->cl); in ssip_release_cmd()
219 dev_dbg(&msg->cl->device, "Release cmd 0x%08x\n", ssip_get_cmd(msg)); in ssip_release_cmd()
221 list_add_tail(&msg->link, &ssi->cmdqueue); in ssip_release_cmd()
227 struct hsi_msg *msg; in ssip_claim_cmd() local
232 msg = list_first_entry(&ssi->cmdqueue, struct hsi_msg, link); in ssip_claim_cmd()
233 list_del(&msg->link); in ssip_claim_cmd()
235 msg->destructor = ssip_release_cmd; in ssip_claim_cmd()
237 return msg; in ssip_claim_cmd()
242 struct hsi_msg *msg, *tmp; in ssip_free_cmds() local
244 list_for_each_entry_safe(msg, tmp, &ssi->cmdqueue, link) { in ssip_free_cmds()
245 list_del(&msg->link); in ssip_free_cmds()
246 msg->destructor = NULL; in ssip_free_cmds()
247 kfree(sg_virt(msg->sgt.sgl)); in ssip_free_cmds()
248 hsi_free_msg(msg); in ssip_free_cmds()
254 struct hsi_msg *msg; in ssip_alloc_cmds() local
259 msg = hsi_alloc_msg(1, GFP_KERNEL); in ssip_alloc_cmds()
260 if (!msg) in ssip_alloc_cmds()
264 hsi_free_msg(msg); in ssip_alloc_cmds()
267 sg_init_one(msg->sgt.sgl, buf, sizeof(*buf)); in ssip_alloc_cmds()
268 msg->channel = ssi->channel_id_cmd; in ssip_alloc_cmds()
269 list_add_tail(&msg->link, &ssi->cmdqueue); in ssip_alloc_cmds()
389 struct hsi_msg *msg; in ssip_reset() local
411 msg = list_entry(head, struct hsi_msg, link); in ssip_reset()
414 ssip_free_data(msg); in ssip_reset()
423 struct hsi_msg *msg; in ssip_dump_state() local
436 list_for_each_entry(msg, &ssi->txqueue, link) in ssip_dump_state()
437 dev_err(&cl->device, "pending TX data (%p)\n", msg); in ssip_dump_state()
444 struct hsi_msg *msg; in ssip_error() local
448 msg = ssip_claim_cmd(ssi); in ssip_error()
449 msg->complete = ssip_rxcmd_complete; in ssip_error()
450 hsi_async_read(cl, msg); in ssip_error()
501 struct hsi_msg *msg; in ssip_send_bootinfo_req_cmd() local
504 msg = ssip_claim_cmd(ssi); in ssip_send_bootinfo_req_cmd()
505 ssip_set_cmd(msg, SSIP_BOOTINFO_REQ_CMD(SSIP_LOCAL_VERID)); in ssip_send_bootinfo_req_cmd()
506 msg->complete = ssip_release_cmd; in ssip_send_bootinfo_req_cmd()
507 hsi_async_write(cl, msg); in ssip_send_bootinfo_req_cmd()
509 msg = ssip_claim_cmd(ssi); in ssip_send_bootinfo_req_cmd()
510 msg->complete = ssip_rxcmd_complete; in ssip_send_bootinfo_req_cmd()
511 hsi_async_read(cl, msg); in ssip_send_bootinfo_req_cmd()
517 struct hsi_msg *msg; in ssip_start_rx() local
533 msg = ssip_claim_cmd(ssi); in ssip_start_rx()
534 ssip_set_cmd(msg, SSIP_READY_CMD); in ssip_start_rx()
535 msg->complete = ssip_release_cmd; in ssip_start_rx()
537 hsi_async_write(cl, msg); in ssip_start_rx()
551 static void ssip_free_strans(struct hsi_msg *msg) in ssip_free_strans() argument
553 ssip_free_data(msg->context); in ssip_free_strans()
554 ssip_release_cmd(msg); in ssip_free_strans()
557 static void ssip_strans_complete(struct hsi_msg *msg) in ssip_strans_complete() argument
559 struct hsi_client *cl = msg->cl; in ssip_strans_complete()
563 data = msg->context; in ssip_strans_complete()
564 ssip_release_cmd(msg); in ssip_strans_complete()
574 struct hsi_msg *msg, *dmsg; in ssip_xmit() local
587 msg = ssip_claim_cmd(ssi); in ssip_xmit()
589 msg->context = dmsg; in ssip_xmit()
590 msg->complete = ssip_strans_complete; in ssip_xmit()
591 msg->destructor = ssip_free_strans; in ssip_xmit()
594 ssip_set_cmd(msg, SSIP_START_TRANS_CMD(SSIP_BYTES_TO_FRAMES(skb->len), in ssip_xmit()
603 return hsi_async_write(cl, msg); in ssip_xmit()
638 static void ssip_rx_data_complete(struct hsi_msg *msg) in ssip_rx_data_complete() argument
640 struct hsi_client *cl = msg->cl; in ssip_rx_data_complete()
644 if (msg->status == HSI_STATUS_ERROR) { in ssip_rx_data_complete()
646 ssip_free_data(msg); in ssip_rx_data_complete()
651 skb = msg->context; in ssip_rx_data_complete()
653 hsi_free_msg(msg); in ssip_rx_data_complete()
659 struct hsi_msg *msg; in ssip_rx_bootinforeq() local
686 msg = ssip_claim_cmd(ssi); in ssip_rx_bootinforeq()
687 ssip_set_cmd(msg, SSIP_BOOTINFO_RESP_CMD(SSIP_LOCAL_VERID)); in ssip_rx_bootinforeq()
688 msg->complete = ssip_release_cmd; in ssip_rx_bootinforeq()
689 hsi_async_write(cl, msg); in ssip_rx_bootinforeq()
772 struct hsi_msg *msg; in ssip_rx_strans() local
798 msg = ssip_alloc_data(ssi, skb, GFP_ATOMIC); in ssip_rx_strans()
799 if (unlikely(!msg)) { in ssip_rx_strans()
803 msg->complete = ssip_rx_data_complete; in ssip_rx_strans()
804 hsi_async_read(cl, msg); in ssip_rx_strans()
813 static void ssip_rxcmd_complete(struct hsi_msg *msg) in ssip_rxcmd_complete() argument
815 struct hsi_client *cl = msg->cl; in ssip_rxcmd_complete()
816 u32 cmd = ssip_get_cmd(msg); in ssip_rxcmd_complete()
819 if (msg->status == HSI_STATUS_ERROR) { in ssip_rxcmd_complete()
821 ssip_release_cmd(msg); in ssip_rxcmd_complete()
825 hsi_async_read(cl, msg); in ssip_rxcmd_complete()
852 static void ssip_swbreak_complete(struct hsi_msg *msg) in ssip_swbreak_complete() argument
854 struct hsi_client *cl = msg->cl; in ssip_swbreak_complete()
857 ssip_release_cmd(msg); in ssip_swbreak_complete()
874 static void ssip_tx_data_complete(struct hsi_msg *msg) in ssip_tx_data_complete() argument
876 struct hsi_client *cl = msg->cl; in ssip_tx_data_complete()
880 if (msg->status == HSI_STATUS_ERROR) { in ssip_tx_data_complete()
899 ssip_free_data(msg); in ssip_tx_data_complete()
973 struct hsi_msg *msg; in ssip_pn_xmit() local
992 msg = ssip_alloc_data(ssi, skb, GFP_ATOMIC); in ssip_pn_xmit()
993 if (!msg) { in ssip_pn_xmit()
997 msg->complete = ssip_tx_data_complete; in ssip_pn_xmit()
1005 list_add_tail(&msg->link, &ssi->txqueue); in ssip_pn_xmit()
1030 hsi_free_msg(msg); in ssip_pn_xmit()