.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* drivers/atm/eni.c - Efficient Networks ENI155P device driver */ |
---|
2 | 3 | |
---|
3 | 4 | /* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */ |
---|
.. | .. |
---|
29 | 30 | #include "midway.h" |
---|
30 | 31 | #include "suni.h" |
---|
31 | 32 | #include "eni.h" |
---|
32 | | - |
---|
33 | | -#if !defined(__i386__) && !defined(__x86_64__) |
---|
34 | | -#ifndef ioremap_nocache |
---|
35 | | -#define ioremap_nocache(X,Y) ioremap(X,Y) |
---|
36 | | -#endif |
---|
37 | | -#endif |
---|
38 | 33 | |
---|
39 | 34 | /* |
---|
40 | 35 | * TODO: |
---|
.. | .. |
---|
241 | 236 | len = eni_dev->free_len; |
---|
242 | 237 | if (*size < MID_MIN_BUF_SIZE) *size = MID_MIN_BUF_SIZE; |
---|
243 | 238 | if (*size > MID_MAX_BUF_SIZE) return NULL; |
---|
244 | | - for (order = 0; (1 << order) < *size; order++); |
---|
| 239 | + for (order = 0; (1 << order) < *size; order++) |
---|
| 240 | + ; |
---|
245 | 241 | DPRINTK("trying: %ld->%d\n",*size,order); |
---|
246 | 242 | best_order = 65; /* we don't have more than 2^64 of anything ... */ |
---|
247 | 243 | index = 0; /* silence GCC */ |
---|
.. | .. |
---|
1038 | 1034 | u32 dma_rd,dma_wr; |
---|
1039 | 1035 | u32 size; /* in words */ |
---|
1040 | 1036 | int aal5,dma_size,i,j; |
---|
| 1037 | + unsigned char skb_data3; |
---|
1041 | 1038 | |
---|
1042 | 1039 | DPRINTK(">do_tx\n"); |
---|
1043 | 1040 | NULLCHECK(skb); |
---|
.. | .. |
---|
1112 | 1109 | vcc->dev->number); |
---|
1113 | 1110 | return enq_jam; |
---|
1114 | 1111 | } |
---|
| 1112 | + skb_data3 = skb->data[3]; |
---|
1115 | 1113 | paddr = dma_map_single(&eni_dev->pci_dev->dev,skb->data,skb->len, |
---|
1116 | 1114 | DMA_TO_DEVICE); |
---|
| 1115 | + if (dma_mapping_error(&eni_dev->pci_dev->dev, paddr)) |
---|
| 1116 | + return enq_next; |
---|
1117 | 1117 | ENI_PRV_PADDR(skb) = paddr; |
---|
1118 | 1118 | /* prepare DMA queue entries */ |
---|
1119 | 1119 | j = 0; |
---|
.. | .. |
---|
1134 | 1134 | else |
---|
1135 | 1135 | put_dma(tx->index,eni_dev->dma,&j,(unsigned long) |
---|
1136 | 1136 | skb_frag_page(&skb_shinfo(skb)->frags[i]) + |
---|
1137 | | - skb_shinfo(skb)->frags[i].page_offset, |
---|
| 1137 | + skb_frag_off(&skb_shinfo(skb)->frags[i]), |
---|
1138 | 1138 | skb_frag_size(&skb_shinfo(skb)->frags[i])); |
---|
1139 | 1139 | } |
---|
1140 | 1140 | if (skb->len & 3) { |
---|
.. | .. |
---|
1154 | 1154 | (size/(ATM_CELL_PAYLOAD/4)),tx->send+tx->tx_pos*4); |
---|
1155 | 1155 | /*printk("dsc = 0x%08lx\n",(unsigned long) readl(tx->send+tx->tx_pos*4));*/ |
---|
1156 | 1156 | writel((vcc->vci << MID_SEG_VCI_SHIFT) | |
---|
1157 | | - (aal5 ? 0 : (skb->data[3] & 0xf)) | |
---|
| 1157 | + (aal5 ? 0 : (skb_data3 & 0xf)) | |
---|
1158 | 1158 | (ATM_SKB(skb)->atm_options & ATM_ATMOPT_CLP ? MID_SEG_CLP : 0), |
---|
1159 | 1159 | tx->send+((tx->tx_pos+1) & (tx->words-1))*4); |
---|
1160 | 1160 | DPRINTK("size: %d, len:%d\n",size,skb->len); |
---|
.. | .. |
---|
1723 | 1723 | } |
---|
1724 | 1724 | printk(KERN_NOTICE DEV_LABEL "(itf %d): rev.%d,base=0x%lx,irq=%d,", |
---|
1725 | 1725 | dev->number,pci_dev->revision,real_base,eni_dev->irq); |
---|
1726 | | - if (!(base = ioremap_nocache(real_base,MAP_MAX_SIZE))) { |
---|
| 1726 | + if (!(base = ioremap(real_base,MAP_MAX_SIZE))) { |
---|
1727 | 1727 | printk("\n"); |
---|
1728 | 1728 | printk(KERN_ERR DEV_LABEL "(itf %d): can't set up page " |
---|
1729 | 1729 | "mapping\n",dev->number); |
---|
.. | .. |
---|
2031 | 2031 | return dev->phy->ioctl(dev,cmd,arg); |
---|
2032 | 2032 | } |
---|
2033 | 2033 | |
---|
2034 | | - |
---|
2035 | | -static int eni_getsockopt(struct atm_vcc *vcc,int level,int optname, |
---|
2036 | | - void __user *optval,int optlen) |
---|
2037 | | -{ |
---|
2038 | | - return -EINVAL; |
---|
2039 | | -} |
---|
2040 | | - |
---|
2041 | | - |
---|
2042 | | -static int eni_setsockopt(struct atm_vcc *vcc,int level,int optname, |
---|
2043 | | - void __user *optval,unsigned int optlen) |
---|
2044 | | -{ |
---|
2045 | | - return -EINVAL; |
---|
2046 | | -} |
---|
2047 | | - |
---|
2048 | | - |
---|
2049 | 2034 | static int eni_send(struct atm_vcc *vcc,struct sk_buff *skb) |
---|
2050 | 2035 | { |
---|
2051 | 2036 | enum enq_res res; |
---|
.. | .. |
---|
2219 | 2204 | .open = eni_open, |
---|
2220 | 2205 | .close = eni_close, |
---|
2221 | 2206 | .ioctl = eni_ioctl, |
---|
2222 | | - .getsockopt = eni_getsockopt, |
---|
2223 | | - .setsockopt = eni_setsockopt, |
---|
2224 | 2207 | .send = eni_send, |
---|
2225 | 2208 | .phy_put = eni_phy_put, |
---|
2226 | 2209 | .phy_get = eni_phy_get, |
---|