Пример #1
0
int8 mrf_if_tx_queue(I_F i_f, uint8 bnum ){
  const MRF_IF *mif = mrf_if_ptr(i_f);
  MRF_BUFF_STATE *mbst = _mrf_buff_state(bnum);
  BuffQueue *qp = mif->txqueue;
  //mrf_debug(5,"mrf_if_tx_queue entry\n");
  if ( bnum >= _MRF_BUFFS)
    return -2;
  //mrf_debug(5,"mrf_if_tx_queue 1\n");
  if (qp->push(bnum) == 0)    {
    //_sys_ifs[i_f].status->state = MRF_ST_TXQ;
      mbst->owner = i_f;
      mbst->tx_timer = mif->type->tx_del;  // FIXME shouldn't need any of this
      mbst->state = TXQUEUE;
      mbst->retry_count = 0;
      mrf_tick_enable();
      mrf_debug(5,"mrf_if_tx_queue OK i_f %d buff %d retry_count %d qip %d qop %d items %d\n",
                i_f,bnum,mbst->retry_count,qp->get_qip(),qp->get_qop(),qp->items());
      return 0;
  }
  else {
  // fall through if no space in queue
    mrf_if_ptr(i_f)->status->stats.tx_overruns++;
  return -1;
  }
}
Пример #2
0
const char * mrf_buff_state_name(uint8 bnum){
  MRF_BUFF_STATE *bst = _mrf_buff_state(bnum);
  if (bst == NULL)
    return illegal_state_warning;
  else
    return bstnames[bst->state];
}
Пример #3
0
void _mrf_buff_print(){
  int i;
  mrf_debug("_mrf_buff_print warning is %s\n",illegal_state_warning);
  mrf_debug("free?  %s\n",mrf_buff_state_name(0));
  for ( i = 0 ; i < _MRF_BUFFS ; i++){
    MRF_BUFF_STATE *bst = _mrf_buff_state(i);
    mrf_debug("buff %d state %d (%s) owner %d\n",i,bst->state,mrf_buff_state_name(i),_mrf_buffst[i].owner);    
  }
}