diff options
Diffstat (limited to 'drivers/net/qlcnic/qlcnic_main.c')
-rw-r--r-- | drivers/net/qlcnic/qlcnic_main.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/net/qlcnic/qlcnic_main.c b/drivers/net/qlcnic/qlcnic_main.c index a3d7705a2dd..6001f41a70a 100644 --- a/drivers/net/qlcnic/qlcnic_main.c +++ b/drivers/net/qlcnic/qlcnic_main.c | |||
@@ -28,6 +28,7 @@ | |||
28 | 28 | ||
29 | #include "qlcnic.h" | 29 | #include "qlcnic.h" |
30 | 30 | ||
31 | #include <linux/swab.h> | ||
31 | #include <linux/dma-mapping.h> | 32 | #include <linux/dma-mapping.h> |
32 | #include <linux/if_vlan.h> | 33 | #include <linux/if_vlan.h> |
33 | #include <net/ip.h> | 34 | #include <net/ip.h> |
@@ -1834,11 +1835,12 @@ static void qlcnic_free_lb_filters_mem(struct qlcnic_adapter *adapter) | |||
1834 | } | 1835 | } |
1835 | 1836 | ||
1836 | static void qlcnic_change_filter(struct qlcnic_adapter *adapter, | 1837 | static void qlcnic_change_filter(struct qlcnic_adapter *adapter, |
1837 | u64 uaddr, u16 vlan_id, struct qlcnic_host_tx_ring *tx_ring) | 1838 | u64 uaddr, __le16 vlan_id, struct qlcnic_host_tx_ring *tx_ring) |
1838 | { | 1839 | { |
1839 | struct cmd_desc_type0 *hwdesc; | 1840 | struct cmd_desc_type0 *hwdesc; |
1840 | struct qlcnic_nic_req *req; | 1841 | struct qlcnic_nic_req *req; |
1841 | struct qlcnic_mac_req *mac_req; | 1842 | struct qlcnic_mac_req *mac_req; |
1843 | struct qlcnic_vlan_req *vlan_req; | ||
1842 | u32 producer; | 1844 | u32 producer; |
1843 | u64 word; | 1845 | u64 word; |
1844 | 1846 | ||
@@ -1856,7 +1858,8 @@ static void qlcnic_change_filter(struct qlcnic_adapter *adapter, | |||
1856 | mac_req->op = vlan_id ? QLCNIC_MAC_VLAN_ADD : QLCNIC_MAC_ADD; | 1858 | mac_req->op = vlan_id ? QLCNIC_MAC_VLAN_ADD : QLCNIC_MAC_ADD; |
1857 | memcpy(mac_req->mac_addr, &uaddr, ETH_ALEN); | 1859 | memcpy(mac_req->mac_addr, &uaddr, ETH_ALEN); |
1858 | 1860 | ||
1859 | req->words[1] = cpu_to_le64(vlan_id); | 1861 | vlan_req = (struct qlcnic_vlan_req *)&req->words[1]; |
1862 | vlan_req->vlan_id = vlan_id; | ||
1860 | 1863 | ||
1861 | tx_ring->producer = get_next_index(producer, tx_ring->num_desc); | 1864 | tx_ring->producer = get_next_index(producer, tx_ring->num_desc); |
1862 | } | 1865 | } |
@@ -1875,7 +1878,7 @@ qlcnic_send_filter(struct qlcnic_adapter *adapter, | |||
1875 | struct hlist_node *tmp_hnode, *n; | 1878 | struct hlist_node *tmp_hnode, *n; |
1876 | struct hlist_head *head; | 1879 | struct hlist_head *head; |
1877 | u64 src_addr = 0; | 1880 | u64 src_addr = 0; |
1878 | u16 vlan_id = 0; | 1881 | __le16 vlan_id = 0; |
1879 | u8 hindex; | 1882 | u8 hindex; |
1880 | 1883 | ||
1881 | if (!compare_ether_addr(phdr->h_source, adapter->mac_addr)) | 1884 | if (!compare_ether_addr(phdr->h_source, adapter->mac_addr)) |
@@ -1928,7 +1931,8 @@ qlcnic_tso_check(struct net_device *netdev, | |||
1928 | struct vlan_ethhdr *vh; | 1931 | struct vlan_ethhdr *vh; |
1929 | struct qlcnic_adapter *adapter = netdev_priv(netdev); | 1932 | struct qlcnic_adapter *adapter = netdev_priv(netdev); |
1930 | u32 producer = tx_ring->producer; | 1933 | u32 producer = tx_ring->producer; |
1931 | int vlan_oob = first_desc->flags_opcode & cpu_to_le16(FLAGS_VLAN_OOB); | 1934 | __le16 vlan_oob = first_desc->flags_opcode & |
1935 | cpu_to_le16(FLAGS_VLAN_OOB); | ||
1932 | 1936 | ||
1933 | if (*(skb->data) & BIT_0) { | 1937 | if (*(skb->data) & BIT_0) { |
1934 | flags |= BIT_0; | 1938 | flags |= BIT_0; |
@@ -1999,7 +2003,8 @@ qlcnic_tso_check(struct net_device *netdev, | |||
1999 | vh = (struct vlan_ethhdr *)((char *)hwdesc + 2); | 2003 | vh = (struct vlan_ethhdr *)((char *)hwdesc + 2); |
2000 | skb_copy_from_linear_data(skb, vh, 12); | 2004 | skb_copy_from_linear_data(skb, vh, 12); |
2001 | vh->h_vlan_proto = htons(ETH_P_8021Q); | 2005 | vh->h_vlan_proto = htons(ETH_P_8021Q); |
2002 | vh->h_vlan_TCI = htons(first_desc->vlan_TCI); | 2006 | vh->h_vlan_TCI = (__be16)swab16((u16)first_desc->vlan_TCI); |
2007 | |||
2003 | skb_copy_from_linear_data_offset(skb, 12, | 2008 | skb_copy_from_linear_data_offset(skb, 12, |
2004 | (char *)vh + 16, copy_len - 16); | 2009 | (char *)vh + 16, copy_len - 16); |
2005 | 2010 | ||