mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-13 01:08:50 +00:00
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
This commit is contained in:
commit
6303710d7a
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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");
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user