|
@@ -2479,15 +2479,16 @@ int ath6kl_wmi_delete_pstream_cmd(struct wmi *wmi, u8 if_idx, u8 traffic_class,
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-int ath6kl_wmi_set_ip_cmd(struct wmi *wmi, struct wmi_set_ip_cmd *ip_cmd)
|
|
|
+int ath6kl_wmi_set_ip_cmd(struct wmi *wmi, u8 if_idx,
|
|
|
+ __be32 ips0, __be32 ips1)
|
|
|
{
|
|
|
struct sk_buff *skb;
|
|
|
struct wmi_set_ip_cmd *cmd;
|
|
|
int ret;
|
|
|
|
|
|
/* Multicast address are not valid */
|
|
|
- if ((*((u8 *) &ip_cmd->ips[0]) >= 0xE0) ||
|
|
|
- (*((u8 *) &ip_cmd->ips[1]) >= 0xE0))
|
|
|
+ if (ipv4_is_multicast(ips0) ||
|
|
|
+ ipv4_is_multicast(ips1))
|
|
|
return -EINVAL;
|
|
|
|
|
|
skb = ath6kl_wmi_get_new_buf(sizeof(struct wmi_set_ip_cmd));
|
|
@@ -2495,9 +2496,10 @@ int ath6kl_wmi_set_ip_cmd(struct wmi *wmi, struct wmi_set_ip_cmd *ip_cmd)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
cmd = (struct wmi_set_ip_cmd *) skb->data;
|
|
|
- memcpy(cmd, ip_cmd, sizeof(struct wmi_set_ip_cmd));
|
|
|
+ cmd->ips[0] = ips0;
|
|
|
+ cmd->ips[1] = ips1;
|
|
|
|
|
|
- ret = ath6kl_wmi_cmd_send(wmi, 0, skb, WMI_SET_IP_CMDID,
|
|
|
+ ret = ath6kl_wmi_cmd_send(wmi, if_idx, skb, WMI_SET_IP_CMDID,
|
|
|
NO_SYNC_WMIFLAG);
|
|
|
return ret;
|
|
|
}
|