Lines Matching refs: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;
179 list_for_each_entry(member, &conf->mlist, list) {
181 " - member = %s (slot_tx %d, bank_tx %d, "
184 member->dsp->name, member->dsp->pcm_slot_tx,
185 member->dsp->pcm_bank_tx, member->dsp->pcm_slot_rx,
186 member->dsp->pcm_bank_rx, member->dsp->hfc_conf,
187 member->dsp->tx_data, member->dsp->rx_is_off,
188 (member->dsp == dsp) ? " *this*" : "");
217 * add member to conference
222 struct dsp_conf_member *member;
228 if (dsp->member) {
229 printk(KERN_WARNING "%s: dsp is already member in a conf.\n",
240 member = kzalloc(sizeof(struct dsp_conf_member), GFP_ATOMIC);
241 if (!member) {
245 member->dsp = dsp;
252 list_add_tail(&member->list, &conf->mlist);
255 dsp->member = member;
262 * del member from conference
267 struct dsp_conf_member *member;
288 list_for_each_entry(member, &dsp->conf->mlist, list) {
289 if (member->dsp == dsp) {
290 list_del(&member->list);
292 dsp->member = NULL;
293 kfree(member);
381 * be member of that conference.
386 struct dsp_conf_member *member, *nextm;
513 member = list_entry(conf->mlist.next, struct dsp_conf_member, list);
514 same_hfc = member->dsp->features.hfc_id;
515 same_pcm = member->dsp->features.pcm_id;
517 list_for_each_entry(member, &conf->mlist, list) {
518 /* check if member uses mixing */
519 if (member->dsp->tx_mix) {
524 member->dsp->name);
526 list_for_each_entry(member, &conf->mlist, list) {
527 dsp = member->dsp;
568 /* check if member has echo turned on */
569 if (member->dsp->echo.hardware || member->dsp->echo.software) {
574 member->dsp->name);
577 /* check if member has tx_mix turned on */
578 if (member->dsp->tx_mix) {
583 __func__, member->dsp->name);
586 /* check if member changes volume at an not suppoted level */
587 if (member->dsp->tx_volume) {
592 __func__, member->dsp->name);
595 if (member->dsp->rx_volume) {
600 __func__, member->dsp->name);
604 if (member->dsp->tx_data) {
608 __func__, member->dsp->name);
612 if (member->dsp->pipeline.inuse) {
617 member->dsp->name);
621 if (member->dsp->bf_enable) {
625 __func__, member->dsp->name);
628 /* check if member is on a card with PCM support */
629 if (member->dsp->features.pcm_id < 0) {
634 __func__, member->dsp->name);
638 if (member->dsp->features.pcm_id != same_pcm) {
644 __func__, member->dsp->name);
648 if (same_hfc != member->dsp->features.hfc_id)
651 if (current_conf < 0 && member->dsp->hfc_conf >= 0)
652 current_conf = member->dsp->hfc_conf;
653 /* if any member is not in a conference */
654 if (member->dsp->hfc_conf < 0)
660 /* if no member, this is an error */
664 /* one member */
672 member = list_entry(conf->mlist.next, struct dsp_conf_member,
674 dsp = member->dsp;
686 member = list_entry(conf->mlist.next, struct dsp_conf_member,
688 nextm = list_entry(member->list.next, struct dsp_conf_member,
691 if (member->dsp->hfc_conf >= 0) {
696 __func__, member->dsp->name,
697 member->dsp->hfc_conf);
698 dsp_cmx_hw_message(member->dsp,
700 member->dsp->hfc_conf = -1;
714 if (member->dsp->features.pcm_banks > 1 &&
716 member->dsp->features.hfc_id !=
719 if (member->dsp->pcm_slot_tx >= 0 &&
720 member->dsp->pcm_slot_rx >= 0 &&
724 member->dsp->pcm_slot_rx &&
726 member->dsp->pcm_slot_tx &&
728 member->dsp->pcm_slot_tx &&
729 member->dsp->pcm_bank_tx !=
730 member->dsp->pcm_bank_rx &&
740 member->dsp->name,
742 member->dsp->pcm_slot_tx,
743 member->dsp->pcm_bank_tx,
744 member->dsp->pcm_bank_rx);
752 if (dsp != member->dsp &&
754 member->dsp->features.pcm_id ==
767 ii = member->dsp->features.pcm_slots;
778 member->dsp->name,
784 member->dsp->pcm_slot_tx = i;
785 member->dsp->pcm_slot_rx = i;
788 member->dsp->pcm_bank_rx = 0;
789 member->dsp->pcm_bank_tx = 1;
798 member->dsp->name,
800 member->dsp->pcm_slot_tx);
801 dsp_cmx_hw_message(member->dsp, MISDN_CTRL_HFC_PCM_CONN,
802 member->dsp->pcm_slot_tx, member->dsp->pcm_bank_tx,
803 member->dsp->pcm_slot_rx, member->dsp->pcm_bank_rx);
813 if (member->dsp->pcm_slot_tx >= 0 &&
814 member->dsp->pcm_slot_rx >= 0 &&
818 member->dsp->pcm_slot_rx &&
820 member->dsp->pcm_slot_tx &&
821 member->dsp->pcm_slot_tx !=
822 member->dsp->pcm_slot_rx &&
823 member->dsp->pcm_bank_tx == 0 &&
824 member->dsp->pcm_bank_rx == 0 &&
833 member->dsp->name,
835 member->dsp->pcm_slot_tx,
836 member->dsp->pcm_slot_rx);
844 if (dsp != member->dsp &&
846 member->dsp->features.pcm_id ==
859 ii = member->dsp->features.pcm_slots;
870 member->dsp->name,
887 member->dsp->name,
893 member->dsp->pcm_slot_tx = i1;
894 member->dsp->pcm_slot_rx = i2;
897 member->dsp->pcm_bank_rx = 0;
898 member->dsp->pcm_bank_tx = 0;
907 member->dsp->name,
909 member->dsp->pcm_slot_tx,
910 member->dsp->pcm_slot_rx);
911 dsp_cmx_hw_message(member->dsp, MISDN_CTRL_HFC_PCM_CONN,
912 member->dsp->pcm_slot_tx, member->dsp->pcm_bank_tx,
913 member->dsp->pcm_slot_rx, member->dsp->pcm_bank_rx);
953 list_for_each_entry(member, &conf->mlist, list) {
956 if (!member->dsp->features.hfc_conf)
959 if (member->dsp->hdlc)
962 if (member->dsp->hfc_conf == current_conf)
968 * not checking current member, because
972 dsp != member->dsp &&
974 member->dsp->features.pcm_id ==
988 ii = member->dsp->features.pcm_slots;
1007 member->dsp->name, current_conf, i);
1009 member->dsp->pcm_slot_tx = i;
1010 member->dsp->pcm_slot_rx = i;
1011 member->dsp->pcm_bank_tx = 2; /* loop */
1012 member->dsp->pcm_bank_rx = 2;
1013 member->dsp->hfc_conf = current_conf;
1014 dsp_cmx_hw_message(member->dsp, MISDN_CTRL_HFC_PCM_CONN,
1016 dsp_cmx_hw_message(member->dsp,
1025 * no member is in a conference yet, so we find a free one
1068 struct dsp_conf_member *member;
1121 member = list_entry(conf->mlist.next, struct dsp_conf_member,
1123 if (dsp->hdlc && !member->dsp->hdlc) {
1129 if (!dsp->hdlc && member->dsp->hdlc) {
1136 /* add conference member */
1312 struct dsp *member, *other;
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;
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;
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);