brcmfmac: fix generation of the p2p related mac addresses
authorArend van Spriel <arend@broadcom.com>
Fri, 8 Feb 2013 14:53:40 +0000 (15:53 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 8 Feb 2013 19:51:38 +0000 (14:51 -0500)
The driver determines the P2P interface address and device
address from the primary mac address. However, the function
used an invalid input. This caused a mac address mismatch
between firmware and driver. This was hidden because the
brcmf_if_add() function corrected the error upon receiving
the IF_ADD event from firmware.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/brcm80211/brcmfmac/p2p.c

index ecc96f3..cec4116 100644 (file)
@@ -132,12 +132,10 @@ static int brcmf_p2p_set_firmware(struct brcmf_p2p_info *p2p)
  */
 static void brcmf_p2p_generate_bss_mac(struct brcmf_p2p_info *p2p)
 {
-       struct net_device *ndev = cfg_to_ndev(p2p->cfg);
-
        /* Generate the P2P Device Address.  This consists of the device's
         * primary MAC address with the locally administered bit set.
         */
-       memcpy(p2p->dev_addr, ndev->dev_addr, ETH_ALEN);
+       memcpy(p2p->dev_addr, p2p->cfg->pub->mac, ETH_ALEN);
        p2p->dev_addr[0] |= 0x02;
 
        /* Generate the P2P Interface Address.  If the discovery and connection