Search Linux Wireless

Re: iwlwifi injection bug

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

 



>  	/* drop all data frame if we are not associated */
>  	if ((!iwl3945_is_associated(priv) ||
>  	     ((priv->iw_mode == IEEE80211_IF_TYPE_STA) && !priv->assoc_id)) &&
> -	    ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA)) {
> +	    ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA) && priv->vif) {
>  		IWL_DEBUG_DROP("Dropping - !iwl3945_is_associated\n");
>  		goto drop_unlock;
>  	}

That code is completely bogus anyway IMO, it should just be removed.

>  	/* Find (or create) index into station table for destination station */
>  	sta_id = iwl3945_get_sta_id(priv, hdr);
>  	if (sta_id == IWL_INVALID_STATION) {
>  		DECLARE_MAC_BUF(mac);
> 
> -		IWL_DEBUG_DROP("Dropping - INVALID STATION: %s\n",
> -			       print_mac(mac, hdr->addr1));
> -		goto drop;
> +		if (priv->vif) {
> +			IWL_DEBUG_DROP("Dropping - INVALID STATION: %s\n",
> +				       print_mac(mac, hdr->addr1));
> +			goto drop;
> +		}
> +		sta_id = priv->hw_setting.bcast_sta_id;
>  	}

Same here, why drop a frame if there's no station for it, that just
means you can't do hw encryption which, well, cannot happen anyway since
mac80211 would tell you about the station for hw crypto.

> -	if (priv->iw_mode == IEEE80211_IF_TYPE_MNTR) {
> +	if (priv->iw_mode == IEEE80211_IF_TYPE_MNTR && 0) {
>  		IWL_DEBUG_MAC80211("leave - monitor\n");
>  		return -1;
>  	}

That's the code I was complaining about. Just kill it if it works then.

>  	/* drop all data frame if we are not associated */
>  	if (((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA) &&
> -	   (!iwl_is_associated(priv) ||
> +	   priv->vif && (!iwl_is_associated(priv) ||
>  	    ((priv->iw_mode == IEEE80211_IF_TYPE_STA) && !priv->assoc_id) ||
>  	    !priv->assoc_station_added)) {
>  		IWL_DEBUG_DROP("Dropping - !iwl_is_associated\n");
>  		goto drop_unlock;
>  	}

Same code, other driver. What are you doing poking with the 802.11
frames you're supposed to transmit anyway?

I wish you guys at Intel would trust mac80211 and not try to work around
it all the time.

johannes

Attachment: signature.asc
Description: This is a digitally signed message part


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux