Lines Matching refs:bd
253 struct ethoc_bd *bd) in ethoc_read_bd() argument
256 bd->stat = ethoc_read(dev, offset + 0); in ethoc_read_bd()
257 bd->addr = ethoc_read(dev, offset + 4); in ethoc_read_bd()
261 const struct ethoc_bd *bd) in ethoc_write_bd() argument
264 ethoc_write(dev, offset + 0, bd->stat); in ethoc_write_bd()
265 ethoc_write(dev, offset + 4, bd->addr); in ethoc_write_bd()
303 struct ethoc_bd bd; in ethoc_init_ring() local
314 bd.addr = mem_start; in ethoc_init_ring()
315 bd.stat = TX_BD_IRQ | TX_BD_CRC; in ethoc_init_ring()
320 bd.stat |= TX_BD_WRAP; in ethoc_init_ring()
322 ethoc_write_bd(dev, i, &bd); in ethoc_init_ring()
323 bd.addr += ETHOC_BUFSIZ; in ethoc_init_ring()
329 bd.stat = RX_BD_EMPTY | RX_BD_IRQ; in ethoc_init_ring()
333 bd.stat |= RX_BD_WRAP; in ethoc_init_ring()
335 ethoc_write_bd(dev, dev->num_tx + i, &bd); in ethoc_init_ring()
336 bd.addr += ETHOC_BUFSIZ; in ethoc_init_ring()
373 struct ethoc_bd *bd) in ethoc_update_rx_stats() argument
378 if (bd->stat & RX_BD_TL) { in ethoc_update_rx_stats()
384 if (bd->stat & RX_BD_SF) { in ethoc_update_rx_stats()
390 if (bd->stat & RX_BD_DN) { in ethoc_update_rx_stats()
395 if (bd->stat & RX_BD_CRC) { in ethoc_update_rx_stats()
401 if (bd->stat & RX_BD_OR) { in ethoc_update_rx_stats()
407 if (bd->stat & RX_BD_MISS) in ethoc_update_rx_stats()
410 if (bd->stat & RX_BD_LC) { in ethoc_update_rx_stats()
426 struct ethoc_bd bd; in ethoc_rx() local
429 ethoc_read_bd(priv, entry, &bd); in ethoc_rx()
430 if (bd.stat & RX_BD_EMPTY) { in ethoc_rx()
439 ethoc_read_bd(priv, entry, &bd); in ethoc_rx()
440 if (bd.stat & RX_BD_EMPTY) in ethoc_rx()
444 if (ethoc_update_rx_stats(priv, &bd) == 0) { in ethoc_rx()
445 int size = bd.stat >> 16; in ethoc_rx()
469 bd.stat &= ~RX_BD_STATS; in ethoc_rx()
470 bd.stat |= RX_BD_EMPTY; in ethoc_rx()
471 ethoc_write_bd(priv, entry, &bd); in ethoc_rx()
479 static void ethoc_update_tx_stats(struct ethoc *dev, struct ethoc_bd *bd) in ethoc_update_tx_stats() argument
483 if (bd->stat & TX_BD_LC) { in ethoc_update_tx_stats()
488 if (bd->stat & TX_BD_RL) { in ethoc_update_tx_stats()
493 if (bd->stat & TX_BD_UR) { in ethoc_update_tx_stats()
498 if (bd->stat & TX_BD_CS) { in ethoc_update_tx_stats()
503 if (bd->stat & TX_BD_STATS) in ethoc_update_tx_stats()
506 netdev->stats.collisions += (bd->stat >> 4) & 0xf; in ethoc_update_tx_stats()
507 netdev->stats.tx_bytes += bd->stat >> 16; in ethoc_update_tx_stats()
515 struct ethoc_bd bd; in ethoc_tx() local
522 ethoc_read_bd(priv, entry, &bd); in ethoc_tx()
524 if (bd.stat & TX_BD_READY || (priv->dty_tx == priv->cur_tx)) { in ethoc_tx()
533 ethoc_read_bd(priv, entry, &bd); in ethoc_tx()
534 if (bd.stat & TX_BD_READY || in ethoc_tx()
539 ethoc_update_tx_stats(priv, &bd); in ethoc_tx()
857 struct ethoc_bd bd; in ethoc_start_xmit() local
875 ethoc_read_bd(priv, entry, &bd); in ethoc_start_xmit()
877 bd.stat |= TX_BD_PAD; in ethoc_start_xmit()
879 bd.stat &= ~TX_BD_PAD; in ethoc_start_xmit()
884 bd.stat &= ~(TX_BD_STATS | TX_BD_LEN_MASK); in ethoc_start_xmit()
885 bd.stat |= TX_BD_LEN(skb->len); in ethoc_start_xmit()
886 ethoc_write_bd(priv, entry, &bd); in ethoc_start_xmit()
888 bd.stat |= TX_BD_READY; in ethoc_start_xmit()
889 ethoc_write_bd(priv, entry, &bd); in ethoc_start_xmit()