diff options
author | Sucheta Chakraborty <sucheta.chakraborty@qlogic.com> | 2010-10-04 00:20:12 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-10-05 01:46:50 -0400 |
commit | b501595cbb8afeaa9aaa870b3d29ef051403511a (patch) | |
tree | 9799fa45f8b839eacc5ff113397377c55f3b898e | |
parent | c265eb6ecb63e4b3a6b86b617fa7fd955a0e0980 (diff) |
qlcnic: fix endianess for lro
ipaddress in ifa->ifa_address field are in big endian format.
Also device requires ip address in big endian only.
Signed-off-by: Sucheta Chakraborty <sucheta.chakraborty@qlogic.com>
Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/qlcnic/qlcnic.h | 7 | ||||
-rw-r--r-- | drivers/net/qlcnic/qlcnic_hw.c | 6 |
2 files changed, 10 insertions, 3 deletions
diff --git a/drivers/net/qlcnic/qlcnic.h b/drivers/net/qlcnic/qlcnic.h index 4667463d5523..7af3c6ce0b68 100644 --- a/drivers/net/qlcnic/qlcnic.h +++ b/drivers/net/qlcnic/qlcnic.h | |||
@@ -898,6 +898,11 @@ struct qlcnic_mac_req { | |||
898 | u8 mac_addr[6]; | 898 | u8 mac_addr[6]; |
899 | }; | 899 | }; |
900 | 900 | ||
901 | struct qlcnic_ipaddr { | ||
902 | __be32 ipv4; | ||
903 | __be32 ipv6[4]; | ||
904 | }; | ||
905 | |||
901 | #define QLCNIC_MSI_ENABLED 0x02 | 906 | #define QLCNIC_MSI_ENABLED 0x02 |
902 | #define QLCNIC_MSIX_ENABLED 0x04 | 907 | #define QLCNIC_MSIX_ENABLED 0x04 |
903 | #define QLCNIC_LRO_ENABLED 0x08 | 908 | #define QLCNIC_LRO_ENABLED 0x08 |
@@ -1286,7 +1291,7 @@ void qlcnic_free_mac_list(struct qlcnic_adapter *adapter); | |||
1286 | int qlcnic_nic_set_promisc(struct qlcnic_adapter *adapter, u32); | 1291 | int qlcnic_nic_set_promisc(struct qlcnic_adapter *adapter, u32); |
1287 | int qlcnic_config_intr_coalesce(struct qlcnic_adapter *adapter); | 1292 | int qlcnic_config_intr_coalesce(struct qlcnic_adapter *adapter); |
1288 | int qlcnic_config_rss(struct qlcnic_adapter *adapter, int enable); | 1293 | int qlcnic_config_rss(struct qlcnic_adapter *adapter, int enable); |
1289 | int qlcnic_config_ipaddr(struct qlcnic_adapter *adapter, u32 ip, int cmd); | 1294 | int qlcnic_config_ipaddr(struct qlcnic_adapter *adapter, __be32 ip, int cmd); |
1290 | int qlcnic_linkevent_request(struct qlcnic_adapter *adapter, int enable); | 1295 | int qlcnic_linkevent_request(struct qlcnic_adapter *adapter, int enable); |
1291 | void qlcnic_advert_link_change(struct qlcnic_adapter *adapter, int linkup); | 1296 | void qlcnic_advert_link_change(struct qlcnic_adapter *adapter, int linkup); |
1292 | 1297 | ||
diff --git a/drivers/net/qlcnic/qlcnic_hw.c b/drivers/net/qlcnic/qlcnic_hw.c index c198df90ff3c..68d56939a8d9 100644 --- a/drivers/net/qlcnic/qlcnic_hw.c +++ b/drivers/net/qlcnic/qlcnic_hw.c | |||
@@ -676,9 +676,10 @@ int qlcnic_config_rss(struct qlcnic_adapter *adapter, int enable) | |||
676 | return rv; | 676 | return rv; |
677 | } | 677 | } |
678 | 678 | ||
679 | int qlcnic_config_ipaddr(struct qlcnic_adapter *adapter, u32 ip, int cmd) | 679 | int qlcnic_config_ipaddr(struct qlcnic_adapter *adapter, __be32 ip, int cmd) |
680 | { | 680 | { |
681 | struct qlcnic_nic_req req; | 681 | struct qlcnic_nic_req req; |
682 | struct qlcnic_ipaddr *ipa; | ||
682 | u64 word; | 683 | u64 word; |
683 | int rv; | 684 | int rv; |
684 | 685 | ||
@@ -689,7 +690,8 @@ int qlcnic_config_ipaddr(struct qlcnic_adapter *adapter, u32 ip, int cmd) | |||
689 | req.req_hdr = cpu_to_le64(word); | 690 | req.req_hdr = cpu_to_le64(word); |
690 | 691 | ||
691 | req.words[0] = cpu_to_le64(cmd); | 692 | req.words[0] = cpu_to_le64(cmd); |
692 | req.words[1] = cpu_to_le64(ip); | 693 | ipa = (struct qlcnic_ipaddr *)&req.words[1]; |
694 | ipa->ipv4 = ip; | ||
693 | 695 | ||
694 | rv = qlcnic_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); | 696 | rv = qlcnic_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1); |
695 | if (rv != 0) | 697 | if (rv != 0) |