Lines Matching refs:rnet
96 struct rionet_private *rnet = netdev_priv(ndev); in rionet_rx_clean() local
99 i = rnet->rx_slot; in rionet_rx_clean()
102 if (!rnet->rx_skb[i]) in rionet_rx_clean()
105 if (!(data = rio_get_inb_message(rnet->mport, RIONET_MAILBOX))) in rionet_rx_clean()
108 rnet->rx_skb[i]->data = data; in rionet_rx_clean()
109 skb_put(rnet->rx_skb[i], RIO_MAX_MSG_SIZE); in rionet_rx_clean()
110 rnet->rx_skb[i]->protocol = in rionet_rx_clean()
111 eth_type_trans(rnet->rx_skb[i], ndev); in rionet_rx_clean()
112 error = netif_rx(rnet->rx_skb[i]); in rionet_rx_clean()
121 } while ((i = (i + 1) % RIONET_RX_RING_SIZE) != rnet->rx_slot); in rionet_rx_clean()
129 struct rionet_private *rnet = netdev_priv(ndev); in rionet_rx_fill() local
131 i = rnet->rx_slot; in rionet_rx_fill()
133 rnet->rx_skb[i] = dev_alloc_skb(RIO_MAX_MSG_SIZE); in rionet_rx_fill()
135 if (!rnet->rx_skb[i]) in rionet_rx_fill()
138 rio_add_inb_buffer(rnet->mport, RIONET_MAILBOX, in rionet_rx_fill()
139 rnet->rx_skb[i]->data); in rionet_rx_fill()
142 rnet->rx_slot = i; in rionet_rx_fill()
148 struct rionet_private *rnet = netdev_priv(ndev); in rionet_queue_tx_msg() local
150 rio_add_outb_message(rnet->mport, rdev, 0, skb->data, skb->len); in rionet_queue_tx_msg()
151 rnet->tx_skb[rnet->tx_slot] = skb; in rionet_queue_tx_msg()
156 if (++rnet->tx_cnt == RIONET_TX_RING_SIZE) in rionet_queue_tx_msg()
159 ++rnet->tx_slot; in rionet_queue_tx_msg()
160 rnet->tx_slot &= (RIONET_TX_RING_SIZE - 1); in rionet_queue_tx_msg()
162 if (netif_msg_tx_queued(rnet)) in rionet_queue_tx_msg()
172 struct rionet_private *rnet = netdev_priv(ndev); in rionet_start_xmit() local
178 spin_lock_irqsave(&rnet->tx_lock, flags); in rionet_start_xmit()
181 add_num = nets[rnet->mport->id].nact; in rionet_start_xmit()
183 if ((rnet->tx_cnt + add_num) > RIONET_TX_RING_SIZE) { in rionet_start_xmit()
185 spin_unlock_irqrestore(&rnet->tx_lock, flags); in rionet_start_xmit()
194 for (i = 0; i < RIO_MAX_ROUTE_ENTRIES(rnet->mport->sys_size); in rionet_start_xmit()
196 if (nets[rnet->mport->id].active[i]) { in rionet_start_xmit()
198 nets[rnet->mport->id].active[i]); in rionet_start_xmit()
205 if (nets[rnet->mport->id].active[destid]) in rionet_start_xmit()
207 nets[rnet->mport->id].active[destid]); in rionet_start_xmit()
221 spin_unlock_irqrestore(&rnet->tx_lock, flags); in rionet_start_xmit()
230 struct rionet_private *rnet = netdev_priv(ndev); in rionet_dbell_event() local
232 unsigned char netid = rnet->mport->id; in rionet_dbell_event()
234 if (netif_msg_intr(rnet)) in rionet_dbell_event()
259 if (netif_msg_intr(rnet)) in rionet_dbell_event()
269 struct rionet_private *rnet = netdev_priv(ndev); in rionet_inb_msg_event() local
271 if (netif_msg_intr(rnet)) in rionet_inb_msg_event()
275 spin_lock(&rnet->lock); in rionet_inb_msg_event()
276 if ((n = rionet_rx_clean(ndev)) != rnet->rx_slot) in rionet_inb_msg_event()
278 spin_unlock(&rnet->lock); in rionet_inb_msg_event()
284 struct rionet_private *rnet = netdev_priv(ndev); in rionet_outb_msg_event() local
286 spin_lock(&rnet->tx_lock); in rionet_outb_msg_event()
288 if (netif_msg_intr(rnet)) in rionet_outb_msg_event()
293 while (rnet->tx_cnt && (rnet->ack_slot != slot)) { in rionet_outb_msg_event()
295 dev_kfree_skb_irq(rnet->tx_skb[rnet->ack_slot]); in rionet_outb_msg_event()
296 rnet->tx_skb[rnet->ack_slot] = NULL; in rionet_outb_msg_event()
297 ++rnet->ack_slot; in rionet_outb_msg_event()
298 rnet->ack_slot &= (RIONET_TX_RING_SIZE - 1); in rionet_outb_msg_event()
299 rnet->tx_cnt--; in rionet_outb_msg_event()
302 if (rnet->tx_cnt < RIONET_TX_RING_SIZE) in rionet_outb_msg_event()
305 spin_unlock(&rnet->tx_lock); in rionet_outb_msg_event()
312 struct rionet_private *rnet = netdev_priv(ndev); in rionet_open() local
313 unsigned char netid = rnet->mport->id; in rionet_open()
316 if (netif_msg_ifup(rnet)) in rionet_open()
319 if ((rc = rio_request_inb_dbell(rnet->mport, in rionet_open()
326 if ((rc = rio_request_inb_mbox(rnet->mport, in rionet_open()
333 if ((rc = rio_request_outb_mbox(rnet->mport, in rionet_open()
342 rnet->rx_skb[i] = NULL; in rionet_open()
343 rnet->rx_slot = 0; in rionet_open()
346 rnet->tx_slot = 0; in rionet_open()
347 rnet->tx_cnt = 0; in rionet_open()
348 rnet->ack_slot = 0; in rionet_open()
359 rnet->open = true; in rionet_open()
367 struct rionet_private *rnet = netdev_priv(ndev); in rionet_close() local
369 unsigned char netid = rnet->mport->id; in rionet_close()
373 if (netif_msg_ifup(rnet)) in rionet_close()
378 rnet->open = false; in rionet_close()
381 kfree_skb(rnet->rx_skb[i]); in rionet_close()
394 rio_release_inb_dbell(rnet->mport, RIONET_DOORBELL_JOIN, in rionet_close()
396 rio_release_inb_mbox(rnet->mport, RIONET_MAILBOX); in rionet_close()
397 rio_release_outb_mbox(rnet->mport, RIONET_MAILBOX); in rionet_close()
443 struct rionet_private *rnet = netdev_priv(ndev); in rionet_get_drvinfo() local
448 strlcpy(info->bus_info, rnet->mport->name, sizeof(info->bus_info)); in rionet_get_drvinfo()
453 struct rionet_private *rnet = netdev_priv(ndev); in rionet_get_msglevel() local
455 return rnet->msg_enable; in rionet_get_msglevel()
460 struct rionet_private *rnet = netdev_priv(ndev); in rionet_set_msglevel() local
462 rnet->msg_enable = value; in rionet_set_msglevel()
483 struct rionet_private *rnet; in rionet_setup_netdev() local
497 rnet = netdev_priv(ndev); in rionet_setup_netdev()
498 rnet->mport = mport; in rionet_setup_netdev()
499 rnet->open = false; in rionet_setup_netdev()
519 spin_lock_init(&rnet->lock); in rionet_setup_netdev()
520 spin_lock_init(&rnet->tx_lock); in rionet_setup_netdev()
522 rnet->msg_enable = RIONET_DEFAULT_MSGLEVEL; in rionet_setup_netdev()
598 struct rionet_private *rnet; in rionet_add_dev() local
601 rnet = netdev_priv(nets[netid].ndev); in rionet_add_dev()
626 if (rnet->open) in rionet_add_dev()