Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6303710d authored by John W. Linville's avatar John W. Linville
Browse files
parents db98a6cf d2460f4b
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -891,7 +891,6 @@ void hostap_setup_dev(struct net_device *dev, local_info_t *local,


	SET_ETHTOOL_OPS(dev, &prism2_ethtool_ops);
	SET_ETHTOOL_OPS(dev, &prism2_ethtool_ops);


	netif_stop_queue(dev);
}
}


static int hostap_enable_hostapd(local_info_t *local, int rtnl_locked)
static int hostap_enable_hostapd(local_info_t *local, int rtnl_locked)
+5 −4
Original line number Original line Diff line number Diff line
@@ -3280,9 +3280,10 @@ void iwlagn_mac_stop(struct ieee80211_hw *hw)


	flush_workqueue(priv->workqueue);
	flush_workqueue(priv->workqueue);


	/* enable interrupts again in order to receive rfkill changes */
	/* User space software may expect getting rfkill changes
	 * even if interface is down */
	iwl_write32(priv, CSR_INT, 0xFFFFFFFF);
	iwl_write32(priv, CSR_INT, 0xFFFFFFFF);
	iwl_enable_interrupts(priv);
	iwl_enable_rfkill_int(priv);


	IWL_DEBUG_MAC80211(priv, "leave\n");
	IWL_DEBUG_MAC80211(priv, "leave\n");
}
}
@@ -4191,14 +4192,14 @@ static int iwl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
	 * 8. Enable interrupts and read RFKILL state
	 * 8. Enable interrupts and read RFKILL state
	 *********************************************/
	 *********************************************/


	/* enable interrupts if needed: hw bug w/a */
	/* enable rfkill interrupt: hw bug w/a */
	pci_read_config_word(priv->pci_dev, PCI_COMMAND, &pci_cmd);
	pci_read_config_word(priv->pci_dev, PCI_COMMAND, &pci_cmd);
	if (pci_cmd & PCI_COMMAND_INTX_DISABLE) {
	if (pci_cmd & PCI_COMMAND_INTX_DISABLE) {
		pci_cmd &= ~PCI_COMMAND_INTX_DISABLE;
		pci_cmd &= ~PCI_COMMAND_INTX_DISABLE;
		pci_write_config_word(priv->pci_dev, PCI_COMMAND, pci_cmd);
		pci_write_config_word(priv->pci_dev, PCI_COMMAND, pci_cmd);
	}
	}


	iwl_enable_interrupts(priv);
	iwl_enable_rfkill_int(priv);


	/* If platform's RF_KILL switch is NOT set to KILL */
	/* If platform's RF_KILL switch is NOT set to KILL */
	if (iwl_read32(priv, CSR_GP_CNTRL) & CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW)
	if (iwl_read32(priv, CSR_GP_CNTRL) & CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW)
+6 −0
Original line number Original line Diff line number Diff line
@@ -148,6 +148,12 @@ static inline void iwl_disable_interrupts(struct iwl_priv *priv)
	IWL_DEBUG_ISR(priv, "Disabled interrupts\n");
	IWL_DEBUG_ISR(priv, "Disabled interrupts\n");
}
}


static inline void iwl_enable_rfkill_int(struct iwl_priv *priv)
{
	IWL_DEBUG_ISR(priv, "Enabling rfkill interrupt\n");
	iwl_write32(priv, CSR_INT_MASK, CSR_INT_BIT_RF_KILL);
}

static inline void iwl_enable_interrupts(struct iwl_priv *priv)
static inline void iwl_enable_interrupts(struct iwl_priv *priv)
{
{
	IWL_DEBUG_ISR(priv, "Enabling interrupts\n");
	IWL_DEBUG_ISR(priv, "Enabling interrupts\n");
+6 −0
Original line number Original line Diff line number Diff line
@@ -375,6 +375,12 @@ static void __ieee80211_key_destroy(struct ieee80211_key *key)
	if (!key)
	if (!key)
		return;
		return;


	/*
	 * Synchronize so the TX path can no longer be using
	 * this key before we free/remove it.
	 */
	synchronize_rcu();

	if (key->local)
	if (key->local)
		ieee80211_key_disable_hw_accel(key);
		ieee80211_key_disable_hw_accel(key);


+3 −0
Original line number Original line Diff line number Diff line
@@ -1808,6 +1808,8 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx)
			if (!fwd_skb && net_ratelimit())
			if (!fwd_skb && net_ratelimit())
				printk(KERN_DEBUG "%s: failed to clone mesh frame\n",
				printk(KERN_DEBUG "%s: failed to clone mesh frame\n",
						   sdata->name);
						   sdata->name);
			if (!fwd_skb)
				goto out;


			fwd_hdr =  (struct ieee80211_hdr *) fwd_skb->data;
			fwd_hdr =  (struct ieee80211_hdr *) fwd_skb->data;
			memcpy(fwd_hdr->addr2, sdata->vif.addr, ETH_ALEN);
			memcpy(fwd_hdr->addr2, sdata->vif.addr, ETH_ALEN);
@@ -1845,6 +1847,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx)
		}
		}
	}
	}


 out:
	if (is_multicast_ether_addr(hdr->addr1) ||
	if (is_multicast_ether_addr(hdr->addr1) ||
	    sdata->dev->flags & IFF_PROMISC)
	    sdata->dev->flags & IFF_PROMISC)
		return RX_CONTINUE;
		return RX_CONTINUE;