Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
This commit is contained in:
@@ -6226,7 +6226,7 @@ static void ipw_add_scan_channels(struct ipw_priv *priv,
|
|||||||
};
|
};
|
||||||
|
|
||||||
u8 channel;
|
u8 channel;
|
||||||
while (channel_index < IPW_SCAN_CHANNELS) {
|
while (channel_index < IPW_SCAN_CHANNELS - 1) {
|
||||||
channel =
|
channel =
|
||||||
priv->speed_scan[priv->speed_scan_pos];
|
priv->speed_scan[priv->speed_scan_pos];
|
||||||
if (channel == 0) {
|
if (channel == 0) {
|
||||||
|
|||||||
@@ -56,8 +56,8 @@ struct rxpd {
|
|||||||
u8 bss_type;
|
u8 bss_type;
|
||||||
/* BSS number */
|
/* BSS number */
|
||||||
u8 bss_num;
|
u8 bss_num;
|
||||||
} bss;
|
} __attribute__ ((packed)) bss;
|
||||||
} u;
|
} __attribute__ ((packed)) u;
|
||||||
|
|
||||||
/* SNR */
|
/* SNR */
|
||||||
u8 snr;
|
u8 snr;
|
||||||
|
|||||||
@@ -261,7 +261,7 @@ struct mwl8k_vif {
|
|||||||
*/
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MWL8K_VIF(_vif) (struct mwl8k_vif *)(&((_vif)->drv_priv))
|
#define MWL8K_VIF(_vif) ((struct mwl8k_vif *)&((_vif)->drv_priv))
|
||||||
|
|
||||||
static const struct ieee80211_channel mwl8k_channels[] = {
|
static const struct ieee80211_channel mwl8k_channels[] = {
|
||||||
{ .center_freq = 2412, .hw_value = 1, },
|
{ .center_freq = 2412, .hw_value = 1, },
|
||||||
@@ -1012,6 +1012,8 @@ static int rxq_process(struct ieee80211_hw *hw, int index, int limit)
|
|||||||
rmb();
|
rmb();
|
||||||
|
|
||||||
skb = rxq->rx_skb[rxq->rx_head];
|
skb = rxq->rx_skb[rxq->rx_head];
|
||||||
|
if (skb == NULL)
|
||||||
|
break;
|
||||||
rxq->rx_skb[rxq->rx_head] = NULL;
|
rxq->rx_skb[rxq->rx_head] = NULL;
|
||||||
|
|
||||||
rxq->rx_head = (rxq->rx_head + 1) % MWL8K_RX_DESCS;
|
rxq->rx_head = (rxq->rx_head + 1) % MWL8K_RX_DESCS;
|
||||||
@@ -1591,6 +1593,9 @@ static int mwl8k_post_cmd(struct ieee80211_hw *hw, struct mwl8k_cmd_pkt *cmd)
|
|||||||
timeout = wait_for_completion_timeout(&cmd_wait,
|
timeout = wait_for_completion_timeout(&cmd_wait,
|
||||||
msecs_to_jiffies(MWL8K_CMD_TIMEOUT_MS));
|
msecs_to_jiffies(MWL8K_CMD_TIMEOUT_MS));
|
||||||
|
|
||||||
|
pci_unmap_single(priv->pdev, dma_addr, dma_size,
|
||||||
|
PCI_DMA_BIDIRECTIONAL);
|
||||||
|
|
||||||
result = &cmd->result;
|
result = &cmd->result;
|
||||||
if (!timeout) {
|
if (!timeout) {
|
||||||
spin_lock_irq(&priv->fw_lock);
|
spin_lock_irq(&priv->fw_lock);
|
||||||
@@ -1610,8 +1615,6 @@ static int mwl8k_post_cmd(struct ieee80211_hw *hw, struct mwl8k_cmd_pkt *cmd)
|
|||||||
*result);
|
*result);
|
||||||
}
|
}
|
||||||
|
|
||||||
pci_unmap_single(priv->pdev, dma_addr, dma_size,
|
|
||||||
PCI_DMA_BIDIRECTIONAL);
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1654,18 +1657,18 @@ static int mwl8k_cmd_get_hw_spec(struct ieee80211_hw *hw)
|
|||||||
memset(cmd->perm_addr, 0xff, sizeof(cmd->perm_addr));
|
memset(cmd->perm_addr, 0xff, sizeof(cmd->perm_addr));
|
||||||
cmd->ps_cookie = cpu_to_le32(priv->cookie_dma);
|
cmd->ps_cookie = cpu_to_le32(priv->cookie_dma);
|
||||||
cmd->rx_queue_ptr = cpu_to_le32(priv->rxq[0].rx_desc_dma);
|
cmd->rx_queue_ptr = cpu_to_le32(priv->rxq[0].rx_desc_dma);
|
||||||
cmd->num_tx_queues = MWL8K_TX_QUEUES;
|
cmd->num_tx_queues = cpu_to_le32(MWL8K_TX_QUEUES);
|
||||||
for (i = 0; i < MWL8K_TX_QUEUES; i++)
|
for (i = 0; i < MWL8K_TX_QUEUES; i++)
|
||||||
cmd->tx_queue_ptrs[i] = cpu_to_le32(priv->txq[i].tx_desc_dma);
|
cmd->tx_queue_ptrs[i] = cpu_to_le32(priv->txq[i].tx_desc_dma);
|
||||||
cmd->num_tx_desc_per_queue = MWL8K_TX_DESCS;
|
cmd->num_tx_desc_per_queue = cpu_to_le32(MWL8K_TX_DESCS);
|
||||||
cmd->total_rx_desc = MWL8K_RX_DESCS;
|
cmd->total_rx_desc = cpu_to_le32(MWL8K_RX_DESCS);
|
||||||
|
|
||||||
rc = mwl8k_post_cmd(hw, &cmd->header);
|
rc = mwl8k_post_cmd(hw, &cmd->header);
|
||||||
|
|
||||||
if (!rc) {
|
if (!rc) {
|
||||||
SET_IEEE80211_PERM_ADDR(hw, cmd->perm_addr);
|
SET_IEEE80211_PERM_ADDR(hw, cmd->perm_addr);
|
||||||
priv->num_mcaddrs = le16_to_cpu(cmd->num_mcaddrs);
|
priv->num_mcaddrs = le16_to_cpu(cmd->num_mcaddrs);
|
||||||
priv->fw_rev = cmd->fw_rev;
|
priv->fw_rev = le32_to_cpu(cmd->fw_rev);
|
||||||
priv->hw_rev = cmd->hw_rev;
|
priv->hw_rev = cmd->hw_rev;
|
||||||
priv->region_code = le16_to_cpu(cmd->region_code);
|
priv->region_code = le16_to_cpu(cmd->region_code);
|
||||||
}
|
}
|
||||||
@@ -3216,15 +3219,19 @@ static int mwl8k_configure_filter_wt(struct work_struct *wt)
|
|||||||
struct dev_addr_list *mclist = worker->mclist;
|
struct dev_addr_list *mclist = worker->mclist;
|
||||||
|
|
||||||
struct mwl8k_priv *priv = hw->priv;
|
struct mwl8k_priv *priv = hw->priv;
|
||||||
struct mwl8k_vif *mv_vif;
|
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
if (changed_flags & FIF_BCN_PRBRESP_PROMISC) {
|
if (changed_flags & FIF_BCN_PRBRESP_PROMISC) {
|
||||||
if (*total_flags & FIF_BCN_PRBRESP_PROMISC)
|
if (*total_flags & FIF_BCN_PRBRESP_PROMISC)
|
||||||
rc = mwl8k_cmd_set_pre_scan(hw);
|
rc = mwl8k_cmd_set_pre_scan(hw);
|
||||||
else {
|
else {
|
||||||
mv_vif = MWL8K_VIF(priv->vif);
|
u8 *bssid;
|
||||||
rc = mwl8k_cmd_set_post_scan(hw, mv_vif->bssid);
|
|
||||||
|
bssid = "\x00\x00\x00\x00\x00\x00";
|
||||||
|
if (priv->vif != NULL)
|
||||||
|
bssid = MWL8K_VIF(priv->vif)->bssid;
|
||||||
|
|
||||||
|
rc = mwl8k_cmd_set_post_scan(hw, bssid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3726,6 +3733,8 @@ static void __devexit mwl8k_remove(struct pci_dev *pdev)
|
|||||||
|
|
||||||
ieee80211_stop_queues(hw);
|
ieee80211_stop_queues(hw);
|
||||||
|
|
||||||
|
ieee80211_unregister_hw(hw);
|
||||||
|
|
||||||
/* Remove tx reclaim tasklet */
|
/* Remove tx reclaim tasklet */
|
||||||
tasklet_kill(&priv->tx_reclaim_task);
|
tasklet_kill(&priv->tx_reclaim_task);
|
||||||
|
|
||||||
@@ -3739,8 +3748,6 @@ static void __devexit mwl8k_remove(struct pci_dev *pdev)
|
|||||||
for (i = 0; i < MWL8K_TX_QUEUES; i++)
|
for (i = 0; i < MWL8K_TX_QUEUES; i++)
|
||||||
mwl8k_txq_reclaim(hw, i, 1);
|
mwl8k_txq_reclaim(hw, i, 1);
|
||||||
|
|
||||||
ieee80211_unregister_hw(hw);
|
|
||||||
|
|
||||||
for (i = 0; i < MWL8K_TX_QUEUES; i++)
|
for (i = 0; i < MWL8K_TX_QUEUES; i++)
|
||||||
mwl8k_txq_deinit(hw, i);
|
mwl8k_txq_deinit(hw, i);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user