From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail.candelatech.com ([208.74.158.172]:41309 "EHLO ns3.lanforge.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752646Ab0INSAX (ORCPT ); Tue, 14 Sep 2010 14:00:23 -0400 Message-ID: <4C8FB81A.7090007@candelatech.com> Date: Tue, 14 Sep 2010 10:59:54 -0700 From: Ben Greear MIME-Version: 1.0 To: Felix Fietkau CC: linux-wireless@vger.kernel.org, linville@tuxdriver.com, johannes@sipsolutions.net, lrodriguez@atheros.com Subject: Re: [PATCH 1/2] ath9k: fix BSSID mask calculation References: <1284482240-57922-1-git-send-email-nbd@openwrt.org> <4C8FB1DA.5090209@candelatech.com> <4C8FB621.1060608@openwrt.org> In-Reply-To: <4C8FB621.1060608@openwrt.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Sender: linux-wireless-owner@vger.kernel.org List-ID: On 09/14/2010 10:51 AM, Felix Fietkau wrote: > On 2010-09-14 7:33 PM, Ben Greear wrote: >> On 09/14/2010 09:37 AM, Felix Fietkau wrote: >>> At the time the .add_interface driver op is called, the interface has not >>> been marked as running yet, so ieee80211_iterate_active_interfaces will >>> not pass it to the iterator function. >>> Because of this, the calculated BSSID mask is wrong, which breaks multi-BSS >>> operation. >>> >>> Additionally, the current way of comparing all addresses against each other >>> is pointless, as the hardware only uses the hardware MAC address and the BSSID >>> mask for matching the destination address, so all the address array >>> reallocation is completely unnecessary. >>> >>> This patch simplifies the logic by setting the initial mask bytes to 0xff >>> and removing all bits in the iterator call that don't match the hardware MAC >>> address. It also calls the iterator for the vif that was passed to >>> add_interface() >> >> You probably need to fix the mask-setting logic in >> ath_opmode_init as well? > What do you mean? It seems I saw this code over-write the mask with a bad value when debugging this a few days ago..but perhaps I was mistaken, or perhaps your patch fixes this already. /* configure bssid mask */ if (ah->caps.hw_caps & ATH9K_HW_CAP_BSSIDMASK) ath_hw_setbssidmask(common); My plan was to have it call ath9k_set_bssid_mask(common->hw) instead. Were you able to create multiple STA interfaces and have them send/receive data with your patch? Thanks, Ben -- Ben Greear Candela Technologies Inc http://www.candelatech.com