mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-04 17:44:14 +08:00
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>
This commit is contained in:
parent
c265eb6ecb
commit
b501595cbb
@ -898,6 +898,11 @@ struct qlcnic_mac_req {
|
|||||||
u8 mac_addr[6];
|
u8 mac_addr[6];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct qlcnic_ipaddr {
|
||||||
|
__be32 ipv4;
|
||||||
|
__be32 ipv6[4];
|
||||||
|
};
|
||||||
|
|
||||||
#define QLCNIC_MSI_ENABLED 0x02
|
#define QLCNIC_MSI_ENABLED 0x02
|
||||||
#define QLCNIC_MSIX_ENABLED 0x04
|
#define QLCNIC_MSIX_ENABLED 0x04
|
||||||
#define QLCNIC_LRO_ENABLED 0x08
|
#define QLCNIC_LRO_ENABLED 0x08
|
||||||
@ -1286,7 +1291,7 @@ void qlcnic_free_mac_list(struct qlcnic_adapter *adapter);
|
|||||||
int qlcnic_nic_set_promisc(struct qlcnic_adapter *adapter, u32);
|
int qlcnic_nic_set_promisc(struct qlcnic_adapter *adapter, u32);
|
||||||
int qlcnic_config_intr_coalesce(struct qlcnic_adapter *adapter);
|
int qlcnic_config_intr_coalesce(struct qlcnic_adapter *adapter);
|
||||||
int qlcnic_config_rss(struct qlcnic_adapter *adapter, int enable);
|
int qlcnic_config_rss(struct qlcnic_adapter *adapter, int enable);
|
||||||
int qlcnic_config_ipaddr(struct qlcnic_adapter *adapter, u32 ip, int cmd);
|
int qlcnic_config_ipaddr(struct qlcnic_adapter *adapter, __be32 ip, int cmd);
|
||||||
int qlcnic_linkevent_request(struct qlcnic_adapter *adapter, int enable);
|
int qlcnic_linkevent_request(struct qlcnic_adapter *adapter, int enable);
|
||||||
void qlcnic_advert_link_change(struct qlcnic_adapter *adapter, int linkup);
|
void qlcnic_advert_link_change(struct qlcnic_adapter *adapter, int linkup);
|
||||||
|
|
||||||
|
@ -676,9 +676,10 @@ int qlcnic_config_rss(struct qlcnic_adapter *adapter, int enable)
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
int qlcnic_config_ipaddr(struct qlcnic_adapter *adapter, u32 ip, int cmd)
|
int qlcnic_config_ipaddr(struct qlcnic_adapter *adapter, __be32 ip, int cmd)
|
||||||
{
|
{
|
||||||
struct qlcnic_nic_req req;
|
struct qlcnic_nic_req req;
|
||||||
|
struct qlcnic_ipaddr *ipa;
|
||||||
u64 word;
|
u64 word;
|
||||||
int rv;
|
int rv;
|
||||||
|
|
||||||
@ -689,7 +690,8 @@ int qlcnic_config_ipaddr(struct qlcnic_adapter *adapter, u32 ip, int cmd)
|
|||||||
req.req_hdr = cpu_to_le64(word);
|
req.req_hdr = cpu_to_le64(word);
|
||||||
|
|
||||||
req.words[0] = cpu_to_le64(cmd);
|
req.words[0] = cpu_to_le64(cmd);
|
||||||
req.words[1] = cpu_to_le64(ip);
|
ipa = (struct qlcnic_ipaddr *)&req.words[1];
|
||||||
|
ipa->ipv4 = ip;
|
||||||
|
|
||||||
rv = qlcnic_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1);
|
rv = qlcnic_send_cmd_descs(adapter, (struct cmd_desc_type0 *)&req, 1);
|
||||||
if (rv != 0)
|
if (rv != 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user