Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[deliverable/linux.git] / drivers / net / usb / rndis_host.c
index a48bc0f20c1a860a66299d00391381cf58972b95..4f4f71b2966ba50760f8309efdc919106d9f8276 100644 (file)
@@ -428,7 +428,11 @@ generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf, int flags)
                dev_err(&intf->dev, "rndis get ethaddr, %d\n", retval);
                goto halt_fail_and_release;
        }
-       memcpy(net->dev_addr, bp, ETH_ALEN);
+
+       if (bp[0] & 0x02)
+               eth_hw_addr_random(net);
+       else
+               ether_addr_copy(net->dev_addr, bp);
 
        /* set a nonzero filter to enable data transfers */
        memset(u.set, 0, sizeof *u.set);
@@ -492,6 +496,10 @@ EXPORT_SYMBOL_GPL(rndis_unbind);
  */
 int rndis_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
 {
+       /* This check is no longer done by usbnet */
+       if (skb->len < dev->net->hard_header_len)
+               return 0;
+
        /* peripheral may have batched packets to us... */
        while (likely(skb->len)) {
                struct rndis_data_hdr   *hdr = (void *)skb->data;
This page took 0.042234 seconds and 5 git commands to generate.