diff options
Diffstat (limited to 'drivers/net')
26 files changed, 147 insertions, 67 deletions
diff --git a/drivers/net/bnx2x/bnx2x_cmn.c b/drivers/net/bnx2x/bnx2x_cmn.c index d724a18b5285..37e5790681ad 100644 --- a/drivers/net/bnx2x/bnx2x_cmn.c +++ b/drivers/net/bnx2x/bnx2x_cmn.c | |||
| @@ -63,8 +63,9 @@ static inline void bnx2x_bz_fp(struct bnx2x *bp, int index) | |||
| 63 | fp->disable_tpa = ((bp->flags & TPA_ENABLE_FLAG) == 0); | 63 | fp->disable_tpa = ((bp->flags & TPA_ENABLE_FLAG) == 0); |
| 64 | 64 | ||
| 65 | #ifdef BCM_CNIC | 65 | #ifdef BCM_CNIC |
| 66 | /* We don't want TPA on FCoE, FWD and OOO L2 rings */ | 66 | /* We don't want TPA on an FCoE L2 ring */ |
| 67 | bnx2x_fcoe(bp, disable_tpa) = 1; | 67 | if (IS_FCOE_FP(fp)) |
| 68 | fp->disable_tpa = 1; | ||
| 68 | #endif | 69 | #endif |
| 69 | } | 70 | } |
| 70 | 71 | ||
| @@ -1404,10 +1405,9 @@ void bnx2x_netif_stop(struct bnx2x *bp, int disable_hw) | |||
| 1404 | u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb) | 1405 | u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb) |
| 1405 | { | 1406 | { |
| 1406 | struct bnx2x *bp = netdev_priv(dev); | 1407 | struct bnx2x *bp = netdev_priv(dev); |
| 1408 | |||
| 1407 | #ifdef BCM_CNIC | 1409 | #ifdef BCM_CNIC |
| 1408 | if (NO_FCOE(bp)) | 1410 | if (!NO_FCOE(bp)) { |
| 1409 | return skb_tx_hash(dev, skb); | ||
| 1410 | else { | ||
| 1411 | struct ethhdr *hdr = (struct ethhdr *)skb->data; | 1411 | struct ethhdr *hdr = (struct ethhdr *)skb->data; |
| 1412 | u16 ether_type = ntohs(hdr->h_proto); | 1412 | u16 ether_type = ntohs(hdr->h_proto); |
| 1413 | 1413 | ||
| @@ -1424,8 +1424,7 @@ u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb) | |||
| 1424 | return bnx2x_fcoe_tx(bp, txq_index); | 1424 | return bnx2x_fcoe_tx(bp, txq_index); |
| 1425 | } | 1425 | } |
| 1426 | #endif | 1426 | #endif |
| 1427 | /* Select a none-FCoE queue: if FCoE is enabled, exclude FCoE L2 ring | 1427 | /* select a non-FCoE queue */ |
| 1428 | */ | ||
| 1429 | return __skb_tx_hash(dev, skb, BNX2X_NUM_ETH_QUEUES(bp)); | 1428 | return __skb_tx_hash(dev, skb, BNX2X_NUM_ETH_QUEUES(bp)); |
| 1430 | } | 1429 | } |
| 1431 | 1430 | ||
| @@ -1448,6 +1447,28 @@ void bnx2x_set_num_queues(struct bnx2x *bp) | |||
| 1448 | bp->num_queues += NON_ETH_CONTEXT_USE; | 1447 | bp->num_queues += NON_ETH_CONTEXT_USE; |
| 1449 | } | 1448 | } |
| 1450 | 1449 | ||
| 1450 | /** | ||
| 1451 | * bnx2x_set_real_num_queues - configure netdev->real_num_[tx,rx]_queues | ||
| 1452 | * | ||
| 1453 | * @bp: Driver handle | ||
| 1454 | * | ||
| 1455 | * We currently support for at most 16 Tx queues for each CoS thus we will | ||
| 1456 | * allocate a multiple of 16 for ETH L2 rings according to the value of the | ||
| 1457 | * bp->max_cos. | ||
| 1458 | * | ||
| 1459 | * If there is an FCoE L2 queue the appropriate Tx queue will have the next | ||
| 1460 | * index after all ETH L2 indices. | ||
| 1461 | * | ||
| 1462 | * If the actual number of Tx queues (for each CoS) is less than 16 then there | ||
| 1463 | * will be the holes at the end of each group of 16 ETh L2 indices (0..15, | ||
| 1464 | * 16..31,...) with indicies that are not coupled with any real Tx queue. | ||
| 1465 | * | ||
| 1466 | * The proper configuration of skb->queue_mapping is handled by | ||
| 1467 | * bnx2x_select_queue() and __skb_tx_hash(). | ||
| 1468 | * | ||
| 1469 | * bnx2x_setup_tc() takes care of the proper TC mappings so that __skb_tx_hash() | ||
| 1470 | * will return a proper Tx index if TC is enabled (netdev->num_tc > 0). | ||
| 1471 | */ | ||
| 1451 | static inline int bnx2x_set_real_num_queues(struct bnx2x *bp) | 1472 | static inline int bnx2x_set_real_num_queues(struct bnx2x *bp) |
| 1452 | { | 1473 | { |
| 1453 | int rc, tx, rx; | 1474 | int rc, tx, rx; |
diff --git a/drivers/net/bnx2x/bnx2x_dcb.c b/drivers/net/bnx2x/bnx2x_dcb.c index a4ea35f6a456..a1e004a82f7a 100644 --- a/drivers/net/bnx2x/bnx2x_dcb.c +++ b/drivers/net/bnx2x/bnx2x_dcb.c | |||
| @@ -920,7 +920,7 @@ static void bnx2x_dcbx_admin_mib_updated_params(struct bnx2x *bp, | |||
| 920 | 920 | ||
| 921 | void bnx2x_dcbx_set_state(struct bnx2x *bp, bool dcb_on, u32 dcbx_enabled) | 921 | void bnx2x_dcbx_set_state(struct bnx2x *bp, bool dcb_on, u32 dcbx_enabled) |
| 922 | { | 922 | { |
| 923 | if (!CHIP_IS_E1x(bp)) { | 923 | if (!CHIP_IS_E1x(bp) && !CHIP_IS_E3(bp)) { |
| 924 | bp->dcb_state = dcb_on; | 924 | bp->dcb_state = dcb_on; |
| 925 | bp->dcbx_enabled = dcbx_enabled; | 925 | bp->dcbx_enabled = dcbx_enabled; |
| 926 | } else { | 926 | } else { |
diff --git a/drivers/net/bnx2x/bnx2x_main.c b/drivers/net/bnx2x/bnx2x_main.c index 150709111548..f74582a22c68 100644 --- a/drivers/net/bnx2x/bnx2x_main.c +++ b/drivers/net/bnx2x/bnx2x_main.c | |||
| @@ -5798,6 +5798,12 @@ static int bnx2x_init_hw_common(struct bnx2x *bp) | |||
| 5798 | 5798 | ||
| 5799 | DP(BNX2X_MSG_MCP, "starting common init func %d\n", BP_ABS_FUNC(bp)); | 5799 | DP(BNX2X_MSG_MCP, "starting common init func %d\n", BP_ABS_FUNC(bp)); |
| 5800 | 5800 | ||
| 5801 | /* | ||
| 5802 | * take the UNDI lock to protect undi_unload flow from accessing | ||
| 5803 | * registers while we're resetting the chip | ||
| 5804 | */ | ||
| 5805 | bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_UNDI); | ||
| 5806 | |||
| 5801 | bnx2x_reset_common(bp); | 5807 | bnx2x_reset_common(bp); |
| 5802 | REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0xffffffff); | 5808 | REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0xffffffff); |
| 5803 | 5809 | ||
| @@ -5808,6 +5814,8 @@ static int bnx2x_init_hw_common(struct bnx2x *bp) | |||
| 5808 | } | 5814 | } |
| 5809 | REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET, val); | 5815 | REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET, val); |
| 5810 | 5816 | ||
| 5817 | bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_UNDI); | ||
| 5818 | |||
| 5811 | bnx2x_init_block(bp, BLOCK_MISC, PHASE_COMMON); | 5819 | bnx2x_init_block(bp, BLOCK_MISC, PHASE_COMMON); |
| 5812 | 5820 | ||
| 5813 | if (!CHIP_IS_E1x(bp)) { | 5821 | if (!CHIP_IS_E1x(bp)) { |
| @@ -10251,10 +10259,17 @@ static int __devinit bnx2x_init_dev(struct pci_dev *pdev, | |||
| 10251 | /* clean indirect addresses */ | 10259 | /* clean indirect addresses */ |
| 10252 | pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS, | 10260 | pci_write_config_dword(bp->pdev, PCICFG_GRC_ADDRESS, |
| 10253 | PCICFG_VENDOR_ID_OFFSET); | 10261 | PCICFG_VENDOR_ID_OFFSET); |
| 10254 | REG_WR(bp, PXP2_REG_PGL_ADDR_88_F0 + BP_PORT(bp)*16, 0); | 10262 | /* Clean the following indirect addresses for all functions since it |
| 10255 | REG_WR(bp, PXP2_REG_PGL_ADDR_8C_F0 + BP_PORT(bp)*16, 0); | 10263 | * is not used by the driver. |
| 10256 | REG_WR(bp, PXP2_REG_PGL_ADDR_90_F0 + BP_PORT(bp)*16, 0); | 10264 | */ |
| 10257 | REG_WR(bp, PXP2_REG_PGL_ADDR_94_F0 + BP_PORT(bp)*16, 0); | 10265 | REG_WR(bp, PXP2_REG_PGL_ADDR_88_F0, 0); |
| 10266 | REG_WR(bp, PXP2_REG_PGL_ADDR_8C_F0, 0); | ||
| 10267 | REG_WR(bp, PXP2_REG_PGL_ADDR_90_F0, 0); | ||
| 10268 | REG_WR(bp, PXP2_REG_PGL_ADDR_94_F0, 0); | ||
| 10269 | REG_WR(bp, PXP2_REG_PGL_ADDR_88_F1, 0); | ||
| 10270 | REG_WR(bp, PXP2_REG_PGL_ADDR_8C_F1, 0); | ||
| 10271 | REG_WR(bp, PXP2_REG_PGL_ADDR_90_F1, 0); | ||
| 10272 | REG_WR(bp, PXP2_REG_PGL_ADDR_94_F1, 0); | ||
| 10258 | 10273 | ||
| 10259 | /* | 10274 | /* |
| 10260 | * Enable internal target-read (in case we are probed after PF FLR). | 10275 | * Enable internal target-read (in case we are probed after PF FLR). |
diff --git a/drivers/net/bnx2x/bnx2x_reg.h b/drivers/net/bnx2x/bnx2x_reg.h index 27b5ecb11830..40266c14e6dc 100644 --- a/drivers/net/bnx2x/bnx2x_reg.h +++ b/drivers/net/bnx2x/bnx2x_reg.h | |||
| @@ -3007,11 +3007,27 @@ | |||
| 3007 | /* [R 6] Debug only: Number of used entries in the data FIFO */ | 3007 | /* [R 6] Debug only: Number of used entries in the data FIFO */ |
| 3008 | #define PXP2_REG_HST_DATA_FIFO_STATUS 0x12047c | 3008 | #define PXP2_REG_HST_DATA_FIFO_STATUS 0x12047c |
| 3009 | /* [R 7] Debug only: Number of used entries in the header FIFO */ | 3009 | /* [R 7] Debug only: Number of used entries in the header FIFO */ |
| 3010 | #define PXP2_REG_HST_HEADER_FIFO_STATUS 0x120478 | 3010 | #define PXP2_REG_HST_HEADER_FIFO_STATUS 0x120478 |
| 3011 | #define PXP2_REG_PGL_ADDR_88_F0 0x120534 | 3011 | #define PXP2_REG_PGL_ADDR_88_F0 0x120534 |
| 3012 | #define PXP2_REG_PGL_ADDR_8C_F0 0x120538 | 3012 | /* [R 32] GRC address for configuration access to PCIE config address 0x88. |
| 3013 | #define PXP2_REG_PGL_ADDR_90_F0 0x12053c | 3013 | * any write to this PCIE address will cause a GRC write access to the |
| 3014 | #define PXP2_REG_PGL_ADDR_94_F0 0x120540 | 3014 | * address that's in t this register */ |
| 3015 | #define PXP2_REG_PGL_ADDR_88_F1 0x120544 | ||
| 3016 | #define PXP2_REG_PGL_ADDR_8C_F0 0x120538 | ||
| 3017 | /* [R 32] GRC address for configuration access to PCIE config address 0x8c. | ||
| 3018 | * any write to this PCIE address will cause a GRC write access to the | ||
| 3019 | * address that's in t this register */ | ||
| 3020 | #define PXP2_REG_PGL_ADDR_8C_F1 0x120548 | ||
| 3021 | #define PXP2_REG_PGL_ADDR_90_F0 0x12053c | ||
| 3022 | /* [R 32] GRC address for configuration access to PCIE config address 0x90. | ||
| 3023 | * any write to this PCIE address will cause a GRC write access to the | ||
| 3024 | * address that's in t this register */ | ||
| 3025 | #define PXP2_REG_PGL_ADDR_90_F1 0x12054c | ||
| 3026 | #define PXP2_REG_PGL_ADDR_94_F0 0x120540 | ||
| 3027 | /* [R 32] GRC address for configuration access to PCIE config address 0x94. | ||
| 3028 | * any write to this PCIE address will cause a GRC write access to the | ||
| 3029 | * address that's in t this register */ | ||
| 3030 | #define PXP2_REG_PGL_ADDR_94_F1 0x120550 | ||
| 3015 | #define PXP2_REG_PGL_CONTROL0 0x120490 | 3031 | #define PXP2_REG_PGL_CONTROL0 0x120490 |
| 3016 | #define PXP2_REG_PGL_CONTROL1 0x120514 | 3032 | #define PXP2_REG_PGL_CONTROL1 0x120514 |
| 3017 | #define PXP2_REG_PGL_DEBUG 0x120520 | 3033 | #define PXP2_REG_PGL_DEBUG 0x120520 |
diff --git a/drivers/net/can/slcan.c b/drivers/net/can/slcan.c index f523f1cc5142..4b70b7e8bdeb 100644 --- a/drivers/net/can/slcan.c +++ b/drivers/net/can/slcan.c | |||
| @@ -197,7 +197,7 @@ static void slc_bump(struct slcan *sl) | |||
| 197 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 197 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 198 | memcpy(skb_put(skb, sizeof(struct can_frame)), | 198 | memcpy(skb_put(skb, sizeof(struct can_frame)), |
| 199 | &cf, sizeof(struct can_frame)); | 199 | &cf, sizeof(struct can_frame)); |
| 200 | netif_rx(skb); | 200 | netif_rx_ni(skb); |
| 201 | 201 | ||
| 202 | sl->dev->stats.rx_packets++; | 202 | sl->dev->stats.rx_packets++; |
| 203 | sl->dev->stats.rx_bytes += cf.can_dlc; | 203 | sl->dev->stats.rx_bytes += cf.can_dlc; |
diff --git a/drivers/net/e1000e/82571.c b/drivers/net/e1000e/82571.c index 480f2592f8a5..536b3a55c45f 100644 --- a/drivers/net/e1000e/82571.c +++ b/drivers/net/e1000e/82571.c | |||
| @@ -2085,7 +2085,8 @@ struct e1000_info e1000_82574_info = { | |||
| 2085 | | FLAG_HAS_AMT | 2085 | | FLAG_HAS_AMT |
| 2086 | | FLAG_HAS_CTRLEXT_ON_LOAD, | 2086 | | FLAG_HAS_CTRLEXT_ON_LOAD, |
| 2087 | .flags2 = FLAG2_CHECK_PHY_HANG | 2087 | .flags2 = FLAG2_CHECK_PHY_HANG |
| 2088 | | FLAG2_DISABLE_ASPM_L0S, | 2088 | | FLAG2_DISABLE_ASPM_L0S |
| 2089 | | FLAG2_NO_DISABLE_RX, | ||
| 2089 | .pba = 32, | 2090 | .pba = 32, |
| 2090 | .max_hw_frame_size = DEFAULT_JUMBO, | 2091 | .max_hw_frame_size = DEFAULT_JUMBO, |
| 2091 | .get_variants = e1000_get_variants_82571, | 2092 | .get_variants = e1000_get_variants_82571, |
| @@ -2104,7 +2105,8 @@ struct e1000_info e1000_82583_info = { | |||
| 2104 | | FLAG_HAS_AMT | 2105 | | FLAG_HAS_AMT |
| 2105 | | FLAG_HAS_JUMBO_FRAMES | 2106 | | FLAG_HAS_JUMBO_FRAMES |
| 2106 | | FLAG_HAS_CTRLEXT_ON_LOAD, | 2107 | | FLAG_HAS_CTRLEXT_ON_LOAD, |
| 2107 | .flags2 = FLAG2_DISABLE_ASPM_L0S, | 2108 | .flags2 = FLAG2_DISABLE_ASPM_L0S |
| 2109 | | FLAG2_NO_DISABLE_RX, | ||
| 2108 | .pba = 32, | 2110 | .pba = 32, |
| 2109 | .max_hw_frame_size = DEFAULT_JUMBO, | 2111 | .max_hw_frame_size = DEFAULT_JUMBO, |
| 2110 | .get_variants = e1000_get_variants_82571, | 2112 | .get_variants = e1000_get_variants_82571, |
diff --git a/drivers/net/e1000e/e1000.h b/drivers/net/e1000e/e1000.h index 638d175792cf..35916f485028 100644 --- a/drivers/net/e1000e/e1000.h +++ b/drivers/net/e1000e/e1000.h | |||
| @@ -453,6 +453,7 @@ struct e1000_info { | |||
| 453 | #define FLAG2_DISABLE_ASPM_L0S (1 << 7) | 453 | #define FLAG2_DISABLE_ASPM_L0S (1 << 7) |
| 454 | #define FLAG2_DISABLE_AIM (1 << 8) | 454 | #define FLAG2_DISABLE_AIM (1 << 8) |
| 455 | #define FLAG2_CHECK_PHY_HANG (1 << 9) | 455 | #define FLAG2_CHECK_PHY_HANG (1 << 9) |
| 456 | #define FLAG2_NO_DISABLE_RX (1 << 10) | ||
| 456 | 457 | ||
| 457 | #define E1000_RX_DESC_PS(R, i) \ | 458 | #define E1000_RX_DESC_PS(R, i) \ |
| 458 | (&(((union e1000_rx_desc_packet_split *)((R).desc))[i])) | 459 | (&(((union e1000_rx_desc_packet_split *)((R).desc))[i])) |
diff --git a/drivers/net/e1000e/ethtool.c b/drivers/net/e1000e/ethtool.c index 06d88f316dce..6a0526a59a8a 100644 --- a/drivers/net/e1000e/ethtool.c +++ b/drivers/net/e1000e/ethtool.c | |||
| @@ -1206,7 +1206,8 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter) | |||
| 1206 | rx_ring->next_to_clean = 0; | 1206 | rx_ring->next_to_clean = 0; |
| 1207 | 1207 | ||
| 1208 | rctl = er32(RCTL); | 1208 | rctl = er32(RCTL); |
| 1209 | ew32(RCTL, rctl & ~E1000_RCTL_EN); | 1209 | if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX)) |
| 1210 | ew32(RCTL, rctl & ~E1000_RCTL_EN); | ||
| 1210 | ew32(RDBAL, ((u64) rx_ring->dma & 0xFFFFFFFF)); | 1211 | ew32(RDBAL, ((u64) rx_ring->dma & 0xFFFFFFFF)); |
| 1211 | ew32(RDBAH, ((u64) rx_ring->dma >> 32)); | 1212 | ew32(RDBAH, ((u64) rx_ring->dma >> 32)); |
| 1212 | ew32(RDLEN, rx_ring->size); | 1213 | ew32(RDLEN, rx_ring->size); |
diff --git a/drivers/net/e1000e/lib.c b/drivers/net/e1000e/lib.c index 7898a67d6505..0893ab107adf 100644 --- a/drivers/net/e1000e/lib.c +++ b/drivers/net/e1000e/lib.c | |||
| @@ -190,7 +190,8 @@ s32 e1000_check_alt_mac_addr_generic(struct e1000_hw *hw) | |||
| 190 | /* Check for LOM (vs. NIC) or one of two valid mezzanine cards */ | 190 | /* Check for LOM (vs. NIC) or one of two valid mezzanine cards */ |
| 191 | if (!((nvm_data & NVM_COMPAT_LOM) || | 191 | if (!((nvm_data & NVM_COMPAT_LOM) || |
| 192 | (hw->adapter->pdev->device == E1000_DEV_ID_82571EB_SERDES_DUAL) || | 192 | (hw->adapter->pdev->device == E1000_DEV_ID_82571EB_SERDES_DUAL) || |
| 193 | (hw->adapter->pdev->device == E1000_DEV_ID_82571EB_SERDES_QUAD))) | 193 | (hw->adapter->pdev->device == E1000_DEV_ID_82571EB_SERDES_QUAD) || |
| 194 | (hw->adapter->pdev->device == E1000_DEV_ID_82571EB_SERDES))) | ||
| 194 | goto out; | 195 | goto out; |
| 195 | 196 | ||
| 196 | ret_val = e1000_read_nvm(hw, NVM_ALT_MAC_ADDR_PTR, 1, | 197 | ret_val = e1000_read_nvm(hw, NVM_ALT_MAC_ADDR_PTR, 1, |
| @@ -200,10 +201,10 @@ s32 e1000_check_alt_mac_addr_generic(struct e1000_hw *hw) | |||
| 200 | goto out; | 201 | goto out; |
| 201 | } | 202 | } |
| 202 | 203 | ||
| 203 | if (nvm_alt_mac_addr_offset == 0xFFFF) { | 204 | if ((nvm_alt_mac_addr_offset == 0xFFFF) || |
| 205 | (nvm_alt_mac_addr_offset == 0x0000)) | ||
| 204 | /* There is no Alternate MAC Address */ | 206 | /* There is no Alternate MAC Address */ |
| 205 | goto out; | 207 | goto out; |
| 206 | } | ||
| 207 | 208 | ||
| 208 | if (hw->bus.func == E1000_FUNC_1) | 209 | if (hw->bus.func == E1000_FUNC_1) |
| 209 | nvm_alt_mac_addr_offset += E1000_ALT_MAC_ADDRESS_OFFSET_LAN1; | 210 | nvm_alt_mac_addr_offset += E1000_ALT_MAC_ADDRESS_OFFSET_LAN1; |
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c index ab4be80f7ab5..362f70382cdd 100644 --- a/drivers/net/e1000e/netdev.c +++ b/drivers/net/e1000e/netdev.c | |||
| @@ -56,7 +56,7 @@ | |||
| 56 | 56 | ||
| 57 | #define DRV_EXTRAVERSION "-k" | 57 | #define DRV_EXTRAVERSION "-k" |
| 58 | 58 | ||
| 59 | #define DRV_VERSION "1.3.16" DRV_EXTRAVERSION | 59 | #define DRV_VERSION "1.4.4" DRV_EXTRAVERSION |
| 60 | char e1000e_driver_name[] = "e1000e"; | 60 | char e1000e_driver_name[] = "e1000e"; |
| 61 | const char e1000e_driver_version[] = DRV_VERSION; | 61 | const char e1000e_driver_version[] = DRV_VERSION; |
| 62 | 62 | ||
| @@ -2915,7 +2915,8 @@ static void e1000_configure_rx(struct e1000_adapter *adapter) | |||
| 2915 | 2915 | ||
| 2916 | /* disable receives while setting up the descriptors */ | 2916 | /* disable receives while setting up the descriptors */ |
| 2917 | rctl = er32(RCTL); | 2917 | rctl = er32(RCTL); |
| 2918 | ew32(RCTL, rctl & ~E1000_RCTL_EN); | 2918 | if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX)) |
| 2919 | ew32(RCTL, rctl & ~E1000_RCTL_EN); | ||
| 2919 | e1e_flush(); | 2920 | e1e_flush(); |
| 2920 | usleep_range(10000, 20000); | 2921 | usleep_range(10000, 20000); |
| 2921 | 2922 | ||
| @@ -3394,7 +3395,8 @@ void e1000e_down(struct e1000_adapter *adapter) | |||
| 3394 | 3395 | ||
| 3395 | /* disable receives in the hardware */ | 3396 | /* disable receives in the hardware */ |
| 3396 | rctl = er32(RCTL); | 3397 | rctl = er32(RCTL); |
| 3397 | ew32(RCTL, rctl & ~E1000_RCTL_EN); | 3398 | if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX)) |
| 3399 | ew32(RCTL, rctl & ~E1000_RCTL_EN); | ||
| 3398 | /* flush and sleep below */ | 3400 | /* flush and sleep below */ |
| 3399 | 3401 | ||
| 3400 | netif_stop_queue(netdev); | 3402 | netif_stop_queue(netdev); |
| @@ -3403,6 +3405,7 @@ void e1000e_down(struct e1000_adapter *adapter) | |||
| 3403 | tctl = er32(TCTL); | 3405 | tctl = er32(TCTL); |
| 3404 | tctl &= ~E1000_TCTL_EN; | 3406 | tctl &= ~E1000_TCTL_EN; |
| 3405 | ew32(TCTL, tctl); | 3407 | ew32(TCTL, tctl); |
| 3408 | |||
| 3406 | /* flush both disables and wait for them to finish */ | 3409 | /* flush both disables and wait for them to finish */ |
| 3407 | e1e_flush(); | 3410 | e1e_flush(); |
| 3408 | usleep_range(10000, 20000); | 3411 | usleep_range(10000, 20000); |
diff --git a/drivers/net/gianfar_ptp.c b/drivers/net/gianfar_ptp.c index 1c97861596f0..f67b8aebc89c 100644 --- a/drivers/net/gianfar_ptp.c +++ b/drivers/net/gianfar_ptp.c | |||
| @@ -193,14 +193,9 @@ static void set_alarm(struct etsects *etsects) | |||
| 193 | /* Caller must hold etsects->lock. */ | 193 | /* Caller must hold etsects->lock. */ |
| 194 | static void set_fipers(struct etsects *etsects) | 194 | static void set_fipers(struct etsects *etsects) |
| 195 | { | 195 | { |
| 196 | u32 tmr_ctrl = gfar_read(&etsects->regs->tmr_ctrl); | 196 | set_alarm(etsects); |
| 197 | |||
| 198 | gfar_write(&etsects->regs->tmr_ctrl, tmr_ctrl & (~TE)); | ||
| 199 | gfar_write(&etsects->regs->tmr_prsc, etsects->tmr_prsc); | ||
| 200 | gfar_write(&etsects->regs->tmr_fiper1, etsects->tmr_fiper1); | 197 | gfar_write(&etsects->regs->tmr_fiper1, etsects->tmr_fiper1); |
| 201 | gfar_write(&etsects->regs->tmr_fiper2, etsects->tmr_fiper2); | 198 | gfar_write(&etsects->regs->tmr_fiper2, etsects->tmr_fiper2); |
| 202 | set_alarm(etsects); | ||
| 203 | gfar_write(&etsects->regs->tmr_ctrl, tmr_ctrl|TE); | ||
| 204 | } | 199 | } |
| 205 | 200 | ||
| 206 | /* | 201 | /* |
| @@ -511,7 +506,7 @@ static int gianfar_ptp_probe(struct platform_device *dev) | |||
| 511 | gfar_write(&etsects->regs->tmr_fiper1, etsects->tmr_fiper1); | 506 | gfar_write(&etsects->regs->tmr_fiper1, etsects->tmr_fiper1); |
| 512 | gfar_write(&etsects->regs->tmr_fiper2, etsects->tmr_fiper2); | 507 | gfar_write(&etsects->regs->tmr_fiper2, etsects->tmr_fiper2); |
| 513 | set_alarm(etsects); | 508 | set_alarm(etsects); |
| 514 | gfar_write(&etsects->regs->tmr_ctrl, tmr_ctrl|FS|RTPE|TE); | 509 | gfar_write(&etsects->regs->tmr_ctrl, tmr_ctrl|FS|RTPE|TE|FRD); |
| 515 | 510 | ||
| 516 | spin_unlock_irqrestore(&etsects->lock, flags); | 511 | spin_unlock_irqrestore(&etsects->lock, flags); |
| 517 | 512 | ||
diff --git a/drivers/net/irda/sh_irda.c b/drivers/net/irda/sh_irda.c index 4488bd581eca..82660672dcd9 100644 --- a/drivers/net/irda/sh_irda.c +++ b/drivers/net/irda/sh_irda.c | |||
| @@ -22,6 +22,8 @@ | |||
| 22 | * - DMA transfer support | 22 | * - DMA transfer support |
| 23 | * - FIFO mode support | 23 | * - FIFO mode support |
| 24 | */ | 24 | */ |
| 25 | #include <linux/io.h> | ||
| 26 | #include <linux/interrupt.h> | ||
| 25 | #include <linux/module.h> | 27 | #include <linux/module.h> |
| 26 | #include <linux/platform_device.h> | 28 | #include <linux/platform_device.h> |
| 27 | #include <linux/clk.h> | 29 | #include <linux/clk.h> |
diff --git a/drivers/net/irda/sh_sir.c b/drivers/net/irda/sh_sir.c index 52a7c86af663..ed7d7d62bf68 100644 --- a/drivers/net/irda/sh_sir.c +++ b/drivers/net/irda/sh_sir.c | |||
| @@ -12,6 +12,8 @@ | |||
| 12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
| 13 | */ | 13 | */ |
| 14 | 14 | ||
| 15 | #include <linux/io.h> | ||
| 16 | #include <linux/interrupt.h> | ||
| 15 | #include <linux/module.h> | 17 | #include <linux/module.h> |
| 16 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
| 17 | #include <linux/slab.h> | 19 | #include <linux/slab.h> |
| @@ -511,7 +513,7 @@ static void sh_sir_tx(struct sh_sir_self *self, int phase) | |||
| 511 | 513 | ||
| 512 | static int sh_sir_read_data(struct sh_sir_self *self) | 514 | static int sh_sir_read_data(struct sh_sir_self *self) |
| 513 | { | 515 | { |
| 514 | u16 val; | 516 | u16 val = 0; |
| 515 | int timeout = 1024; | 517 | int timeout = 1024; |
| 516 | 518 | ||
| 517 | while (timeout--) { | 519 | while (timeout--) { |
diff --git a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c index 8b3090dc4bcd..80b6f36a8074 100644 --- a/drivers/net/pcnet32.c +++ b/drivers/net/pcnet32.c | |||
| @@ -82,7 +82,7 @@ static int cards_found; | |||
| 82 | /* | 82 | /* |
| 83 | * VLB I/O addresses | 83 | * VLB I/O addresses |
| 84 | */ | 84 | */ |
| 85 | static unsigned int pcnet32_portlist[] __initdata = | 85 | static unsigned int pcnet32_portlist[] = |
| 86 | { 0x300, 0x320, 0x340, 0x360, 0 }; | 86 | { 0x300, 0x320, 0x340, 0x360, 0 }; |
| 87 | 87 | ||
| 88 | static int pcnet32_debug; | 88 | static int pcnet32_debug; |
diff --git a/drivers/net/phy/dp83640.c b/drivers/net/phy/dp83640.c index 2cd8dc5847b4..cb6e0b486b1e 100644 --- a/drivers/net/phy/dp83640.c +++ b/drivers/net/phy/dp83640.c | |||
| @@ -34,8 +34,7 @@ | |||
| 34 | #define PAGESEL 0x13 | 34 | #define PAGESEL 0x13 |
| 35 | #define LAYER4 0x02 | 35 | #define LAYER4 0x02 |
| 36 | #define LAYER2 0x01 | 36 | #define LAYER2 0x01 |
| 37 | #define MAX_RXTS 4 | 37 | #define MAX_RXTS 64 |
| 38 | #define MAX_TXTS 4 | ||
| 39 | #define N_EXT_TS 1 | 38 | #define N_EXT_TS 1 |
| 40 | #define PSF_PTPVER 2 | 39 | #define PSF_PTPVER 2 |
| 41 | #define PSF_EVNT 0x4000 | 40 | #define PSF_EVNT 0x4000 |
| @@ -218,7 +217,7 @@ static void phy2rxts(struct phy_rxts *p, struct rxts *rxts) | |||
| 218 | rxts->seqid = p->seqid; | 217 | rxts->seqid = p->seqid; |
| 219 | rxts->msgtype = (p->msgtype >> 12) & 0xf; | 218 | rxts->msgtype = (p->msgtype >> 12) & 0xf; |
| 220 | rxts->hash = p->msgtype & 0x0fff; | 219 | rxts->hash = p->msgtype & 0x0fff; |
| 221 | rxts->tmo = jiffies + HZ; | 220 | rxts->tmo = jiffies + 2; |
| 222 | } | 221 | } |
| 223 | 222 | ||
| 224 | static u64 phy2txts(struct phy_txts *p) | 223 | static u64 phy2txts(struct phy_txts *p) |
diff --git a/drivers/net/slip.c b/drivers/net/slip.c index f11b3f3df24f..4c617534f937 100644 --- a/drivers/net/slip.c +++ b/drivers/net/slip.c | |||
| @@ -367,7 +367,7 @@ static void sl_bump(struct slip *sl) | |||
| 367 | memcpy(skb_put(skb, count), sl->rbuff, count); | 367 | memcpy(skb_put(skb, count), sl->rbuff, count); |
| 368 | skb_reset_mac_header(skb); | 368 | skb_reset_mac_header(skb); |
| 369 | skb->protocol = htons(ETH_P_IP); | 369 | skb->protocol = htons(ETH_P_IP); |
| 370 | netif_rx(skb); | 370 | netif_rx_ni(skb); |
| 371 | dev->stats.rx_packets++; | 371 | dev->stats.rx_packets++; |
| 372 | } | 372 | } |
| 373 | 373 | ||
diff --git a/drivers/net/usb/rtl8150.c b/drivers/net/usb/rtl8150.c index 041fb7d43c4f..ef3b236b5145 100644 --- a/drivers/net/usb/rtl8150.c +++ b/drivers/net/usb/rtl8150.c | |||
| @@ -977,7 +977,6 @@ static void rtl8150_disconnect(struct usb_interface *intf) | |||
| 977 | usb_set_intfdata(intf, NULL); | 977 | usb_set_intfdata(intf, NULL); |
| 978 | if (dev) { | 978 | if (dev) { |
| 979 | set_bit(RTL8150_UNPLUG, &dev->flags); | 979 | set_bit(RTL8150_UNPLUG, &dev->flags); |
| 980 | tasklet_disable(&dev->tl); | ||
| 981 | tasklet_kill(&dev->tl); | 980 | tasklet_kill(&dev->tl); |
| 982 | unregister_netdev(dev->netdev); | 981 | unregister_netdev(dev->netdev); |
| 983 | unlink_all_urbs(dev); | 982 | unlink_all_urbs(dev); |
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c index f54dff44ed50..c3119a6caace 100644 --- a/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c | |||
| @@ -1735,6 +1735,8 @@ ath5k_beacon_setup(struct ath5k_hw *ah, struct ath5k_buf *bf) | |||
| 1735 | 1735 | ||
| 1736 | if (dma_mapping_error(ah->dev, bf->skbaddr)) { | 1736 | if (dma_mapping_error(ah->dev, bf->skbaddr)) { |
| 1737 | ATH5K_ERR(ah, "beacon DMA mapping failed\n"); | 1737 | ATH5K_ERR(ah, "beacon DMA mapping failed\n"); |
| 1738 | dev_kfree_skb_any(skb); | ||
| 1739 | bf->skb = NULL; | ||
| 1738 | return -EIO; | 1740 | return -EIO; |
| 1739 | } | 1741 | } |
| 1740 | 1742 | ||
| @@ -1819,8 +1821,6 @@ ath5k_beacon_update(struct ieee80211_hw *hw, struct ieee80211_vif *vif) | |||
| 1819 | ath5k_txbuf_free_skb(ah, avf->bbuf); | 1821 | ath5k_txbuf_free_skb(ah, avf->bbuf); |
| 1820 | avf->bbuf->skb = skb; | 1822 | avf->bbuf->skb = skb; |
| 1821 | ret = ath5k_beacon_setup(ah, avf->bbuf); | 1823 | ret = ath5k_beacon_setup(ah, avf->bbuf); |
| 1822 | if (ret) | ||
| 1823 | avf->bbuf->skb = NULL; | ||
| 1824 | out: | 1824 | out: |
| 1825 | return ret; | 1825 | return ret; |
| 1826 | } | 1826 | } |
| @@ -1840,6 +1840,7 @@ ath5k_beacon_send(struct ath5k_hw *ah) | |||
| 1840 | struct ath5k_vif *avf; | 1840 | struct ath5k_vif *avf; |
| 1841 | struct ath5k_buf *bf; | 1841 | struct ath5k_buf *bf; |
| 1842 | struct sk_buff *skb; | 1842 | struct sk_buff *skb; |
| 1843 | int err; | ||
| 1843 | 1844 | ||
| 1844 | ATH5K_DBG_UNLIMIT(ah, ATH5K_DEBUG_BEACON, "in beacon_send\n"); | 1845 | ATH5K_DBG_UNLIMIT(ah, ATH5K_DEBUG_BEACON, "in beacon_send\n"); |
| 1845 | 1846 | ||
| @@ -1888,11 +1889,6 @@ ath5k_beacon_send(struct ath5k_hw *ah) | |||
| 1888 | 1889 | ||
| 1889 | avf = (void *)vif->drv_priv; | 1890 | avf = (void *)vif->drv_priv; |
| 1890 | bf = avf->bbuf; | 1891 | bf = avf->bbuf; |
| 1891 | if (unlikely(bf->skb == NULL || ah->opmode == NL80211_IFTYPE_STATION || | ||
| 1892 | ah->opmode == NL80211_IFTYPE_MONITOR)) { | ||
| 1893 | ATH5K_WARN(ah, "bf=%p bf_skb=%p\n", bf, bf ? bf->skb : NULL); | ||
| 1894 | return; | ||
| 1895 | } | ||
| 1896 | 1892 | ||
| 1897 | /* | 1893 | /* |
| 1898 | * Stop any current dma and put the new frame on the queue. | 1894 | * Stop any current dma and put the new frame on the queue. |
| @@ -1906,8 +1902,17 @@ ath5k_beacon_send(struct ath5k_hw *ah) | |||
| 1906 | 1902 | ||
| 1907 | /* refresh the beacon for AP or MESH mode */ | 1903 | /* refresh the beacon for AP or MESH mode */ |
| 1908 | if (ah->opmode == NL80211_IFTYPE_AP || | 1904 | if (ah->opmode == NL80211_IFTYPE_AP || |
| 1909 | ah->opmode == NL80211_IFTYPE_MESH_POINT) | 1905 | ah->opmode == NL80211_IFTYPE_MESH_POINT) { |
| 1910 | ath5k_beacon_update(ah->hw, vif); | 1906 | err = ath5k_beacon_update(ah->hw, vif); |
| 1907 | if (err) | ||
| 1908 | return; | ||
| 1909 | } | ||
| 1910 | |||
| 1911 | if (unlikely(bf->skb == NULL || ah->opmode == NL80211_IFTYPE_STATION || | ||
| 1912 | ah->opmode == NL80211_IFTYPE_MONITOR)) { | ||
| 1913 | ATH5K_WARN(ah, "bf=%p bf_skb=%p\n", bf, bf->skb); | ||
| 1914 | return; | ||
| 1915 | } | ||
| 1911 | 1916 | ||
| 1912 | trace_ath5k_tx(ah, bf->skb, &ah->txqs[ah->bhalq]); | 1917 | trace_ath5k_tx(ah, bf->skb, &ah->txqs[ah->bhalq]); |
| 1913 | 1918 | ||
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c index d109c25417f4..c34bef1bf2b0 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | |||
| @@ -307,7 +307,7 @@ static const struct ar9300_eeprom ar9300_default = { | |||
| 307 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, | 307 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, |
| 308 | { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 1) } }, | 308 | { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 1) } }, |
| 309 | 309 | ||
| 310 | { { CTL(60, 1), CTL(60, 0), CTL(0, 0), CTL(0, 0) } }, | 310 | { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 0) } }, |
| 311 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, | 311 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, |
| 312 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, | 312 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, |
| 313 | 313 | ||
| @@ -884,7 +884,7 @@ static const struct ar9300_eeprom ar9300_x113 = { | |||
| 884 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, | 884 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, |
| 885 | { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 1) } }, | 885 | { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 1) } }, |
| 886 | 886 | ||
| 887 | { { CTL(60, 1), CTL(60, 0), CTL(0, 0), CTL(0, 0) } }, | 887 | { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 0) } }, |
| 888 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, | 888 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, |
| 889 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, | 889 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, |
| 890 | 890 | ||
| @@ -2040,7 +2040,7 @@ static const struct ar9300_eeprom ar9300_x112 = { | |||
| 2040 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, | 2040 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, |
| 2041 | { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 1) } }, | 2041 | { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 1) } }, |
| 2042 | 2042 | ||
| 2043 | { { CTL(60, 1), CTL(60, 0), CTL(0, 0), CTL(0, 0) } }, | 2043 | { { CTL(60, 1), CTL(60, 0), CTL(60, 0), CTL(60, 0) } }, |
| 2044 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, | 2044 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, |
| 2045 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, | 2045 | { { CTL(60, 0), CTL(60, 1), CTL(60, 0), CTL(60, 0) } }, |
| 2046 | 2046 | ||
| @@ -3734,7 +3734,7 @@ static void ar9003_hw_internal_regulator_apply(struct ath_hw *ah) | |||
| 3734 | } | 3734 | } |
| 3735 | } else { | 3735 | } else { |
| 3736 | reg_pmu_set = (5 << 1) | (7 << 4) | | 3736 | reg_pmu_set = (5 << 1) | (7 << 4) | |
| 3737 | (1 << 8) | (2 << 14) | | 3737 | (2 << 8) | (2 << 14) | |
| 3738 | (6 << 17) | (1 << 20) | | 3738 | (6 << 17) | (1 << 20) | |
| 3739 | (3 << 24) | (1 << 28); | 3739 | (3 << 24) | (1 << 28); |
| 3740 | } | 3740 | } |
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_phy.h b/drivers/net/wireless/ath/ath9k/ar9003_phy.h index 6de3f0bc18e6..5c590429f120 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_phy.h +++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.h | |||
| @@ -850,7 +850,7 @@ | |||
| 850 | #define AR_PHY_TPC_11_B1 (AR_SM1_BASE + 0x220) | 850 | #define AR_PHY_TPC_11_B1 (AR_SM1_BASE + 0x220) |
| 851 | #define AR_PHY_PDADC_TAB_1 (AR_SM1_BASE + 0x240) | 851 | #define AR_PHY_PDADC_TAB_1 (AR_SM1_BASE + 0x240) |
| 852 | #define AR_PHY_TX_IQCAL_STATUS_B1 (AR_SM1_BASE + 0x48c) | 852 | #define AR_PHY_TX_IQCAL_STATUS_B1 (AR_SM1_BASE + 0x48c) |
| 853 | #define AR_PHY_TX_IQCAL_CORR_COEFF_B1(_i) (AR_SM_BASE + 0x450 + ((_i) << 2)) | 853 | #define AR_PHY_TX_IQCAL_CORR_COEFF_B1(_i) (AR_SM1_BASE + 0x450 + ((_i) << 2)) |
| 854 | 854 | ||
| 855 | /* | 855 | /* |
| 856 | * Channel 2 Register Map | 856 | * Channel 2 Register Map |
diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c index 83cba22ac6e8..481e534534eb 100644 --- a/drivers/net/wireless/b43/dma.c +++ b/drivers/net/wireless/b43/dma.c | |||
| @@ -795,9 +795,23 @@ static u64 supported_dma_mask(struct b43_wldev *dev) | |||
| 795 | u32 tmp; | 795 | u32 tmp; |
| 796 | u16 mmio_base; | 796 | u16 mmio_base; |
| 797 | 797 | ||
| 798 | tmp = b43_read32(dev, SSB_TMSHIGH); | 798 | switch (dev->dev->bus_type) { |
| 799 | if (tmp & SSB_TMSHIGH_DMA64) | 799 | #ifdef CONFIG_B43_BCMA |
| 800 | return DMA_BIT_MASK(64); | 800 | case B43_BUS_BCMA: |
| 801 | tmp = bcma_aread32(dev->dev->bdev, BCMA_IOST); | ||
| 802 | if (tmp & BCMA_IOST_DMA64) | ||
| 803 | return DMA_BIT_MASK(64); | ||
| 804 | break; | ||
| 805 | #endif | ||
| 806 | #ifdef CONFIG_B43_SSB | ||
| 807 | case B43_BUS_SSB: | ||
| 808 | tmp = ssb_read32(dev->dev->sdev, SSB_TMSHIGH); | ||
| 809 | if (tmp & SSB_TMSHIGH_DMA64) | ||
| 810 | return DMA_BIT_MASK(64); | ||
| 811 | break; | ||
| 812 | #endif | ||
| 813 | } | ||
| 814 | |||
| 801 | mmio_base = b43_dmacontroller_base(0, 0); | 815 | mmio_base = b43_dmacontroller_base(0, 0); |
| 802 | b43_write32(dev, mmio_base + B43_DMA32_TXCTL, B43_DMA32_TXADDREXT_MASK); | 816 | b43_write32(dev, mmio_base + B43_DMA32_TXCTL, B43_DMA32_TXADDREXT_MASK); |
| 803 | tmp = b43_read32(dev, mmio_base + B43_DMA32_TXCTL); | 817 | tmp = b43_read32(dev, mmio_base + B43_DMA32_TXCTL); |
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c index 507559361d87..939563162fb3 100644 --- a/drivers/net/wireless/rt2x00/rt2800usb.c +++ b/drivers/net/wireless/rt2x00/rt2800usb.c | |||
| @@ -921,6 +921,8 @@ static struct usb_device_id rt2800usb_device_table[] = { | |||
| 921 | { USB_DEVICE(0x07d1, 0x3c16) }, | 921 | { USB_DEVICE(0x07d1, 0x3c16) }, |
| 922 | /* Draytek */ | 922 | /* Draytek */ |
| 923 | { USB_DEVICE(0x07fa, 0x7712) }, | 923 | { USB_DEVICE(0x07fa, 0x7712) }, |
| 924 | /* DVICO */ | ||
| 925 | { USB_DEVICE(0x0fe9, 0xb307) }, | ||
| 924 | /* Edimax */ | 926 | /* Edimax */ |
| 925 | { USB_DEVICE(0x7392, 0x7711) }, | 927 | { USB_DEVICE(0x7392, 0x7711) }, |
| 926 | { USB_DEVICE(0x7392, 0x7717) }, | 928 | { USB_DEVICE(0x7392, 0x7717) }, |
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index 6a93939f44e8..0baeb894f093 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c | |||
| @@ -2420,6 +2420,7 @@ static struct usb_device_id rt73usb_device_table[] = { | |||
| 2420 | /* Buffalo */ | 2420 | /* Buffalo */ |
| 2421 | { USB_DEVICE(0x0411, 0x00d8) }, | 2421 | { USB_DEVICE(0x0411, 0x00d8) }, |
| 2422 | { USB_DEVICE(0x0411, 0x00d9) }, | 2422 | { USB_DEVICE(0x0411, 0x00d9) }, |
| 2423 | { USB_DEVICE(0x0411, 0x00e6) }, | ||
| 2423 | { USB_DEVICE(0x0411, 0x00f4) }, | 2424 | { USB_DEVICE(0x0411, 0x00f4) }, |
| 2424 | { USB_DEVICE(0x0411, 0x0116) }, | 2425 | { USB_DEVICE(0x0411, 0x0116) }, |
| 2425 | { USB_DEVICE(0x0411, 0x0119) }, | 2426 | { USB_DEVICE(0x0411, 0x0119) }, |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c index 942f7a3969a7..ef63c0df006a 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c | |||
| @@ -281,6 +281,8 @@ static struct usb_device_id rtl8192c_usb_ids[] = { | |||
| 281 | {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817d, rtl92cu_hal_cfg)}, | 281 | {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817d, rtl92cu_hal_cfg)}, |
| 282 | /* 8188CE-VAU USB minCard (b/g mode only) */ | 282 | /* 8188CE-VAU USB minCard (b/g mode only) */ |
| 283 | {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817e, rtl92cu_hal_cfg)}, | 283 | {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817e, rtl92cu_hal_cfg)}, |
| 284 | /* 8188RU in Alfa AWUS036NHR */ | ||
| 285 | {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817f, rtl92cu_hal_cfg)}, | ||
| 284 | /* 8188 Combo for BC4 */ | 286 | /* 8188 Combo for BC4 */ |
| 285 | {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8754, rtl92cu_hal_cfg)}, | 287 | {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8754, rtl92cu_hal_cfg)}, |
| 286 | 288 | ||
| @@ -303,20 +305,23 @@ static struct usb_device_id rtl8192c_usb_ids[] = { | |||
| 303 | {RTL_USB_DEVICE(0x0eb0, 0x9071, rtl92cu_hal_cfg)}, /*NO Brand - Etop*/ | 305 | {RTL_USB_DEVICE(0x0eb0, 0x9071, rtl92cu_hal_cfg)}, /*NO Brand - Etop*/ |
| 304 | /* HP - Lite-On ,8188CUS Slim Combo */ | 306 | /* HP - Lite-On ,8188CUS Slim Combo */ |
| 305 | {RTL_USB_DEVICE(0x103c, 0x1629, rtl92cu_hal_cfg)}, | 307 | {RTL_USB_DEVICE(0x103c, 0x1629, rtl92cu_hal_cfg)}, |
| 308 | {RTL_USB_DEVICE(0x13d3, 0x3357, rtl92cu_hal_cfg)}, /* AzureWave */ | ||
| 306 | {RTL_USB_DEVICE(0x2001, 0x3308, rtl92cu_hal_cfg)}, /*D-Link - Alpha*/ | 309 | {RTL_USB_DEVICE(0x2001, 0x3308, rtl92cu_hal_cfg)}, /*D-Link - Alpha*/ |
| 307 | {RTL_USB_DEVICE(0x2019, 0xab2a, rtl92cu_hal_cfg)}, /*Planex - Abocom*/ | 310 | {RTL_USB_DEVICE(0x2019, 0xab2a, rtl92cu_hal_cfg)}, /*Planex - Abocom*/ |
| 308 | {RTL_USB_DEVICE(0x2019, 0xed17, rtl92cu_hal_cfg)}, /*PCI - Edimax*/ | 311 | {RTL_USB_DEVICE(0x2019, 0xed17, rtl92cu_hal_cfg)}, /*PCI - Edimax*/ |
| 309 | {RTL_USB_DEVICE(0x20f4, 0x648b, rtl92cu_hal_cfg)}, /*TRENDnet - Cameo*/ | 312 | {RTL_USB_DEVICE(0x20f4, 0x648b, rtl92cu_hal_cfg)}, /*TRENDnet - Cameo*/ |
| 310 | {RTL_USB_DEVICE(0x7392, 0x7811, rtl92cu_hal_cfg)}, /*Edimax - Edimax*/ | 313 | {RTL_USB_DEVICE(0x7392, 0x7811, rtl92cu_hal_cfg)}, /*Edimax - Edimax*/ |
| 311 | {RTL_USB_DEVICE(0x3358, 0x13d3, rtl92cu_hal_cfg)}, /*Azwave 8188CE-VAU*/ | 314 | {RTL_USB_DEVICE(0x13d3, 0x3358, rtl92cu_hal_cfg)}, /*Azwave 8188CE-VAU*/ |
| 312 | /* Russian customer -Azwave (8188CE-VAU b/g mode only) */ | 315 | /* Russian customer -Azwave (8188CE-VAU b/g mode only) */ |
| 313 | {RTL_USB_DEVICE(0x3359, 0x13d3, rtl92cu_hal_cfg)}, | 316 | {RTL_USB_DEVICE(0x13d3, 0x3359, rtl92cu_hal_cfg)}, |
| 317 | {RTL_USB_DEVICE(0x4855, 0x0090, rtl92cu_hal_cfg)}, /* Feixun */ | ||
| 318 | {RTL_USB_DEVICE(0x4855, 0x0091, rtl92cu_hal_cfg)}, /* NetweeN-Feixun */ | ||
| 319 | {RTL_USB_DEVICE(0x9846, 0x9041, rtl92cu_hal_cfg)}, /* Netgear Cameo */ | ||
| 314 | 320 | ||
| 315 | /****** 8192CU ********/ | 321 | /****** 8192CU ********/ |
| 316 | {RTL_USB_DEVICE(0x0586, 0x341f, rtl92cu_hal_cfg)}, /*Zyxel -Abocom*/ | 322 | {RTL_USB_DEVICE(0x0586, 0x341f, rtl92cu_hal_cfg)}, /*Zyxel -Abocom*/ |
| 317 | {RTL_USB_DEVICE(0x07aa, 0x0056, rtl92cu_hal_cfg)}, /*ATKK-Gemtek*/ | 323 | {RTL_USB_DEVICE(0x07aa, 0x0056, rtl92cu_hal_cfg)}, /*ATKK-Gemtek*/ |
| 318 | {RTL_USB_DEVICE(0x07b8, 0x8178, rtl92cu_hal_cfg)}, /*Funai -Abocom*/ | 324 | {RTL_USB_DEVICE(0x07b8, 0x8178, rtl92cu_hal_cfg)}, /*Funai -Abocom*/ |
| 319 | {RTL_USB_DEVICE(0x07b8, 0x8178, rtl92cu_hal_cfg)}, /*Abocom -Abocom*/ | ||
| 320 | {RTL_USB_DEVICE(0x2001, 0x3307, rtl92cu_hal_cfg)}, /*D-Link-Cameo*/ | 325 | {RTL_USB_DEVICE(0x2001, 0x3307, rtl92cu_hal_cfg)}, /*D-Link-Cameo*/ |
| 321 | {RTL_USB_DEVICE(0x2001, 0x3309, rtl92cu_hal_cfg)}, /*D-Link-Alpha*/ | 326 | {RTL_USB_DEVICE(0x2001, 0x3309, rtl92cu_hal_cfg)}, /*D-Link-Alpha*/ |
| 322 | {RTL_USB_DEVICE(0x2001, 0x330a, rtl92cu_hal_cfg)}, /*D-Link-Alpha*/ | 327 | {RTL_USB_DEVICE(0x2001, 0x330a, rtl92cu_hal_cfg)}, /*D-Link-Alpha*/ |
diff --git a/drivers/net/wireless/wl1251/acx.c b/drivers/net/wireless/wl1251/acx.c index ef8370edace7..ad87a1ac6462 100644 --- a/drivers/net/wireless/wl1251/acx.c +++ b/drivers/net/wireless/wl1251/acx.c | |||
| @@ -140,8 +140,6 @@ int wl1251_acx_sleep_auth(struct wl1251 *wl, u8 sleep_auth) | |||
| 140 | auth->sleep_auth = sleep_auth; | 140 | auth->sleep_auth = sleep_auth; |
| 141 | 141 | ||
| 142 | ret = wl1251_cmd_configure(wl, ACX_SLEEP_AUTH, auth, sizeof(*auth)); | 142 | ret = wl1251_cmd_configure(wl, ACX_SLEEP_AUTH, auth, sizeof(*auth)); |
| 143 | if (ret < 0) | ||
| 144 | return ret; | ||
| 145 | 143 | ||
| 146 | out: | 144 | out: |
| 147 | kfree(auth); | 145 | kfree(auth); |
| @@ -681,10 +679,8 @@ int wl1251_acx_cca_threshold(struct wl1251 *wl) | |||
| 681 | 679 | ||
| 682 | ret = wl1251_cmd_configure(wl, ACX_CCA_THRESHOLD, | 680 | ret = wl1251_cmd_configure(wl, ACX_CCA_THRESHOLD, |
| 683 | detection, sizeof(*detection)); | 681 | detection, sizeof(*detection)); |
| 684 | if (ret < 0) { | 682 | if (ret < 0) |
| 685 | wl1251_warning("failed to set cca threshold: %d", ret); | 683 | wl1251_warning("failed to set cca threshold: %d", ret); |
| 686 | return ret; | ||
| 687 | } | ||
| 688 | 684 | ||
| 689 | out: | 685 | out: |
| 690 | kfree(detection); | 686 | kfree(detection); |
diff --git a/drivers/net/wireless/wl1251/cmd.c b/drivers/net/wireless/wl1251/cmd.c index 81f164bc4888..d14d69d733a0 100644 --- a/drivers/net/wireless/wl1251/cmd.c +++ b/drivers/net/wireless/wl1251/cmd.c | |||
| @@ -241,7 +241,7 @@ int wl1251_cmd_data_path(struct wl1251 *wl, u8 channel, bool enable) | |||
| 241 | if (ret < 0) { | 241 | if (ret < 0) { |
| 242 | wl1251_error("tx %s cmd for channel %d failed", | 242 | wl1251_error("tx %s cmd for channel %d failed", |
| 243 | enable ? "start" : "stop", channel); | 243 | enable ? "start" : "stop", channel); |
| 244 | return ret; | 244 | goto out; |
| 245 | } | 245 | } |
| 246 | 246 | ||
| 247 | wl1251_debug(DEBUG_BOOT, "tx %s cmd channel %d", | 247 | wl1251_debug(DEBUG_BOOT, "tx %s cmd channel %d", |
