static int qeth_l3_parse_rxipe(const char *buf, enum qeth_prot_versions proto,
                 u8 *addr)
 {
+       __be32 ipv4_addr;
+       struct in6_addr ipv6_addr;
+
        if (qeth_l3_string_to_ipaddr(buf, proto, addr)) {
                return -EINVAL;
        }
+       if (proto == QETH_PROT_IPV4) {
+               memcpy(&ipv4_addr, addr, sizeof(ipv4_addr));
+               if (ipv4_is_multicast(ipv4_addr)) {
+                       QETH_DBF_MESSAGE(2, "multicast rxip not supported.\n");
+                       return -EINVAL;
+               }
+       } else if (proto == QETH_PROT_IPV6) {
+               memcpy(&ipv6_addr, addr, sizeof(ipv6_addr));
+               if (ipv6_addr_is_multicast(&ipv6_addr)) {
+                       QETH_DBF_MESSAGE(2, "multicast rxip not supported.\n");
+                       return -EINVAL;
+               }
+       }
+
        return 0;
 }