diff options
Diffstat (limited to 'drivers/net/s2io.c')
| -rw-r--r-- | drivers/net/s2io.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c index 2eb7f8a0d926..f155928bf14e 100644 --- a/drivers/net/s2io.c +++ b/drivers/net/s2io.c | |||
| @@ -79,6 +79,7 @@ | |||
| 79 | #include <linux/tcp.h> | 79 | #include <linux/tcp.h> |
| 80 | #include <linux/uaccess.h> | 80 | #include <linux/uaccess.h> |
| 81 | #include <linux/io.h> | 81 | #include <linux/io.h> |
| 82 | #include <linux/slab.h> | ||
| 82 | #include <net/tcp.h> | 83 | #include <net/tcp.h> |
| 83 | 84 | ||
| 84 | #include <asm/system.h> | 85 | #include <asm/system.h> |
| @@ -2399,7 +2400,7 @@ static struct sk_buff *s2io_txdl_getskb(struct fifo_info *fifo_data, | |||
| 2399 | return NULL; | 2400 | return NULL; |
| 2400 | } | 2401 | } |
| 2401 | pci_unmap_single(nic->pdev, (dma_addr_t)txds->Buffer_Pointer, | 2402 | pci_unmap_single(nic->pdev, (dma_addr_t)txds->Buffer_Pointer, |
| 2402 | skb->len - skb->data_len, PCI_DMA_TODEVICE); | 2403 | skb_headlen(skb), PCI_DMA_TODEVICE); |
| 2403 | frg_cnt = skb_shinfo(skb)->nr_frags; | 2404 | frg_cnt = skb_shinfo(skb)->nr_frags; |
| 2404 | if (frg_cnt) { | 2405 | if (frg_cnt) { |
| 2405 | txds++; | 2406 | txds++; |
| @@ -4201,7 +4202,7 @@ static netdev_tx_t s2io_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 4201 | txdp->Control_2 |= TXD_VLAN_TAG(vlan_tag); | 4202 | txdp->Control_2 |= TXD_VLAN_TAG(vlan_tag); |
| 4202 | } | 4203 | } |
| 4203 | 4204 | ||
| 4204 | frg_len = skb->len - skb->data_len; | 4205 | frg_len = skb_headlen(skb); |
| 4205 | if (offload_type == SKB_GSO_UDP) { | 4206 | if (offload_type == SKB_GSO_UDP) { |
| 4206 | int ufo_size; | 4207 | int ufo_size; |
| 4207 | 4208 | ||
| @@ -4964,7 +4965,7 @@ static struct net_device_stats *s2io_get_stats(struct net_device *dev) | |||
| 4964 | static void s2io_set_multicast(struct net_device *dev) | 4965 | static void s2io_set_multicast(struct net_device *dev) |
| 4965 | { | 4966 | { |
| 4966 | int i, j, prev_cnt; | 4967 | int i, j, prev_cnt; |
| 4967 | struct dev_mc_list *mclist; | 4968 | struct netdev_hw_addr *ha; |
| 4968 | struct s2io_nic *sp = netdev_priv(dev); | 4969 | struct s2io_nic *sp = netdev_priv(dev); |
| 4969 | struct XENA_dev_config __iomem *bar0 = sp->bar0; | 4970 | struct XENA_dev_config __iomem *bar0 = sp->bar0; |
| 4970 | u64 val64 = 0, multi_mac = 0x010203040506ULL, mask = | 4971 | u64 val64 = 0, multi_mac = 0x010203040506ULL, mask = |
| @@ -5093,12 +5094,12 @@ static void s2io_set_multicast(struct net_device *dev) | |||
| 5093 | 5094 | ||
| 5094 | /* Create the new Rx filter list and update the same in H/W. */ | 5095 | /* Create the new Rx filter list and update the same in H/W. */ |
| 5095 | i = 0; | 5096 | i = 0; |
| 5096 | netdev_for_each_mc_addr(mclist, dev) { | 5097 | netdev_for_each_mc_addr(ha, dev) { |
| 5097 | memcpy(sp->usr_addrs[i].addr, mclist->dmi_addr, | 5098 | memcpy(sp->usr_addrs[i].addr, ha->addr, |
| 5098 | ETH_ALEN); | 5099 | ETH_ALEN); |
| 5099 | mac_addr = 0; | 5100 | mac_addr = 0; |
| 5100 | for (j = 0; j < ETH_ALEN; j++) { | 5101 | for (j = 0; j < ETH_ALEN; j++) { |
| 5101 | mac_addr |= mclist->dmi_addr[j]; | 5102 | mac_addr |= ha->addr[j]; |
| 5102 | mac_addr <<= 8; | 5103 | mac_addr <<= 8; |
| 5103 | } | 5104 | } |
| 5104 | mac_addr >>= 8; | 5105 | mac_addr >>= 8; |
