rbd
typedef void (handle_rx_error_routine)(int scc_num, int channel_num, QUICC_BD *rbd);
entry->rbd_block->rbd[ i ].buffer_haddr = buffer->data.dma_addr;
entry->rbd_block->rbd[ i ].handle = FORE200E_BUF2HDL(buffer);
struct rbd rbd[ RBD_BLK_SIZE ]; /* receive buffer descriptor */
struct i596_rbd *rbd;
struct i596_rbd *rbd;
rfd, rfd->stat, rfd->cmd, rfd->b_next, rfd->rbd,
rbd = lp->rbd_head;
printk(KERN_ERR "rbd_head = %p\n", rbd);
rbd, rbd->count, rbd->b_next, rbd->b_data, rbd->size);
rbd = rbd->v_next;
} while (rbd != lp->rbd_head);
struct i596_rbd *rbd;
for (i = 0, rbd = lp->rbds; i < rx_ring_size; i++, rbd++) {
if (rbd->skb == NULL)
dev_kfree_skb(rbd->skb);
rbd->skb = NULL;
struct i596_rbd *rbd;
for (i = 0, rbd = lp->rbds; i < rx_ring_size; i++, rbd++) {
rbd->v_next = rbd+1;
rbd->b_next = WSWAPrbd(virt_to_bus(rbd+1));
rbd->b_addr = WSWAPrbd(virt_to_bus(rbd));
rbd->skb = skb;
rbd->v_data = skb->data;
rbd->b_data = WSWAPchar(virt_to_bus(skb->data));
rbd->size = PKT_BUF_SZ;
rbd = lp->rbds + rx_ring_size - 1;
rbd->v_next = lp->rbds;
rbd->b_next = WSWAPrbd(virt_to_bus(lp->rbds));
rfd->rbd = I596_NULL;
rfd->rbd = lp->rbd_head;
lp->rfds[i].rbd = I596_NULL;
lp->rfds[0].rbd = WSWAPrbd(virt_to_bus(lp->rbds));
struct i596_rbd *rbd;
if (rfd->rbd == I596_NULL)
rbd = I596_NULL;
else if (rfd->rbd == lp->rbd_head->b_addr)
rbd = lp->rbd_head;
rbd = I596_NULL;
rfd, rfd->rbd, rfd->stat));
if (rbd != I596_NULL && ((rfd->stat) & STAT_OK)) {
int pkt_len = rbd->count & 0x3fff;
struct sk_buff *skb = rbd->skb;
DEB(DEB_RXADDR,print_eth(rbd->v_data, "received"));
rbd->skb = newskb;
rbd->v_data = newskb->data;
rbd->b_data = WSWAPchar(virt_to_bus(newskb->data));
skb_put_data(skb, rbd->v_data,
cache_clear(virt_to_phys(rbd->skb->data),
if (rbd != I596_NULL && (rbd->count & 0x4000)) {
rbd->count = 0;
lp->rbd_head = rbd->v_next;
rfd->rbd = I596_NULL;
rbd_t rbd;
ether1_readbuffer (dev, &rbd, rbdaddr, RBD_SIZE);
if ((rbd.rbd_status & (RBD_EOF | RBD_ACNTVALID)) == (RBD_EOF | RBD_ACNTVALID)) {
int length = rbd.rbd_status & RBD_ACNT;
ether1_readbuffer (dev, skb_put (skb, length), rbd.rbd_bufl, length);
(rbd.rbd_status & RBD_EOF) ? "oversized packet" : "acnt not valid");
u32 rbd;
struct i596_rbd *rbd;
SWAP32(rfd->b_next), SWAP32(rfd->rbd),
rbd = lp->rbd_head;
printk(KERN_DEBUG "rbd_head = %p\n", rbd);
rbd, SWAP16(rbd->count), SWAP32(rbd->b_next),
SWAP32(rbd->b_data), SWAP16(rbd->size));
rbd = rbd->v_next;
} while (rbd != lp->rbd_head);
struct i596_rbd *rbd;
for (i = 0, rbd = dma->rbds; i < rx_ring_size; i++, rbd++) {
rbd->v_next = rbd+1;
rbd->b_next = SWAP32(virt_to_dma(lp, rbd+1));
rbd->b_addr = SWAP32(virt_to_dma(lp, rbd));
rbd->skb = skb;
rbd->v_data = skb->data;
rbd->b_data = SWAP32(dma_addr);
rbd->size = SWAP16(PKT_BUF_SZ);
rbd = dma->rbds + rx_ring_size - 1;
rbd->v_next = dma->rbds;
rbd->b_next = SWAP32(virt_to_dma(lp, dma->rbds));
rfd->rbd = I596_NULL;
rfd->rbd = SWAP32(virt_to_dma(lp, lp->rbd_head));
struct i596_rbd *rbd;
for (i = 0, rbd = lp->dma->rbds; i < rx_ring_size; i++, rbd++) {
if (rbd->skb == NULL)
(dma_addr_t)SWAP32(rbd->b_data),
dev_kfree_skb(rbd->skb);
dma->rfds[i].rbd = I596_NULL;
dma->rfds[0].rbd = SWAP32(virt_to_dma(lp, dma->rbds));
struct i596_rbd *rbd;
if (rfd->rbd == I596_NULL)
rbd = NULL;
else if (rfd->rbd == lp->rbd_head->b_addr) {
rbd = lp->rbd_head;
dma_sync_cpu(dev, rbd, sizeof(struct i596_rbd));
rbd = NULL;
rfd, rfd->rbd, rfd->stat));
if (rbd != NULL && (rfd->stat & SWAP16(STAT_OK))) {
int pkt_len = SWAP16(rbd->count) & 0x3fff;
struct sk_buff *skb = rbd->skb;
DEB(DEB_RXADDR, print_eth(rbd->v_data, "received"));
(dma_addr_t)SWAP32(rbd->b_data),
rbd->skb = newskb;
rbd->v_data = newskb->data;
rbd->b_data = SWAP32(dma_addr);
dma_sync_dev(dev, rbd, sizeof(struct i596_rbd));
(dma_addr_t)SWAP32(rbd->b_data),
skb_put_data(skb, rbd->v_data,
(dma_addr_t)SWAP32(rbd->b_data),
if (rbd != NULL && (rbd->count & SWAP16(0x4000))) {
rbd->count = 0;
lp->rbd_head = rbd->v_next;
dma_sync_dev(dev, rbd, sizeof(struct i596_rbd));
rfd->rbd = I596_NULL;
volatile struct rbd_struct *rbd;
rbd = (struct rbd_struct *) ptr;
ptr = (void *) (rbd + p->num_recv_buffs);
memset((char *) rbd,0,sizeof(struct rbd_struct)*(p->num_recv_buffs));
rbd[i].next = make16((rbd + (i+1) % p->num_recv_buffs));
rbd[i].size = swab16(RECV_BUFF_SIZE);
rbd[i].buffer = make24(ptr);
p->rfd_first->rbd_offset = make16(rbd);
struct rbd_struct *rbd;
rbd = (struct rbd_struct *) make32(p->rfd_top->rbd_offset);
if( (totlen = swab16(rbd->status)) & RBD_LAST) /* the first and the last buffer? */
rbd->status = 0;
skb_copy_to_linear_data(skb,(char *) p->base+swab32((unsigned long) rbd->buffer),totlen);
while(!((rstat=swab16(rbd->status)) & RBD_LAST))
rbd->status = 0;
rbd = (struct rbd_struct *) make32(rbd->next);
rbd->status = 0;
nic->blank_rfd.rbd = cpu_to_le32(0xFFFFFFFF);
__le32 rbd;