Lines Matching refs:bd
255 struct ethoc_bd *bd) in ethoc_read_bd() argument
258 bd->stat = ethoc_read(dev, offset + 0); in ethoc_read_bd()
259 bd->addr = ethoc_read(dev, offset + 4); in ethoc_read_bd()
263 const struct ethoc_bd *bd) in ethoc_write_bd() argument
266 ethoc_write(dev, offset + 0, bd->stat); in ethoc_write_bd()
267 ethoc_write(dev, offset + 4, bd->addr); in ethoc_write_bd()
305 struct ethoc_bd bd; in ethoc_init_ring() local
316 bd.addr = mem_start; in ethoc_init_ring()
317 bd.stat = TX_BD_IRQ | TX_BD_CRC; in ethoc_init_ring()
322 bd.stat |= TX_BD_WRAP; in ethoc_init_ring()
324 ethoc_write_bd(dev, i, &bd); in ethoc_init_ring()
325 bd.addr += ETHOC_BUFSIZ; in ethoc_init_ring()
331 bd.stat = RX_BD_EMPTY | RX_BD_IRQ; in ethoc_init_ring()
335 bd.stat |= RX_BD_WRAP; in ethoc_init_ring()
337 ethoc_write_bd(dev, dev->num_tx + i, &bd); in ethoc_init_ring()
338 bd.addr += ETHOC_BUFSIZ; in ethoc_init_ring()
375 struct ethoc_bd *bd) in ethoc_update_rx_stats() argument
380 if (bd->stat & RX_BD_TL) { in ethoc_update_rx_stats()
386 if (bd->stat & RX_BD_SF) { in ethoc_update_rx_stats()
392 if (bd->stat & RX_BD_DN) { in ethoc_update_rx_stats()
397 if (bd->stat & RX_BD_CRC) { in ethoc_update_rx_stats()
403 if (bd->stat & RX_BD_OR) { in ethoc_update_rx_stats()
409 if (bd->stat & RX_BD_MISS) in ethoc_update_rx_stats()
412 if (bd->stat & RX_BD_LC) { in ethoc_update_rx_stats()
428 struct ethoc_bd bd; in ethoc_rx() local
431 ethoc_read_bd(priv, entry, &bd); in ethoc_rx()
432 if (bd.stat & RX_BD_EMPTY) { in ethoc_rx()
441 ethoc_read_bd(priv, entry, &bd); in ethoc_rx()
442 if (bd.stat & RX_BD_EMPTY) in ethoc_rx()
446 if (ethoc_update_rx_stats(priv, &bd) == 0) { in ethoc_rx()
447 int size = bd.stat >> 16; in ethoc_rx()
471 bd.stat &= ~RX_BD_STATS; in ethoc_rx()
472 bd.stat |= RX_BD_EMPTY; in ethoc_rx()
473 ethoc_write_bd(priv, entry, &bd); in ethoc_rx()
481 static void ethoc_update_tx_stats(struct ethoc *dev, struct ethoc_bd *bd) in ethoc_update_tx_stats() argument
485 if (bd->stat & TX_BD_LC) { in ethoc_update_tx_stats()
490 if (bd->stat & TX_BD_RL) { in ethoc_update_tx_stats()
495 if (bd->stat & TX_BD_UR) { in ethoc_update_tx_stats()
500 if (bd->stat & TX_BD_CS) { in ethoc_update_tx_stats()
505 if (bd->stat & TX_BD_STATS) in ethoc_update_tx_stats()
508 netdev->stats.collisions += (bd->stat >> 4) & 0xf; in ethoc_update_tx_stats()
509 netdev->stats.tx_bytes += bd->stat >> 16; in ethoc_update_tx_stats()
517 struct ethoc_bd bd; in ethoc_tx() local
524 ethoc_read_bd(priv, entry, &bd); in ethoc_tx()
526 if (bd.stat & TX_BD_READY || (priv->dty_tx == priv->cur_tx)) { in ethoc_tx()
535 ethoc_read_bd(priv, entry, &bd); in ethoc_tx()
536 if (bd.stat & TX_BD_READY || in ethoc_tx()
541 ethoc_update_tx_stats(priv, &bd); in ethoc_tx()
859 struct ethoc_bd bd; in ethoc_start_xmit() local
872 ethoc_read_bd(priv, entry, &bd); in ethoc_start_xmit()
874 bd.stat |= TX_BD_PAD; in ethoc_start_xmit()
876 bd.stat &= ~TX_BD_PAD; in ethoc_start_xmit()
881 bd.stat &= ~(TX_BD_STATS | TX_BD_LEN_MASK); in ethoc_start_xmit()
882 bd.stat |= TX_BD_LEN(skb->len); in ethoc_start_xmit()
883 ethoc_write_bd(priv, entry, &bd); in ethoc_start_xmit()
885 bd.stat |= TX_BD_READY; in ethoc_start_xmit()
886 ethoc_write_bd(priv, entry, &bd); in ethoc_start_xmit()