Lines Matching refs:c
111 static void z8530_rx_done(struct z8530_channel *c);
112 static void z8530_tx_done(struct z8530_channel *c);
126 static inline u8 read_zsreg(struct z8530_channel *c, u8 reg) in read_zsreg() argument
129 z8530_write_port(c->ctrlio, reg); in read_zsreg()
130 return z8530_read_port(c->ctrlio); in read_zsreg()
141 static inline u8 read_zsdata(struct z8530_channel *c) in read_zsdata() argument
144 r=z8530_read_port(c->dataio); in read_zsdata()
160 static inline void write_zsreg(struct z8530_channel *c, u8 reg, u8 val) in write_zsreg() argument
163 z8530_write_port(c->ctrlio, reg); in write_zsreg()
164 z8530_write_port(c->ctrlio, val); in write_zsreg()
176 static inline void write_zsctrl(struct z8530_channel *c, u8 val) in write_zsctrl() argument
178 z8530_write_port(c->ctrlio, val); in write_zsctrl()
190 static inline void write_zsdata(struct z8530_channel *c, u8 val) in write_zsdata() argument
192 z8530_write_port(c->dataio, val); in write_zsdata()
276 static void z8530_flush_fifo(struct z8530_channel *c) in z8530_flush_fifo() argument
278 read_zsreg(c, R1); in z8530_flush_fifo()
279 read_zsreg(c, R1); in z8530_flush_fifo()
280 read_zsreg(c, R1); in z8530_flush_fifo()
281 read_zsreg(c, R1); in z8530_flush_fifo()
282 if(c->dev->type==Z85230) in z8530_flush_fifo()
284 read_zsreg(c, R1); in z8530_flush_fifo()
285 read_zsreg(c, R1); in z8530_flush_fifo()
286 read_zsreg(c, R1); in z8530_flush_fifo()
287 read_zsreg(c, R1); in z8530_flush_fifo()
302 static void z8530_rtsdtr(struct z8530_channel *c, int set) in z8530_rtsdtr() argument
305 c->regs[5] |= (RTS | DTR); in z8530_rtsdtr()
307 c->regs[5] &= ~(RTS | DTR); in z8530_rtsdtr()
308 write_zsreg(c, R5, c->regs[5]); in z8530_rtsdtr()
335 static void z8530_rx(struct z8530_channel *c) in z8530_rx() argument
342 if(!(read_zsreg(c, R0)&1)) in z8530_rx()
344 ch=read_zsdata(c); in z8530_rx()
345 stat=read_zsreg(c, R1); in z8530_rx()
350 if(c->count < c->max) in z8530_rx()
352 *c->dptr++=ch; in z8530_rx()
353 c->count++; in z8530_rx()
365 if(c->skb) in z8530_rx()
366 c->dptr=c->skb->data; in z8530_rx()
367 c->count=0; in z8530_rx()
370 pr_warn("%s: overrun\n", c->dev->name); in z8530_rx()
371 c->rx_overrun++; in z8530_rx()
375 c->rx_crc_err++; in z8530_rx()
386 z8530_rx_done(c); in z8530_rx()
387 write_zsctrl(c, RES_Rx_CRC); in z8530_rx()
394 write_zsctrl(c, ERR_RES); in z8530_rx()
395 write_zsctrl(c, RES_H_IUS); in z8530_rx()
409 static void z8530_tx(struct z8530_channel *c) in z8530_tx() argument
411 while(c->txcount) { in z8530_tx()
413 if(!(read_zsreg(c, R0)&4)) in z8530_tx()
415 c->txcount--; in z8530_tx()
419 write_zsreg(c, R8, *c->tx_ptr++); in z8530_tx()
420 write_zsctrl(c, RES_H_IUS); in z8530_tx()
422 if(c->txcount==0) in z8530_tx()
424 write_zsctrl(c, RES_EOM_L); in z8530_tx()
425 write_zsreg(c, R10, c->regs[10]&~ABUNDER); in z8530_tx()
434 write_zsctrl(c, RES_Tx_P); in z8530_tx()
436 z8530_tx_done(c); in z8530_tx()
437 write_zsctrl(c, RES_H_IUS); in z8530_tx()
629 static void z8530_rx_clear(struct z8530_channel *c) in z8530_rx_clear() argument
636 read_zsdata(c); in z8530_rx_clear()
637 stat=read_zsreg(c, R1); in z8530_rx_clear()
640 write_zsctrl(c, RES_Rx_CRC); in z8530_rx_clear()
644 write_zsctrl(c, ERR_RES); in z8530_rx_clear()
645 write_zsctrl(c, RES_H_IUS); in z8530_rx_clear()
657 static void z8530_tx_clear(struct z8530_channel *c) in z8530_tx_clear() argument
659 write_zsctrl(c, RES_Tx_P); in z8530_tx_clear()
660 write_zsctrl(c, RES_H_IUS); in z8530_tx_clear()
790 int z8530_sync_open(struct net_device *dev, struct z8530_channel *c) in z8530_sync_open() argument
794 spin_lock_irqsave(c->lock, flags); in z8530_sync_open()
796 c->sync = 1; in z8530_sync_open()
797 c->mtu = dev->mtu+64; in z8530_sync_open()
798 c->count = 0; in z8530_sync_open()
799 c->skb = NULL; in z8530_sync_open()
800 c->skb2 = NULL; in z8530_sync_open()
801 c->irqs = &z8530_sync; in z8530_sync_open()
804 z8530_rx_done(c); /* Load the frame ring */ in z8530_sync_open()
805 z8530_rx_done(c); /* Load the backup frame */ in z8530_sync_open()
806 z8530_rtsdtr(c,1); in z8530_sync_open()
807 c->dma_tx = 0; in z8530_sync_open()
808 c->regs[R1]|=TxINT_ENAB; in z8530_sync_open()
809 write_zsreg(c, R1, c->regs[R1]); in z8530_sync_open()
810 write_zsreg(c, R3, c->regs[R3]|RxENABLE); in z8530_sync_open()
812 spin_unlock_irqrestore(c->lock, flags); in z8530_sync_open()
828 int z8530_sync_close(struct net_device *dev, struct z8530_channel *c) in z8530_sync_close() argument
833 spin_lock_irqsave(c->lock, flags); in z8530_sync_close()
834 c->irqs = &z8530_nop; in z8530_sync_close()
835 c->max = 0; in z8530_sync_close()
836 c->sync = 0; in z8530_sync_close()
838 chk=read_zsreg(c,R0); in z8530_sync_close()
839 write_zsreg(c, R3, c->regs[R3]); in z8530_sync_close()
840 z8530_rtsdtr(c,0); in z8530_sync_close()
842 spin_unlock_irqrestore(c->lock, flags); in z8530_sync_close()
858 int z8530_sync_dma_open(struct net_device *dev, struct z8530_channel *c) in z8530_sync_dma_open() argument
862 c->sync = 1; in z8530_sync_dma_open()
863 c->mtu = dev->mtu+64; in z8530_sync_dma_open()
864 c->count = 0; in z8530_sync_dma_open()
865 c->skb = NULL; in z8530_sync_dma_open()
866 c->skb2 = NULL; in z8530_sync_dma_open()
870 c->rxdma_on = 0; in z8530_sync_dma_open()
871 c->txdma_on = 0; in z8530_sync_dma_open()
879 if(c->mtu > PAGE_SIZE/2) in z8530_sync_dma_open()
882 c->rx_buf[0]=(void *)get_zeroed_page(GFP_KERNEL|GFP_DMA); in z8530_sync_dma_open()
883 if(c->rx_buf[0]==NULL) in z8530_sync_dma_open()
885 c->rx_buf[1]=c->rx_buf[0]+PAGE_SIZE/2; in z8530_sync_dma_open()
887 c->tx_dma_buf[0]=(void *)get_zeroed_page(GFP_KERNEL|GFP_DMA); in z8530_sync_dma_open()
888 if(c->tx_dma_buf[0]==NULL) in z8530_sync_dma_open()
890 free_page((unsigned long)c->rx_buf[0]); in z8530_sync_dma_open()
891 c->rx_buf[0]=NULL; in z8530_sync_dma_open()
894 c->tx_dma_buf[1]=c->tx_dma_buf[0]+PAGE_SIZE/2; in z8530_sync_dma_open()
896 c->tx_dma_used=0; in z8530_sync_dma_open()
897 c->dma_tx = 1; in z8530_sync_dma_open()
898 c->dma_num=0; in z8530_sync_dma_open()
899 c->dma_ready=1; in z8530_sync_dma_open()
905 spin_lock_irqsave(c->lock, cflags); in z8530_sync_dma_open()
911 c->regs[R14]|= DTRREQ; in z8530_sync_dma_open()
912 write_zsreg(c, R14, c->regs[R14]); in z8530_sync_dma_open()
914 c->regs[R1]&= ~TxINT_ENAB; in z8530_sync_dma_open()
915 write_zsreg(c, R1, c->regs[R1]); in z8530_sync_dma_open()
921 c->regs[R1]|= WT_FN_RDYFN; in z8530_sync_dma_open()
922 c->regs[R1]|= WT_RDY_RT; in z8530_sync_dma_open()
923 c->regs[R1]|= INT_ERR_Rx; in z8530_sync_dma_open()
924 c->regs[R1]&= ~TxINT_ENAB; in z8530_sync_dma_open()
925 write_zsreg(c, R1, c->regs[R1]); in z8530_sync_dma_open()
926 c->regs[R1]|= WT_RDY_ENAB; in z8530_sync_dma_open()
927 write_zsreg(c, R1, c->regs[R1]); in z8530_sync_dma_open()
939 disable_dma(c->rxdma); in z8530_sync_dma_open()
940 clear_dma_ff(c->rxdma); in z8530_sync_dma_open()
941 set_dma_mode(c->rxdma, DMA_MODE_READ|0x10); in z8530_sync_dma_open()
942 set_dma_addr(c->rxdma, virt_to_bus(c->rx_buf[0])); in z8530_sync_dma_open()
943 set_dma_count(c->rxdma, c->mtu); in z8530_sync_dma_open()
944 enable_dma(c->rxdma); in z8530_sync_dma_open()
946 disable_dma(c->txdma); in z8530_sync_dma_open()
947 clear_dma_ff(c->txdma); in z8530_sync_dma_open()
948 set_dma_mode(c->txdma, DMA_MODE_WRITE); in z8530_sync_dma_open()
949 disable_dma(c->txdma); in z8530_sync_dma_open()
957 c->rxdma_on = 1; in z8530_sync_dma_open()
958 c->txdma_on = 1; in z8530_sync_dma_open()
959 c->tx_dma_used = 1; in z8530_sync_dma_open()
961 c->irqs = &z8530_dma_sync; in z8530_sync_dma_open()
962 z8530_rtsdtr(c,1); in z8530_sync_dma_open()
963 write_zsreg(c, R3, c->regs[R3]|RxENABLE); in z8530_sync_dma_open()
965 spin_unlock_irqrestore(c->lock, cflags); in z8530_sync_dma_open()
981 int z8530_sync_dma_close(struct net_device *dev, struct z8530_channel *c) in z8530_sync_dma_close() argument
986 c->irqs = &z8530_nop; in z8530_sync_dma_close()
987 c->max = 0; in z8530_sync_dma_close()
988 c->sync = 0; in z8530_sync_dma_close()
995 disable_dma(c->rxdma); in z8530_sync_dma_close()
996 clear_dma_ff(c->rxdma); in z8530_sync_dma_close()
998 c->rxdma_on = 0; in z8530_sync_dma_close()
1000 disable_dma(c->txdma); in z8530_sync_dma_close()
1001 clear_dma_ff(c->txdma); in z8530_sync_dma_close()
1004 c->txdma_on = 0; in z8530_sync_dma_close()
1005 c->tx_dma_used = 0; in z8530_sync_dma_close()
1007 spin_lock_irqsave(c->lock, flags); in z8530_sync_dma_close()
1013 c->regs[R1]&= ~WT_RDY_ENAB; in z8530_sync_dma_close()
1014 write_zsreg(c, R1, c->regs[R1]); in z8530_sync_dma_close()
1015 c->regs[R1]&= ~(WT_RDY_RT|WT_FN_RDYFN|INT_ERR_Rx); in z8530_sync_dma_close()
1016 c->regs[R1]|= INT_ALL_Rx; in z8530_sync_dma_close()
1017 write_zsreg(c, R1, c->regs[R1]); in z8530_sync_dma_close()
1018 c->regs[R14]&= ~DTRREQ; in z8530_sync_dma_close()
1019 write_zsreg(c, R14, c->regs[R14]); in z8530_sync_dma_close()
1021 if(c->rx_buf[0]) in z8530_sync_dma_close()
1023 free_page((unsigned long)c->rx_buf[0]); in z8530_sync_dma_close()
1024 c->rx_buf[0]=NULL; in z8530_sync_dma_close()
1026 if(c->tx_dma_buf[0]) in z8530_sync_dma_close()
1028 free_page((unsigned long)c->tx_dma_buf[0]); in z8530_sync_dma_close()
1029 c->tx_dma_buf[0]=NULL; in z8530_sync_dma_close()
1031 chk=read_zsreg(c,R0); in z8530_sync_dma_close()
1032 write_zsreg(c, R3, c->regs[R3]); in z8530_sync_dma_close()
1033 z8530_rtsdtr(c,0); in z8530_sync_dma_close()
1035 spin_unlock_irqrestore(c->lock, flags); in z8530_sync_dma_close()
1052 int z8530_sync_txdma_open(struct net_device *dev, struct z8530_channel *c) in z8530_sync_txdma_open() argument
1057 c->sync = 1; in z8530_sync_txdma_open()
1058 c->mtu = dev->mtu+64; in z8530_sync_txdma_open()
1059 c->count = 0; in z8530_sync_txdma_open()
1060 c->skb = NULL; in z8530_sync_txdma_open()
1061 c->skb2 = NULL; in z8530_sync_txdma_open()
1069 if(c->mtu > PAGE_SIZE/2) in z8530_sync_txdma_open()
1072 c->tx_dma_buf[0]=(void *)get_zeroed_page(GFP_KERNEL|GFP_DMA); in z8530_sync_txdma_open()
1073 if(c->tx_dma_buf[0]==NULL) in z8530_sync_txdma_open()
1076 c->tx_dma_buf[1] = c->tx_dma_buf[0] + PAGE_SIZE/2; in z8530_sync_txdma_open()
1079 spin_lock_irqsave(c->lock, cflags); in z8530_sync_txdma_open()
1085 z8530_rx_done(c); in z8530_sync_txdma_open()
1086 z8530_rx_done(c); in z8530_sync_txdma_open()
1092 c->rxdma_on = 0; in z8530_sync_txdma_open()
1093 c->txdma_on = 0; in z8530_sync_txdma_open()
1095 c->tx_dma_used=0; in z8530_sync_txdma_open()
1096 c->dma_num=0; in z8530_sync_txdma_open()
1097 c->dma_ready=1; in z8530_sync_txdma_open()
1098 c->dma_tx = 1; in z8530_sync_txdma_open()
1107 c->regs[R14]|= DTRREQ; in z8530_sync_txdma_open()
1108 write_zsreg(c, R14, c->regs[R14]); in z8530_sync_txdma_open()
1110 c->regs[R1]&= ~TxINT_ENAB; in z8530_sync_txdma_open()
1111 write_zsreg(c, R1, c->regs[R1]); in z8530_sync_txdma_open()
1119 disable_dma(c->txdma); in z8530_sync_txdma_open()
1120 clear_dma_ff(c->txdma); in z8530_sync_txdma_open()
1121 set_dma_mode(c->txdma, DMA_MODE_WRITE); in z8530_sync_txdma_open()
1122 disable_dma(c->txdma); in z8530_sync_txdma_open()
1130 c->rxdma_on = 0; in z8530_sync_txdma_open()
1131 c->txdma_on = 1; in z8530_sync_txdma_open()
1132 c->tx_dma_used = 1; in z8530_sync_txdma_open()
1134 c->irqs = &z8530_txdma_sync; in z8530_sync_txdma_open()
1135 z8530_rtsdtr(c,1); in z8530_sync_txdma_open()
1136 write_zsreg(c, R3, c->regs[R3]|RxENABLE); in z8530_sync_txdma_open()
1137 spin_unlock_irqrestore(c->lock, cflags); in z8530_sync_txdma_open()
1153 int z8530_sync_txdma_close(struct net_device *dev, struct z8530_channel *c) in z8530_sync_txdma_close() argument
1159 spin_lock_irqsave(c->lock, cflags); in z8530_sync_txdma_close()
1161 c->irqs = &z8530_nop; in z8530_sync_txdma_close()
1162 c->max = 0; in z8530_sync_txdma_close()
1163 c->sync = 0; in z8530_sync_txdma_close()
1171 disable_dma(c->txdma); in z8530_sync_txdma_close()
1172 clear_dma_ff(c->txdma); in z8530_sync_txdma_close()
1173 c->txdma_on = 0; in z8530_sync_txdma_close()
1174 c->tx_dma_used = 0; in z8530_sync_txdma_close()
1182 c->regs[R1]&= ~WT_RDY_ENAB; in z8530_sync_txdma_close()
1183 write_zsreg(c, R1, c->regs[R1]); in z8530_sync_txdma_close()
1184 c->regs[R1]&= ~(WT_RDY_RT|WT_FN_RDYFN|INT_ERR_Rx); in z8530_sync_txdma_close()
1185 c->regs[R1]|= INT_ALL_Rx; in z8530_sync_txdma_close()
1186 write_zsreg(c, R1, c->regs[R1]); in z8530_sync_txdma_close()
1187 c->regs[R14]&= ~DTRREQ; in z8530_sync_txdma_close()
1188 write_zsreg(c, R14, c->regs[R14]); in z8530_sync_txdma_close()
1190 if(c->tx_dma_buf[0]) in z8530_sync_txdma_close()
1192 free_page((unsigned long)c->tx_dma_buf[0]); in z8530_sync_txdma_close()
1193 c->tx_dma_buf[0]=NULL; in z8530_sync_txdma_close()
1195 chk=read_zsreg(c,R0); in z8530_sync_txdma_close()
1196 write_zsreg(c, R3, c->regs[R3]); in z8530_sync_txdma_close()
1197 z8530_rtsdtr(c,0); in z8530_sync_txdma_close()
1199 spin_unlock_irqrestore(c->lock, cflags); in z8530_sync_txdma_close()
1383 int z8530_channel_load(struct z8530_channel *c, u8 *rtable) in z8530_channel_load() argument
1387 spin_lock_irqsave(c->lock, flags); in z8530_channel_load()
1393 write_zsreg(c, R15, c->regs[15]|1); in z8530_channel_load()
1394 write_zsreg(c, reg&0x0F, *rtable); in z8530_channel_load()
1396 write_zsreg(c, R15, c->regs[15]&~1); in z8530_channel_load()
1397 c->regs[reg]=*rtable++; in z8530_channel_load()
1399 c->rx_function=z8530_null_rx; in z8530_channel_load()
1400 c->skb=NULL; in z8530_channel_load()
1401 c->tx_skb=NULL; in z8530_channel_load()
1402 c->tx_next_skb=NULL; in z8530_channel_load()
1403 c->mtu=1500; in z8530_channel_load()
1404 c->max=0; in z8530_channel_load()
1405 c->count=0; in z8530_channel_load()
1406 c->status=read_zsreg(c, R0); in z8530_channel_load()
1407 c->sync=1; in z8530_channel_load()
1408 write_zsreg(c, R3, c->regs[R3]|RxENABLE); in z8530_channel_load()
1410 spin_unlock_irqrestore(c->lock, flags); in z8530_channel_load()
1431 static void z8530_tx_begin(struct z8530_channel *c) in z8530_tx_begin() argument
1434 if(c->tx_skb) in z8530_tx_begin()
1437 c->tx_skb=c->tx_next_skb; in z8530_tx_begin()
1438 c->tx_next_skb=NULL; in z8530_tx_begin()
1439 c->tx_ptr=c->tx_next_ptr; in z8530_tx_begin()
1441 if(c->tx_skb==NULL) in z8530_tx_begin()
1444 if(c->dma_tx) in z8530_tx_begin()
1447 disable_dma(c->txdma); in z8530_tx_begin()
1451 if (get_dma_residue(c->txdma)) in z8530_tx_begin()
1453 c->netdevice->stats.tx_dropped++; in z8530_tx_begin()
1454 c->netdevice->stats.tx_fifo_errors++; in z8530_tx_begin()
1458 c->txcount=0; in z8530_tx_begin()
1462 c->txcount=c->tx_skb->len; in z8530_tx_begin()
1465 if(c->dma_tx) in z8530_tx_begin()
1475 disable_dma(c->txdma); in z8530_tx_begin()
1482 if(c->dev->type!=Z85230) in z8530_tx_begin()
1484 write_zsctrl(c, RES_Tx_CRC); in z8530_tx_begin()
1485 write_zsctrl(c, RES_EOM_L); in z8530_tx_begin()
1487 write_zsreg(c, R10, c->regs[10]&~ABUNDER); in z8530_tx_begin()
1488 clear_dma_ff(c->txdma); in z8530_tx_begin()
1489 set_dma_addr(c->txdma, virt_to_bus(c->tx_ptr)); in z8530_tx_begin()
1490 set_dma_count(c->txdma, c->txcount); in z8530_tx_begin()
1491 enable_dma(c->txdma); in z8530_tx_begin()
1493 write_zsctrl(c, RES_EOM_L); in z8530_tx_begin()
1494 write_zsreg(c, R5, c->regs[R5]|TxENAB); in z8530_tx_begin()
1500 write_zsreg(c, R10, c->regs[10]); in z8530_tx_begin()
1501 write_zsctrl(c, RES_Tx_CRC); in z8530_tx_begin()
1503 while(c->txcount && (read_zsreg(c,R0)&Tx_BUF_EMP)) in z8530_tx_begin()
1505 write_zsreg(c, R8, *c->tx_ptr++); in z8530_tx_begin()
1506 c->txcount--; in z8530_tx_begin()
1514 netif_wake_queue(c->netdevice); in z8530_tx_begin()
1528 static void z8530_tx_done(struct z8530_channel *c) in z8530_tx_done() argument
1533 if (c->tx_skb == NULL) in z8530_tx_done()
1536 skb = c->tx_skb; in z8530_tx_done()
1537 c->tx_skb = NULL; in z8530_tx_done()
1538 z8530_tx_begin(c); in z8530_tx_done()
1539 c->netdevice->stats.tx_packets++; in z8530_tx_done()
1540 c->netdevice->stats.tx_bytes += skb->len; in z8530_tx_done()
1553 void z8530_null_rx(struct z8530_channel *c, struct sk_buff *skb) in z8530_null_rx() argument
1573 static void z8530_rx_done(struct z8530_channel *c) in z8530_rx_done() argument
1582 if(c->rxdma_on) in z8530_rx_done()
1589 int ready=c->dma_ready; in z8530_rx_done()
1590 unsigned char *rxb=c->rx_buf[c->dma_num]; in z8530_rx_done()
1599 disable_dma(c->rxdma); in z8530_rx_done()
1600 clear_dma_ff(c->rxdma); in z8530_rx_done()
1601 c->rxdma_on=0; in z8530_rx_done()
1602 ct=c->mtu-get_dma_residue(c->rxdma); in z8530_rx_done()
1605 c->dma_ready=0; in z8530_rx_done()
1614 c->dma_num^=1; in z8530_rx_done()
1615 set_dma_mode(c->rxdma, DMA_MODE_READ|0x10); in z8530_rx_done()
1616 set_dma_addr(c->rxdma, virt_to_bus(c->rx_buf[c->dma_num])); in z8530_rx_done()
1617 set_dma_count(c->rxdma, c->mtu); in z8530_rx_done()
1618 c->rxdma_on = 1; in z8530_rx_done()
1619 enable_dma(c->rxdma); in z8530_rx_done()
1622 write_zsreg(c, R0, RES_Rx_CRC); in z8530_rx_done()
1627 netdev_warn(c->netdevice, "DMA flip overrun!\n"); in z8530_rx_done()
1641 c->netdevice->stats.rx_dropped++; in z8530_rx_done()
1642 netdev_warn(c->netdevice, "Memory squeeze\n"); in z8530_rx_done()
1646 c->netdevice->stats.rx_packets++; in z8530_rx_done()
1647 c->netdevice->stats.rx_bytes += ct; in z8530_rx_done()
1649 c->dma_ready = 1; in z8530_rx_done()
1652 skb = c->skb; in z8530_rx_done()
1666 ct=c->count; in z8530_rx_done()
1668 c->skb = c->skb2; in z8530_rx_done()
1669 c->count = 0; in z8530_rx_done()
1670 c->max = c->mtu; in z8530_rx_done()
1671 if (c->skb) { in z8530_rx_done()
1672 c->dptr = c->skb->data; in z8530_rx_done()
1673 c->max = c->mtu; in z8530_rx_done()
1675 c->count = 0; in z8530_rx_done()
1676 c->max = 0; in z8530_rx_done()
1680 c->skb2 = dev_alloc_skb(c->mtu); in z8530_rx_done()
1681 if (c->skb2 == NULL) in z8530_rx_done()
1682 netdev_warn(c->netdevice, "memory squeeze\n"); in z8530_rx_done()
1684 skb_put(c->skb2, c->mtu); in z8530_rx_done()
1685 c->netdevice->stats.rx_packets++; in z8530_rx_done()
1686 c->netdevice->stats.rx_bytes += ct; in z8530_rx_done()
1693 c->rx_function(c, skb); in z8530_rx_done()
1695 c->netdevice->stats.rx_dropped++; in z8530_rx_done()
1696 netdev_err(c->netdevice, "Lost a frame\n"); in z8530_rx_done()
1731 netdev_tx_t z8530_queue_xmit(struct z8530_channel *c, struct sk_buff *skb) in z8530_queue_xmit() argument
1735 netif_stop_queue(c->netdevice); in z8530_queue_xmit()
1736 if(c->tx_next_skb) in z8530_queue_xmit()
1747 …if(c->dma_tx && ((unsigned long)(virt_to_bus(skb->data+skb->len))>=16*1024*1024 || spans_boundary(… in z8530_queue_xmit()
1756 c->tx_next_ptr=c->tx_dma_buf[c->tx_dma_used]; in z8530_queue_xmit()
1757 c->tx_dma_used^=1; /* Flip temp buffer */ in z8530_queue_xmit()
1758 skb_copy_from_linear_data(skb, c->tx_next_ptr, skb->len); in z8530_queue_xmit()
1761 c->tx_next_ptr=skb->data; in z8530_queue_xmit()
1763 c->tx_next_skb=skb; in z8530_queue_xmit()
1766 spin_lock_irqsave(c->lock, flags); in z8530_queue_xmit()
1767 z8530_tx_begin(c); in z8530_queue_xmit()
1768 spin_unlock_irqrestore(c->lock, flags); in z8530_queue_xmit()