Home | History | Annotate | Download | only in rfcomm

Lines Matching refs:p_port

72     tPORT  *p_port = &rfc_cb.port.port[0];
80 p_port = &rfc_cb.port.port[yy];
81 if (!p_port->in_use)
83 memset (p_port, 0, sizeof (tPORT));
85 p_port->in_use = TRUE;
86 p_port->inx = yy + 1;
88 p_port->dlci = dlci;
89 memcpy (p_port->bd_addr, bd_addr, BD_ADDR_LEN);
92 port_set_defaults (p_port);
96 return (p_port);
113 void port_set_defaults (tPORT *p_port)
115 p_port->ev_mask = 0;
116 p_port->p_callback = NULL;
117 p_port->port_ctrl = 0;
118 p_port->error = 0;
119 p_port->line_status = 0;
120 p_port->rx_flag_ev_pending = FALSE;
121 p_port->peer_mtu = RFCOMM_DEFAULT_MTU;
123 p_port->user_port_pars = default_port_pars;
124 p_port->peer_port_pars = default_port_pars;
126 p_port->credit_tx = 0;
127 p_port->credit_rx = 0;
128 /* p_port->credit_rx_max = PORT_CREDIT_RX_MAX; Determined later */
129 /* p_port->credit_rx_low = PORT_CREDIT_RX_LOW; Determined later */
131 memset (&p_port->local_ctrl, 0, sizeof (p_port->local_ctrl));
132 memset (&p_port->peer_ctrl, 0, sizeof (p_port->peer_ctrl));
133 memset (&p_port->rx, 0, sizeof (p_port->rx));
134 memset (&p_port->tx, 0, sizeof (p_port->tx));
148 void port_select_mtu (tPORT *p_port)
153 if (p_port->mtu == 0)
156 packet_size = btm_get_max_packet_size (p_port->bd_addr);
161 p_port->mtu = RFCOMM_DEFAULT_MTU;
175 p_port->mtu = ((L2CAP_MTU_SIZE + L2CAP_PKT_OVERHEAD) / packet_size * packet_size) - RFCOMM_DATA_OVERHEAD - L2CAP_PKT_OVERHEAD;
176 RFCOMM_TRACE_DEBUG1 ("port_select_mtu selected %d based on connection speed", p_port->mtu);
180 p_port->mtu = L2CAP_MTU_SIZE - RFCOMM_DATA_OVERHEAD;
181 RFCOMM_TRACE_DEBUG1 ("port_select_mtu selected %d based on l2cap PDU size", p_port->mtu);
187 RFCOMM_TRACE_DEBUG1 ("port_select_mtu application selected %d", p_port->mtu);
189 p_port->credit_rx_max = (PORT_RX_HIGH_WM / p_port->mtu);
190 if( p_port->credit_rx_max > PORT_RX_BUF_HIGH_WM )
191 p_port->credit_rx_max = PORT_RX_BUF_HIGH_WM;
192 p_port->credit_rx_low = (PORT_RX_LOW_WM / p_port->mtu);
193 if( p_port->credit_rx_low > PORT_RX_BUF_LOW_WM )
194 p_port->credit_rx_low = PORT_RX_BUF_LOW_WM;
195 p_port->rx_buf_critical = (PORT_RX_CRITICAL_WM / p_port->mtu);
196 if( p_port->rx_buf_critical > PORT_RX_BUF_CRITICAL_WM )
197 p_port->rx_buf_critical = PORT_RX_BUF_CRITICAL_WM;
199 p_port->credit_rx_max, p_port->credit_rx_low, p_port->rx_buf_critical);
212 void port_release_port (tPORT *p_port)
220 debug("port_release_port, p_port:%p", p_port);
221 while ((p_buf = (BT_HDR *)GKI_dequeue (&p_port->rx.queue)) != NULL)
224 p_port->rx.queue_size = 0;
226 while ((p_buf = (BT_HDR *)GKI_dequeue (&p_port->tx.queue)) != NULL)
229 p_port->tx.queue_size = 0;
233 p_port->state = PORT_STATE_CLOSED;
235 if (p_port->rfc.state == RFC_STATE_CLOSED)
238 if (p_port->rfc.p_mcb)
240 p_port->rfc.p_mcb->port_inx[p_port->dlci] = 0;
243 rfc_check_mcb_active (p_port->rfc.p_mcb);
245 rfc_port_timer_stop (p_port);
247 if( p_port->keep_port_handle )
249 RFCOMM_TRACE_DEBUG1 ("port_release_port:Initialize handle:%d", p_port->inx);
251 mask = p_port->ev_mask;
252 p_port_cb = p_port->p_callback;
253 user_port_pars = p_port->user_port_pars;
255 port_set_defaults(p_port);
257 p_port->ev_mask = mask;
258 p_port->p_callback = p_port_cb;
259 p_port->user_port_pars = user_port_pars;
260 p_port->mtu = p_port->keep_mtu;
262 p_port->state = PORT_STATE_OPENING;
263 p_port->rfc.p_mcb = NULL;
264 if(p_port->is_server)
265 p_port->dlci &= 0xfe;
267 p_port->local_ctrl.modem_signal = p_port->default_signal_state;
268 memcpy (p_port->bd_addr, BT_BD_ANY, BD_ADDR_LEN);
272 RFCOMM_TRACE_DEBUG1 ("port_release_port:Clean-up handle:%d", p_port->inx);
273 memset (p_port, 0, sizeof (tPORT));
346 tPORT *p_port;
350 p_port = &rfc_cb.port.port[i];
351 if (p_port->in_use && (p_port->rfc.p_mcb == NULL))
353 if (p_port->dlci == dlci)
355 return (p_port);
357 else if ((dlci & 0x01) && (p_port->dlci == (dlci - 1)))
359 p_port->dlci++;
360 return (p_port);
380 tPORT *p_port;
384 p_port = &rfc_cb.port.port[i];
385 if (p_port->in_use
386 && (p_port->dlci == dlci)
387 && !memcmp (p_port->bd_addr, bd_addr, BD_ADDR_LEN))
389 return (p_port);
407 UINT32 port_flow_control_user (tPORT *p_port)
414 BOOLEAN fc = p_port->tx.peer_fc
415 || !p_port->rfc.p_mcb
416 || !p_port->rfc.p_mcb->peer_ready
417 || (p_port->tx.queue_size > PORT_TX_HIGH_WM)
418 || (p_port->tx.queue.count > PORT_TX_BUF_HIGH_WM);
420 if (p_port->tx.user_fc == fc)
423 p_port->tx.user_fc = fc;
443 UINT32 port_get_signal_changes (tPORT *p_port, UINT8 old_signals, UINT8 signal)
475 return (p_port->ev_mask & events);
489 void port_flow_control_peer(tPORT *p_port, BOOLEAN enable, UINT16 count)
491 if (!p_port->rfc.p_mcb)
495 if (p_port->rfc.p_mcb->flow == PORT_FC_CREDIT)
501 if (count > p_port->credit_rx)
503 p_port->credit_rx = 0;
507 p_port->credit_rx -= count;
513 if ((p_port->credit_rx <= p_port->credit_rx_low)
514 && !p_port->rx.user_fc
515 && (p_port->credit_rx_max > p_port->credit_rx))
517 rfc_send_credit(p_port->rfc.p_mcb, p_port->dlci,
518 (UINT8) (p_port->credit_rx_max - p_port->credit_rx));
520 p_port->credit_rx = p_port->credit_rx_max;
522 p_port->rx.peer_fc = FALSE;
529 if (p_port->p_data_callback || p_port->p_data_co_callback)
531 p_port->rx.peer_fc = TRUE;
534 else if (p_port->rx.queue.count >= p_port->credit_rx_max)
536 p_port->rx.peer_fc = TRUE;
548 if (p_port->rx.peer_fc
549 && (p_port->rx.queue_size < PORT_RX_LOW_WM)
550 && (p_port->rx.queue.count < PORT_RX_BUF_LOW_WM))
552 p_port->rx.peer_fc = FALSE;
555 if (!p_port->rx.user_fc)
556 RFCOMM_FlowReq (p_port->rfc.p_mcb, p_port->dlci, TRUE);
563 if (p_port->p_data_callback || p_port->p_data_co_callback)
565 p_port->rx.peer_fc = TRUE;
566 RFCOMM_FlowReq (p_port->rfc.p_mcb, p_port->dlci, FALSE);
570 else if ( ((p_port->rx.queue_size > PORT_RX_HIGH_WM)
571 || (p_port->rx.queue.count > PORT_RX_BUF_HIGH_WM))
572 && !p_port->rx.peer_fc)
576 p_port->rx.peer_fc = TRUE;
577 RFCOMM_FlowReq (p_port->rfc.p_mcb, p_port->dlci, FALSE);