Lines Matching refs:bd

248 		struct ethoc_bd *bd)  in ethoc_read_bd()  argument
251 bd->stat = ethoc_read(dev, offset + 0); in ethoc_read_bd()
252 bd->addr = ethoc_read(dev, offset + 4); in ethoc_read_bd()
256 const struct ethoc_bd *bd) in ethoc_write_bd() argument
259 ethoc_write(dev, offset + 0, bd->stat); in ethoc_write_bd()
260 ethoc_write(dev, offset + 4, bd->addr); in ethoc_write_bd()
298 struct ethoc_bd bd; in ethoc_init_ring() local
309 bd.addr = mem_start; in ethoc_init_ring()
310 bd.stat = TX_BD_IRQ | TX_BD_CRC; in ethoc_init_ring()
315 bd.stat |= TX_BD_WRAP; in ethoc_init_ring()
317 ethoc_write_bd(dev, i, &bd); in ethoc_init_ring()
318 bd.addr += ETHOC_BUFSIZ; in ethoc_init_ring()
324 bd.stat = RX_BD_EMPTY | RX_BD_IRQ; in ethoc_init_ring()
328 bd.stat |= RX_BD_WRAP; in ethoc_init_ring()
330 ethoc_write_bd(dev, dev->num_tx + i, &bd); in ethoc_init_ring()
331 bd.addr += ETHOC_BUFSIZ; in ethoc_init_ring()
368 struct ethoc_bd *bd) in ethoc_update_rx_stats() argument
373 if (bd->stat & RX_BD_TL) { in ethoc_update_rx_stats()
379 if (bd->stat & RX_BD_SF) { in ethoc_update_rx_stats()
385 if (bd->stat & RX_BD_DN) { in ethoc_update_rx_stats()
390 if (bd->stat & RX_BD_CRC) { in ethoc_update_rx_stats()
396 if (bd->stat & RX_BD_OR) { in ethoc_update_rx_stats()
402 if (bd->stat & RX_BD_MISS) in ethoc_update_rx_stats()
405 if (bd->stat & RX_BD_LC) { in ethoc_update_rx_stats()
421 struct ethoc_bd bd; in ethoc_rx() local
424 ethoc_read_bd(priv, entry, &bd); in ethoc_rx()
425 if (bd.stat & RX_BD_EMPTY) { in ethoc_rx()
434 ethoc_read_bd(priv, entry, &bd); in ethoc_rx()
435 if (bd.stat & RX_BD_EMPTY) in ethoc_rx()
439 if (ethoc_update_rx_stats(priv, &bd) == 0) { in ethoc_rx()
440 int size = bd.stat >> 16; in ethoc_rx()
464 bd.stat &= ~RX_BD_STATS; in ethoc_rx()
465 bd.stat |= RX_BD_EMPTY; in ethoc_rx()
466 ethoc_write_bd(priv, entry, &bd); in ethoc_rx()
474 static void ethoc_update_tx_stats(struct ethoc *dev, struct ethoc_bd *bd) in ethoc_update_tx_stats() argument
478 if (bd->stat & TX_BD_LC) { in ethoc_update_tx_stats()
483 if (bd->stat & TX_BD_RL) { in ethoc_update_tx_stats()
488 if (bd->stat & TX_BD_UR) { in ethoc_update_tx_stats()
493 if (bd->stat & TX_BD_CS) { in ethoc_update_tx_stats()
498 if (bd->stat & TX_BD_STATS) in ethoc_update_tx_stats()
501 netdev->stats.collisions += (bd->stat >> 4) & 0xf; in ethoc_update_tx_stats()
502 netdev->stats.tx_bytes += bd->stat >> 16; in ethoc_update_tx_stats()
510 struct ethoc_bd bd; in ethoc_tx() local
517 ethoc_read_bd(priv, entry, &bd); in ethoc_tx()
519 if (bd.stat & TX_BD_READY || (priv->dty_tx == priv->cur_tx)) { in ethoc_tx()
528 ethoc_read_bd(priv, entry, &bd); in ethoc_tx()
529 if (bd.stat & TX_BD_READY || in ethoc_tx()
534 ethoc_update_tx_stats(priv, &bd); in ethoc_tx()
852 struct ethoc_bd bd; in ethoc_start_xmit() local
865 ethoc_read_bd(priv, entry, &bd); in ethoc_start_xmit()
867 bd.stat |= TX_BD_PAD; in ethoc_start_xmit()
869 bd.stat &= ~TX_BD_PAD; in ethoc_start_xmit()
874 bd.stat &= ~(TX_BD_STATS | TX_BD_LEN_MASK); in ethoc_start_xmit()
875 bd.stat |= TX_BD_LEN(skb->len); in ethoc_start_xmit()
876 ethoc_write_bd(priv, entry, &bd); in ethoc_start_xmit()
878 bd.stat |= TX_BD_READY; in ethoc_start_xmit()
879 ethoc_write_bd(priv, entry, &bd); in ethoc_start_xmit()