Lines Matching full:member

32  * There are 3 types of interaction: One member is alone, in this case only
54 * individual member. This is only the case if data needs to be dejittered
87 * If a member joins a conference:
89 * - If a member joins, its rx_buff is set to silence and change read pointer
109 * If tones are generated by hardware, this conference member is removed for
162 struct dsp_conf_member *member; in dsp_cmx_debug() local
179 list_for_each_entry(member, &conf->mlist, list) { in dsp_cmx_debug()
181 " - member = %s (slot_tx %d, bank_tx %d, " in dsp_cmx_debug()
184 member->dsp->name, member->dsp->pcm_slot_tx, in dsp_cmx_debug()
185 member->dsp->pcm_bank_tx, member->dsp->pcm_slot_rx, in dsp_cmx_debug()
186 member->dsp->pcm_bank_rx, member->dsp->hfc_conf, in dsp_cmx_debug()
187 member->dsp->tx_data, member->dsp->rx_is_off, in dsp_cmx_debug()
188 (member->dsp == dsp) ? " *this*" : ""); in dsp_cmx_debug()
217 * add member to conference
222 struct dsp_conf_member *member; in dsp_cmx_add_conf_member() local
228 if (dsp->member) { in dsp_cmx_add_conf_member()
229 printk(KERN_WARNING "%s: dsp is already member in a conf.\n", in dsp_cmx_add_conf_member()
240 member = kzalloc(sizeof(struct dsp_conf_member), GFP_ATOMIC); in dsp_cmx_add_conf_member()
241 if (!member) { in dsp_cmx_add_conf_member()
245 member->dsp = dsp; in dsp_cmx_add_conf_member()
252 list_add_tail(&member->list, &conf->mlist); in dsp_cmx_add_conf_member()
255 dsp->member = member; in dsp_cmx_add_conf_member()
262 * del member from conference
267 struct dsp_conf_member *member; in dsp_cmx_del_conf_member() local
288 list_for_each_entry(member, &dsp->conf->mlist, list) { in dsp_cmx_del_conf_member()
289 if (member->dsp == dsp) { in dsp_cmx_del_conf_member()
290 list_del(&member->list); in dsp_cmx_del_conf_member()
292 dsp->member = NULL; in dsp_cmx_del_conf_member()
293 kfree(member); in dsp_cmx_del_conf_member()
381 * be member of that conference.
386 struct dsp_conf_member *member, *nextm; in dsp_cmx_hardware() local
513 member = list_entry(conf->mlist.next, struct dsp_conf_member, list); in dsp_cmx_hardware()
514 same_hfc = member->dsp->features.hfc_id; in dsp_cmx_hardware()
515 same_pcm = member->dsp->features.pcm_id; in dsp_cmx_hardware()
517 list_for_each_entry(member, &conf->mlist, list) { in dsp_cmx_hardware()
518 /* check if member uses mixing */ in dsp_cmx_hardware()
519 if (member->dsp->tx_mix) { in dsp_cmx_hardware()
524 member->dsp->name); in dsp_cmx_hardware()
526 list_for_each_entry(member, &conf->mlist, list) { in dsp_cmx_hardware()
527 dsp = member->dsp; in dsp_cmx_hardware()
568 /* check if member has echo turned on */ in dsp_cmx_hardware()
569 if (member->dsp->echo.hardware || member->dsp->echo.software) { in dsp_cmx_hardware()
574 member->dsp->name); in dsp_cmx_hardware()
577 /* check if member has tx_mix turned on */ in dsp_cmx_hardware()
578 if (member->dsp->tx_mix) { in dsp_cmx_hardware()
583 __func__, member->dsp->name); in dsp_cmx_hardware()
586 /* check if member changes volume at an not suppoted level */ in dsp_cmx_hardware()
587 if (member->dsp->tx_volume) { in dsp_cmx_hardware()
592 __func__, member->dsp->name); in dsp_cmx_hardware()
595 if (member->dsp->rx_volume) { in dsp_cmx_hardware()
600 __func__, member->dsp->name); in dsp_cmx_hardware()
604 if (member->dsp->tx_data) { in dsp_cmx_hardware()
608 __func__, member->dsp->name); in dsp_cmx_hardware()
612 if (member->dsp->pipeline.inuse) { in dsp_cmx_hardware()
617 member->dsp->name); in dsp_cmx_hardware()
621 if (member->dsp->bf_enable) { in dsp_cmx_hardware()
625 __func__, member->dsp->name); in dsp_cmx_hardware()
628 /* check if member is on a card with PCM support */ in dsp_cmx_hardware()
629 if (member->dsp->features.pcm_id < 0) { in dsp_cmx_hardware()
634 __func__, member->dsp->name); in dsp_cmx_hardware()
638 if (member->dsp->features.pcm_id != same_pcm) { in dsp_cmx_hardware()
644 __func__, member->dsp->name); in dsp_cmx_hardware()
648 if (same_hfc != member->dsp->features.hfc_id) in dsp_cmx_hardware()
651 if (current_conf < 0 && member->dsp->hfc_conf >= 0) in dsp_cmx_hardware()
652 current_conf = member->dsp->hfc_conf; in dsp_cmx_hardware()
653 /* if any member is not in a conference */ in dsp_cmx_hardware()
654 if (member->dsp->hfc_conf < 0) in dsp_cmx_hardware()
660 /* if no member, this is an error */ in dsp_cmx_hardware()
664 /* one member */ in dsp_cmx_hardware()
672 member = list_entry(conf->mlist.next, struct dsp_conf_member, in dsp_cmx_hardware()
674 dsp = member->dsp; in dsp_cmx_hardware()
686 member = list_entry(conf->mlist.next, struct dsp_conf_member, in dsp_cmx_hardware()
688 nextm = list_entry(member->list.next, struct dsp_conf_member, in dsp_cmx_hardware()
691 if (member->dsp->hfc_conf >= 0) { in dsp_cmx_hardware()
696 __func__, member->dsp->name, in dsp_cmx_hardware()
697 member->dsp->hfc_conf); in dsp_cmx_hardware()
698 dsp_cmx_hw_message(member->dsp, in dsp_cmx_hardware()
700 member->dsp->hfc_conf = -1; in dsp_cmx_hardware()
714 if (member->dsp->features.pcm_banks > 1 && in dsp_cmx_hardware()
716 member->dsp->features.hfc_id != in dsp_cmx_hardware()
719 if (member->dsp->pcm_slot_tx >= 0 && in dsp_cmx_hardware()
720 member->dsp->pcm_slot_rx >= 0 && in dsp_cmx_hardware()
724 member->dsp->pcm_slot_rx && in dsp_cmx_hardware()
726 member->dsp->pcm_slot_tx && in dsp_cmx_hardware()
728 member->dsp->pcm_slot_tx && in dsp_cmx_hardware()
729 member->dsp->pcm_bank_tx != in dsp_cmx_hardware()
730 member->dsp->pcm_bank_rx && in dsp_cmx_hardware()
740 member->dsp->name, in dsp_cmx_hardware()
742 member->dsp->pcm_slot_tx, in dsp_cmx_hardware()
743 member->dsp->pcm_bank_tx, in dsp_cmx_hardware()
744 member->dsp->pcm_bank_rx); in dsp_cmx_hardware()
752 if (dsp != member->dsp && in dsp_cmx_hardware()
754 member->dsp->features.pcm_id == in dsp_cmx_hardware()
767 ii = member->dsp->features.pcm_slots; in dsp_cmx_hardware()
778 member->dsp->name, in dsp_cmx_hardware()
784 member->dsp->pcm_slot_tx = i; in dsp_cmx_hardware()
785 member->dsp->pcm_slot_rx = i; in dsp_cmx_hardware()
788 member->dsp->pcm_bank_rx = 0; in dsp_cmx_hardware()
789 member->dsp->pcm_bank_tx = 1; in dsp_cmx_hardware()
798 member->dsp->name, in dsp_cmx_hardware()
800 member->dsp->pcm_slot_tx); in dsp_cmx_hardware()
801 dsp_cmx_hw_message(member->dsp, MISDN_CTRL_HFC_PCM_CONN, in dsp_cmx_hardware()
802 member->dsp->pcm_slot_tx, member->dsp->pcm_bank_tx, in dsp_cmx_hardware()
803 member->dsp->pcm_slot_rx, member->dsp->pcm_bank_rx); in dsp_cmx_hardware()
813 if (member->dsp->pcm_slot_tx >= 0 && in dsp_cmx_hardware()
814 member->dsp->pcm_slot_rx >= 0 && in dsp_cmx_hardware()
818 member->dsp->pcm_slot_rx && in dsp_cmx_hardware()
820 member->dsp->pcm_slot_tx && in dsp_cmx_hardware()
821 member->dsp->pcm_slot_tx != in dsp_cmx_hardware()
822 member->dsp->pcm_slot_rx && in dsp_cmx_hardware()
823 member->dsp->pcm_bank_tx == 0 && in dsp_cmx_hardware()
824 member->dsp->pcm_bank_rx == 0 && in dsp_cmx_hardware()
833 member->dsp->name, in dsp_cmx_hardware()
835 member->dsp->pcm_slot_tx, in dsp_cmx_hardware()
836 member->dsp->pcm_slot_rx); in dsp_cmx_hardware()
844 if (dsp != member->dsp && in dsp_cmx_hardware()
846 member->dsp->features.pcm_id == in dsp_cmx_hardware()
859 ii = member->dsp->features.pcm_slots; in dsp_cmx_hardware()
870 member->dsp->name, in dsp_cmx_hardware()
887 member->dsp->name, in dsp_cmx_hardware()
893 member->dsp->pcm_slot_tx = i1; in dsp_cmx_hardware()
894 member->dsp->pcm_slot_rx = i2; in dsp_cmx_hardware()
897 member->dsp->pcm_bank_rx = 0; in dsp_cmx_hardware()
898 member->dsp->pcm_bank_tx = 0; in dsp_cmx_hardware()
907 member->dsp->name, in dsp_cmx_hardware()
909 member->dsp->pcm_slot_tx, in dsp_cmx_hardware()
910 member->dsp->pcm_slot_rx); in dsp_cmx_hardware()
911 dsp_cmx_hw_message(member->dsp, MISDN_CTRL_HFC_PCM_CONN, in dsp_cmx_hardware()
912 member->dsp->pcm_slot_tx, member->dsp->pcm_bank_tx, in dsp_cmx_hardware()
913 member->dsp->pcm_slot_rx, member->dsp->pcm_bank_rx); in dsp_cmx_hardware()
953 list_for_each_entry(member, &conf->mlist, list) { in dsp_cmx_hardware()
956 if (!member->dsp->features.hfc_conf) in dsp_cmx_hardware()
959 if (member->dsp->hdlc) in dsp_cmx_hardware()
962 if (member->dsp->hfc_conf == current_conf) in dsp_cmx_hardware()
968 * not checking current member, because in dsp_cmx_hardware()
972 dsp != member->dsp && in dsp_cmx_hardware()
974 member->dsp->features.pcm_id == in dsp_cmx_hardware()
988 ii = member->dsp->features.pcm_slots; in dsp_cmx_hardware()
1007 member->dsp->name, current_conf, i); in dsp_cmx_hardware()
1009 member->dsp->pcm_slot_tx = i; in dsp_cmx_hardware()
1010 member->dsp->pcm_slot_rx = i; in dsp_cmx_hardware()
1011 member->dsp->pcm_bank_tx = 2; /* loop */ in dsp_cmx_hardware()
1012 member->dsp->pcm_bank_rx = 2; in dsp_cmx_hardware()
1013 member->dsp->hfc_conf = current_conf; in dsp_cmx_hardware()
1014 dsp_cmx_hw_message(member->dsp, MISDN_CTRL_HFC_PCM_CONN, in dsp_cmx_hardware()
1016 dsp_cmx_hw_message(member->dsp, in dsp_cmx_hardware()
1025 * no member is in a conference yet, so we find a free one in dsp_cmx_hardware()
1068 struct dsp_conf_member *member; in dsp_cmx_conf() local
1121 member = list_entry(conf->mlist.next, struct dsp_conf_member, in dsp_cmx_conf()
1123 if (dsp->hdlc && !member->dsp->hdlc) { in dsp_cmx_conf()
1129 if (!dsp->hdlc && member->dsp->hdlc) { in dsp_cmx_conf()
1136 /* add conference member */ in dsp_cmx_conf()
1312 struct dsp *member, *other; local
1367 member = dsp;
1418 /* PROCESS DATA (one member / no conf) */
1462 if (other == member)
1473 * -> copy other member's rx-data,
1488 * -> mix other member's rx-data with echo,
1631 struct dsp_conf_member *member; local
1705 member = list_entry(conf->mlist.next,
1707 if (member->dsp->hdlc)
1711 list_for_each_entry(member, &conf->mlist, list) {
1712 dsp = member->dsp;
1718 /* add member's data */
1725 /* process each member */
1726 list_for_each_entry(member, &conf->mlist, list) {
1728 dsp_cmx_send_member(member->dsp, length,
1919 struct dsp_conf_member *member; local
1948 list_for_each_entry(member, &dsp->conf->mlist, list) {
1949 if (dsp->echo.software || member->dsp != dsp) {
1955 skb_queue_tail(&member->dsp->sendq, nskb);
1956 schedule_work(&member->dsp->workq);