Search Linux Wireless

Regression caused by commit df88129

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jouni and Johannes,

A recent pull of the wireless-testing tree caused my wireless to break. The wireless devices can authenticate and associate as follows:

wlan0: authenticate with c0:3f:0e:be:2b:44
wlan0: capabilities/regulatory prevented using AP HT/VHT configuration, downgraded
wlan0: send auth to c0:3f:0e:be:2b:44 (try 1/3)
wlan0: authenticated
wlan0: associate with c0:3f:0e:be:2b:44 (try 1/3)
wlan0: RX AssocResp from c0:3f:0e:be:2b:44 (capab=0x411 status=0 aid=3)
wlan0: associated
IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
wlan0: dropped frame to c0:3f:0e:be:2b:44 (unauthorized port)
b43-phy0 debug: Using hardware based encryption for keyidx: 0, mac: c0:3f:0e:be:2b:44 b43-phy0 debug: Using hardware based encryption for keyidx: 1, mac: ff:ff:ff:ff:ff:ff
wlan0: dropped frame to c0:3f:0e:be:2b:44 (unauthorized port)
wlan0: dropped frame to c0:3f:0e:be:2b:44 (unauthorized port)

These dropped frame messages persist, and prevent the connection from being completed. The code in question is in routine ieee80211_subif_start_xmit() of file net/mac80211/tx.c as follows:

==============================================================
        if (unlikely(!ieee80211_vif_is_mesh(&sdata->vif) &&
                     !is_multicast_ether_addr(hdr.addr1) && !authorized &&
                     (cpu_to_be16(ethertype) != sdata->control_port_protocol ||
                      !ether_addr_equal(sdata->vif.addr, skb->data + ETH_ALEN)))) {
#ifdef CONFIG_MAC80211_VERBOSE_DEBUG
net_info_ratelimited("%s: dropped frame to %pM (unauthorized port)\n",
                                    dev->name, hdr.addr1);
#endif

                I802_DEBUG_INC(local->tx_handlers_drop_unauth_port);

                goto fail_rcu;
        }
==============================================================

When the if statement is rewritten as 'if (A || B)', it turns out that A is true, and B is false.

The regression was bisected to commit df881293c6ba9a12868491a717b25cb14ec1fa4a.

==============================================================
commit df881293c6ba9a12868491a717b25cb14ec1fa4a
Author: Jouni Malinen <jouni@xxxxxxxxxxxxxxxx>
Date:   Thu Feb 14 21:10:54 2013 +0200

    cfg80211: Pass TDLS peer's QoS/HT/VHT information during set_station

    The information of the peer's capabilities is required for the driver
    to perform TDLS Peer UAPSD operations. This information of the peer is
    passed by the supplicant using NL80211_CMD_SET_STATION command. This
    commit enhances the function nl80211_set_station to pass this
    information of the peer to the driver in case this command is used
    with the TDLS peer STA.

    In addition, make the HT/VHT capability configuration handled more
    consistently for other STA cases (reject both instead of just HT).

    Signed-off-by: Jouni Malinen <jouni@xxxxxxxxxxxxxxxx>
    Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx>
==============================================================

If you need any more debugging output for this problem, please let me know.

Thanks,

Larry
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux