Lines Matching refs:rnet
95 struct rionet_private *rnet = netdev_priv(ndev); in rionet_rx_clean() local
98 i = rnet->rx_slot; in rionet_rx_clean()
101 if (!rnet->rx_skb[i]) in rionet_rx_clean()
104 if (!(data = rio_get_inb_message(rnet->mport, RIONET_MAILBOX))) in rionet_rx_clean()
107 rnet->rx_skb[i]->data = data; in rionet_rx_clean()
108 skb_put(rnet->rx_skb[i], RIO_MAX_MSG_SIZE); in rionet_rx_clean()
109 rnet->rx_skb[i]->protocol = in rionet_rx_clean()
110 eth_type_trans(rnet->rx_skb[i], ndev); in rionet_rx_clean()
111 error = netif_rx(rnet->rx_skb[i]); in rionet_rx_clean()
120 } while ((i = (i + 1) % RIONET_RX_RING_SIZE) != rnet->rx_slot); in rionet_rx_clean()
128 struct rionet_private *rnet = netdev_priv(ndev); in rionet_rx_fill() local
130 i = rnet->rx_slot; in rionet_rx_fill()
132 rnet->rx_skb[i] = dev_alloc_skb(RIO_MAX_MSG_SIZE); in rionet_rx_fill()
134 if (!rnet->rx_skb[i]) in rionet_rx_fill()
137 rio_add_inb_buffer(rnet->mport, RIONET_MAILBOX, in rionet_rx_fill()
138 rnet->rx_skb[i]->data); in rionet_rx_fill()
141 rnet->rx_slot = i; in rionet_rx_fill()
147 struct rionet_private *rnet = netdev_priv(ndev); in rionet_queue_tx_msg() local
149 rio_add_outb_message(rnet->mport, rdev, 0, skb->data, skb->len); in rionet_queue_tx_msg()
150 rnet->tx_skb[rnet->tx_slot] = skb; in rionet_queue_tx_msg()
155 if (++rnet->tx_cnt == RIONET_TX_RING_SIZE) in rionet_queue_tx_msg()
158 ++rnet->tx_slot; in rionet_queue_tx_msg()
159 rnet->tx_slot &= (RIONET_TX_RING_SIZE - 1); in rionet_queue_tx_msg()
161 if (netif_msg_tx_queued(rnet)) in rionet_queue_tx_msg()
171 struct rionet_private *rnet = netdev_priv(ndev); in rionet_start_xmit() local
178 if (!spin_trylock(&rnet->tx_lock)) { in rionet_start_xmit()
184 add_num = nets[rnet->mport->id].nact; in rionet_start_xmit()
186 if ((rnet->tx_cnt + add_num) > RIONET_TX_RING_SIZE) { in rionet_start_xmit()
188 spin_unlock_irqrestore(&rnet->tx_lock, flags); in rionet_start_xmit()
197 for (i = 0; i < RIO_MAX_ROUTE_ENTRIES(rnet->mport->sys_size); in rionet_start_xmit()
199 if (nets[rnet->mport->id].active[i]) { in rionet_start_xmit()
201 nets[rnet->mport->id].active[i]); in rionet_start_xmit()
208 if (nets[rnet->mport->id].active[destid]) in rionet_start_xmit()
210 nets[rnet->mport->id].active[destid]); in rionet_start_xmit()
224 spin_unlock_irqrestore(&rnet->tx_lock, flags); in rionet_start_xmit()
233 struct rionet_private *rnet = netdev_priv(ndev); in rionet_dbell_event() local
236 if (netif_msg_intr(rnet)) in rionet_dbell_event()
240 if (!nets[rnet->mport->id].active[sid]) { in rionet_dbell_event()
242 &nets[rnet->mport->id].peers, node) { in rionet_dbell_event()
244 nets[rnet->mport->id].active[sid] = in rionet_dbell_event()
246 nets[rnet->mport->id].nact++; in rionet_dbell_event()
253 nets[rnet->mport->id].active[sid] = NULL; in rionet_dbell_event()
254 nets[rnet->mport->id].nact--; in rionet_dbell_event()
256 if (netif_msg_intr(rnet)) in rionet_dbell_event()
266 struct rionet_private *rnet = netdev_priv(ndev); in rionet_inb_msg_event() local
268 if (netif_msg_intr(rnet)) in rionet_inb_msg_event()
272 spin_lock(&rnet->lock); in rionet_inb_msg_event()
273 if ((n = rionet_rx_clean(ndev)) != rnet->rx_slot) in rionet_inb_msg_event()
275 spin_unlock(&rnet->lock); in rionet_inb_msg_event()
281 struct rionet_private *rnet = netdev_priv(ndev); in rionet_outb_msg_event() local
283 spin_lock(&rnet->tx_lock); in rionet_outb_msg_event()
285 if (netif_msg_intr(rnet)) in rionet_outb_msg_event()
290 while (rnet->tx_cnt && (rnet->ack_slot != slot)) { in rionet_outb_msg_event()
292 dev_kfree_skb_irq(rnet->tx_skb[rnet->ack_slot]); in rionet_outb_msg_event()
293 rnet->tx_skb[rnet->ack_slot] = NULL; in rionet_outb_msg_event()
294 ++rnet->ack_slot; in rionet_outb_msg_event()
295 rnet->ack_slot &= (RIONET_TX_RING_SIZE - 1); in rionet_outb_msg_event()
296 rnet->tx_cnt--; in rionet_outb_msg_event()
299 if (rnet->tx_cnt < RIONET_TX_RING_SIZE) in rionet_outb_msg_event()
302 spin_unlock(&rnet->tx_lock); in rionet_outb_msg_event()
309 struct rionet_private *rnet = netdev_priv(ndev); in rionet_open() local
311 if (netif_msg_ifup(rnet)) in rionet_open()
314 if ((rc = rio_request_inb_dbell(rnet->mport, in rionet_open()
321 if ((rc = rio_request_inb_mbox(rnet->mport, in rionet_open()
328 if ((rc = rio_request_outb_mbox(rnet->mport, in rionet_open()
337 rnet->rx_skb[i] = NULL; in rionet_open()
338 rnet->rx_slot = 0; in rionet_open()
341 rnet->tx_slot = 0; in rionet_open()
342 rnet->tx_cnt = 0; in rionet_open()
343 rnet->ack_slot = 0; in rionet_open()
349 &nets[rnet->mport->id].peers, node) { in rionet_open()
369 struct rionet_private *rnet = netdev_priv(ndev); in rionet_close() local
373 if (netif_msg_ifup(rnet)) in rionet_close()
380 kfree_skb(rnet->rx_skb[i]); in rionet_close()
383 &nets[rnet->mport->id].peers, node) { in rionet_close()
384 if (nets[rnet->mport->id].active[peer->rdev->destid]) { in rionet_close()
386 nets[rnet->mport->id].active[peer->rdev->destid] = NULL; in rionet_close()
391 rio_release_inb_dbell(rnet->mport, RIONET_DOORBELL_JOIN, in rionet_close()
393 rio_release_inb_mbox(rnet->mport, RIONET_MAILBOX); in rionet_close()
394 rio_release_outb_mbox(rnet->mport, RIONET_MAILBOX); in rionet_close()
424 struct rionet_private *rnet = netdev_priv(ndev); in rionet_get_drvinfo() local
429 strlcpy(info->bus_info, rnet->mport->name, sizeof(info->bus_info)); in rionet_get_drvinfo()
434 struct rionet_private *rnet = netdev_priv(ndev); in rionet_get_msglevel() local
436 return rnet->msg_enable; in rionet_get_msglevel()
441 struct rionet_private *rnet = netdev_priv(ndev); in rionet_set_msglevel() local
443 rnet->msg_enable = value; in rionet_set_msglevel()
465 struct rionet_private *rnet; in rionet_setup_netdev() local
479 rnet = netdev_priv(ndev); in rionet_setup_netdev()
480 rnet->mport = mport; in rionet_setup_netdev()
497 spin_lock_init(&rnet->lock); in rionet_setup_netdev()
498 spin_lock_init(&rnet->tx_lock); in rionet_setup_netdev()
500 rnet->msg_enable = RIONET_DEFAULT_MSGLEVEL; in rionet_setup_netdev()
612 struct rionet_private *rnet; in rionet_exit() local
620 rnet = netdev_priv(ndev); in rionet_exit()
631 RIO_MAX_ROUTE_ENTRIES(rnet->mport->sys_size))); in rionet_exit()