diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-03 13:18:21 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-03 13:18:21 -0400 |
| commit | 4f9faaace217b854ae1e1746ee4ac44688ddadbd (patch) | |
| tree | 34122d9e84349a394988d6bfc480115e4809776a | |
| parent | bf640be423d60d954b9673527e106a461a129eb8 (diff) | |
| parent | f37f2c62a28e848e06399ea2f9be1e098212625c (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (47 commits)
rose: Wrong list_lock argument in rose_node seqops
netns: Fix reassembly timer to use the right namespace
netns: Fix device renaming for sysfs
bnx2: Update version to 1.7.5.
bnx2: Update RV2P firmware for 5709.
bnx2: Zero out context memory for 5709.
bnx2: Fix register test on 5709.
bnx2: Fix remote PHY initial link state.
bnx2: Refine remote PHY locking.
bridge: forwarding table information for >256 devices
tg3: Update version to 3.92
tg3: Add link state reporting to UMP firmware
tg3: Fix ethtool loopback test for 5761 BX devices
tg3: Fix 5761 NVRAM sizes
tg3: Use constant 500KHz MI clock on adapters with a CPMU
hci_usb.h: fix hard-to-trigger race
dccp: ccid2.c, ccid3.c use clamp(), clamp_t()
net: remove NR_CPUS arrays in net/core/dev.c
net: use get/put_unaligned_* helpers
bluetooth: use get/put_unaligned_* helpers
...
69 files changed, 704 insertions, 560 deletions
diff --git a/drivers/bluetooth/hci_usb.h b/drivers/bluetooth/hci_usb.h index 414080a4e8ff..1790cc8e431e 100644 --- a/drivers/bluetooth/hci_usb.h +++ b/drivers/bluetooth/hci_usb.h | |||
| @@ -70,7 +70,8 @@ static inline void _urb_queue_head(struct _urb_queue *q, struct _urb *_urb) | |||
| 70 | { | 70 | { |
| 71 | unsigned long flags; | 71 | unsigned long flags; |
| 72 | spin_lock_irqsave(&q->lock, flags); | 72 | spin_lock_irqsave(&q->lock, flags); |
| 73 | list_add(&_urb->list, &q->head); _urb->queue = q; | 73 | /* _urb_unlink needs to know which spinlock to use, thus mb(). */ |
| 74 | _urb->queue = q; mb(); list_add(&_urb->list, &q->head); | ||
| 74 | spin_unlock_irqrestore(&q->lock, flags); | 75 | spin_unlock_irqrestore(&q->lock, flags); |
| 75 | } | 76 | } |
| 76 | 77 | ||
| @@ -78,19 +79,23 @@ static inline void _urb_queue_tail(struct _urb_queue *q, struct _urb *_urb) | |||
| 78 | { | 79 | { |
| 79 | unsigned long flags; | 80 | unsigned long flags; |
| 80 | spin_lock_irqsave(&q->lock, flags); | 81 | spin_lock_irqsave(&q->lock, flags); |
| 81 | list_add_tail(&_urb->list, &q->head); _urb->queue = q; | 82 | /* _urb_unlink needs to know which spinlock to use, thus mb(). */ |
| 83 | _urb->queue = q; mb(); list_add_tail(&_urb->list, &q->head); | ||
| 82 | spin_unlock_irqrestore(&q->lock, flags); | 84 | spin_unlock_irqrestore(&q->lock, flags); |
| 83 | } | 85 | } |
| 84 | 86 | ||
| 85 | static inline void _urb_unlink(struct _urb *_urb) | 87 | static inline void _urb_unlink(struct _urb *_urb) |
| 86 | { | 88 | { |
| 87 | struct _urb_queue *q = _urb->queue; | 89 | struct _urb_queue *q; |
| 88 | unsigned long flags; | 90 | unsigned long flags; |
| 89 | if (q) { | 91 | |
| 90 | spin_lock_irqsave(&q->lock, flags); | 92 | mb(); |
| 91 | list_del(&_urb->list); _urb->queue = NULL; | 93 | q = _urb->queue; |
| 92 | spin_unlock_irqrestore(&q->lock, flags); | 94 | /* If q is NULL, it will die at easy-to-debug NULL pointer dereference. |
| 93 | } | 95 | No need to BUG(). */ |
| 96 | spin_lock_irqsave(&q->lock, flags); | ||
| 97 | list_del(&_urb->list); _urb->queue = NULL; | ||
| 98 | spin_unlock_irqrestore(&q->lock, flags); | ||
| 94 | } | 99 | } |
| 95 | 100 | ||
| 96 | struct hci_usb { | 101 | struct hci_usb { |
diff --git a/drivers/net/8390.c b/drivers/net/8390.c index a499e867f0f4..dc5d2584bd0c 100644 --- a/drivers/net/8390.c +++ b/drivers/net/8390.c | |||
| @@ -34,7 +34,7 @@ struct net_device *__alloc_ei_netdev(int size) | |||
| 34 | 34 | ||
| 35 | void NS8390_init(struct net_device *dev, int startp) | 35 | void NS8390_init(struct net_device *dev, int startp) |
| 36 | { | 36 | { |
| 37 | return __NS8390_init(dev, startp); | 37 | __NS8390_init(dev, startp); |
| 38 | } | 38 | } |
| 39 | 39 | ||
| 40 | EXPORT_SYMBOL(ei_open); | 40 | EXPORT_SYMBOL(ei_open); |
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c index 15853be4680a..4b46e68183e0 100644 --- a/drivers/net/bnx2.c +++ b/drivers/net/bnx2.c | |||
| @@ -56,8 +56,8 @@ | |||
| 56 | 56 | ||
| 57 | #define DRV_MODULE_NAME "bnx2" | 57 | #define DRV_MODULE_NAME "bnx2" |
| 58 | #define PFX DRV_MODULE_NAME ": " | 58 | #define PFX DRV_MODULE_NAME ": " |
| 59 | #define DRV_MODULE_VERSION "1.7.4" | 59 | #define DRV_MODULE_VERSION "1.7.5" |
| 60 | #define DRV_MODULE_RELDATE "February 18, 2008" | 60 | #define DRV_MODULE_RELDATE "April 29, 2008" |
| 61 | 61 | ||
| 62 | #define RUN_AT(x) (jiffies + (x)) | 62 | #define RUN_AT(x) (jiffies + (x)) |
| 63 | 63 | ||
| @@ -1631,8 +1631,10 @@ bnx2_set_default_remote_link(struct bnx2 *bp) | |||
| 1631 | static void | 1631 | static void |
| 1632 | bnx2_set_default_link(struct bnx2 *bp) | 1632 | bnx2_set_default_link(struct bnx2 *bp) |
| 1633 | { | 1633 | { |
| 1634 | if (bp->phy_flags & BNX2_PHY_FLAG_REMOTE_PHY_CAP) | 1634 | if (bp->phy_flags & BNX2_PHY_FLAG_REMOTE_PHY_CAP) { |
| 1635 | return bnx2_set_default_remote_link(bp); | 1635 | bnx2_set_default_remote_link(bp); |
| 1636 | return; | ||
| 1637 | } | ||
| 1636 | 1638 | ||
| 1637 | bp->autoneg = AUTONEG_SPEED | AUTONEG_FLOW_CTRL; | 1639 | bp->autoneg = AUTONEG_SPEED | AUTONEG_FLOW_CTRL; |
| 1638 | bp->req_line_speed = 0; | 1640 | bp->req_line_speed = 0; |
| @@ -1715,7 +1717,6 @@ bnx2_remote_phy_event(struct bnx2 *bp) | |||
| 1715 | break; | 1717 | break; |
| 1716 | } | 1718 | } |
| 1717 | 1719 | ||
| 1718 | spin_lock(&bp->phy_lock); | ||
| 1719 | bp->flow_ctrl = 0; | 1720 | bp->flow_ctrl = 0; |
| 1720 | if ((bp->autoneg & (AUTONEG_SPEED | AUTONEG_FLOW_CTRL)) != | 1721 | if ((bp->autoneg & (AUTONEG_SPEED | AUTONEG_FLOW_CTRL)) != |
| 1721 | (AUTONEG_SPEED | AUTONEG_FLOW_CTRL)) { | 1722 | (AUTONEG_SPEED | AUTONEG_FLOW_CTRL)) { |
| @@ -1737,7 +1738,6 @@ bnx2_remote_phy_event(struct bnx2 *bp) | |||
| 1737 | if (old_port != bp->phy_port) | 1738 | if (old_port != bp->phy_port) |
| 1738 | bnx2_set_default_link(bp); | 1739 | bnx2_set_default_link(bp); |
| 1739 | 1740 | ||
| 1740 | spin_unlock(&bp->phy_lock); | ||
| 1741 | } | 1741 | } |
| 1742 | if (bp->link_up != link_up) | 1742 | if (bp->link_up != link_up) |
| 1743 | bnx2_report_link(bp); | 1743 | bnx2_report_link(bp); |
| @@ -2222,6 +2222,11 @@ bnx2_init_5709_context(struct bnx2 *bp) | |||
| 2222 | for (i = 0; i < bp->ctx_pages; i++) { | 2222 | for (i = 0; i < bp->ctx_pages; i++) { |
| 2223 | int j; | 2223 | int j; |
| 2224 | 2224 | ||
| 2225 | if (bp->ctx_blk[i]) | ||
| 2226 | memset(bp->ctx_blk[i], 0, BCM_PAGE_SIZE); | ||
| 2227 | else | ||
| 2228 | return -ENOMEM; | ||
| 2229 | |||
| 2225 | REG_WR(bp, BNX2_CTX_HOST_PAGE_TBL_DATA0, | 2230 | REG_WR(bp, BNX2_CTX_HOST_PAGE_TBL_DATA0, |
| 2226 | (bp->ctx_blk_mapping[i] & 0xffffffff) | | 2231 | (bp->ctx_blk_mapping[i] & 0xffffffff) | |
| 2227 | BNX2_CTX_HOST_PAGE_TBL_DATA0_VALID); | 2232 | BNX2_CTX_HOST_PAGE_TBL_DATA0_VALID); |
| @@ -2445,14 +2450,15 @@ bnx2_phy_event_is_set(struct bnx2 *bp, struct bnx2_napi *bnapi, u32 event) | |||
| 2445 | static void | 2450 | static void |
| 2446 | bnx2_phy_int(struct bnx2 *bp, struct bnx2_napi *bnapi) | 2451 | bnx2_phy_int(struct bnx2 *bp, struct bnx2_napi *bnapi) |
| 2447 | { | 2452 | { |
| 2448 | if (bnx2_phy_event_is_set(bp, bnapi, STATUS_ATTN_BITS_LINK_STATE)) { | 2453 | spin_lock(&bp->phy_lock); |
| 2449 | spin_lock(&bp->phy_lock); | 2454 | |
| 2455 | if (bnx2_phy_event_is_set(bp, bnapi, STATUS_ATTN_BITS_LINK_STATE)) | ||
| 2450 | bnx2_set_link(bp); | 2456 | bnx2_set_link(bp); |
| 2451 | spin_unlock(&bp->phy_lock); | ||
| 2452 | } | ||
| 2453 | if (bnx2_phy_event_is_set(bp, bnapi, STATUS_ATTN_BITS_TIMER_ABORT)) | 2457 | if (bnx2_phy_event_is_set(bp, bnapi, STATUS_ATTN_BITS_TIMER_ABORT)) |
| 2454 | bnx2_set_remote_link(bp); | 2458 | bnx2_set_remote_link(bp); |
| 2455 | 2459 | ||
| 2460 | spin_unlock(&bp->phy_lock); | ||
| 2461 | |||
| 2456 | } | 2462 | } |
| 2457 | 2463 | ||
| 2458 | static inline u16 | 2464 | static inline u16 |
| @@ -3174,6 +3180,12 @@ load_rv2p_fw(struct bnx2 *bp, __le32 *rv2p_code, u32 rv2p_code_len, | |||
| 3174 | int i; | 3180 | int i; |
| 3175 | u32 val; | 3181 | u32 val; |
| 3176 | 3182 | ||
| 3183 | if (rv2p_proc == RV2P_PROC2 && CHIP_NUM(bp) == CHIP_NUM_5709) { | ||
| 3184 | val = le32_to_cpu(rv2p_code[XI_RV2P_PROC2_MAX_BD_PAGE_LOC]); | ||
| 3185 | val &= ~XI_RV2P_PROC2_BD_PAGE_SIZE_MSK; | ||
| 3186 | val |= XI_RV2P_PROC2_BD_PAGE_SIZE; | ||
| 3187 | rv2p_code[XI_RV2P_PROC2_MAX_BD_PAGE_LOC] = cpu_to_le32(val); | ||
| 3188 | } | ||
| 3177 | 3189 | ||
| 3178 | for (i = 0; i < rv2p_code_len; i += 8) { | 3190 | for (i = 0; i < rv2p_code_len; i += 8) { |
| 3179 | REG_WR(bp, BNX2_RV2P_INSTR_HIGH, le32_to_cpu(*rv2p_code)); | 3191 | REG_WR(bp, BNX2_RV2P_INSTR_HIGH, le32_to_cpu(*rv2p_code)); |
| @@ -4215,13 +4227,6 @@ bnx2_init_remote_phy(struct bnx2 *bp) | |||
| 4215 | if (netif_running(bp->dev)) { | 4227 | if (netif_running(bp->dev)) { |
| 4216 | u32 sig; | 4228 | u32 sig; |
| 4217 | 4229 | ||
| 4218 | if (val & BNX2_LINK_STATUS_LINK_UP) { | ||
| 4219 | bp->link_up = 1; | ||
| 4220 | netif_carrier_on(bp->dev); | ||
| 4221 | } else { | ||
| 4222 | bp->link_up = 0; | ||
| 4223 | netif_carrier_off(bp->dev); | ||
| 4224 | } | ||
| 4225 | sig = BNX2_DRV_ACK_CAP_SIGNATURE | | 4230 | sig = BNX2_DRV_ACK_CAP_SIGNATURE | |
| 4226 | BNX2_FW_CAP_REMOTE_PHY_CAPABLE; | 4231 | BNX2_FW_CAP_REMOTE_PHY_CAPABLE; |
| 4227 | bnx2_shmem_wr(bp, BNX2_DRV_ACK_CAP_MB, sig); | 4232 | bnx2_shmem_wr(bp, BNX2_DRV_ACK_CAP_MB, sig); |
| @@ -4878,6 +4883,8 @@ bnx2_init_nic(struct bnx2 *bp) | |||
| 4878 | spin_lock_bh(&bp->phy_lock); | 4883 | spin_lock_bh(&bp->phy_lock); |
| 4879 | bnx2_init_phy(bp); | 4884 | bnx2_init_phy(bp); |
| 4880 | bnx2_set_link(bp); | 4885 | bnx2_set_link(bp); |
| 4886 | if (bp->phy_flags & BNX2_PHY_FLAG_REMOTE_PHY_CAP) | ||
| 4887 | bnx2_remote_phy_event(bp); | ||
| 4881 | spin_unlock_bh(&bp->phy_lock); | 4888 | spin_unlock_bh(&bp->phy_lock); |
| 4882 | return 0; | 4889 | return 0; |
| 4883 | } | 4890 | } |
| @@ -4920,7 +4927,7 @@ bnx2_test_registers(struct bnx2 *bp) | |||
| 4920 | { 0x0c08, BNX2_FL_NOT_5709, 0x0f0ff073, 0x00000000 }, | 4927 | { 0x0c08, BNX2_FL_NOT_5709, 0x0f0ff073, 0x00000000 }, |
| 4921 | 4928 | ||
| 4922 | { 0x1000, 0, 0x00000000, 0x00000001 }, | 4929 | { 0x1000, 0, 0x00000000, 0x00000001 }, |
| 4923 | { 0x1004, 0, 0x00000000, 0x000f0001 }, | 4930 | { 0x1004, BNX2_FL_NOT_5709, 0x00000000, 0x000f0001 }, |
| 4924 | 4931 | ||
| 4925 | { 0x1408, 0, 0x01c00800, 0x00000000 }, | 4932 | { 0x1408, 0, 0x01c00800, 0x00000000 }, |
| 4926 | { 0x149c, 0, 0x8000ffff, 0x00000000 }, | 4933 | { 0x149c, 0, 0x8000ffff, 0x00000000 }, |
diff --git a/drivers/net/bnx2_fw2.h b/drivers/net/bnx2_fw2.h index e6ffa2769f3d..ed0514cba0ee 100644 --- a/drivers/net/bnx2_fw2.h +++ b/drivers/net/bnx2_fw2.h | |||
| @@ -3173,251 +3173,267 @@ static struct fw_info bnx2_rxp_fw_09 = { | |||
| 3173 | }; | 3173 | }; |
| 3174 | 3174 | ||
| 3175 | static u8 bnx2_xi_rv2p_proc1[] = { | 3175 | static u8 bnx2_xi_rv2p_proc1[] = { |
| 3176 | /* Date: 01/14/2008 15:44 */ | 3176 | /* Date: 04/25/2008 22:02 */ |
| 3177 | 0xc5, 0x56, 0xcd, 0x6b, 0x13, 0x51, 0x10, 0x9f, 0xdd, 0x7c, 0x6c, 0x9a, | 3177 | 0xbd, 0x56, 0x4f, 0x68, 0x1c, 0x55, 0x18, 0xff, 0x76, 0x76, 0x77, 0x66, |
| 3178 | 0x6c, 0xb2, 0xa1, 0x6a, 0x09, 0x35, 0xd2, 0x58, 0x7a, 0x30, 0x6d, 0xc4, | 3178 | 0x33, 0x3b, 0xbb, 0xb3, 0xd8, 0x34, 0x4c, 0xb7, 0x2b, 0x59, 0x83, 0x97, |
| 3179 | 0x56, 0x3d, 0x78, 0x28, 0x54, 0x7a, 0x11, 0xac, 0xa7, 0x1e, 0x44, 0xc4, | 3179 | 0xdd, 0x6c, 0x69, 0xa2, 0x15, 0x04, 0x53, 0x5a, 0x72, 0x09, 0xd8, 0x9e, |
| 3180 | 0xcf, 0x20, 0x05, 0xf5, 0x8f, 0x70, 0x51, 0xab, 0x20, 0x78, 0x28, 0x68, | 3180 | 0x02, 0xb5, 0x52, 0x84, 0xb6, 0x8b, 0xf4, 0x52, 0x5a, 0x28, 0x78, 0x11, |
| 3181 | 0xb4, 0x7e, 0xa0, 0x27, 0x15, 0xf1, 0x90, 0x1c, 0x04, 0x05, 0x45, 0x50, | 3181 | 0x84, 0x0e, 0x6d, 0x93, 0x82, 0xe8, 0x61, 0xc1, 0x06, 0x12, 0x44, 0xa3, |
| 3182 | 0xf0, 0xa4, 0x37, 0x41, 0xbd, 0x54, 0xc5, 0x0f, 0xf0, 0xe2, 0x45, 0x8f, | 3182 | 0x07, 0x95, 0x60, 0x61, 0x07, 0x3c, 0x78, 0x10, 0x14, 0x15, 0x11, 0x6c, |
| 3183 | 0xda, 0xf8, 0xde, 0xcc, 0xef, 0xd9, 0xdd, 0x4d, 0xd2, 0x14, 0x0f, 0x1a, | 3183 | 0x0f, 0x85, 0x88, 0xf6, 0xd2, 0x54, 0x4b, 0x0b, 0x1e, 0x5b, 0x3c, 0xd6, |
| 3184 | 0x68, 0x7f, 0xec, 0xdb, 0xdf, 0x9b, 0x37, 0xf3, 0x9b, 0x79, 0x33, 0x9b, | 3184 | 0x8c, 0xef, 0xfb, 0xf3, 0x92, 0x99, 0x97, 0x9d, 0x24, 0xa7, 0x2e, 0xb4, |
| 3185 | 0x27, 0x22, 0x9b, 0xfc, 0xc6, 0x80, 0x42, 0x72, 0xad, 0x58, 0x4a, 0x81, | 3185 | 0x3f, 0xbe, 0x37, 0xdf, 0xbf, 0xf7, 0xfd, 0xf9, 0xbd, 0xd4, 0x00, 0xc0, |
| 3186 | 0x45, 0x74, 0xcf, 0x65, 0xf4, 0x37, 0x91, 0xfc, 0x46, 0x04, 0xfc, 0x91, | 3186 | 0x82, 0x30, 0x1a, 0x55, 0x08, 0x65, 0x2b, 0x5f, 0x52, 0x90, 0x03, 0xf8, |
| 3187 | 0xbc, 0xfa, 0xff, 0x9d, 0x26, 0x4a, 0x1a, 0x63, 0x34, 0xb1, 0x5e, 0xe3, | 3187 | 0x1a, 0xf8, 0x57, 0xf4, 0x48, 0x0e, 0x0f, 0x8a, 0x3c, 0xce, 0x10, 0x8e, |
| 3188 | 0x24, 0x3d, 0x29, 0x15, 0x14, 0xfe, 0x6a, 0x92, 0xaf, 0x9f, 0x87, 0xea, | 3188 | 0xd7, 0xd4, 0xff, 0x17, 0xe0, 0x48, 0x13, 0x31, 0x0f, 0x47, 0x5e, 0x40, |
| 3189 | 0x0f, 0x1a, 0x19, 0xb6, 0xfb, 0x0e, 0xfb, 0xdf, 0xc4, 0x04, 0xb7, 0x55, | 3189 | 0x3c, 0x0c, 0xdf, 0x37, 0x03, 0x85, 0xff, 0xc5, 0x10, 0xa2, 0x3c, 0xdc, |
| 3190 | 0x52, 0x62, 0x07, 0x48, 0x1b, 0xf3, 0x0c, 0xaf, 0xe6, 0xf4, 0x73, 0xd1, | 3190 | 0xff, 0x36, 0x2a, 0x93, 0xff, 0x35, 0xb1, 0xff, 0x33, 0xcf, 0xf8, 0x6a, |
| 3191 | 0xf2, 0x37, 0xe2, 0x7c, 0x5b, 0xd6, 0x17, 0xe6, 0x3c, 0xbd, 0x4e, 0xef, | 3191 | 0xa7, 0xc4, 0x7e, 0x04, 0xe1, 0x40, 0x8d, 0x60, 0xb5, 0x87, 0xf2, 0x89, |
| 3192 | 0x27, 0xf5, 0xb3, 0x97, 0x3e, 0xdd, 0x48, 0xb1, 0x5d, 0x79, 0xdf, 0x9b, | 3192 | 0x13, 0x60, 0xa3, 0x9f, 0x4f, 0x94, 0x02, 0xca, 0x8d, 0x5c, 0x78, 0x40, |
| 3193 | 0x3e, 0xcd, 0xfb, 0x5c, 0x4b, 0xec, 0xa9, 0x3f, 0xde, 0xbf, 0x55, 0xd9, | 3193 | 0xf2, 0xb2, 0x58, 0xef, 0x5e, 0xcf, 0xc7, 0x73, 0xb8, 0x3f, 0x8d, 0xf2, |
| 3194 | 0x81, 0xdf, 0x24, 0x76, 0x0e, 0x96, 0xf4, 0xfa, 0x76, 0xf0, 0xc6, 0xc1, | 3194 | 0x3e, 0xf7, 0x5a, 0x0f, 0x31, 0x80, 0x73, 0x25, 0x8f, 0xef, 0x33, 0xca, |
| 3195 | 0x2b, 0xb6, 0xf0, 0x16, 0xe6, 0x34, 0x3a, 0x54, 0xad, 0xe8, 0x78, 0x06, | 3195 | 0x6e, 0xd7, 0xda, 0x68, 0xa7, 0x74, 0xdb, 0xe2, 0xb7, 0x88, 0x7e, 0xff, |
| 3196 | 0x49, 0xe2, 0x49, 0xd0, 0x4c, 0xca, 0x15, 0x9d, 0x06, 0x84, 0xfd, 0x6e, | 3196 | 0x89, 0xd9, 0x2f, 0xfa, 0x4b, 0xfa, 0x69, 0x28, 0x3f, 0x78, 0x6e, 0x4b, |
| 3197 | 0x58, 0xef, 0x57, 0xbe, 0x0d, 0x6b, 0xde, 0x82, 0x8a, 0xdb, 0xc4, 0x1b, | 3197 | 0x5e, 0xb6, 0x91, 0x97, 0xad, 0xf2, 0x90, 0x3a, 0x80, 0xce, 0x03, 0x71, |
| 3198 | 0xe6, 0x39, 0x15, 0x63, 0x57, 0xf3, 0xde, 0x2a, 0x9e, 0x89, 0x2f, 0x18, | 3198 | 0xaf, 0x8a, 0x8b, 0x7e, 0x1f, 0xcb, 0xbd, 0x01, 0x4e, 0x37, 0xc5, 0x7f, |
| 3199 | 0x57, 0x26, 0x10, 0x57, 0x24, 0xde, 0x96, 0xf8, 0x82, 0x7a, 0xa5, 0xda, | 3199 | 0x84, 0xe8, 0xe5, 0xd8, 0x9f, 0xfa, 0x27, 0xf7, 0xd8, 0xea, 0x47, 0xd7, |
| 3200 | 0xf8, 0xaf, 0xcf, 0x51, 0xbe, 0xf0, 0x39, 0x49, 0xe8, 0x9c, 0x8c, 0xec, | 3200 | 0x29, 0x9d, 0xbf, 0xd3, 0xd1, 0xdf, 0x75, 0x3f, 0x30, 0xce, 0x1d, 0x15, |
| 3201 | 0x4b, 0x76, 0x88, 0xfb, 0x93, 0x35, 0xb3, 0x21, 0xec, 0x3f, 0x91, 0xb6, | 3201 | 0x27, 0xa9, 0x0f, 0x3b, 0xe8, 0xff, 0xa6, 0xf4, 0xd3, 0x7e, 0xf9, 0xfc, |
| 3202 | 0xf7, 0x54, 0xf9, 0x8d, 0xf5, 0x72, 0x3b, 0x1d, 0x12, 0xd0, 0xe1, 0x31, | 3202 | 0xd7, 0xcd, 0xf3, 0xd6, 0xa0, 0xba, 0x15, 0x8d, 0xba, 0xfd, 0x28, 0x75, |
| 3203 | 0xe2, 0x9b, 0xa2, 0x21, 0xbb, 0xc0, 0xef, 0xe3, 0xbc, 0x7f, 0xad, 0xf2, | 3203 | 0x9b, 0x81, 0x17, 0xad, 0x80, 0xf4, 0x0a, 0x80, 0xb8, 0x5f, 0x25, 0x80, |
| 3204 | 0x47, 0xe3, 0x3a, 0xe0, 0x7a, 0xe0, 0x01, 0xe0, 0x7e, 0xe0, 0x1a, 0xe0, | 3204 | 0xf8, 0xbc, 0xe0, 0x45, 0xc1, 0xcf, 0x04, 0x97, 0x05, 0xf7, 0x0a, 0x0e, |
| 3205 | 0x6a, 0xe0, 0x2a, 0x60, 0x2f, 0xf0, 0x32, 0x30, 0x0f, 0xf4, 0x80, 0x39, | 3205 | 0x0b, 0xee, 0x11, 0x7c, 0x4e, 0xf0, 0x6f, 0xc1, 0x9a, 0xa0, 0x2f, 0x58, |
| 3206 | 0xe0, 0x05, 0xa0, 0x0b, 0xcc, 0x00, 0x6b, 0xc0, 0xab, 0xc0, 0x14, 0xf0, | 3206 | 0x15, 0xbc, 0x27, 0xe8, 0x09, 0x96, 0x0d, 0x7f, 0x75, 0xc1, 0x92, 0x60, |
| 3207 | 0x28, 0xf0, 0x21, 0xf0, 0x31, 0xf0, 0x0b, 0xf0, 0x1c, 0xd0, 0xb1, 0x60, | 3207 | 0x24, 0xf8, 0x9a, 0x61, 0xef, 0xe6, 0x18, 0x57, 0x45, 0x3e, 0x28, 0xf2, |
| 3208 | 0x0f, 0xa8, 0x7e, 0x3e, 0xee, 0x47, 0x48, 0xa7, 0xeb, 0xa8, 0x7f, 0xad, | 3208 | 0x49, 0x91, 0xb1, 0xa0, 0x32, 0xf7, 0xa9, 0x7a, 0x7d, 0xbe, 0xd1, 0xdf, |
| 3209 | 0x33, 0xde, 0x97, 0x0d, 0x0f, 0xf9, 0x65, 0x9d, 0x2e, 0x83, 0xd7, 0x5b, | 3209 | 0xd5, 0x9e, 0x7c, 0x6f, 0x69, 0xbd, 0x12, 0xd5, 0x0f, 0xda, 0x49, 0xfd, |
| 3210 | 0xbf, 0x19, 0xb9, 0x27, 0xa5, 0xae, 0xf7, 0x23, 0x9a, 0x37, 0x8f, 0xe3, | 3210 | 0x8f, 0xb7, 0xd1, 0x67, 0xb5, 0xe9, 0xd6, 0x20, 0xbb, 0x1b, 0x31, 0xe7, |
| 3211 | 0x39, 0xb4, 0xc3, 0xe3, 0x73, 0x72, 0x49, 0x59, 0x37, 0x6e, 0xed, 0xf1, | 3211 | 0xf1, 0x91, 0xd8, 0x07, 0xfd, 0xef, 0x32, 0xf6, 0x68, 0xaa, 0x63, 0xce, |
| 3212 | 0x04, 0x8f, 0xa4, 0x05, 0x3f, 0xa7, 0x7b, 0xd4, 0xff, 0x66, 0x73, 0x26, | 3212 | 0xd7, 0xa0, 0x3d, 0x7a, 0x45, 0xf6, 0xe8, 0xd0, 0x96, 0xf9, 0xe5, 0x39, |
| 3213 | 0x23, 0xcf, 0x87, 0xb3, 0x46, 0x67, 0x63, 0xc7, 0xf8, 0xd3, 0xcd, 0x8f, | 3213 | 0x3d, 0x2a, 0xf6, 0x53, 0x32, 0x9f, 0x8d, 0x0c, 0xbd, 0x30, 0xb1, 0xaf, |
| 3214 | 0x4e, 0xe7, 0x19, 0xbf, 0xba, 0x9d, 0x2b, 0x58, 0xb5, 0xc3, 0xf1, 0x5f, | 3214 | 0x14, 0x2f, 0x63, 0x1f, 0x6e, 0xe6, 0xba, 0x1d, 0x8c, 0x5b, 0x94, 0xb8, |
| 3215 | 0x19, 0x15, 0x8c, 0x8f, 0x31, 0x54, 0xdc, 0x64, 0x5c, 0xe3, 0x56, 0xf7, | 3215 | 0x59, 0xf9, 0xa1, 0xbd, 0xcc, 0x6f, 0x4b, 0xcf, 0x71, 0x7a, 0x7e, 0x79, |
| 3216 | 0xb9, 0x39, 0x47, 0xa3, 0x5b, 0xa8, 0xf1, 0x7d, 0x89, 0x53, 0x2d, 0xa9, | 3216 | 0x0e, 0x6d, 0x63, 0x0e, 0x2f, 0xed, 0xd0, 0x87, 0xb2, 0x51, 0xcf, 0xf3, |
| 3217 | 0xed, 0xfe, 0x6c, 0x9e, 0x17, 0x5e, 0xff, 0xe1, 0x97, 0x8c, 0x85, 0x2b, | 3217 | 0x4a, 0x9f, 0x45, 0xcb, 0x62, 0x5c, 0x62, 0xec, 0x78, 0x76, 0x01, 0xf1, |
| 3218 | 0x2f, 0x84, 0xff, 0xba, 0xe4, 0x32, 0xee, 0x1e, 0xa1, 0xc8, 0xcf, 0xbc, | 3218 | 0x90, 0xf7, 0x0b, 0xfb, 0x1b, 0xa5, 0x7b, 0x78, 0xc1, 0x02, 0xed, 0x6d, |
| 3219 | 0x97, 0xfb, 0xe8, 0xb3, 0xdf, 0x3f, 0x2c, 0xbf, 0x61, 0xce, 0xc1, 0xbe, | 3219 | 0x01, 0x16, 0xec, 0x21, 0x85, 0x4f, 0xe3, 0x0f, 0x59, 0xaf, 0x5e, 0xbc, |
| 3220 | 0xe3, 0x26, 0x8f, 0x79, 0xf6, 0x73, 0x90, 0xe4, 0x79, 0xba, 0x2c, 0xef, | 3220 | 0x4d, 0x18, 0x2c, 0xdd, 0x62, 0xfd, 0x3f, 0x9a, 0x9c, 0xf7, 0x1b, 0xe3, |
| 3221 | 0xa7, 0xcb, 0xb8, 0xcf, 0x83, 0xe1, 0x7a, 0x90, 0x7b, 0x11, 0x43, 0xbe, | 3221 | 0x60, 0xfc, 0xf4, 0x77, 0xd9, 0x77, 0x1f, 0xe5, 0x7f, 0x73, 0x61, 0xa4, |
| 3222 | 0xf7, 0xe2, 0x5e, 0x44, 0xef, 0x71, 0xaa, 0x7e, 0x73, 0x2e, 0x58, 0x2f, | 3222 | 0xe3, 0x88, 0xdd, 0x79, 0xbd, 0x47, 0xfc, 0xbb, 0x62, 0xd7, 0xa8, 0x6e, |
| 3223 | 0x05, 0xaa, 0x8e, 0xc1, 0x9f, 0x96, 0x3c, 0x9b, 0xbe, 0x6c, 0xea, 0x9d, | 3223 | 0xef, 0x47, 0x24, 0x0e, 0x7b, 0xf3, 0xcc, 0xaf, 0x1f, 0x44, 0xfa, 0x3e, |
| 3224 | 0x97, 0xeb, 0x7e, 0x2c, 0xa4, 0xdf, 0x76, 0xaa, 0x04, 0xf3, 0x64, 0xb5, | 3224 | 0xc2, 0x2b, 0x6d, 0xb6, 0xab, 0x50, 0x9c, 0x3d, 0xfd, 0x65, 0x63, 0x3e, |
| 3225 | 0xa9, 0x97, 0x6e, 0xe7, 0x84, 0xec, 0xe5, 0x54, 0x06, 0xa8, 0xb5, 0x8e, | 3225 | 0x9a, 0xbb, 0xe2, 0xd7, 0x27, 0xf1, 0x26, 0xbf, 0x26, 0xef, 0xaf, 0xf9, |
| 3226 | 0x1d, 0xc4, 0x35, 0x81, 0x3a, 0x5e, 0xdb, 0x52, 0xc7, 0xa6, 0xdf, 0x4b, | 3226 | 0xb5, 0x04, 0x67, 0x66, 0x7c, 0x8a, 0x57, 0xb5, 0xd9, 0xcd, 0x9b, 0x3e, |
| 3227 | 0x3d, 0x77, 0xea, 0x5f, 0x7f, 0xdf, 0xa7, 0x85, 0xe7, 0x07, 0xea, 0xd3, | 3227 | 0xe3, 0xdb, 0x2e, 0xe3, 0x43, 0x17, 0xeb, 0x13, 0xc7, 0xe7, 0xca, 0x2c, |
| 3228 | 0xf4, 0x43, 0xe8, 0xe4, 0x30, 0xaf, 0xb8, 0x70, 0x5f, 0xf2, 0x26, 0xfd, | 3228 | 0x9f, 0xad, 0xe8, 0xbd, 0xd6, 0xf6, 0x3a, 0xaf, 0xed, 0xf2, 0xc1, 0xf8, |
| 3229 | 0x5c, 0x15, 0xa3, 0x1f, 0xf6, 0xd3, 0x31, 0xf1, 0x0d, 0x04, 0xfb, 0xe7, | 3229 | 0x3a, 0x8e, 0xce, 0x43, 0xc7, 0x4b, 0xcf, 0x43, 0x76, 0x5c, 0xc6, 0xae, |
| 3230 | 0x50, 0x87, 0x7c, 0x05, 0xfb, 0x6e, 0x54, 0x97, 0x70, 0xdd, 0x4b, 0xfe, | 3230 | 0x95, 0xae, 0xc3, 0xd2, 0x04, 0x63, 0x61, 0x12, 0xf3, 0xfa, 0x21, 0xde, |
| 3231 | 0xd3, 0xd0, 0xa9, 0xbf, 0x4b, 0x5f, 0xe8, 0x01, 0x6f, 0xcd, 0x32, 0x3c, | 3231 | 0xd8, 0xeb, 0x56, 0x8d, 0xf4, 0xc6, 0x80, 0xe5, 0x59, 0x99, 0xbf, 0x59, |
| 3232 | 0xb1, 0x3b, 0x59, 0x0e, 0xf6, 0x11, 0xaf, 0x89, 0xfe, 0x87, 0x7d, 0x7d, | 3232 | 0xda, 0x47, 0xc5, 0x37, 0x16, 0x62, 0x1d, 0x42, 0x7a, 0x6f, 0x2c, 0xf7, |
| 3233 | 0xf5, 0x47, 0x1d, 0xf2, 0x30, 0xfe, 0x7f, 0xf3, 0x80, 0xf9, 0x52, 0xb4, | 3233 | 0x67, 0x9a, 0x87, 0xbc, 0x9c, 0xab, 0xfa, 0x8f, 0xa5, 0xf7, 0x78, 0x8d, |
| 3234 | 0x24, 0x0f, 0x09, 0x5a, 0x99, 0xbe, 0x84, 0xf8, 0xa9, 0x83, 0xbe, 0x49, | 3234 | 0xe7, 0xad, 0x94, 0x9e, 0xd3, 0x46, 0x3c, 0x78, 0xfe, 0xdd, 0xfe, 0x72, |
| 3235 | 0xe8, 0xf0, 0x6d, 0x71, 0x79, 0x7d, 0x33, 0xe0, 0x7d, 0x0d, 0xf0, 0xb8, | 3235 | 0x6f, 0x50, 0x3f, 0x74, 0x7e, 0x01, 0x74, 0x27, 0xb3, 0xde, 0x09, 0xfd, |
| 3236 | 0x2e, 0xc6, 0xe5, 0xfe, 0x39, 0xd5, 0x2f, 0x11, 0xdd, 0xc6, 0x2a, 0xba, | 3236 | 0x3e, 0x6b, 0x9e, 0xa4, 0xe3, 0x7e, 0x98, 0x4f, 0xdd, 0xfb, 0x28, 0x74, |
| 3237 | 0xaf, 0x9c, 0xa0, 0x06, 0xe2, 0x7a, 0x1b, 0x8a, 0x2f, 0xab, 0xfc, 0x93, | 3237 | 0x06, 0xf9, 0xff, 0x46, 0xbf, 0x7b, 0x03, 0xf6, 0x76, 0xa7, 0xb8, 0x29, |
| 3238 | 0xef, 0x84, 0x3b, 0x0d, 0xa3, 0x83, 0xbc, 0x2e, 0x55, 0x04, 0x6f, 0x33, | 3238 | 0xff, 0x55, 0xb5, 0x39, 0xb0, 0x75, 0xef, 0x1c, 0x63, 0x4f, 0x9f, 0xae, |
| 3239 | 0x3f, 0x1f, 0xd0, 0x23, 0xac, 0x9b, 0xe8, 0x91, 0xa7, 0x5b, 0x7f, 0xfa, | 3239 | 0xf3, 0x9e, 0x36, 0xb6, 0xcc, 0xa7, 0xe6, 0xaf, 0xe6, 0xb6, 0xfc, 0xf5, |
| 3240 | 0x8d, 0xc7, 0xf6, 0x46, 0xd1, 0xaf, 0x0f, 0xa1, 0x6f, 0x7e, 0x48, 0x4b, | 3240 | 0xac, 0xf8, 0xca, 0x02, 0xe6, 0x2b, 0x7c, 0x4f, 0xd2, 0x79, 0x3a, 0xfa, |
| 3241 | 0x5f, 0xae, 0x4e, 0x71, 0xff, 0xa4, 0x3e, 0xf4, 0xcf, 0x6a, 0x56, 0x9e, | 3241 | 0x9e, 0x06, 0x2f, 0xf1, 0xfd, 0xee, 0xaf, 0xef, 0x8e, 0xdf, 0x92, 0x75, |
| 3242 | 0xfb, 0xb3, 0xf2, 0x1d, 0x36, 0xea, 0xb8, 0xcc, 0xeb, 0xcf, 0x0a, 0xf6, | 3242 | 0x1a, 0xc4, 0x6f, 0xae, 0xc1, 0x57, 0xbf, 0xaf, 0x6f, 0xf2, 0x1b, 0x7e, |
| 3243 | 0x65, 0xf4, 0xbe, 0x02, 0x7d, 0xdc, 0xc5, 0xf4, 0xca, 0xbc, 0x2b, 0x7d, | 3243 | 0x5f, 0x59, 0xe1, 0xfe, 0xbd, 0x97, 0x98, 0xdf, 0x64, 0xdd, 0x87, 0xa4, |
| 3244 | 0x74, 0xfe, 0x05, 0xfa, 0xba, 0x67, 0x74, 0x42, 0xbc, 0x5b, 0xf4, 0x7a, | 3244 | 0xee, 0x4a, 0x8f, 0xec, 0x6f, 0x1b, 0xf6, 0xba, 0xff, 0xef, 0x08, 0x6f, |
| 3245 | 0x1f, 0x7f, 0xf2, 0x2c, 0xe9, 0xab, 0x38, 0xc3, 0xe2, 0xdf, 0x0d, 0x78, | 3245 | 0x5a, 0x53, 0x3c, 0x7f, 0x4e, 0xf7, 0x91, 0xd1, 0x97, 0xc9, 0x0e, 0xee, |
| 3246 | 0x5f, 0x32, 0xfb, 0x06, 0xb4, 0x9e, 0x4f, 0x16, 0xcd, 0xdc, 0x18, 0xdc, | 3246 | 0xd5, 0x65, 0x88, 0xa4, 0x6e, 0x77, 0x53, 0xf5, 0xab, 0x08, 0x4f, 0x38, |
| 3247 | 0xa1, 0xfd, 0xf1, 0x28, 0xe7, 0x48, 0x3e, 0x05, 0x15, 0xcf, 0x76, 0xf4, | 3247 | 0xf0, 0x55, 0xa4, 0xeb, 0xac, 0xfb, 0xc8, 0xf8, 0x25, 0xe9, 0xd7, 0x76, |
| 3248 | 0xb6, 0xe2, 0xac, 0x2d, 0xcf, 0xb3, 0x27, 0xd9, 0xcc, 0xae, 0x59, 0xb3, | 3248 | 0xa8, 0x77, 0x0d, 0xbe, 0xd8, 0xe0, 0x41, 0x9f, 0xfc, 0x4d, 0x08, 0xaf, |
| 3249 | 0x3e, 0xc9, 0x05, 0x3a, 0x7d, 0xf7, 0x19, 0xaf, 0xe7, 0x1a, 0x31, 0x59, | 3249 | 0x9c, 0x91, 0xfd, 0xfe, 0xcb, 0x65, 0xfe, 0xe8, 0x1e, 0xa3, 0x3d, 0x87, |
| 3250 | 0x77, 0xa6, 0x8c, 0x1e, 0x1e, 0xc7, 0x57, 0x13, 0x3d, 0xf6, 0x5d, 0x14, | 3250 | 0x11, 0xd9, 0xf3, 0x6e, 0x85, 0xe5, 0x7a, 0x85, 0x79, 0x71, 0xc2, 0xf1, |
| 3251 | 0xdc, 0x4b, 0x3b, 0x19, 0xd3, 0x35, 0x57, 0xe6, 0xca, 0xbc, 0x9b, 0x62, | 3251 | 0x48, 0xaf, 0x5e, 0x61, 0x1c, 0x29, 0xa3, 0x5d, 0x00, 0x0f, 0x8e, 0x93, |
| 3252 | 0x24, 0xd6, 0xc3, 0xde, 0x2c, 0xf3, 0x21, 0x81, 0xbe, 0xde, 0x13, 0xc8, | 3252 | 0x7a, 0x67, 0xd1, 0x63, 0x7e, 0x5f, 0xbc, 0x25, 0xfc, 0xe3, 0xeb, 0xfa, |
| 3253 | 0x53, 0x74, 0xde, 0xae, 0x34, 0x5f, 0xc1, 0x39, 0x60, 0xe6, 0x43, 0xb4, | 3253 | 0xc9, 0x7d, 0x5f, 0xc6, 0xf3, 0x11, 0xb5, 0xcf, 0xc9, 0x7e, 0x28, 0x9d, |
| 3254 | 0xdf, 0x67, 0x51, 0x67, 0xd7, 0xba, 0xd4, 0xa3, 0xe9, 0x9f, 0x97, 0x16, | 3254 | 0x36, 0xe7, 0xf7, 0xa9, 0x64, 0xdf, 0xf4, 0x93, 0xf5, 0xd6, 0xf3, 0xbd, |
| 3255 | 0xe5, 0x1e, 0xb4, 0x9b, 0xb3, 0x1a, 0x73, 0x1d, 0xbe, 0x0f, 0x8a, 0xa8, | 3255 | 0x9c, 0xd1, 0xa7, 0x99, 0x58, 0xf3, 0xdf, 0xd8, 0x0c, 0xe6, 0xeb, 0x43, |
| 3256 | 0x3f, 0x33, 0x0f, 0xdb, 0x7d, 0x07, 0x08, 0x7f, 0x65, 0xf3, 0x3f, 0xdf, | 3256 | 0xd5, 0xe1, 0xf9, 0x60, 0x54, 0x7e, 0x2c, 0x07, 0xcd, 0x1a, 0x73, 0xc2, |
| 3257 | 0x61, 0xfe, 0xff, 0xb3, 0x39, 0x5f, 0x58, 0xca, 0xa3, 0xa9, 0xd3, 0x60, | 3257 | 0x27, 0x73, 0x57, 0xc8, 0xcd, 0xf1, 0x39, 0x7d, 0x3e, 0x4d, 0x0b, 0x32, |
| 3258 | 0x1e, 0x83, 0xf5, 0x1a, 0x9d, 0xc3, 0xcb, 0xcd, 0xdf, 0x1c, 0x74, 0x3e, | 3258 | 0xbb, 0xf2, 0x13, 0x9d, 0x57, 0xa3, 0x3c, 0x9f, 0x3b, 0xc7, 0x74, 0xbd, |
| 3259 | 0x06, 0x9d, 0xe3, 0x94, 0x88, 0xb1, 0x30, 0x6e, 0xfc, 0x14, 0xdb, 0xb5, | 3259 | 0x7c, 0xba, 0xff, 0x02, 0xd7, 0xeb, 0xad, 0x1b, 0x8c, 0xa7, 0xe0, 0x75, |
| 3260 | 0x67, 0x6d, 0xa6, 0xbb, 0x89, 0x33, 0x96, 0xc6, 0x9c, 0x7b, 0x46, 0x78, | 3260 | 0x42, 0x77, 0xc1, 0x63, 0x7e, 0x5c, 0xf4, 0x4a, 0x84, 0x40, 0xf5, 0xb2, |
| 3261 | 0x71, 0x59, 0x2f, 0x18, 0x3c, 0x7b, 0x4a, 0xbe, 0xfb, 0x6c, 0xfa, 0x0d, | 3261 | 0x5e, 0xe2, 0x77, 0xad, 0x28, 0xef, 0xd1, 0x50, 0xa2, 0x8f, 0xe6, 0xfb, |
| 3262 | 0x6d, 0x29, 0x98, 0xe1, 0x30, 0x0d, 0x00, 0x00, 0x00 }; | 3262 | 0xb1, 0xdb, 0x7e, 0x26, 0xf9, 0x54, 0xbf, 0x6b, 0x39, 0xe3, 0xef, 0xc8, |
| 3263 | 0x8a, 0x31, 0x9f, 0xef, 0x66, 0xcc, 0x67, 0x33, 0x63, 0xbe, 0x4d, 0x5e, | ||
| 3264 | 0xb9, 0x24, 0x7b, 0x57, 0x80, 0x62, 0x9e, 0x1e, 0x26, 0xaf, 0x70, 0x95, | ||
| 3265 | 0xfa, 0x6b, 0xcd, 0xf1, 0xbb, 0xee, 0x15, 0xe7, 0x73, 0x54, 0x37, 0x6f, | ||
| 3266 | 0x9e, 0xf5, 0x0a, 0x7c, 0x1e, 0x68, 0xbc, 0x7e, 0x95, 0xdf, 0x4f, 0x0b, | ||
| 3267 | 0xfe, 0x07, 0x89, 0x6e, 0x1e, 0x13, 0x00, 0x0d, 0x00, 0x00, 0x00 }; | ||
| 3263 | 3268 | ||
| 3264 | static u8 bnx2_xi_rv2p_proc2[] = { | 3269 | static u8 bnx2_xi_rv2p_proc2[] = { |
| 3265 | /* Date: 01/14/2008 15:44 */ | 3270 | /* Date: 04/25/2008 22:02 */ |
| 3266 | 0xad, 0x58, 0x5d, 0x6c, 0xd3, 0x55, 0x14, 0xbf, 0xfd, 0x58, 0xdb, 0x75, | 3271 | #define XI_RV2P_PROC2_MAX_BD_PAGE_LOC 5 |
| 3267 | 0xff, 0xb6, 0x63, 0x9b, 0xdd, 0xa7, 0x6e, 0x6e, 0x61, 0x6c, 0xd8, 0xcd, | 3272 | #define XI_RV2P_PROC2_BD_PAGE_SIZE_MSK 0xffff |
| 3268 | 0xd1, 0x8d, 0x4f, 0x4d, 0x5c, 0x86, 0x19, 0x20, 0x26, 0x8c, 0x61, 0xd4, | 3273 | #define XI_RV2P_PROC2_BD_PAGE_SIZE ((PAGE_SIZE / 16) - 1) |
| 3269 | 0x37, 0xd8, 0x90, 0xb2, 0xb2, 0x8d, 0x2c, 0x8c, 0xf0, 0xc0, 0x8b, 0x0d, | 3274 | 0xad, 0x58, 0x5b, 0x6c, 0x54, 0x55, 0x14, 0x3d, 0xf3, 0xe8, 0xcc, 0xed, |
| 3270 | 0xd3, 0xf1, 0xd2, 0x07, 0x47, 0xb2, 0x0d, 0x8d, 0xc1, 0x45, 0x7d, 0x40, | 3275 | 0xcc, 0x9d, 0x99, 0xd2, 0xd6, 0xe9, 0x8b, 0x48, 0x69, 0xa5, 0x74, 0x70, |
| 3271 | 0x9f, 0xec, 0x83, 0x52, 0x30, 0xc6, 0xc4, 0xe8, 0x42, 0xf0, 0x01, 0x48, | 3276 | 0x0a, 0x65, 0x5a, 0x1e, 0x3e, 0x12, 0x49, 0xd1, 0x02, 0x3e, 0x42, 0xa9, |
| 3272 | 0x30, 0xc6, 0x68, 0x48, 0x08, 0xea, 0x32, 0x10, 0x75, 0x0c, 0xfb, 0x64, | 3277 | 0x86, 0x98, 0x18, 0x03, 0x9d, 0x4a, 0xe9, 0x40, 0x4b, 0x2a, 0x25, 0x7c, |
| 3273 | 0x98, 0xf7, 0x9e, 0xdf, 0xb9, 0xff, 0xfe, 0xff, 0x5d, 0x27, 0x18, 0xec, | 3278 | 0xf0, 0xe3, 0x84, 0x62, 0xf9, 0x99, 0x44, 0x4b, 0x80, 0x16, 0x63, 0x48, |
| 3274 | 0x43, 0x4f, 0xef, 0xbd, 0xe7, 0x9e, 0x7b, 0x3e, 0x7e, 0xe7, 0x9c, 0x7b, | 3279 | 0x23, 0x3f, 0xc4, 0xbf, 0x26, 0x28, 0x45, 0x3f, 0x4c, 0x88, 0x36, 0x04, |
| 3275 | 0x5b, 0x2c, 0x84, 0x70, 0x8a, 0x44, 0xaa, 0x56, 0x52, 0x61, 0x38, 0x5c, | 3280 | 0x3e, 0xc0, 0x44, 0x63, 0xfc, 0x21, 0x12, 0xc4, 0x5a, 0xa0, 0xc1, 0x82, |
| 3276 | 0x02, 0x9f, 0xb5, 0xc5, 0x44, 0xae, 0xa5, 0x7c, 0xf2, 0xbb, 0x40, 0xbc, | 3281 | 0x36, 0xc6, 0x48, 0xeb, 0x3d, 0x7b, 0xed, 0x73, 0xe7, 0xde, 0xe9, 0x2d, |
| 3277 | 0xe4, 0xac, 0xa0, 0xb1, 0x5b, 0x28, 0x1a, 0x12, 0x22, 0x61, 0xa5, 0xa5, | 3282 | 0x8f, 0x48, 0x3f, 0x58, 0x9c, 0x73, 0xf7, 0x39, 0x67, 0xef, 0xb5, 0x1f, |
| 3278 | 0x4c, 0xaf, 0x32, 0xfd, 0x9d, 0xe9, 0xe3, 0x0e, 0xd0, 0x2b, 0x3c, 0xde, | 3283 | 0x67, 0x9f, 0x29, 0x10, 0x42, 0x78, 0x45, 0x7a, 0x64, 0x91, 0x81, 0x22, |
| 3279 | 0xc2, 0xe3, 0x6b, 0x3c, 0xfe, 0x91, 0xe9, 0x46, 0x9e, 0xdf, 0xcc, 0x34, | 3284 | 0xe8, 0xf6, 0x68, 0x06, 0xcc, 0x0a, 0x91, 0x57, 0x2a, 0xc7, 0xc2, 0x2d, |
| 3280 | 0xc9, 0x74, 0x3b, 0xaf, 0xa7, 0x99, 0xca, 0x4f, 0xc2, 0x90, 0x5f, 0x72, | 3285 | 0xf8, 0x6f, 0x59, 0x01, 0xc1, 0x0f, 0x23, 0xf2, 0xbb, 0x5f, 0xbc, 0xe5, |
| 3281 | 0xb9, 0x59, 0xeb, 0x69, 0x60, 0xba, 0x19, 0xfa, 0xee, 0xa9, 0x53, 0x7c, | 3286 | 0xc6, 0x77, 0xaf, 0x90, 0x18, 0x11, 0x22, 0x2d, 0xb1, 0x80, 0x31, 0xc6, |
| 3282 | 0xf3, 0x4b, 0x59, 0x3e, 0xcc, 0x5f, 0x9f, 0x00, 0xad, 0xc5, 0xae, 0x8f, | 3287 | 0xe8, 0x72, 0x01, 0x4b, 0x18, 0x5f, 0x61, 0x14, 0x8c, 0xba, 0x1b, 0xe8, |
| 3283 | 0x13, 0x4f, 0xeb, 0xfd, 0x20, 0x7d, 0x01, 0xd0, 0x7e, 0xb6, 0xbf, 0x33, | 3288 | 0x66, 0xf4, 0xaa, 0x79, 0x5e, 0xaf, 0xf1, 0x7c, 0x3b, 0xe3, 0x76, 0x9e, |
| 3284 | 0x42, 0x24, 0xb9, 0xdf, 0x89, 0x71, 0x77, 0xa3, 0xf2, 0x43, 0x89, 0x70, | 3289 | 0xff, 0xdd, 0x40, 0xa5, 0x97, 0x1c, 0x4f, 0xce, 0x8a, 0xb4, 0x8e, 0x6d, |
| 3285 | 0x3b, 0x95, 0x9c, 0x56, 0x9f, 0xe7, 0x3c, 0xe6, 0x5f, 0x0d, 0x81, 0xbe, | 3290 | 0x63, 0x6a, 0x5e, 0x27, 0x48, 0xc7, 0xa0, 0xf7, 0x9b, 0x95, 0xb4, 0xce, |
| 3286 | 0xe6, 0x07, 0xfd, 0xc5, 0x5f, 0x28, 0xbf, 0x97, 0x96, 0x62, 0x45, 0x2c, | 3291 | 0x41, 0x4e, 0xce, 0xdf, 0x98, 0x55, 0xfb, 0x1d, 0xf4, 0xc8, 0xf1, 0x2f, |
| 3287 | 0xdf, 0x60, 0xb5, 0x8b, 0xb0, 0x7f, 0xd6, 0x80, 0x1e, 0x2f, 0xd7, 0x41, | 3292 | 0xc6, 0xd8, 0x25, 0x87, 0xc5, 0x51, 0x6c, 0x53, 0x5c, 0x9a, 0x91, 0xfb, |
| 3288 | 0xbf, 0xef, 0x9f, 0x52, 0xf3, 0x2e, 0x91, 0x60, 0x39, 0x42, 0x68, 0x3d, | 3293 | 0x78, 0xc4, 0xd0, 0x80, 0x46, 0xac, 0x1c, 0xd7, 0x31, 0x4e, 0x13, 0x1f, |
| 3289 | 0x79, 0x7d, 0x10, 0xfb, 0x56, 0xad, 0xc1, 0xea, 0x5b, 0x31, 0x8c, 0xab, | 3294 | 0x2e, 0x63, 0xcc, 0xfb, 0x31, 0x96, 0x85, 0x70, 0xee, 0xd6, 0x4a, 0x9c, |
| 3290 | 0x3f, 0x28, 0xa6, 0xb8, 0x9c, 0x4e, 0x69, 0xfe, 0x7c, 0x72, 0xdd, 0x52, | 3295 | 0xf7, 0xd3, 0xb3, 0x90, 0x4b, 0x47, 0x14, 0xa1, 0xf8, 0xbe, 0x48, 0xf0, |
| 3291 | 0x2e, 0xe4, 0x8b, 0x7a, 0x1f, 0x29, 0x93, 0x88, 0x80, 0x8a, 0x96, 0xdc, | 3296 | 0xf7, 0xdd, 0x72, 0x3c, 0xe5, 0x2a, 0x72, 0x81, 0x57, 0xbf, 0x50, 0x7a, |
| 3292 | 0x73, 0x20, 0x7f, 0x6a, 0xb5, 0x9a, 0x77, 0x8a, 0x5e, 0x97, 0x9a, 0xf7, | 3297 | 0x42, 0xee, 0xea, 0x40, 0xae, 0x3c, 0x0d, 0x3f, 0x4f, 0xaf, 0x50, 0x76, |
| 3293 | 0x88, 0xde, 0xb8, 0xf6, 0x2f, 0xd6, 0x63, 0x1e, 0x22, 0x15, 0x7d, 0xe3, | 3298 | 0x00, 0xda, 0x42, 0xc0, 0xa4, 0x07, 0xb8, 0x2e, 0x4e, 0x90, 0x69, 0x67, |
| 3294 | 0xca, 0xce, 0x90, 0xd8, 0xe7, 0x0c, 0x11, 0x3f, 0xfc, 0xe2, 0xf2, 0x19, | 3299 | 0x47, 0x36, 0xd7, 0x48, 0x3d, 0x0a, 0x85, 0xd7, 0x2d, 0xf7, 0x5b, 0xa1, |
| 3295 | 0x9f, 0x81, 0xff, 0xcb, 0x5a, 0x83, 0x6c, 0x89, 0xb5, 0x63, 0x5f, 0x59, | 3300 | 0xf9, 0xce, 0x61, 0xfe, 0x6d, 0xd6, 0xeb, 0xbd, 0x00, 0xf0, 0x46, 0x20, |
| 3296 | 0x14, 0x74, 0x32, 0x5a, 0xa0, 0x48, 0x24, 0x36, 0x4a, 0xc3, 0xd6, 0x9b, | 3301 | 0xdf, 0xf8, 0x77, 0x76, 0xb6, 0x23, 0x68, 0xb7, 0x2b, 0x1d, 0xc4, 0xfa, |
| 3297 | 0xeb, 0x7c, 0xc4, 0x97, 0x68, 0xd1, 0xf1, 0xd3, 0xf1, 0x52, 0x71, 0xfc, | 3302 | 0x31, 0xdd, 0xc9, 0x3e, 0xcf, 0x03, 0xec, 0xc3, 0xba, 0x05, 0x4b, 0xf1, |
| 3298 | 0x44, 0xc6, 0x91, 0xdd, 0xd2, 0x00, 0xbf, 0xfe, 0xba, 0x5a, 0xf1, 0x4b, | 3303 | 0xf5, 0xe3, 0x0e, 0x8c, 0x2b, 0x4e, 0x49, 0x39, 0x9f, 0x18, 0x1a, 0x71, |
| 3299 | 0xe7, 0xd6, 0xe3, 0x9c, 0xac, 0x7e, 0xd6, 0xf8, 0x7f, 0xf4, 0x1f, 0xe2, | 3304 | 0xe2, 0x23, 0x77, 0x7f, 0x23, 0x4e, 0x23, 0x38, 0x47, 0x54, 0x69, 0xa4, |
| 3300 | 0xaf, 0xe4, 0x75, 0xb2, 0x5f, 0xea, 0xa4, 0x5f, 0x14, 0xad, 0x71, 0x24, | 3305 | 0x54, 0x3a, 0x0e, 0x14, 0x75, 0x8e, 0xfc, 0x88, 0xe3, 0x4b, 0xe4, 0xbc, |
| 3301 | 0x5a, 0xec, 0xf1, 0xb8, 0x3e, 0x11, 0xa2, 0xdf, 0xb7, 0xba, 0x8a, 0xc9, | 3306 | 0x5b, 0xb4, 0x7a, 0x74, 0x3a, 0xa7, 0x35, 0xa5, 0xe2, 0x02, 0xdf, 0x3b, |
| 3302 | 0xaf, 0xbb, 0x30, 0x7f, 0xaa, 0xfb, 0x1c, 0xe2, 0xb1, 0x83, 0xec, 0x17, | 3307 | 0x7c, 0x04, 0xa5, 0x6d, 0xfd, 0xd2, 0xde, 0x88, 0xd8, 0xee, 0x8e, 0x90, |
| 3303 | 0xfe, 0x37, 0x3e, 0xc5, 0xae, 0xbe, 0x80, 0x1a, 0xbf, 0xd2, 0x11, 0xbb, | 3308 | 0x3c, 0xf8, 0xf1, 0x68, 0xfa, 0x97, 0x90, 0xff, 0x66, 0x91, 0x4e, 0x36, |
| 3304 | 0x80, 0xf5, 0x82, 0x31, 0xf8, 0x75, 0x17, 0x4b, 0xdd, 0xe1, 0x72, 0x28, | 3309 | 0x75, 0x34, 0x60, 0x5d, 0x71, 0x02, 0x78, 0x2c, 0x91, 0x27, 0x21, 0xde, |
| 3305 | 0x92, 0xf4, 0x8c, 0xd1, 0xd0, 0x98, 0xa5, 0x75, 0x43, 0x9c, 0x4c, 0x61, | 3310 | 0xd1, 0x4b, 0xc3, 0xe5, 0xd7, 0x57, 0x6a, 0x24, 0x97, 0xae, 0x53, 0x71, |
| 3306 | 0xfd, 0x70, 0x91, 0x1a, 0xef, 0x8a, 0xcc, 0x63, 0x1c, 0x89, 0x8f, 0xf3, | 3311 | 0xa7, 0xfc, 0x27, 0xfd, 0x3a, 0x64, 0xc6, 0x99, 0xa8, 0x06, 0xbf, 0xbf, |
| 3307 | 0x46, 0x27, 0xfc, 0x70, 0xcb, 0x09, 0x79, 0x0c, 0x2f, 0xbf, 0x9b, 0xe2, | 3312 | 0x2d, 0x91, 0xf2, 0x06, 0xc9, 0x55, 0x38, 0x27, 0xab, 0x9f, 0x35, 0x6e, |
| 3308 | 0xe0, 0x10, 0x46, 0x37, 0xe8, 0x9b, 0xb4, 0xfe, 0xb7, 0x23, 0x49, 0x76, | 3313 | 0x07, 0x2c, 0x71, 0xfb, 0x78, 0xf1, 0xb0, 0x8e, 0xf8, 0x59, 0xc7, 0x3c, |
| 3309 | 0x77, 0x07, 0xdd, 0xe7, 0xc0, 0xc8, 0xb8, 0x36, 0x71, 0xab, 0x71, 0xff, | 3314 | 0x55, 0x1a, 0x3c, 0x49, 0x5c, 0xe8, 0x4a, 0xd7, 0xd9, 0xfd, 0x74, 0x75, |
| 3310 | 0xb0, 0xf8, 0x1d, 0x37, 0x34, 0x5e, 0xd9, 0xff, 0xec, 0xdf, 0xf7, 0x44, | 3315 | 0x20, 0x42, 0xff, 0xbf, 0xd9, 0x54, 0x40, 0x3c, 0x6f, 0xc6, 0xfc, 0x91, |
| 3311 | 0x2e, 0x4e, 0x41, 0xbb, 0x1b, 0x41, 0x3d, 0x0d, 0xb9, 0x78, 0xd5, 0xf8, | 3316 | 0xe6, 0xb3, 0xf0, 0xd3, 0x26, 0xe2, 0x43, 0x04, 0x0e, 0x7d, 0x81, 0x55, |
| 3312 | 0xb4, 0xfb, 0x99, 0xe3, 0x63, 0xc1, 0x0b, 0x11, 0x89, 0x13, 0x1b, 0x6e, | 3317 | 0x6d, 0x14, 0xdf, 0xdd, 0x8d, 0x1d, 0x5f, 0x61, 0x9c, 0xf4, 0xc8, 0xf1, |
| 3313 | 0x18, 0xa7, 0x95, 0xd2, 0x5f, 0x3a, 0xfe, 0x4a, 0x90, 0x57, 0x0c, 0xb2, | 3318 | 0x6e, 0xbd, 0x7d, 0x14, 0xf2, 0x79, 0x7d, 0xe0, 0x7d, 0x33, 0x9f, 0xb2, |
| 3314 | 0xbc, 0x38, 0xdb, 0x35, 0xc4, 0x76, 0xdd, 0xf1, 0x6b, 0xbf, 0x6a, 0x7b, | 3319 | 0xc9, 0x43, 0xf9, 0x94, 0xf1, 0xf5, 0xd1, 0x50, 0x1f, 0xa3, 0xef, 0x05, |
| 3315 | 0x40, 0x4f, 0xda, 0xec, 0x71, 0x48, 0x3c, 0xd9, 0x71, 0xc8, 0xfa, 0x24, | 3320 | 0xe2, 0xf0, 0x08, 0xbe, 0xef, 0x09, 0x4a, 0x3b, 0xdf, 0x37, 0xf3, 0x2e, |
| 3316 | 0xbf, 0xa9, 0xc7, 0x8f, 0xea, 0x06, 0x50, 0xd3, 0xce, 0x46, 0xc5, 0xe7, | 3321 | 0xe5, 0xc3, 0xfa, 0xcc, 0x00, 0xf2, 0x66, 0xe2, 0x8c, 0x1c, 0x6f, 0x8b, |
| 3317 | 0x89, 0x4e, 0xa7, 0xec, 0x38, 0xd4, 0xf9, 0xb8, 0xa7, 0x4e, 0xcb, 0x57, | 3322 | 0x4f, 0x40, 0x3e, 0x9e, 0xea, 0xe7, 0x8d, 0xdd, 0xe0, 0xf1, 0xa6, 0x1b, |
| 3318 | 0xb8, 0xcc, 0x48, 0x5c, 0x22, 0x6e, 0xa7, 0x53, 0xd6, 0xfc, 0xac, 0xca, | 3323 | 0xf2, 0x1c, 0xa6, 0x01, 0x2f, 0xf9, 0xd1, 0x25, 0xf4, 0x66, 0xe0, 0x87, |
| 3319 | 0x93, 0x9f, 0xf6, 0xbc, 0xd0, 0x7e, 0x39, 0x1c, 0xa0, 0x02, 0xd5, 0x71, | 3324 | 0xf4, 0xfd, 0x5f, 0x57, 0x86, 0x78, 0xdb, 0x1a, 0xf6, 0x9e, 0x55, 0xfc, |
| 3320 | 0x79, 0xce, 0x7e, 0x1e, 0xf0, 0xed, 0x35, 0xf1, 0x53, 0xb6, 0x81, 0xfd, | 3325 | 0x30, 0x46, 0x94, 0x5d, 0xc0, 0x47, 0xcd, 0x83, 0xfe, 0x79, 0xf3, 0x80, |
| 3321 | 0xc7, 0x34, 0xbc, 0x51, 0xc9, 0xeb, 0x61, 0xf9, 0x6d, 0x2c, 0xdf, 0xb0, | 3326 | 0xfd, 0x19, 0x7b, 0x58, 0x1e, 0x00, 0x9b, 0x6b, 0x80, 0xbe, 0x6a, 0x29, |
| 3322 | 0xe4, 0x9d, 0xd2, 0xaf, 0xcb, 0xcc, 0x37, 0x1d, 0xb7, 0x6c, 0xde, 0x69, | 3327 | 0x9f, 0xff, 0x18, 0xf9, 0xc0, 0x7a, 0xcd, 0xc9, 0x37, 0xcc, 0x66, 0xe3, |
| 3323 | 0xff, 0xd1, 0xf9, 0x91, 0xcb, 0x73, 0x6a, 0x7f, 0xf5, 0x03, 0xf2, 0x70, | 3328 | 0x94, 0xc0, 0x88, 0x4f, 0x5b, 0xbc, 0x72, 0x7e, 0x2c, 0x36, 0xfc, 0xa0, |
| 3324 | 0x93, 0x29, 0xef, 0x3b, 0x33, 0xdf, 0xd4, 0x7a, 0x91, 0x78, 0x8e, 0x87, | 3329 | 0xe2, 0x4e, 0x6e, 0xe8, 0x17, 0xbb, 0x79, 0xdf, 0x14, 0xf3, 0xd1, 0xc5, |
| 3325 | 0xf6, 0x7a, 0xf2, 0xa7, 0xac, 0x27, 0x64, 0x87, 0xcf, 0x38, 0xc7, 0xf5, | 3330 | 0x7c, 0x4c, 0x32, 0xee, 0x09, 0x2a, 0x1e, 0x80, 0x87, 0x75, 0x9c, 0xdb, |
| 3326 | 0x63, 0x54, 0x9d, 0x53, 0xc1, 0x7a, 0x57, 0xb0, 0xde, 0xb2, 0x5f, 0xb5, | 3331 | 0x9a, 0x92, 0x7e, 0x5c, 0xeb, 0x50, 0x3f, 0x55, 0x9d, 0x84, 0x9f, 0x86, |
| 3327 | 0x70, 0x9d, 0xd9, 0x6b, 0xad, 0x17, 0x6b, 0x2d, 0x79, 0xaf, 0xc6, 0x4d, | 3332 | 0xd8, 0xaf, 0x27, 0xcc, 0x7a, 0xa9, 0xf8, 0x9d, 0xaf, 0x6e, 0xda, 0xf3, |
| 3328 | 0x4b, 0xcb, 0xfb, 0x85, 0xcd, 0x9f, 0x09, 0x41, 0xfe, 0xf7, 0x72, 0x7c, | 3333 | 0x29, 0xc7, 0xce, 0xcc, 0x77, 0x55, 0x58, 0x5e, 0x58, 0x0d, 0x34, 0xf9, |
| 3329 | 0x3c, 0x79, 0xfa, 0x8b, 0xe6, 0x07, 0xbe, 0xb6, 0x11, 0xbf, 0xcf, 0xc4, | 3334 | 0xad, 0xa1, 0x3c, 0x0e, 0x97, 0x8c, 0x2a, 0xfb, 0xa4, 0x7e, 0xb7, 0x55, |
| 3330 | 0xbf, 0xdd, 0xde, 0xaa, 0x3c, 0x75, 0x27, 0xd7, 0x7e, 0xf8, 0xb3, 0xcf, | 3335 | 0x1e, 0x86, 0x07, 0x0f, 0x12, 0x06, 0x0a, 0x4f, 0xc9, 0x73, 0xca, 0x1d, |
| 3331 | 0x19, 0x20, 0xbe, 0x1b, 0x23, 0x6a, 0xdf, 0x49, 0x87, 0xf6, 0x53, 0x27, | 3336 | 0xea, 0x8a, 0x3d, 0x9f, 0x73, 0xf9, 0xdd, 0x13, 0xa2, 0x42, 0xdb, 0x78, |
| 3332 | 0xea, 0x90, 0x03, 0xf6, 0xd6, 0xb0, 0xbd, 0x72, 0xb9, 0x85, 0xf0, 0xef, | 3337 | 0x79, 0xdc, 0x9e, 0xb7, 0xc8, 0x4f, 0xbf, 0x19, 0xdf, 0xc5, 0xab, 0xd9, |
| 3333 | 0xbb, 0x31, 0x62, 0xb5, 0xd7, 0xf8, 0x97, 0xf3, 0xec, 0xb8, 0x19, 0xe1, | 3338 | 0x0f, 0x8c, 0xd1, 0x35, 0x72, 0xdf, 0x16, 0x3e, 0xa7, 0x9e, 0xcf, 0xd1, |
| 3334 | 0x3e, 0xd6, 0x8f, 0xbc, 0xf0, 0xed, 0xff, 0x5c, 0xeb, 0xc3, 0xe7, 0x86, | 3339 | 0x2d, 0x75, 0x43, 0xea, 0x59, 0x68, 0xd6, 0x0b, 0x15, 0x1f, 0xd9, 0xba, |
| 3335 | 0xf4, 0xf9, 0x4a, 0x5e, 0xb5, 0x98, 0x1b, 0x55, 0xfb, 0x1f, 0x13, 0x0c, | 3340 | 0xa1, 0xfc, 0x40, 0xe7, 0xc7, 0x2f, 0x8f, 0xcb, 0xf5, 0x15, 0x0f, 0xa9, |
| 3336 | 0x33, 0x31, 0xdc, 0x84, 0xfa, 0x77, 0xe7, 0x00, 0xf4, 0x1f, 0x6e, 0xd4, | 3341 | 0x23, 0x9a, 0xb9, 0xdf, 0x8f, 0x66, 0x9d, 0x90, 0xdf, 0x83, 0xe2, 0x25, |
| 3337 | 0x7d, 0x1c, 0x38, 0x16, 0x5c, 0xff, 0xbf, 0x9e, 0xc8, 0xe7, 0x97, 0x41, | 3342 | 0x1e, 0xda, 0xeb, 0xe1, 0x1f, 0x46, 0x3d, 0x24, 0x3b, 0x34, 0xfd, 0x2c, |
| 3338 | 0x07, 0xf8, 0xca, 0xd8, 0xae, 0x62, 0xb6, 0x2b, 0x22, 0x72, 0xeb, 0xec, | 3343 | 0xd7, 0xbf, 0x5e, 0x79, 0x4e, 0x29, 0xeb, 0x5d, 0xca, 0x7a, 0x1b, 0xd7, |
| 3339 | 0x5e, 0xca, 0x97, 0x4e, 0xe6, 0x7b, 0x56, 0xd7, 0xe3, 0x65, 0x7c, 0xb0, | 3344 | 0x73, 0x1d, 0xd7, 0xc9, 0x6d, 0xd6, 0x7a, 0xf7, 0xcf, 0x4c, 0xb6, 0x6e, |
| 3340 | 0xbf, 0x80, 0xcf, 0xcf, 0xe7, 0xaf, 0x7c, 0x72, 0xd3, 0x8c, 0xa3, 0x01, | 3345 | 0xc9, 0xf1, 0xdf, 0x33, 0x73, 0xef, 0x5f, 0x47, 0x5e, 0xd3, 0x22, 0x82, |
| 3341 | 0xe6, 0x73, 0xe7, 0xa9, 0xf3, 0x18, 0x65, 0xd6, 0x50, 0x9d, 0x3f, 0x73, | 3346 | 0x3e, 0x23, 0x1d, 0x51, 0x7d, 0x41, 0x6e, 0xfd, 0xcb, 0xb5, 0x03, 0xbc, |
| 3342 | 0x3c, 0xad, 0xf8, 0x02, 0x26, 0xce, 0xed, 0x76, 0xfd, 0x74, 0xff, 0xd1, | 3347 | 0xb4, 0xb9, 0x43, 0x24, 0x77, 0xad, 0xc7, 0xde, 0x27, 0xa0, 0x0e, 0x56, |
| 3343 | 0xfd, 0xaf, 0xf8, 0xc2, 0xe2, 0x60, 0x70, 0x25, 0x3f, 0xbb, 0xd5, 0xf4, | 3348 | 0xba, 0xa0, 0xf7, 0x42, 0xd6, 0xdb, 0xd8, 0xaf, 0x8e, 0xf2, 0x41, 0xbb, |
| 3344 | 0xcc, 0x42, 0x5a, 0xc7, 0xc9, 0x20, 0x3b, 0xe7, 0x46, 0xd5, 0xf9, 0x1f, | 3349 | 0xd6, 0x63, 0xd5, 0xfb, 0xfa, 0xcc, 0xfc, 0xe7, 0x39, 0xc7, 0x41, 0x0f, |
| 3345 | 0xe6, 0xf8, 0xdf, 0x69, 0xf1, 0x3f, 0xf8, 0x9f, 0x88, 0x3c, 0xaa, 0xdf, | 3350 | 0xdf, 0xaf, 0x49, 0xc4, 0xb1, 0xd6, 0xfe, 0xb5, 0xd2, 0x8b, 0xcf, 0x8f, |
| 3346 | 0xf3, 0xf5, 0xe5, 0x2f, 0xee, 0x2f, 0xcf, 0x13, 0x35, 0x7f, 0xe1, 0xa1, | 3351 | 0x28, 0x3d, 0x74, 0xf2, 0xd3, 0x78, 0xaf, 0xdc, 0xa7, 0x48, 0x70, 0xd8, |
| 3347 | 0xfd, 0xb1, 0xbb, 0xdd, 0x6a, 0x7f, 0x83, 0x98, 0x4d, 0x21, 0xbf, 0x7a, | 3352 | 0x88, 0xee, 0x5a, 0xd4, 0xdf, 0xc9, 0x1d, 0xb0, 0xa3, 0xbb, 0x46, 0xea, |
| 3348 | 0x18, 0x87, 0xfb, 0xb8, 0x5e, 0xdf, 0xf0, 0xab, 0x09, 0x9f, 0xe8, 0xdf, | 3353 | 0x61, 0x78, 0x25, 0x8d, 0x3c, 0x17, 0x7c, 0x1f, 0x7d, 0x3b, 0xe0, 0xe4, |
| 3349 | 0x49, 0xfe, 0x10, 0xe1, 0x22, 0xf8, 0xa7, 0xff, 0x45, 0xed, 0x4f, 0xcc, | 3354 | 0xd7, 0x4b, 0x2c, 0x57, 0xcc, 0xf6, 0x15, 0xb0, 0x7d, 0x71, 0x91, 0x5b, |
| 3350 | 0x57, 0x51, 0xbf, 0x75, 0x89, 0x1e, 0xaf, 0x41, 0xfc, 0x55, 0x01, 0xd0, | 3355 | 0xe7, 0xb7, 0x55, 0xd2, 0x7d, 0xc0, 0x72, 0x2f, 0xaa, 0xfb, 0xc0, 0x90, |
| 3351 | 0x30, 0xd7, 0xf9, 0x59, 0xb3, 0x8f, 0x81, 0x9e, 0xf6, 0xe8, 0xba, 0x8c, | 3356 | 0x93, 0xfb, 0xe4, 0xf1, 0x3e, 0x4e, 0x3c, 0x39, 0xed, 0x33, 0xca, 0x71, |
| 3352 | 0x7e, 0xfe, 0x95, 0x47, 0x31, 0xc8, 0x20, 0x35, 0xa3, 0x3e, 0x77, 0x35, | 3357 | 0xd0, 0xc9, 0x72, 0x5e, 0x87, 0x7b, 0x05, 0xa3, 0xe9, 0xa5, 0x74, 0xaf, |
| 3353 | 0x1a, 0xb4, 0xde, 0xdb, 0x0c, 0x3c, 0x89, 0x7a, 0xdd, 0xe7, 0xf0, 0xe1, | 3358 | 0x9c, 0x3c, 0x40, 0xf7, 0x43, 0xc8, 0x8c, 0x53, 0xbb, 0x1d, 0x67, 0x9e, |
| 3354 | 0x3e, 0x50, 0x95, 0xed, 0x77, 0xd6, 0x7e, 0x58, 0x68, 0xe9, 0x07, 0xfa, | 3359 | 0x20, 0xef, 0x52, 0x3e, 0x2a, 0x76, 0x86, 0xe7, 0xe3, 0xd7, 0x2b, 0xa7, |
| 3355 | 0x3c, 0xed, 0x47, 0x2d, 0x97, 0x86, 0xb2, 0xaf, 0x58, 0xfb, 0xa1, 0xee, | 3360 | 0x87, 0xa7, 0x46, 0x95, 0x7f, 0x74, 0xb2, 0x77, 0xbc, 0x57, 0xf5, 0xb1, |
| 3356 | 0x13, 0x8b, 0xdc, 0x27, 0x4a, 0xc5, 0xc5, 0x14, 0xec, 0x9a, 0x4d, 0xe5, | 3361 | 0x56, 0xde, 0xdd, 0x16, 0xde, 0x21, 0xff, 0x74, 0xfc, 0xff, 0xf2, 0xed, |
| 3357 | 0xe2, 0x4f, 0x9f, 0xa7, 0xe5, 0x41, 0x6f, 0x6d, 0x47, 0x56, 0x3e, 0xce, | 3362 | 0xd4, 0x1f, 0x1c, 0x9d, 0x31, 0xfb, 0x50, 0x9f, 0x53, 0xfd, 0x5f, 0x61, |
| 3358 | 0x3f, 0xc0, 0x7a, 0xfe, 0x4c, 0xf7, 0xd8, 0x30, 0xdb, 0xa3, 0xe4, 0x62, | 3363 | 0xc6, 0xcb, 0x5e, 0xee, 0xef, 0xa6, 0x75, 0xfa, 0x4f, 0x62, 0x32, 0x43, |
| 3359 | 0x7e, 0x3b, 0xf7, 0xe7, 0x84, 0x39, 0xb6, 0xf7, 0xd5, 0x1e, 0xd2, 0xab, | 3364 | 0x43, 0xbd, 0xec, 0xb4, 0x94, 0x5b, 0x96, 0xd8, 0xcb, 0x76, 0x5d, 0xf4, |
| 3360 | 0x84, 0xf1, 0x16, 0xb6, 0xe4, 0x03, 0xf8, 0xcb, 0xda, 0x40, 0x27, 0xdb, | 3365 | 0xc0, 0xee, 0xce, 0x1d, 0x18, 0x5f, 0xe6, 0x7a, 0x7d, 0x97, 0xeb, 0xe3, |
| 3361 | 0x74, 0x1c, 0x74, 0xbc, 0x74, 0x7c, 0x10, 0xc7, 0xf0, 0x3a, 0x62, 0xeb, | 3366 | 0x16, 0x0d, 0x38, 0x59, 0x4b, 0x7c, 0x24, 0xf6, 0x9e, 0x53, 0xfb, 0xd3, |
| 3362 | 0xe8, 0x5f, 0x47, 0x7d, 0xa4, 0xad, 0x7f, 0x41, 0xe3, 0x0f, 0xfb, 0x77, | 3367 | 0xbe, 0xfa, 0x34, 0xf3, 0xf9, 0xb2, 0x87, 0xed, 0xac, 0x22, 0x3f, 0x26, |
| 3363 | 0x47, 0x14, 0xff, 0xeb, 0xe2, 0x2a, 0xe1, 0x50, 0x88, 0x1f, 0x98, 0x66, | 3368 | 0xee, 0x50, 0x3d, 0xf0, 0x8a, 0xa6, 0xc5, 0x12, 0xcb, 0x0c, 0xde, 0x58, |
| 3364 | 0xfb, 0x15, 0x07, 0xc0, 0xcc, 0x57, 0x8e, 0x5f, 0x01, 0x4f, 0xb7, 0xeb, | 3369 | 0x9f, 0x17, 0x80, 0xad, 0x7e, 0xa6, 0x21, 0x96, 0xeb, 0x67, 0x4c, 0xfb, |
| 3365 | 0x7a, 0xae, 0xe3, 0x65, 0xcd, 0xd7, 0xd8, 0x32, 0xdc, 0x66, 0xeb, 0xb2, | 3370 | 0xaa, 0x78, 0x7d, 0x1b, 0xc6, 0x7e, 0xae, 0x67, 0x83, 0xac, 0xd7, 0xd1, |
| 3366 | 0xb6, 0x53, 0xf1, 0x47, 0x18, 0x8f, 0x3e, 0xd1, 0xb5, 0x0d, 0xf7, 0xdc, | 3371 | 0x5a, 0x60, 0x38, 0x86, 0x3e, 0x61, 0x9c, 0xee, 0x85, 0x48, 0xa2, 0x77, |
| 3367 | 0xa0, 0x17, 0x75, 0x3f, 0xe8, 0xb5, 0xc6, 0x4b, 0xe2, 0xa2, 0xd0, 0xab, | 3372 | 0x14, 0xf6, 0x74, 0xad, 0x87, 0xbd, 0xf7, 0x98, 0x07, 0xc6, 0xf0, 0x89, |
| 3368 | 0x86, 0x35, 0x25, 0x85, 0x64, 0xcf, 0xa9, 0x4b, 0xdf, 0xd2, 0xf2, 0xfb, | 3373 | 0x3e, 0xba, 0x77, 0xc2, 0xfd, 0xe8, 0x33, 0xc2, 0xbe, 0x3e, 0xd8, 0xd1, |
| 3369 | 0xd3, 0x45, 0x98, 0x2f, 0xdf, 0x19, 0x22, 0x7f, 0x4c, 0x01, 0xcf, 0xef, | 3374 | 0x35, 0x8d, 0xf1, 0xbd, 0xe7, 0x80, 0x7f, 0x3d, 0x8f, 0x75, 0xfb, 0x0e, |
| 3370 | 0x4e, 0x82, 0xbe, 0x23, 0x5e, 0xc0, 0xfe, 0x92, 0x13, 0x74, 0x0f, 0xf4, | 3375 | 0x30, 0x3f, 0xeb, 0x9d, 0xd7, 0x75, 0xfe, 0x09, 0xb9, 0xee, 0x5a, 0x79, |
| 3371 | 0x95, 0x33, 0x3e, 0x2b, 0x50, 0x27, 0x92, 0xd3, 0x74, 0x2f, 0x59, 0x5a, | 3376 | 0xfe, 0xbb, 0xc3, 0xdc, 0x7f, 0x88, 0x14, 0xf5, 0x3b, 0xef, 0xe8, 0xd3, |
| 3372 | 0x12, 0x01, 0x45, 0x3d, 0x66, 0xbf, 0x01, 0x3e, 0xdd, 0x96, 0x38, 0x3f, | 3377 | 0x3c, 0xde, 0xc5, 0xf7, 0xe2, 0x2d, 0xee, 0x17, 0xba, 0x72, 0xfa, 0x85, |
| 3373 | 0x08, 0xaf, 0x74, 0xaf, 0x94, 0x78, 0xc4, 0x76, 0xc6, 0xad, 0x2f, 0x17, | 3378 | 0x09, 0xd4, 0xe9, 0xe1, 0xe9, 0x8c, 0x9c, 0x30, 0xea, 0x65, 0xbe, 0x93, |
| 3374 | 0xb7, 0xda, 0x1f, 0x15, 0xce, 0xbc, 0x38, 0xdd, 0x60, 0xc7, 0xa9, 0x87, | 3379 | 0x7f, 0xf5, 0x44, 0x09, 0xfb, 0xad, 0x78, 0x15, 0xf0, 0xd8, 0x2a, 0xdc, |
| 3375 | 0x71, 0x7a, 0xcf, 0xec, 0xef, 0xcb, 0xe5, 0xa2, 0xcf, 0x5f, 0xfc, 0xdf, | 3380 | 0xd7, 0x5d, 0xfb, 0x99, 0x9f, 0x46, 0xf2, 0xd3, 0xf2, 0xa9, 0xd1, 0xdc, |
| 3376 | 0x70, 0x0b, 0xba, 0xbd, 0x41, 0x9d, 0x5f, 0xbe, 0xac, 0x1e, 0xd7, 0xda, | 3381 | 0xf5, 0x32, 0x7e, 0x3a, 0x8d, 0xf8, 0x51, 0xe7, 0x40, 0x3e, 0x19, 0x92, |
| 3377 | 0xe2, 0xdc, 0x7c, 0x5f, 0xeb, 0x75, 0xc2, 0x63, 0x5d, 0x6f, 0x31, 0xfb, | 3382 | 0xf3, 0xf7, 0xcc, 0xba, 0x3f, 0x41, 0x7a, 0x57, 0x0c, 0x4f, 0xd3, 0xfa, |
| 3378 | 0xd9, 0x11, 0x7e, 0xe7, 0x65, 0x0c, 0xfa, 0x11, 0xbd, 0x93, 0xa4, 0xa1, | 3383 | 0x72, 0x51, 0x44, 0xf1, 0x57, 0x16, 0x9e, 0x82, 0x1d, 0x89, 0x41, 0xb6, |
| 3379 | 0x51, 0x79, 0x56, 0xf1, 0x35, 0x45, 0x8f, 0x70, 0xbd, 0xbd, 0xe4, 0x42, | 3384 | 0xbf, 0x67, 0x2d, 0x70, 0x3f, 0xfb, 0x5f, 0xf9, 0xf5, 0xca, 0x1a, 0x9d, |
| 3380 | 0xbd, 0x19, 0x38, 0x80, 0xf1, 0x65, 0xae, 0x1f, 0x77, 0xd7, 0x50, 0x5d, | 3385 | 0xd6, 0x8d, 0xf7, 0xe2, 0x1c, 0x95, 0x3f, 0xb9, 0xfd, 0xb0, 0x8a, 0x87, |
| 3381 | 0x8e, 0x1e, 0x39, 0xaf, 0xe5, 0x91, 0x1c, 0x23, 0xc3, 0x75, 0xfd, 0x79, | 3386 | 0xb2, 0x06, 0x1a, 0x8b, 0xce, 0x7d, 0xf2, 0x9c, 0x90, 0xe1, 0x47, 0x19, |
| 3382 | 0x17, 0xd7, 0x5b, 0xf2, 0x9b, 0x3b, 0xfa, 0x07, 0xdd, 0x67, 0xdc, 0xa2, | 3387 | 0x47, 0x06, 0x47, 0x7c, 0x5f, 0xdb, 0xe3, 0x44, 0xc6, 0x91, 0x8a, 0x57, |
| 3383 | 0xeb, 0x49, 0x45, 0x2b, 0x65, 0xfd, 0xe6, 0xf3, 0x9f, 0x01, 0xed, 0xf5, | 3388 | 0x6b, 0x7c, 0x59, 0xe3, 0xc7, 0x1e, 0x37, 0x61, 0xba, 0x57, 0x8c, 0x22, |
| 3384 | 0x82, 0x8a, 0x66, 0x7b, 0x3c, 0x84, 0x69, 0x17, 0x46, 0x9e, 0x7a, 0x96, | 3389 | 0x90, 0xa6, 0x77, 0x44, 0x62, 0x70, 0xe0, 0xc1, 0xfc, 0x9d, 0x00, 0x7f, |
| 3385 | 0xd3, 0x87, 0xb1, 0x97, 0xef, 0x65, 0xd3, 0xec, 0xa7, 0x20, 0xf9, 0xa3, | 3390 | 0x09, 0xd6, 0x5b, 0x4f, 0x51, 0x1f, 0xfa, 0x94, 0xe8, 0x67, 0x3f, 0x4e, |
| 3386 | 0x58, 0xda, 0xa9, 0x68, 0x28, 0x3a, 0x9a, 0x86, 0xfe, 0x43, 0x5b, 0x61, | 3391 | 0xd4, 0x72, 0xde, 0x57, 0xc1, 0x8f, 0x3d, 0xcf, 0x40, 0x9f, 0x1e, 0xce, |
| 3387 | 0xdf, 0x22, 0xdb, 0xcd, 0x34, 0xf8, 0xf6, 0x18, 0xe1, 0x2f, 0x38, 0x8e, | 3392 | 0x9f, 0xdb, 0xdc, 0x5f, 0xc0, 0xff, 0x7e, 0xbd, 0x63, 0x94, 0xfd, 0xcd, |
| 3388 | 0x77, 0x48, 0xd0, 0x33, 0x06, 0x3b, 0x86, 0x32, 0x18, 0x2f, 0x6e, 0x06, | 3393 | 0x71, 0xb8, 0x8b, 0x79, 0xb8, 0x05, 0x1e, 0x74, 0xc5, 0x43, 0xca, 0xe4, |
| 3389 | 0xfd, 0x6b, 0x0b, 0xf6, 0x1d, 0x3d, 0xce, 0xfe, 0xd8, 0x9a, 0x7f, 0xdf, | 3394 | 0x41, 0xd5, 0x19, 0xeb, 0x3e, 0x85, 0x46, 0x1c, 0x49, 0x5c, 0xa0, 0x5f, |
| 3390 | 0xc0, 0x3d, 0xf0, 0x0d, 0x37, 0xa9, 0xf3, 0x07, 0x67, 0xf8, 0xfd, 0x22, | 3395 | 0xa1, 0x3e, 0x2c, 0x8f, 0xed, 0x36, 0xe4, 0x1a, 0xa4, 0x7d, 0x61, 0xb6, |
| 3391 | 0xe2, 0x2e, 0x35, 0x8e, 0x1b, 0x19, 0x1e, 0x1f, 0xe2, 0xfa, 0x7e, 0x9b, | 3396 | 0x2f, 0x24, 0x76, 0x2e, 0xb7, 0xae, 0x0b, 0xf2, 0xba, 0x80, 0xb1, 0x0e, |
| 3392 | 0xdf, 0x1b, 0x43, 0x39, 0xef, 0x8d, 0x79, 0xdc, 0x33, 0x67, 0x32, 0x49, | 3397 | 0xf3, 0xc8, 0x53, 0x7d, 0x1e, 0x7e, 0x25, 0x8f, 0x6a, 0xdf, 0xdc, 0x7c, |
| 3393 | 0xe0, 0x22, 0x51, 0x98, 0xfb, 0x5e, 0x55, 0xe3, 0x9a, 0x68, 0x39, 0xc7, | 3398 | 0xb4, 0xf2, 0x49, 0x15, 0x9a, 0xfe, 0x50, 0x87, 0x0c, 0xbf, 0x51, 0xbd, |
| 3394 | 0xa9, 0x6c, 0x3d, 0xe8, 0xe4, 0x7a, 0xbc, 0x13, 0x86, 0x8e, 0xb1, 0x5f, | 3399 | 0xd2, 0xcd, 0xfa, 0x73, 0x97, 0xea, 0x79, 0xe0, 0x64, 0x37, 0xea, 0xc5, |
| 3395 | 0x3a, 0x28, 0x4e, 0xad, 0x0b, 0xe9, 0x95, 0xde, 0xc9, 0xe0, 0x9b, 0xe2, | 3400 | 0xc9, 0xee, 0xd3, 0x7c, 0xff, 0x32, 0x2f, 0x2d, 0xf4, 0x6e, 0x30, 0xb8, |
| 3396 | 0x73, 0xc3, 0xdc, 0x4f, 0xc2, 0xc8, 0x3f, 0x51, 0x91, 0xe4, 0x77, 0xcb, | 3401 | 0xab, 0xb2, 0xd7, 0x1f, 0xbb, 0x1e, 0x15, 0x16, 0x3d, 0xd4, 0xb9, 0x0f, |
| 3397 | 0x04, 0xee, 0x9d, 0x53, 0x06, 0x68, 0x38, 0xa0, 0xf5, 0x45, 0x3e, 0x26, | 3402 | 0xeb, 0x0f, 0xd0, 0x9f, 0x6e, 0xa0, 0xfe, 0x40, 0x33, 0xfb, 0x6c, 0xfb, |
| 3398 | 0x52, 0xc8, 0x3b, 0xac, 0x3b, 0x2c, 0xeb, 0x7c, 0x1f, 0x59, 0xf6, 0xce, | 3403 | 0x3d, 0x72, 0xeb, 0xfe, 0xe3, 0xde, 0x23, 0x5b, 0x1a, 0xac, 0xe7, 0xc5, |
| 3399 | 0x51, 0x74, 0xd1, 0x51, 0xea, 0xd0, 0x76, 0x62, 0xb5, 0x3f, 0xa0, 0xf0, | 3404 | 0xc4, 0xd8, 0x08, 0xce, 0x69, 0xe1, 0x7b, 0x7b, 0x3b, 0xe7, 0xf7, 0xb5, |
| 3400 | 0x7b, 0xd3, 0xcc, 0xab, 0x79, 0xf2, 0x5b, 0xf5, 0x4c, 0x86, 0xf4, 0xaf, | 3405 | 0x40, 0x84, 0xce, 0x4d, 0xbe, 0x46, 0xf6, 0x8a, 0x68, 0x10, 0xf6, 0x25, |
| 3401 | 0x12, 0xa5, 0xd4, 0x87, 0x2b, 0x83, 0x0b, 0xf0, 0x63, 0x74, 0x9a, 0xfd, | 3406 | 0x5f, 0xc7, 0xf7, 0x64, 0x08, 0xf3, 0xe5, 0x21, 0xfc, 0x3e, 0xd0, 0xe2, |
| 3402 | 0x3f, 0xb2, 0x09, 0xf4, 0x18, 0xe3, 0x4f, 0xe3, 0xea, 0xca, 0x46, 0x83, | 3407 | 0xd7, 0x49, 0xbe, 0x3c, 0x04, 0x8c, 0x72, 0x5d, 0x18, 0x33, 0xdf, 0x11, |
| 3403 | 0xf6, 0xcd, 0x8d, 0xe2, 0x1c, 0x7d, 0x8f, 0xc8, 0x7d, 0x8f, 0x6b, 0x3c, | 3408 | 0xc0, 0x21, 0xdf, 0x7c, 0xef, 0x08, 0xbc, 0xc7, 0xce, 0xfb, 0x50, 0x37, |
| 3404 | 0x56, 0xb6, 0xa3, 0x90, 0x0e, 0x1c, 0x55, 0xe7, 0x04, 0x24, 0x8e, 0x94, | 3409 | 0x44, 0x0c, 0xfd, 0x73, 0x53, 0x8d, 0x4e, 0xdf, 0x5b, 0x63, 0xb8, 0x9f, |
| 3405 | 0xfe, 0xd2, 0x27, 0x9c, 0x8f, 0x76, 0x9c, 0x2a, 0x1c, 0xeb, 0xfc, 0xb0, | 3410 | 0x51, 0x97, 0xe7, 0xda, 0x55, 0x81, 0x78, 0x2d, 0xcf, 0xbe, 0x37, 0xac, |
| 3406 | 0xe2, 0x3b, 0x37, 0xdf, 0xb3, 0x78, 0x0d, 0xd2, 0xbd, 0x5c, 0x16, 0xb9, | 3411 | 0xef, 0x12, 0x3d, 0x31, 0x68, 0xf6, 0xfd, 0x76, 0x3d, 0x90, 0x67, 0x72, |
| 3407 | 0x04, 0xbf, 0x9b, 0xf8, 0x7e, 0xb0, 0x52, 0xfc, 0xde, 0x46, 0xfc, 0xa2, | 3412 | 0x7f, 0x1a, 0x1a, 0xfd, 0xf5, 0xa3, 0xbc, 0x47, 0x3c, 0xdc, 0xaf, 0xdd, |
| 3408 | 0xac, 0xb7, 0x11, 0x1f, 0x43, 0x5f, 0x1c, 0x67, 0x1c, 0xcd, 0x37, 0xf1, | 3413 | 0x99, 0x45, 0xbc, 0x16, 0x89, 0x0b, 0x23, 0xe0, 0x61, 0x6c, 0xc4, 0x29, |
| 3409 | 0xfd, 0x87, 0xf5, 0xfb, 0x8d, 0xdf, 0x67, 0xc0, 0x9b, 0xd7, 0x88, 0xa5, | 3414 | 0x8f, 0xa5, 0x1e, 0xea, 0x1c, 0xd8, 0xa5, 0xec, 0xcc, 0x9e, 0x0b, 0xbd, |
| 3410 | 0x19, 0x5f, 0x8c, 0xfb, 0x43, 0x6c, 0xf7, 0x6d, 0xd8, 0x6d, 0x68, 0xbb, | 3415 | 0x76, 0xb0, 0xfe, 0xbf, 0xd2, 0xef, 0x17, 0x51, 0xb6, 0x57, 0xee, 0x8b, |
| 3411 | 0xe3, 0xa6, 0xdd, 0xfa, 0x7e, 0x65, 0x95, 0x53, 0x22, 0x71, 0xab, 0xe8, | 3416 | 0xf9, 0x8d, 0xf4, 0x6e, 0xca, 0x13, 0x69, 0x73, 0x6c, 0x7f, 0xcf, 0xb4, |
| 3412 | 0x2a, 0xe3, 0x0a, 0xd5, 0xb3, 0x02, 0xb6, 0x53, 0xf2, 0xb5, 0x2b, 0x7b, | 3417 | 0x90, 0x5e, 0x85, 0x7c, 0xaf, 0x47, 0x2d, 0xfd, 0x07, 0xe4, 0x8b, 0xeb, |
| 3413 | 0x82, 0x6c, 0x4f, 0x40, 0x1c, 0x6c, 0xb5, 0xee, 0x2b, 0xe2, 0x7d, 0x7e, | 3418 | 0x81, 0xc7, 0xea, 0x95, 0xdf, 0x94, 0x7f, 0x95, 0x3f, 0xe1, 0xf7, 0xe8, |
| 3414 | 0xb9, 0x0f, 0xf3, 0xa8, 0x0b, 0xc6, 0x0a, 0xfe, 0x54, 0x7e, 0xd3, 0x72, | 3419 | 0x4a, 0x12, 0x6b, 0x4c, 0xae, 0xa4, 0x84, 0xaf, 0x4f, 0x4e, 0xa9, 0x7b, |
| 3415 | 0x73, 0xf3, 0xde, 0xea, 0x3f, 0xba, 0x91, 0xd2, 0x07, 0xf5, 0x4d, 0xc6, | 3420 | 0x1e, 0xeb, 0xb7, 0xc4, 0xa5, 0xfc, 0x07, 0xe2, 0xfb, 0x38, 0x2e, 0xd6, |
| 3416 | 0xa9, 0x05, 0xff, 0x1f, 0xe8, 0xfa, 0x76, 0x97, 0xee, 0xaf, 0xfe, 0x33, | 3421 | 0x9f, 0x19, 0xb3, 0xfd, 0xbd, 0xe0, 0x3f, 0xeb, 0x3b, 0xc1, 0x23, 0xce, |
| 3417 | 0xc3, 0xa8, 0x4f, 0x67, 0x86, 0xcf, 0xf2, 0xbb, 0x83, 0xfd, 0xd2, 0x43, | 3422 | 0xe7, 0xf1, 0x74, 0x83, 0xea, 0x7b, 0xe7, 0x7b, 0xef, 0x48, 0x3b, 0x3e, |
| 3418 | 0xff, 0x5b, 0xc8, 0xd8, 0xd5, 0xdb, 0xeb, 0x9b, 0x5d, 0x8f, 0x6a, 0x8b, | 3423 | 0xba, 0x9f, 0xdb, 0x47, 0x67, 0xfb, 0x60, 0x65, 0xaf, 0x5c, 0x57, 0xcf, |
| 3419 | 0x1e, 0xfa, 0xdc, 0x7f, 0x00, 0x5a, 0x33, 0xe6, 0xc0, 0x30, 0x14, 0x00, | 3424 | 0x71, 0xac, 0x89, 0xa6, 0x0d, 0xf8, 0x7d, 0x23, 0xec, 0x47, 0xde, 0x84, |
| 3420 | 0x00, 0x00 }; | 3425 | 0xfd, 0x4e, 0xef, 0x52, 0x23, 0x8e, 0xf2, 0xa9, 0x60, 0x2c, 0x2c, 0xcc, |
| 3426 | 0x27, 0xfb, 0x8e, 0x5c, 0xbc, 0x44, 0x62, 0x9f, 0x0d, 0x06, 0x31, 0x5f, | ||
| 3427 | 0xd2, 0x84, 0x63, 0xbc, 0x14, 0xf7, 0x1e, 0x71, 0x08, 0x79, 0xf1, 0xe9, | ||
| 3428 | 0x31, 0xe0, 0x27, 0xe2, 0x55, 0xec, 0x53, 0x78, 0x90, 0xee, 0x53, 0xad, | ||
| 3429 | 0x04, 0x34, 0x67, 0x06, 0x39, 0xde, 0x4b, 0xdd, 0xf4, 0xfb, 0xe2, 0xac, | ||
| 3430 | 0x08, 0x49, 0xf4, 0x99, 0xf9, 0x8b, 0xb8, 0xf6, 0x5a, 0xfc, 0xff, 0xa8, | ||
| 3431 | 0x71, 0x4e, 0xf5, 0xc9, 0x88, 0x63, 0x6c, 0xc3, 0xf1, 0xae, 0xe5, 0xc6, | ||
| 3432 | 0xbb, 0xe2, 0xa9, 0xd4, 0xed, 0x18, 0xdf, 0xab, 0xe7, 0xc6, 0xb7, 0xd2, | ||
| 3433 | 0x4f, 0xf2, 0x7d, 0xd7, 0xbc, 0x3f, 0xe7, 0xee, 0x8f, 0xf7, 0xd3, 0x85, | ||
| 3434 | 0x27, 0x16, 0xdf, 0xc0, 0x8d, 0xd5, 0xf2, 0xfc, 0x92, 0x39, 0x7d, 0x72, | ||
| 3435 | 0x6e, 0xfe, 0xa1, 0xde, 0xbd, 0x61, 0xc4, 0xc3, 0x7f, 0x69, 0x4a, 0x77, | ||
| 3436 | 0x8f, 0xc8, 0x15, 0x00, 0x00, 0x00 }; | ||
| 3421 | 3437 | ||
| 3422 | static u8 bnx2_TPAT_b09FwText[] = { | 3438 | static u8 bnx2_TPAT_b09FwText[] = { |
| 3423 | 0xbd, 0x58, 0x5d, 0x6c, 0x1c, 0xd5, 0x15, 0x3e, 0x73, 0x67, 0xd6, 0x3b, | 3439 | 0xbd, 0x58, 0x5d, 0x6c, 0x1c, 0xd5, 0x15, 0x3e, 0x73, 0x67, 0xd6, 0x3b, |
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index b66c75e3b8a1..07b3f77e7626 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
| @@ -64,8 +64,8 @@ | |||
| 64 | 64 | ||
| 65 | #define DRV_MODULE_NAME "tg3" | 65 | #define DRV_MODULE_NAME "tg3" |
| 66 | #define PFX DRV_MODULE_NAME ": " | 66 | #define PFX DRV_MODULE_NAME ": " |
| 67 | #define DRV_MODULE_VERSION "3.91" | 67 | #define DRV_MODULE_VERSION "3.92" |
| 68 | #define DRV_MODULE_RELDATE "April 18, 2008" | 68 | #define DRV_MODULE_RELDATE "May 2, 2008" |
| 69 | 69 | ||
| 70 | #define TG3_DEF_MAC_MODE 0 | 70 | #define TG3_DEF_MAC_MODE 0 |
| 71 | #define TG3_DEF_RX_MODE 0 | 71 | #define TG3_DEF_RX_MODE 0 |
| @@ -1656,12 +1656,76 @@ static int tg3_set_power_state(struct tg3 *tp, pci_power_t state) | |||
| 1656 | return 0; | 1656 | return 0; |
| 1657 | } | 1657 | } |
| 1658 | 1658 | ||
| 1659 | /* tp->lock is held. */ | ||
| 1660 | static void tg3_wait_for_event_ack(struct tg3 *tp) | ||
| 1661 | { | ||
| 1662 | int i; | ||
| 1663 | |||
| 1664 | /* Wait for up to 2.5 milliseconds */ | ||
| 1665 | for (i = 0; i < 250000; i++) { | ||
| 1666 | if (!(tr32(GRC_RX_CPU_EVENT) & GRC_RX_CPU_DRIVER_EVENT)) | ||
| 1667 | break; | ||
| 1668 | udelay(10); | ||
| 1669 | } | ||
| 1670 | } | ||
| 1671 | |||
| 1672 | /* tp->lock is held. */ | ||
| 1673 | static void tg3_ump_link_report(struct tg3 *tp) | ||
| 1674 | { | ||
| 1675 | u32 reg; | ||
| 1676 | u32 val; | ||
| 1677 | |||
| 1678 | if (!(tp->tg3_flags2 & TG3_FLG2_5780_CLASS) || | ||
| 1679 | !(tp->tg3_flags & TG3_FLAG_ENABLE_ASF)) | ||
| 1680 | return; | ||
| 1681 | |||
| 1682 | tg3_wait_for_event_ack(tp); | ||
| 1683 | |||
| 1684 | tg3_write_mem(tp, NIC_SRAM_FW_CMD_MBOX, FWCMD_NICDRV_LINK_UPDATE); | ||
| 1685 | |||
| 1686 | tg3_write_mem(tp, NIC_SRAM_FW_CMD_LEN_MBOX, 14); | ||
| 1687 | |||
| 1688 | val = 0; | ||
| 1689 | if (!tg3_readphy(tp, MII_BMCR, ®)) | ||
| 1690 | val = reg << 16; | ||
| 1691 | if (!tg3_readphy(tp, MII_BMSR, ®)) | ||
| 1692 | val |= (reg & 0xffff); | ||
| 1693 | tg3_write_mem(tp, NIC_SRAM_FW_CMD_DATA_MBOX, val); | ||
| 1694 | |||
| 1695 | val = 0; | ||
| 1696 | if (!tg3_readphy(tp, MII_ADVERTISE, ®)) | ||
| 1697 | val = reg << 16; | ||
| 1698 | if (!tg3_readphy(tp, MII_LPA, ®)) | ||
| 1699 | val |= (reg & 0xffff); | ||
| 1700 | tg3_write_mem(tp, NIC_SRAM_FW_CMD_DATA_MBOX + 4, val); | ||
| 1701 | |||
| 1702 | val = 0; | ||
| 1703 | if (!(tp->tg3_flags2 & TG3_FLG2_MII_SERDES)) { | ||
| 1704 | if (!tg3_readphy(tp, MII_CTRL1000, ®)) | ||
| 1705 | val = reg << 16; | ||
| 1706 | if (!tg3_readphy(tp, MII_STAT1000, ®)) | ||
| 1707 | val |= (reg & 0xffff); | ||
| 1708 | } | ||
| 1709 | tg3_write_mem(tp, NIC_SRAM_FW_CMD_DATA_MBOX + 8, val); | ||
| 1710 | |||
| 1711 | if (!tg3_readphy(tp, MII_PHYADDR, ®)) | ||
| 1712 | val = reg << 16; | ||
| 1713 | else | ||
| 1714 | val = 0; | ||
| 1715 | tg3_write_mem(tp, NIC_SRAM_FW_CMD_DATA_MBOX + 12, val); | ||
| 1716 | |||
| 1717 | val = tr32(GRC_RX_CPU_EVENT); | ||
| 1718 | val |= GRC_RX_CPU_DRIVER_EVENT; | ||
| 1719 | tw32_f(GRC_RX_CPU_EVENT, val); | ||
| 1720 | } | ||
| 1721 | |||
| 1659 | static void tg3_link_report(struct tg3 *tp) | 1722 | static void tg3_link_report(struct tg3 *tp) |
| 1660 | { | 1723 | { |
| 1661 | if (!netif_carrier_ok(tp->dev)) { | 1724 | if (!netif_carrier_ok(tp->dev)) { |
| 1662 | if (netif_msg_link(tp)) | 1725 | if (netif_msg_link(tp)) |
| 1663 | printk(KERN_INFO PFX "%s: Link is down.\n", | 1726 | printk(KERN_INFO PFX "%s: Link is down.\n", |
| 1664 | tp->dev->name); | 1727 | tp->dev->name); |
| 1728 | tg3_ump_link_report(tp); | ||
| 1665 | } else if (netif_msg_link(tp)) { | 1729 | } else if (netif_msg_link(tp)) { |
| 1666 | printk(KERN_INFO PFX "%s: Link is up at %d Mbps, %s duplex.\n", | 1730 | printk(KERN_INFO PFX "%s: Link is up at %d Mbps, %s duplex.\n", |
| 1667 | tp->dev->name, | 1731 | tp->dev->name, |
| @@ -1679,6 +1743,7 @@ static void tg3_link_report(struct tg3 *tp) | |||
| 1679 | "on" : "off", | 1743 | "on" : "off", |
| 1680 | (tp->link_config.active_flowctrl & TG3_FLOW_CTRL_RX) ? | 1744 | (tp->link_config.active_flowctrl & TG3_FLOW_CTRL_RX) ? |
| 1681 | "on" : "off"); | 1745 | "on" : "off"); |
| 1746 | tg3_ump_link_report(tp); | ||
| 1682 | } | 1747 | } |
| 1683 | } | 1748 | } |
| 1684 | 1749 | ||
| @@ -2097,9 +2162,11 @@ static int tg3_setup_copper_phy(struct tg3 *tp, int force_reset) | |||
| 2097 | MAC_STATUS_LNKSTATE_CHANGED)); | 2162 | MAC_STATUS_LNKSTATE_CHANGED)); |
| 2098 | udelay(40); | 2163 | udelay(40); |
| 2099 | 2164 | ||
| 2100 | tp->mi_mode = MAC_MI_MODE_BASE; | 2165 | if ((tp->mi_mode & MAC_MI_MODE_AUTO_POLL) != 0) { |
| 2101 | tw32_f(MAC_MI_MODE, tp->mi_mode); | 2166 | tw32_f(MAC_MI_MODE, |
| 2102 | udelay(80); | 2167 | (tp->mi_mode & ~MAC_MI_MODE_AUTO_POLL)); |
| 2168 | udelay(80); | ||
| 2169 | } | ||
| 2103 | 2170 | ||
| 2104 | tg3_writephy(tp, MII_TG3_AUX_CTRL, 0x02); | 2171 | tg3_writephy(tp, MII_TG3_AUX_CTRL, 0x02); |
| 2105 | 2172 | ||
| @@ -5498,19 +5565,17 @@ static void tg3_stop_fw(struct tg3 *tp) | |||
| 5498 | if ((tp->tg3_flags & TG3_FLAG_ENABLE_ASF) && | 5565 | if ((tp->tg3_flags & TG3_FLAG_ENABLE_ASF) && |
| 5499 | !(tp->tg3_flags3 & TG3_FLG3_ENABLE_APE)) { | 5566 | !(tp->tg3_flags3 & TG3_FLG3_ENABLE_APE)) { |
| 5500 | u32 val; | 5567 | u32 val; |
| 5501 | int i; | 5568 | |
| 5569 | /* Wait for RX cpu to ACK the previous event. */ | ||
| 5570 | tg3_wait_for_event_ack(tp); | ||
| 5502 | 5571 | ||
| 5503 | tg3_write_mem(tp, NIC_SRAM_FW_CMD_MBOX, FWCMD_NICDRV_PAUSE_FW); | 5572 | tg3_write_mem(tp, NIC_SRAM_FW_CMD_MBOX, FWCMD_NICDRV_PAUSE_FW); |
| 5504 | val = tr32(GRC_RX_CPU_EVENT); | 5573 | val = tr32(GRC_RX_CPU_EVENT); |
| 5505 | val |= (1 << 14); | 5574 | val |= GRC_RX_CPU_DRIVER_EVENT; |
| 5506 | tw32(GRC_RX_CPU_EVENT, val); | 5575 | tw32(GRC_RX_CPU_EVENT, val); |
| 5507 | 5576 | ||
| 5508 | /* Wait for RX cpu to ACK the event. */ | 5577 | /* Wait for RX cpu to ACK this event. */ |
| 5509 | for (i = 0; i < 100; i++) { | 5578 | tg3_wait_for_event_ack(tp); |
| 5510 | if (!(tr32(GRC_RX_CPU_EVENT) & (1 << 14))) | ||
| 5511 | break; | ||
| 5512 | udelay(1); | ||
| 5513 | } | ||
| 5514 | } | 5579 | } |
| 5515 | } | 5580 | } |
| 5516 | 5581 | ||
| @@ -7102,7 +7167,7 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy) | |||
| 7102 | tp->link_config.autoneg = tp->link_config.orig_autoneg; | 7167 | tp->link_config.autoneg = tp->link_config.orig_autoneg; |
| 7103 | } | 7168 | } |
| 7104 | 7169 | ||
| 7105 | tp->mi_mode = MAC_MI_MODE_BASE; | 7170 | tp->mi_mode &= ~MAC_MI_MODE_AUTO_POLL; |
| 7106 | tw32_f(MAC_MI_MODE, tp->mi_mode); | 7171 | tw32_f(MAC_MI_MODE, tp->mi_mode); |
| 7107 | udelay(80); | 7172 | udelay(80); |
| 7108 | 7173 | ||
| @@ -7400,14 +7465,16 @@ static void tg3_timer(unsigned long __opaque) | |||
| 7400 | if (tp->tg3_flags & TG3_FLAG_ENABLE_ASF) { | 7465 | if (tp->tg3_flags & TG3_FLAG_ENABLE_ASF) { |
| 7401 | u32 val; | 7466 | u32 val; |
| 7402 | 7467 | ||
| 7468 | tg3_wait_for_event_ack(tp); | ||
| 7469 | |||
| 7403 | tg3_write_mem(tp, NIC_SRAM_FW_CMD_MBOX, | 7470 | tg3_write_mem(tp, NIC_SRAM_FW_CMD_MBOX, |
| 7404 | FWCMD_NICDRV_ALIVE3); | 7471 | FWCMD_NICDRV_ALIVE3); |
| 7405 | tg3_write_mem(tp, NIC_SRAM_FW_CMD_LEN_MBOX, 4); | 7472 | tg3_write_mem(tp, NIC_SRAM_FW_CMD_LEN_MBOX, 4); |
| 7406 | /* 5 seconds timeout */ | 7473 | /* 5 seconds timeout */ |
| 7407 | tg3_write_mem(tp, NIC_SRAM_FW_CMD_DATA_MBOX, 5); | 7474 | tg3_write_mem(tp, NIC_SRAM_FW_CMD_DATA_MBOX, 5); |
| 7408 | val = tr32(GRC_RX_CPU_EVENT); | 7475 | val = tr32(GRC_RX_CPU_EVENT); |
| 7409 | val |= (1 << 14); | 7476 | val |= GRC_RX_CPU_DRIVER_EVENT; |
| 7410 | tw32(GRC_RX_CPU_EVENT, val); | 7477 | tw32_f(GRC_RX_CPU_EVENT, val); |
| 7411 | } | 7478 | } |
| 7412 | tp->asf_counter = tp->asf_multiplier; | 7479 | tp->asf_counter = tp->asf_multiplier; |
| 7413 | } | 7480 | } |
| @@ -9568,14 +9635,9 @@ static int tg3_test_loopback(struct tg3 *tp) | |||
| 9568 | 9635 | ||
| 9569 | /* Turn off link-based power management. */ | 9636 | /* Turn off link-based power management. */ |
| 9570 | cpmuctrl = tr32(TG3_CPMU_CTRL); | 9637 | cpmuctrl = tr32(TG3_CPMU_CTRL); |
| 9571 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5784 || | 9638 | tw32(TG3_CPMU_CTRL, |
| 9572 | GET_CHIP_REV(tp->pci_chip_rev_id) == CHIPREV_5761_AX) | 9639 | cpmuctrl & ~(CPMU_CTRL_LINK_SPEED_MODE | |
| 9573 | tw32(TG3_CPMU_CTRL, | 9640 | CPMU_CTRL_LINK_AWARE_MODE)); |
| 9574 | cpmuctrl & ~(CPMU_CTRL_LINK_SPEED_MODE | | ||
| 9575 | CPMU_CTRL_LINK_AWARE_MODE)); | ||
| 9576 | else | ||
| 9577 | tw32(TG3_CPMU_CTRL, | ||
| 9578 | cpmuctrl & ~CPMU_CTRL_LINK_AWARE_MODE); | ||
| 9579 | } | 9641 | } |
| 9580 | 9642 | ||
| 9581 | if (tg3_run_loopback(tp, TG3_MAC_LOOPBACK)) | 9643 | if (tg3_run_loopback(tp, TG3_MAC_LOOPBACK)) |
| @@ -9892,7 +9954,7 @@ static void __devinit tg3_get_nvram_size(struct tg3 *tp) | |||
| 9892 | return; | 9954 | return; |
| 9893 | } | 9955 | } |
| 9894 | } | 9956 | } |
| 9895 | tp->nvram_size = 0x80000; | 9957 | tp->nvram_size = TG3_NVRAM_SIZE_512KB; |
| 9896 | } | 9958 | } |
| 9897 | 9959 | ||
| 9898 | static void __devinit tg3_get_nvram_info(struct tg3 *tp) | 9960 | static void __devinit tg3_get_nvram_info(struct tg3 *tp) |
| @@ -10033,11 +10095,14 @@ static void __devinit tg3_get_5755_nvram_info(struct tg3 *tp) | |||
| 10033 | tp->nvram_pagesize = 264; | 10095 | tp->nvram_pagesize = 264; |
| 10034 | if (nvcfg1 == FLASH_5755VENDOR_ATMEL_FLASH_1 || | 10096 | if (nvcfg1 == FLASH_5755VENDOR_ATMEL_FLASH_1 || |
| 10035 | nvcfg1 == FLASH_5755VENDOR_ATMEL_FLASH_5) | 10097 | nvcfg1 == FLASH_5755VENDOR_ATMEL_FLASH_5) |
| 10036 | tp->nvram_size = (protect ? 0x3e200 : 0x80000); | 10098 | tp->nvram_size = (protect ? 0x3e200 : |
| 10099 | TG3_NVRAM_SIZE_512KB); | ||
| 10037 | else if (nvcfg1 == FLASH_5755VENDOR_ATMEL_FLASH_2) | 10100 | else if (nvcfg1 == FLASH_5755VENDOR_ATMEL_FLASH_2) |
| 10038 | tp->nvram_size = (protect ? 0x1f200 : 0x40000); | 10101 | tp->nvram_size = (protect ? 0x1f200 : |
| 10102 | TG3_NVRAM_SIZE_256KB); | ||
| 10039 | else | 10103 | else |
| 10040 | tp->nvram_size = (protect ? 0x1f200 : 0x20000); | 10104 | tp->nvram_size = (protect ? 0x1f200 : |
| 10105 | TG3_NVRAM_SIZE_128KB); | ||
| 10041 | break; | 10106 | break; |
| 10042 | case FLASH_5752VENDOR_ST_M45PE10: | 10107 | case FLASH_5752VENDOR_ST_M45PE10: |
| 10043 | case FLASH_5752VENDOR_ST_M45PE20: | 10108 | case FLASH_5752VENDOR_ST_M45PE20: |
| @@ -10047,11 +10112,17 @@ static void __devinit tg3_get_5755_nvram_info(struct tg3 *tp) | |||
| 10047 | tp->tg3_flags2 |= TG3_FLG2_FLASH; | 10112 | tp->tg3_flags2 |= TG3_FLG2_FLASH; |
| 10048 | tp->nvram_pagesize = 256; | 10113 | tp->nvram_pagesize = 256; |
| 10049 | if (nvcfg1 == FLASH_5752VENDOR_ST_M45PE10) | 10114 | if (nvcfg1 == FLASH_5752VENDOR_ST_M45PE10) |
| 10050 | tp->nvram_size = (protect ? 0x10000 : 0x20000); | 10115 | tp->nvram_size = (protect ? |
| 10116 | TG3_NVRAM_SIZE_64KB : | ||
| 10117 | TG3_NVRAM_SIZE_128KB); | ||
| 10051 | else if (nvcfg1 == FLASH_5752VENDOR_ST_M45PE20) | 10118 | else if (nvcfg1 == FLASH_5752VENDOR_ST_M45PE20) |
| 10052 | tp->nvram_size = (protect ? 0x10000 : 0x40000); | 10119 | tp->nvram_size = (protect ? |
| 10120 | TG3_NVRAM_SIZE_64KB : | ||
| 10121 | TG3_NVRAM_SIZE_256KB); | ||
| 10053 | else | 10122 | else |
| 10054 | tp->nvram_size = (protect ? 0x20000 : 0x80000); | 10123 | tp->nvram_size = (protect ? |
| 10124 | TG3_NVRAM_SIZE_128KB : | ||
| 10125 | TG3_NVRAM_SIZE_512KB); | ||
| 10055 | break; | 10126 | break; |
| 10056 | } | 10127 | } |
| 10057 | } | 10128 | } |
| @@ -10145,25 +10216,25 @@ static void __devinit tg3_get_5761_nvram_info(struct tg3 *tp) | |||
| 10145 | case FLASH_5761VENDOR_ATMEL_MDB161D: | 10216 | case FLASH_5761VENDOR_ATMEL_MDB161D: |
| 10146 | case FLASH_5761VENDOR_ST_A_M45PE16: | 10217 | case FLASH_5761VENDOR_ST_A_M45PE16: |
| 10147 | case FLASH_5761VENDOR_ST_M_M45PE16: | 10218 | case FLASH_5761VENDOR_ST_M_M45PE16: |
| 10148 | tp->nvram_size = 0x100000; | 10219 | tp->nvram_size = TG3_NVRAM_SIZE_2MB; |
| 10149 | break; | 10220 | break; |
| 10150 | case FLASH_5761VENDOR_ATMEL_ADB081D: | 10221 | case FLASH_5761VENDOR_ATMEL_ADB081D: |
| 10151 | case FLASH_5761VENDOR_ATMEL_MDB081D: | 10222 | case FLASH_5761VENDOR_ATMEL_MDB081D: |
| 10152 | case FLASH_5761VENDOR_ST_A_M45PE80: | 10223 | case FLASH_5761VENDOR_ST_A_M45PE80: |
| 10153 | case FLASH_5761VENDOR_ST_M_M45PE80: | 10224 | case FLASH_5761VENDOR_ST_M_M45PE80: |
| 10154 | tp->nvram_size = 0x80000; | 10225 | tp->nvram_size = TG3_NVRAM_SIZE_1MB; |
| 10155 | break; | 10226 | break; |
| 10156 | case FLASH_5761VENDOR_ATMEL_ADB041D: | 10227 | case FLASH_5761VENDOR_ATMEL_ADB041D: |
| 10157 | case FLASH_5761VENDOR_ATMEL_MDB041D: | 10228 | case FLASH_5761VENDOR_ATMEL_MDB041D: |
| 10158 | case FLASH_5761VENDOR_ST_A_M45PE40: | 10229 | case FLASH_5761VENDOR_ST_A_M45PE40: |
| 10159 | case FLASH_5761VENDOR_ST_M_M45PE40: | 10230 | case FLASH_5761VENDOR_ST_M_M45PE40: |
| 10160 | tp->nvram_size = 0x40000; | 10231 | tp->nvram_size = TG3_NVRAM_SIZE_512KB; |
| 10161 | break; | 10232 | break; |
| 10162 | case FLASH_5761VENDOR_ATMEL_ADB021D: | 10233 | case FLASH_5761VENDOR_ATMEL_ADB021D: |
| 10163 | case FLASH_5761VENDOR_ATMEL_MDB021D: | 10234 | case FLASH_5761VENDOR_ATMEL_MDB021D: |
| 10164 | case FLASH_5761VENDOR_ST_A_M45PE20: | 10235 | case FLASH_5761VENDOR_ST_A_M45PE20: |
| 10165 | case FLASH_5761VENDOR_ST_M_M45PE20: | 10236 | case FLASH_5761VENDOR_ST_M_M45PE20: |
| 10166 | tp->nvram_size = 0x20000; | 10237 | tp->nvram_size = TG3_NVRAM_SIZE_256KB; |
| 10167 | break; | 10238 | break; |
| 10168 | } | 10239 | } |
| 10169 | } | 10240 | } |
| @@ -11764,6 +11835,12 @@ static int __devinit tg3_get_invariants(struct tg3 *tp) | |||
| 11764 | tp->phy_otp = TG3_OTP_DEFAULT; | 11835 | tp->phy_otp = TG3_OTP_DEFAULT; |
| 11765 | } | 11836 | } |
| 11766 | 11837 | ||
| 11838 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5784 || | ||
| 11839 | GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5761) | ||
| 11840 | tp->mi_mode = MAC_MI_MODE_500KHZ_CONST; | ||
| 11841 | else | ||
| 11842 | tp->mi_mode = MAC_MI_MODE_BASE; | ||
| 11843 | |||
| 11767 | tp->coalesce_mode = 0; | 11844 | tp->coalesce_mode = 0; |
| 11768 | if (GET_CHIP_REV(tp->pci_chip_rev_id) != CHIPREV_5700_AX && | 11845 | if (GET_CHIP_REV(tp->pci_chip_rev_id) != CHIPREV_5700_AX && |
| 11769 | GET_CHIP_REV(tp->pci_chip_rev_id) != CHIPREV_5700_BX) | 11846 | GET_CHIP_REV(tp->pci_chip_rev_id) != CHIPREV_5700_BX) |
| @@ -12692,7 +12769,7 @@ static int __devinit tg3_init_one(struct pci_dev *pdev, | |||
| 12692 | tp->mac_mode = TG3_DEF_MAC_MODE; | 12769 | tp->mac_mode = TG3_DEF_MAC_MODE; |
| 12693 | tp->rx_mode = TG3_DEF_RX_MODE; | 12770 | tp->rx_mode = TG3_DEF_RX_MODE; |
| 12694 | tp->tx_mode = TG3_DEF_TX_MODE; | 12771 | tp->tx_mode = TG3_DEF_TX_MODE; |
| 12695 | tp->mi_mode = MAC_MI_MODE_BASE; | 12772 | |
| 12696 | if (tg3_debug > 0) | 12773 | if (tg3_debug > 0) |
| 12697 | tp->msg_enable = tg3_debug; | 12774 | tp->msg_enable = tg3_debug; |
| 12698 | else | 12775 | else |
diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h index c688c3ac5035..0404f93baa29 100644 --- a/drivers/net/tg3.h +++ b/drivers/net/tg3.h | |||
| @@ -415,7 +415,7 @@ | |||
| 415 | #define MAC_MI_MODE_CLK_10MHZ 0x00000001 | 415 | #define MAC_MI_MODE_CLK_10MHZ 0x00000001 |
| 416 | #define MAC_MI_MODE_SHORT_PREAMBLE 0x00000002 | 416 | #define MAC_MI_MODE_SHORT_PREAMBLE 0x00000002 |
| 417 | #define MAC_MI_MODE_AUTO_POLL 0x00000010 | 417 | #define MAC_MI_MODE_AUTO_POLL 0x00000010 |
| 418 | #define MAC_MI_MODE_CORE_CLK_62MHZ 0x00008000 | 418 | #define MAC_MI_MODE_500KHZ_CONST 0x00008000 |
| 419 | #define MAC_MI_MODE_BASE 0x000c0000 /* XXX magic values XXX */ | 419 | #define MAC_MI_MODE_BASE 0x000c0000 /* XXX magic values XXX */ |
| 420 | #define MAC_AUTO_POLL_STATUS 0x00000458 | 420 | #define MAC_AUTO_POLL_STATUS 0x00000458 |
| 421 | #define MAC_AUTO_POLL_ERROR 0x00000001 | 421 | #define MAC_AUTO_POLL_ERROR 0x00000001 |
| @@ -1429,6 +1429,7 @@ | |||
| 1429 | #define GRC_LCLCTRL_AUTO_SEEPROM 0x01000000 | 1429 | #define GRC_LCLCTRL_AUTO_SEEPROM 0x01000000 |
| 1430 | #define GRC_TIMER 0x0000680c | 1430 | #define GRC_TIMER 0x0000680c |
| 1431 | #define GRC_RX_CPU_EVENT 0x00006810 | 1431 | #define GRC_RX_CPU_EVENT 0x00006810 |
| 1432 | #define GRC_RX_CPU_DRIVER_EVENT 0x00004000 | ||
| 1432 | #define GRC_RX_TIMER_REF 0x00006814 | 1433 | #define GRC_RX_TIMER_REF 0x00006814 |
| 1433 | #define GRC_RX_CPU_SEM 0x00006818 | 1434 | #define GRC_RX_CPU_SEM 0x00006818 |
| 1434 | #define GRC_REMOTE_RX_CPU_ATTN 0x0000681c | 1435 | #define GRC_REMOTE_RX_CPU_ATTN 0x0000681c |
| @@ -1676,6 +1677,7 @@ | |||
| 1676 | #define FWCMD_NICDRV_IPV6ADDR_CHG 0x00000004 | 1677 | #define FWCMD_NICDRV_IPV6ADDR_CHG 0x00000004 |
| 1677 | #define FWCMD_NICDRV_FIX_DMAR 0x00000005 | 1678 | #define FWCMD_NICDRV_FIX_DMAR 0x00000005 |
| 1678 | #define FWCMD_NICDRV_FIX_DMAW 0x00000006 | 1679 | #define FWCMD_NICDRV_FIX_DMAW 0x00000006 |
| 1680 | #define FWCMD_NICDRV_LINK_UPDATE 0x0000000c | ||
| 1679 | #define FWCMD_NICDRV_ALIVE2 0x0000000d | 1681 | #define FWCMD_NICDRV_ALIVE2 0x0000000d |
| 1680 | #define FWCMD_NICDRV_ALIVE3 0x0000000e | 1682 | #define FWCMD_NICDRV_ALIVE3 0x0000000e |
| 1681 | #define NIC_SRAM_FW_CMD_LEN_MBOX 0x00000b7c | 1683 | #define NIC_SRAM_FW_CMD_LEN_MBOX 0x00000b7c |
| @@ -2576,6 +2578,13 @@ struct tg3 { | |||
| 2576 | 2578 | ||
| 2577 | int nvram_lock_cnt; | 2579 | int nvram_lock_cnt; |
| 2578 | u32 nvram_size; | 2580 | u32 nvram_size; |
| 2581 | #define TG3_NVRAM_SIZE_64KB 0x00010000 | ||
| 2582 | #define TG3_NVRAM_SIZE_128KB 0x00020000 | ||
| 2583 | #define TG3_NVRAM_SIZE_256KB 0x00040000 | ||
| 2584 | #define TG3_NVRAM_SIZE_512KB 0x00080000 | ||
| 2585 | #define TG3_NVRAM_SIZE_1MB 0x00100000 | ||
| 2586 | #define TG3_NVRAM_SIZE_2MB 0x00200000 | ||
| 2587 | |||
| 2579 | u32 nvram_pagesize; | 2588 | u32 nvram_pagesize; |
| 2580 | u32 nvram_jedecnum; | 2589 | u32 nvram_jedecnum; |
| 2581 | 2590 | ||
| @@ -2584,10 +2593,10 @@ struct tg3 { | |||
| 2584 | #define JEDEC_SAIFUN 0x4f | 2593 | #define JEDEC_SAIFUN 0x4f |
| 2585 | #define JEDEC_SST 0xbf | 2594 | #define JEDEC_SST 0xbf |
| 2586 | 2595 | ||
| 2587 | #define ATMEL_AT24C64_CHIP_SIZE (64 * 1024) | 2596 | #define ATMEL_AT24C64_CHIP_SIZE TG3_NVRAM_SIZE_64KB |
| 2588 | #define ATMEL_AT24C64_PAGE_SIZE (32) | 2597 | #define ATMEL_AT24C64_PAGE_SIZE (32) |
| 2589 | 2598 | ||
| 2590 | #define ATMEL_AT24C512_CHIP_SIZE (512 * 1024) | 2599 | #define ATMEL_AT24C512_CHIP_SIZE TG3_NVRAM_SIZE_512KB |
| 2591 | #define ATMEL_AT24C512_PAGE_SIZE (128) | 2600 | #define ATMEL_AT24C512_PAGE_SIZE (128) |
| 2592 | 2601 | ||
| 2593 | #define ATMEL_AT45DB0X1B_PAGE_POS 9 | 2602 | #define ATMEL_AT45DB0X1B_PAGE_POS 9 |
diff --git a/drivers/net/wireless/b43/b43.h b/drivers/net/wireless/b43/b43.h index eff2a158a411..37783cdd301a 100644 --- a/drivers/net/wireless/b43/b43.h +++ b/drivers/net/wireless/b43/b43.h | |||
| @@ -691,6 +691,10 @@ struct b43_wl { | |||
| 691 | 691 | ||
| 692 | struct mutex mutex; | 692 | struct mutex mutex; |
| 693 | spinlock_t irq_lock; | 693 | spinlock_t irq_lock; |
| 694 | /* R/W lock for data transmission. | ||
| 695 | * Transmissions on 2+ queues can run concurrently, but somebody else | ||
| 696 | * might sync with TX by write_lock_irqsave()'ing. */ | ||
| 697 | rwlock_t tx_lock; | ||
| 694 | /* Lock for LEDs access. */ | 698 | /* Lock for LEDs access. */ |
| 695 | spinlock_t leds_lock; | 699 | spinlock_t leds_lock; |
| 696 | /* Lock for SHM access. */ | 700 | /* Lock for SHM access. */ |
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index 8c24cd72aaca..8fdba9415c04 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c | |||
| @@ -729,6 +729,7 @@ static void b43_synchronize_irq(struct b43_wldev *dev) | |||
| 729 | */ | 729 | */ |
| 730 | void b43_dummy_transmission(struct b43_wldev *dev) | 730 | void b43_dummy_transmission(struct b43_wldev *dev) |
| 731 | { | 731 | { |
| 732 | struct b43_wl *wl = dev->wl; | ||
| 732 | struct b43_phy *phy = &dev->phy; | 733 | struct b43_phy *phy = &dev->phy; |
| 733 | unsigned int i, max_loop; | 734 | unsigned int i, max_loop; |
| 734 | u16 value; | 735 | u16 value; |
| @@ -755,6 +756,9 @@ void b43_dummy_transmission(struct b43_wldev *dev) | |||
| 755 | return; | 756 | return; |
| 756 | } | 757 | } |
| 757 | 758 | ||
| 759 | spin_lock_irq(&wl->irq_lock); | ||
| 760 | write_lock(&wl->tx_lock); | ||
| 761 | |||
| 758 | for (i = 0; i < 5; i++) | 762 | for (i = 0; i < 5; i++) |
| 759 | b43_ram_write(dev, i * 4, buffer[i]); | 763 | b43_ram_write(dev, i * 4, buffer[i]); |
| 760 | 764 | ||
| @@ -795,6 +799,9 @@ void b43_dummy_transmission(struct b43_wldev *dev) | |||
| 795 | } | 799 | } |
| 796 | if (phy->radio_ver == 0x2050 && phy->radio_rev <= 0x5) | 800 | if (phy->radio_ver == 0x2050 && phy->radio_rev <= 0x5) |
| 797 | b43_radio_write16(dev, 0x0051, 0x0037); | 801 | b43_radio_write16(dev, 0x0051, 0x0037); |
| 802 | |||
| 803 | write_unlock(&wl->tx_lock); | ||
| 804 | spin_unlock_irq(&wl->irq_lock); | ||
| 798 | } | 805 | } |
| 799 | 806 | ||
| 800 | static void key_write(struct b43_wldev *dev, | 807 | static void key_write(struct b43_wldev *dev, |
| @@ -2840,24 +2847,31 @@ static int b43_op_tx(struct ieee80211_hw *hw, | |||
| 2840 | { | 2847 | { |
| 2841 | struct b43_wl *wl = hw_to_b43_wl(hw); | 2848 | struct b43_wl *wl = hw_to_b43_wl(hw); |
| 2842 | struct b43_wldev *dev = wl->current_dev; | 2849 | struct b43_wldev *dev = wl->current_dev; |
| 2843 | int err = -ENODEV; | 2850 | unsigned long flags; |
| 2851 | int err; | ||
| 2844 | 2852 | ||
| 2845 | if (unlikely(skb->len < 2 + 2 + 6)) { | 2853 | if (unlikely(skb->len < 2 + 2 + 6)) { |
| 2846 | /* Too short, this can't be a valid frame. */ | 2854 | /* Too short, this can't be a valid frame. */ |
| 2847 | return -EINVAL; | 2855 | dev_kfree_skb_any(skb); |
| 2856 | return NETDEV_TX_OK; | ||
| 2848 | } | 2857 | } |
| 2849 | B43_WARN_ON(skb_shinfo(skb)->nr_frags); | 2858 | B43_WARN_ON(skb_shinfo(skb)->nr_frags); |
| 2850 | |||
| 2851 | if (unlikely(!dev)) | 2859 | if (unlikely(!dev)) |
| 2852 | goto out; | 2860 | return NETDEV_TX_BUSY; |
| 2853 | if (unlikely(b43_status(dev) < B43_STAT_STARTED)) | 2861 | |
| 2854 | goto out; | 2862 | /* Transmissions on seperate queues can run concurrently. */ |
| 2855 | /* TX is done without a global lock. */ | 2863 | read_lock_irqsave(&wl->tx_lock, flags); |
| 2856 | if (b43_using_pio_transfers(dev)) | 2864 | |
| 2857 | err = b43_pio_tx(dev, skb, ctl); | 2865 | err = -ENODEV; |
| 2858 | else | 2866 | if (likely(b43_status(dev) >= B43_STAT_STARTED)) { |
| 2859 | err = b43_dma_tx(dev, skb, ctl); | 2867 | if (b43_using_pio_transfers(dev)) |
| 2860 | out: | 2868 | err = b43_pio_tx(dev, skb, ctl); |
| 2869 | else | ||
| 2870 | err = b43_dma_tx(dev, skb, ctl); | ||
| 2871 | } | ||
| 2872 | |||
| 2873 | read_unlock_irqrestore(&wl->tx_lock, flags); | ||
| 2874 | |||
| 2861 | if (unlikely(err)) | 2875 | if (unlikely(err)) |
| 2862 | return NETDEV_TX_BUSY; | 2876 | return NETDEV_TX_BUSY; |
| 2863 | return NETDEV_TX_OK; | 2877 | return NETDEV_TX_OK; |
| @@ -3476,7 +3490,9 @@ static void b43_wireless_core_stop(struct b43_wldev *dev) | |||
| 3476 | spin_unlock_irqrestore(&wl->irq_lock, flags); | 3490 | spin_unlock_irqrestore(&wl->irq_lock, flags); |
| 3477 | b43_synchronize_irq(dev); | 3491 | b43_synchronize_irq(dev); |
| 3478 | 3492 | ||
| 3493 | write_lock_irqsave(&wl->tx_lock, flags); | ||
| 3479 | b43_set_status(dev, B43_STAT_INITIALIZED); | 3494 | b43_set_status(dev, B43_STAT_INITIALIZED); |
| 3495 | write_unlock_irqrestore(&wl->tx_lock, flags); | ||
| 3480 | 3496 | ||
| 3481 | b43_pio_stop(dev); | 3497 | b43_pio_stop(dev); |
| 3482 | mutex_unlock(&wl->mutex); | 3498 | mutex_unlock(&wl->mutex); |
| @@ -3485,8 +3501,6 @@ static void b43_wireless_core_stop(struct b43_wldev *dev) | |||
| 3485 | cancel_delayed_work_sync(&dev->periodic_work); | 3501 | cancel_delayed_work_sync(&dev->periodic_work); |
| 3486 | mutex_lock(&wl->mutex); | 3502 | mutex_lock(&wl->mutex); |
| 3487 | 3503 | ||
| 3488 | ieee80211_stop_queues(wl->hw); //FIXME this could cause a deadlock, as mac80211 seems buggy. | ||
| 3489 | |||
| 3490 | b43_mac_suspend(dev); | 3504 | b43_mac_suspend(dev); |
| 3491 | free_irq(dev->dev->irq, dev); | 3505 | free_irq(dev->dev->irq, dev); |
| 3492 | b43dbg(wl, "Wireless interface stopped\n"); | 3506 | b43dbg(wl, "Wireless interface stopped\n"); |
| @@ -4326,6 +4340,14 @@ static int b43_wireless_core_attach(struct b43_wldev *dev) | |||
| 4326 | err = -EOPNOTSUPP; | 4340 | err = -EOPNOTSUPP; |
| 4327 | goto err_powerdown; | 4341 | goto err_powerdown; |
| 4328 | } | 4342 | } |
| 4343 | if (1 /* disable A-PHY */) { | ||
| 4344 | /* FIXME: For now we disable the A-PHY on multi-PHY devices. */ | ||
| 4345 | if (dev->phy.type != B43_PHYTYPE_N) { | ||
| 4346 | have_2ghz_phy = 1; | ||
| 4347 | have_5ghz_phy = 0; | ||
| 4348 | } | ||
| 4349 | } | ||
| 4350 | |||
| 4329 | dev->phy.gmode = have_2ghz_phy; | 4351 | dev->phy.gmode = have_2ghz_phy; |
| 4330 | tmp = dev->phy.gmode ? B43_TMSLOW_GMODE : 0; | 4352 | tmp = dev->phy.gmode ? B43_TMSLOW_GMODE : 0; |
| 4331 | b43_wireless_core_reset(dev, tmp); | 4353 | b43_wireless_core_reset(dev, tmp); |
| @@ -4490,6 +4512,7 @@ static int b43_wireless_init(struct ssb_device *dev) | |||
| 4490 | memset(wl, 0, sizeof(*wl)); | 4512 | memset(wl, 0, sizeof(*wl)); |
| 4491 | wl->hw = hw; | 4513 | wl->hw = hw; |
| 4492 | spin_lock_init(&wl->irq_lock); | 4514 | spin_lock_init(&wl->irq_lock); |
| 4515 | rwlock_init(&wl->tx_lock); | ||
| 4493 | spin_lock_init(&wl->leds_lock); | 4516 | spin_lock_init(&wl->leds_lock); |
| 4494 | spin_lock_init(&wl->shm_lock); | 4517 | spin_lock_init(&wl->shm_lock); |
| 4495 | mutex_init(&wl->mutex); | 4518 | mutex_init(&wl->mutex); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.h b/drivers/net/wireless/iwlwifi/iwl-3945.h index 45c1c5533bf0..c7695a215a39 100644 --- a/drivers/net/wireless/iwlwifi/iwl-3945.h +++ b/drivers/net/wireless/iwlwifi/iwl-3945.h | |||
| @@ -742,7 +742,6 @@ struct iwl3945_priv { | |||
| 742 | u8 direct_ssid_len; | 742 | u8 direct_ssid_len; |
| 743 | u8 direct_ssid[IW_ESSID_MAX_SIZE]; | 743 | u8 direct_ssid[IW_ESSID_MAX_SIZE]; |
| 744 | struct iwl3945_scan_cmd *scan; | 744 | struct iwl3945_scan_cmd *scan; |
| 745 | u8 only_active_channel; | ||
| 746 | 745 | ||
| 747 | /* spinlock */ | 746 | /* spinlock */ |
| 748 | spinlock_t lock; /* protect general shared data */ | 747 | spinlock_t lock; /* protect general shared data */ |
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.h b/drivers/net/wireless/iwlwifi/iwl-4965.h index 9ed13cb0a2a9..581b98556c86 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965.h +++ b/drivers/net/wireless/iwlwifi/iwl-4965.h | |||
| @@ -996,7 +996,6 @@ struct iwl_priv { | |||
| 996 | u8 direct_ssid_len; | 996 | u8 direct_ssid_len; |
| 997 | u8 direct_ssid[IW_ESSID_MAX_SIZE]; | 997 | u8 direct_ssid[IW_ESSID_MAX_SIZE]; |
| 998 | struct iwl4965_scan_cmd *scan; | 998 | struct iwl4965_scan_cmd *scan; |
| 999 | u8 only_active_channel; | ||
| 1000 | 999 | ||
| 1001 | /* spinlock */ | 1000 | /* spinlock */ |
| 1002 | spinlock_t lock; /* protect general shared data */ | 1001 | spinlock_t lock; /* protect general shared data */ |
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index a1a0b3c581f1..13925b627e3b 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
| @@ -4968,17 +4968,6 @@ static int iwl3945_get_channels_for_scan(struct iwl3945_priv *priv, | |||
| 4968 | if (channels[i].flags & IEEE80211_CHAN_DISABLED) | 4968 | if (channels[i].flags & IEEE80211_CHAN_DISABLED) |
| 4969 | continue; | 4969 | continue; |
| 4970 | 4970 | ||
| 4971 | if (channels[i].hw_value == | ||
| 4972 | le16_to_cpu(priv->active_rxon.channel)) { | ||
| 4973 | if (iwl3945_is_associated(priv)) { | ||
| 4974 | IWL_DEBUG_SCAN | ||
| 4975 | ("Skipping current channel %d\n", | ||
| 4976 | le16_to_cpu(priv->active_rxon.channel)); | ||
| 4977 | continue; | ||
| 4978 | } | ||
| 4979 | } else if (priv->only_active_channel) | ||
| 4980 | continue; | ||
| 4981 | |||
| 4982 | scan_ch->channel = channels[i].hw_value; | 4971 | scan_ch->channel = channels[i].hw_value; |
| 4983 | 4972 | ||
| 4984 | ch_info = iwl3945_get_channel_info(priv, band, scan_ch->channel); | 4973 | ch_info = iwl3945_get_channel_info(priv, band, scan_ch->channel); |
| @@ -6303,12 +6292,17 @@ static void iwl3945_bg_request_scan(struct work_struct *data) | |||
| 6303 | priv->direct_ssid, priv->direct_ssid_len); | 6292 | priv->direct_ssid, priv->direct_ssid_len); |
| 6304 | direct_mask = 1; | 6293 | direct_mask = 1; |
| 6305 | } else if (!iwl3945_is_associated(priv) && priv->essid_len) { | 6294 | } else if (!iwl3945_is_associated(priv) && priv->essid_len) { |
| 6295 | IWL_DEBUG_SCAN | ||
| 6296 | ("Kicking off one direct scan for '%s' when not associated\n", | ||
| 6297 | iwl3945_escape_essid(priv->essid, priv->essid_len)); | ||
| 6306 | scan->direct_scan[0].id = WLAN_EID_SSID; | 6298 | scan->direct_scan[0].id = WLAN_EID_SSID; |
| 6307 | scan->direct_scan[0].len = priv->essid_len; | 6299 | scan->direct_scan[0].len = priv->essid_len; |
| 6308 | memcpy(scan->direct_scan[0].ssid, priv->essid, priv->essid_len); | 6300 | memcpy(scan->direct_scan[0].ssid, priv->essid, priv->essid_len); |
| 6309 | direct_mask = 1; | 6301 | direct_mask = 1; |
| 6310 | } else | 6302 | } else { |
| 6303 | IWL_DEBUG_SCAN("Kicking off one indirect scan.\n"); | ||
| 6311 | direct_mask = 0; | 6304 | direct_mask = 0; |
| 6305 | } | ||
| 6312 | 6306 | ||
| 6313 | /* We don't build a direct scan probe request; the uCode will do | 6307 | /* We don't build a direct scan probe request; the uCode will do |
| 6314 | * that based on the direct_mask added to each channel entry */ | 6308 | * that based on the direct_mask added to each channel entry */ |
| @@ -6346,23 +6340,18 @@ static void iwl3945_bg_request_scan(struct work_struct *data) | |||
| 6346 | if (priv->iw_mode == IEEE80211_IF_TYPE_MNTR) | 6340 | if (priv->iw_mode == IEEE80211_IF_TYPE_MNTR) |
| 6347 | scan->filter_flags = RXON_FILTER_PROMISC_MSK; | 6341 | scan->filter_flags = RXON_FILTER_PROMISC_MSK; |
| 6348 | 6342 | ||
| 6349 | if (direct_mask) { | 6343 | if (direct_mask) |
| 6350 | IWL_DEBUG_SCAN | ||
| 6351 | ("Initiating direct scan for %s.\n", | ||
| 6352 | iwl3945_escape_essid(priv->essid, priv->essid_len)); | ||
| 6353 | scan->channel_count = | 6344 | scan->channel_count = |
| 6354 | iwl3945_get_channels_for_scan( | 6345 | iwl3945_get_channels_for_scan( |
| 6355 | priv, band, 1, /* active */ | 6346 | priv, band, 1, /* active */ |
| 6356 | direct_mask, | 6347 | direct_mask, |
| 6357 | (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]); | 6348 | (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]); |
| 6358 | } else { | 6349 | else |
| 6359 | IWL_DEBUG_SCAN("Initiating indirect scan.\n"); | ||
| 6360 | scan->channel_count = | 6350 | scan->channel_count = |
| 6361 | iwl3945_get_channels_for_scan( | 6351 | iwl3945_get_channels_for_scan( |
| 6362 | priv, band, 0, /* passive */ | 6352 | priv, band, 0, /* passive */ |
| 6363 | direct_mask, | 6353 | direct_mask, |
| 6364 | (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]); | 6354 | (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]); |
| 6365 | } | ||
| 6366 | 6355 | ||
| 6367 | cmd.len += le16_to_cpu(scan->tx_cmd.len) + | 6356 | cmd.len += le16_to_cpu(scan->tx_cmd.len) + |
| 6368 | scan->channel_count * sizeof(struct iwl3945_scan_channel); | 6357 | scan->channel_count * sizeof(struct iwl3945_scan_channel); |
| @@ -7314,8 +7303,6 @@ static void iwl3945_mac_reset_tsf(struct ieee80211_hw *hw) | |||
| 7314 | return; | 7303 | return; |
| 7315 | } | 7304 | } |
| 7316 | 7305 | ||
| 7317 | priv->only_active_channel = 0; | ||
| 7318 | |||
| 7319 | iwl3945_set_rate(priv); | 7306 | iwl3945_set_rate(priv); |
| 7320 | 7307 | ||
| 7321 | mutex_unlock(&priv->mutex); | 7308 | mutex_unlock(&priv->mutex); |
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c index d0bbcaaeb94c..883b42f7e998 100644 --- a/drivers/net/wireless/iwlwifi/iwl4965-base.c +++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c | |||
| @@ -4633,17 +4633,6 @@ static int iwl4965_get_channels_for_scan(struct iwl_priv *priv, | |||
| 4633 | if (channels[i].flags & IEEE80211_CHAN_DISABLED) | 4633 | if (channels[i].flags & IEEE80211_CHAN_DISABLED) |
| 4634 | continue; | 4634 | continue; |
| 4635 | 4635 | ||
| 4636 | if (ieee80211_frequency_to_channel(channels[i].center_freq) == | ||
| 4637 | le16_to_cpu(priv->active_rxon.channel)) { | ||
| 4638 | if (iwl_is_associated(priv)) { | ||
| 4639 | IWL_DEBUG_SCAN | ||
| 4640 | ("Skipping current channel %d\n", | ||
| 4641 | le16_to_cpu(priv->active_rxon.channel)); | ||
| 4642 | continue; | ||
| 4643 | } | ||
| 4644 | } else if (priv->only_active_channel) | ||
| 4645 | continue; | ||
| 4646 | |||
| 4647 | scan_ch->channel = ieee80211_frequency_to_channel(channels[i].center_freq); | 4636 | scan_ch->channel = ieee80211_frequency_to_channel(channels[i].center_freq); |
| 4648 | 4637 | ||
| 4649 | ch_info = iwl_get_channel_info(priv, band, | 4638 | ch_info = iwl_get_channel_info(priv, band, |
| @@ -5824,11 +5813,15 @@ static void iwl4965_bg_request_scan(struct work_struct *data) | |||
| 5824 | priv->direct_ssid, priv->direct_ssid_len); | 5813 | priv->direct_ssid, priv->direct_ssid_len); |
| 5825 | direct_mask = 1; | 5814 | direct_mask = 1; |
| 5826 | } else if (!iwl_is_associated(priv) && priv->essid_len) { | 5815 | } else if (!iwl_is_associated(priv) && priv->essid_len) { |
| 5816 | IWL_DEBUG_SCAN | ||
| 5817 | ("Kicking off one direct scan for '%s' when not associated\n", | ||
| 5818 | iwl4965_escape_essid(priv->essid, priv->essid_len)); | ||
| 5827 | scan->direct_scan[0].id = WLAN_EID_SSID; | 5819 | scan->direct_scan[0].id = WLAN_EID_SSID; |
| 5828 | scan->direct_scan[0].len = priv->essid_len; | 5820 | scan->direct_scan[0].len = priv->essid_len; |
| 5829 | memcpy(scan->direct_scan[0].ssid, priv->essid, priv->essid_len); | 5821 | memcpy(scan->direct_scan[0].ssid, priv->essid, priv->essid_len); |
| 5830 | direct_mask = 1; | 5822 | direct_mask = 1; |
| 5831 | } else { | 5823 | } else { |
| 5824 | IWL_DEBUG_SCAN("Kicking off one indirect scan.\n"); | ||
| 5832 | direct_mask = 0; | 5825 | direct_mask = 0; |
| 5833 | } | 5826 | } |
| 5834 | 5827 | ||
| @@ -5881,23 +5874,18 @@ static void iwl4965_bg_request_scan(struct work_struct *data) | |||
| 5881 | if (priv->iw_mode == IEEE80211_IF_TYPE_MNTR) | 5874 | if (priv->iw_mode == IEEE80211_IF_TYPE_MNTR) |
| 5882 | scan->filter_flags = RXON_FILTER_PROMISC_MSK; | 5875 | scan->filter_flags = RXON_FILTER_PROMISC_MSK; |
| 5883 | 5876 | ||
| 5884 | if (direct_mask) { | 5877 | if (direct_mask) |
| 5885 | IWL_DEBUG_SCAN | ||
| 5886 | ("Initiating direct scan for %s.\n", | ||
| 5887 | iwl4965_escape_essid(priv->essid, priv->essid_len)); | ||
| 5888 | scan->channel_count = | 5878 | scan->channel_count = |
| 5889 | iwl4965_get_channels_for_scan( | 5879 | iwl4965_get_channels_for_scan( |
| 5890 | priv, band, 1, /* active */ | 5880 | priv, band, 1, /* active */ |
| 5891 | direct_mask, | 5881 | direct_mask, |
| 5892 | (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]); | 5882 | (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]); |
| 5893 | } else { | 5883 | else |
| 5894 | IWL_DEBUG_SCAN("Initiating indirect scan.\n"); | ||
| 5895 | scan->channel_count = | 5884 | scan->channel_count = |
| 5896 | iwl4965_get_channels_for_scan( | 5885 | iwl4965_get_channels_for_scan( |
| 5897 | priv, band, 0, /* passive */ | 5886 | priv, band, 0, /* passive */ |
| 5898 | direct_mask, | 5887 | direct_mask, |
| 5899 | (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]); | 5888 | (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]); |
| 5900 | } | ||
| 5901 | 5889 | ||
| 5902 | cmd.len += le16_to_cpu(scan->tx_cmd.len) + | 5890 | cmd.len += le16_to_cpu(scan->tx_cmd.len) + |
| 5903 | scan->channel_count * sizeof(struct iwl4965_scan_channel); | 5891 | scan->channel_count * sizeof(struct iwl4965_scan_channel); |
| @@ -7061,8 +7049,6 @@ static void iwl4965_mac_reset_tsf(struct ieee80211_hw *hw) | |||
| 7061 | return; | 7049 | return; |
| 7062 | } | 7050 | } |
| 7063 | 7051 | ||
| 7064 | priv->only_active_channel = 0; | ||
| 7065 | |||
| 7066 | iwl4965_set_rate(priv); | 7052 | iwl4965_set_rate(priv); |
| 7067 | 7053 | ||
| 7068 | mutex_unlock(&priv->mutex); | 7054 | mutex_unlock(&priv->mutex); |
diff --git a/drivers/net/wireless/libertas/scan.c b/drivers/net/wireless/libertas/scan.c index 1a409fcc80d3..d448c9702a0f 100644 --- a/drivers/net/wireless/libertas/scan.c +++ b/drivers/net/wireless/libertas/scan.c | |||
| @@ -298,7 +298,8 @@ static int lbs_do_scan(struct lbs_private *priv, uint8_t bsstype, | |||
| 298 | uint8_t *tlv; /* pointer into our current, growing TLV storage area */ | 298 | uint8_t *tlv; /* pointer into our current, growing TLV storage area */ |
| 299 | 299 | ||
| 300 | lbs_deb_enter_args(LBS_DEB_SCAN, "bsstype %d, chanlist[].chan %d, chan_count %d", | 300 | lbs_deb_enter_args(LBS_DEB_SCAN, "bsstype %d, chanlist[].chan %d, chan_count %d", |
| 301 | bsstype, chan_list[0].channumber, chan_count); | 301 | bsstype, chan_list ? chan_list[0].channumber : -1, |
| 302 | chan_count); | ||
| 302 | 303 | ||
| 303 | /* create the fixed part for scan command */ | 304 | /* create the fixed part for scan command */ |
| 304 | scan_cmd = kzalloc(MAX_SCAN_CFG_ALLOC, GFP_KERNEL); | 305 | scan_cmd = kzalloc(MAX_SCAN_CFG_ALLOC, GFP_KERNEL); |
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c index b41187af1306..560b9c73c0b9 100644 --- a/drivers/net/wireless/rt2x00/rt2400pci.c +++ b/drivers/net/wireless/rt2x00/rt2400pci.c | |||
| @@ -363,7 +363,7 @@ static void rt2400pci_config_erp(struct rt2x00_dev *rt2x00dev, | |||
| 363 | rt2x00pci_register_write(rt2x00dev, TXCSR1, reg); | 363 | rt2x00pci_register_write(rt2x00dev, TXCSR1, reg); |
| 364 | 364 | ||
| 365 | rt2x00pci_register_read(rt2x00dev, ARCSR2, ®); | 365 | rt2x00pci_register_read(rt2x00dev, ARCSR2, ®); |
| 366 | rt2x00_set_field32(®, ARCSR2_SIGNAL, 0x00 | preamble_mask); | 366 | rt2x00_set_field32(®, ARCSR2_SIGNAL, 0x00); |
| 367 | rt2x00_set_field32(®, ARCSR2_SERVICE, 0x04); | 367 | rt2x00_set_field32(®, ARCSR2_SERVICE, 0x04); |
| 368 | rt2x00_set_field32(®, ARCSR2_LENGTH, get_duration(ACK_SIZE, 10)); | 368 | rt2x00_set_field32(®, ARCSR2_LENGTH, get_duration(ACK_SIZE, 10)); |
| 369 | rt2x00pci_register_write(rt2x00dev, ARCSR2, reg); | 369 | rt2x00pci_register_write(rt2x00dev, ARCSR2, reg); |
| @@ -1308,7 +1308,7 @@ static int rt2400pci_init_eeprom(struct rt2x00_dev *rt2x00dev) | |||
| 1308 | 1308 | ||
| 1309 | if (value == LED_MODE_TXRX_ACTIVITY) { | 1309 | if (value == LED_MODE_TXRX_ACTIVITY) { |
| 1310 | rt2x00dev->led_qual.rt2x00dev = rt2x00dev; | 1310 | rt2x00dev->led_qual.rt2x00dev = rt2x00dev; |
| 1311 | rt2x00dev->led_radio.type = LED_TYPE_ACTIVITY; | 1311 | rt2x00dev->led_qual.type = LED_TYPE_ACTIVITY; |
| 1312 | rt2x00dev->led_qual.led_dev.brightness_set = | 1312 | rt2x00dev->led_qual.led_dev.brightness_set = |
| 1313 | rt2400pci_brightness_set; | 1313 | rt2400pci_brightness_set; |
| 1314 | rt2x00dev->led_qual.led_dev.blink_set = | 1314 | rt2x00dev->led_qual.led_dev.blink_set = |
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c index 5ade097ed45e..a5ed54b69262 100644 --- a/drivers/net/wireless/rt2x00/rt2500pci.c +++ b/drivers/net/wireless/rt2x00/rt2500pci.c | |||
| @@ -370,7 +370,7 @@ static void rt2500pci_config_erp(struct rt2x00_dev *rt2x00dev, | |||
| 370 | rt2x00pci_register_write(rt2x00dev, TXCSR1, reg); | 370 | rt2x00pci_register_write(rt2x00dev, TXCSR1, reg); |
| 371 | 371 | ||
| 372 | rt2x00pci_register_read(rt2x00dev, ARCSR2, ®); | 372 | rt2x00pci_register_read(rt2x00dev, ARCSR2, ®); |
| 373 | rt2x00_set_field32(®, ARCSR2_SIGNAL, 0x00 | preamble_mask); | 373 | rt2x00_set_field32(®, ARCSR2_SIGNAL, 0x00); |
| 374 | rt2x00_set_field32(®, ARCSR2_SERVICE, 0x04); | 374 | rt2x00_set_field32(®, ARCSR2_SERVICE, 0x04); |
| 375 | rt2x00_set_field32(®, ARCSR2_LENGTH, get_duration(ACK_SIZE, 10)); | 375 | rt2x00_set_field32(®, ARCSR2_LENGTH, get_duration(ACK_SIZE, 10)); |
| 376 | rt2x00pci_register_write(rt2x00dev, ARCSR2, reg); | 376 | rt2x00pci_register_write(rt2x00dev, ARCSR2, reg); |
| @@ -1485,7 +1485,7 @@ static int rt2500pci_init_eeprom(struct rt2x00_dev *rt2x00dev) | |||
| 1485 | 1485 | ||
| 1486 | if (value == LED_MODE_TXRX_ACTIVITY) { | 1486 | if (value == LED_MODE_TXRX_ACTIVITY) { |
| 1487 | rt2x00dev->led_qual.rt2x00dev = rt2x00dev; | 1487 | rt2x00dev->led_qual.rt2x00dev = rt2x00dev; |
| 1488 | rt2x00dev->led_radio.type = LED_TYPE_ACTIVITY; | 1488 | rt2x00dev->led_qual.type = LED_TYPE_ACTIVITY; |
| 1489 | rt2x00dev->led_qual.led_dev.brightness_set = | 1489 | rt2x00dev->led_qual.led_dev.brightness_set = |
| 1490 | rt2500pci_brightness_set; | 1490 | rt2500pci_brightness_set; |
| 1491 | rt2x00dev->led_qual.led_dev.blink_set = | 1491 | rt2x00dev->led_qual.led_dev.blink_set = |
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c index 6bb07b339325..fdbd0ef2be4b 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c | |||
| @@ -1394,7 +1394,7 @@ static int rt2500usb_init_eeprom(struct rt2x00_dev *rt2x00dev) | |||
| 1394 | 1394 | ||
| 1395 | if (value == LED_MODE_TXRX_ACTIVITY) { | 1395 | if (value == LED_MODE_TXRX_ACTIVITY) { |
| 1396 | rt2x00dev->led_qual.rt2x00dev = rt2x00dev; | 1396 | rt2x00dev->led_qual.rt2x00dev = rt2x00dev; |
| 1397 | rt2x00dev->led_radio.type = LED_TYPE_ACTIVITY; | 1397 | rt2x00dev->led_qual.type = LED_TYPE_ACTIVITY; |
| 1398 | rt2x00dev->led_qual.led_dev.brightness_set = | 1398 | rt2x00dev->led_qual.led_dev.brightness_set = |
| 1399 | rt2500usb_brightness_set; | 1399 | rt2500usb_brightness_set; |
| 1400 | rt2x00dev->led_qual.led_dev.blink_set = | 1400 | rt2x00dev->led_qual.led_dev.blink_set = |
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c index f8fe7a139a8a..8d8657fb64dd 100644 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c | |||
| @@ -114,6 +114,7 @@ int rt2x00lib_enable_radio(struct rt2x00_dev *rt2x00dev) | |||
| 114 | return status; | 114 | return status; |
| 115 | 115 | ||
| 116 | rt2x00leds_led_radio(rt2x00dev, true); | 116 | rt2x00leds_led_radio(rt2x00dev, true); |
| 117 | rt2x00led_led_activity(rt2x00dev, true); | ||
| 117 | 118 | ||
| 118 | __set_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags); | 119 | __set_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags); |
| 119 | 120 | ||
| @@ -157,6 +158,7 @@ void rt2x00lib_disable_radio(struct rt2x00_dev *rt2x00dev) | |||
| 157 | * Disable radio. | 158 | * Disable radio. |
| 158 | */ | 159 | */ |
| 159 | rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_RADIO_OFF); | 160 | rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_RADIO_OFF); |
| 161 | rt2x00led_led_activity(rt2x00dev, false); | ||
| 160 | rt2x00leds_led_radio(rt2x00dev, false); | 162 | rt2x00leds_led_radio(rt2x00dev, false); |
| 161 | } | 163 | } |
| 162 | 164 | ||
diff --git a/drivers/net/wireless/rt2x00/rt2x00leds.c b/drivers/net/wireless/rt2x00/rt2x00leds.c index 40c1f5c1b805..b362a1cf3f8d 100644 --- a/drivers/net/wireless/rt2x00/rt2x00leds.c +++ b/drivers/net/wireless/rt2x00/rt2x00leds.c | |||
| @@ -72,6 +72,21 @@ void rt2x00leds_led_quality(struct rt2x00_dev *rt2x00dev, int rssi) | |||
| 72 | } | 72 | } |
| 73 | } | 73 | } |
| 74 | 74 | ||
| 75 | void rt2x00led_led_activity(struct rt2x00_dev *rt2x00dev, bool enabled) | ||
| 76 | { | ||
| 77 | struct rt2x00_led *led = &rt2x00dev->led_qual; | ||
| 78 | unsigned int brightness; | ||
| 79 | |||
| 80 | if ((led->type != LED_TYPE_ACTIVITY) || !(led->flags & LED_REGISTERED)) | ||
| 81 | return; | ||
| 82 | |||
| 83 | brightness = enabled ? LED_FULL : LED_OFF; | ||
| 84 | if (brightness != led->led_dev.brightness) { | ||
| 85 | led->led_dev.brightness_set(&led->led_dev, brightness); | ||
| 86 | led->led_dev.brightness = brightness; | ||
| 87 | } | ||
| 88 | } | ||
| 89 | |||
| 75 | void rt2x00leds_led_assoc(struct rt2x00_dev *rt2x00dev, bool enabled) | 90 | void rt2x00leds_led_assoc(struct rt2x00_dev *rt2x00dev, bool enabled) |
| 76 | { | 91 | { |
| 77 | struct rt2x00_led *led = &rt2x00dev->led_assoc; | 92 | struct rt2x00_led *led = &rt2x00dev->led_assoc; |
diff --git a/drivers/net/wireless/rt2x00/rt2x00lib.h b/drivers/net/wireless/rt2x00/rt2x00lib.h index 5be32fffc74c..41ee02cd2825 100644 --- a/drivers/net/wireless/rt2x00/rt2x00lib.h +++ b/drivers/net/wireless/rt2x00/rt2x00lib.h | |||
| @@ -185,6 +185,7 @@ static inline void rt2x00rfkill_resume(struct rt2x00_dev *rt2x00dev) | |||
| 185 | */ | 185 | */ |
| 186 | #ifdef CONFIG_RT2X00_LIB_LEDS | 186 | #ifdef CONFIG_RT2X00_LIB_LEDS |
| 187 | void rt2x00leds_led_quality(struct rt2x00_dev *rt2x00dev, int rssi); | 187 | void rt2x00leds_led_quality(struct rt2x00_dev *rt2x00dev, int rssi); |
| 188 | void rt2x00led_led_activity(struct rt2x00_dev *rt2x00dev, bool enabled); | ||
| 188 | void rt2x00leds_led_assoc(struct rt2x00_dev *rt2x00dev, bool enabled); | 189 | void rt2x00leds_led_assoc(struct rt2x00_dev *rt2x00dev, bool enabled); |
| 189 | void rt2x00leds_led_radio(struct rt2x00_dev *rt2x00dev, bool enabled); | 190 | void rt2x00leds_led_radio(struct rt2x00_dev *rt2x00dev, bool enabled); |
| 190 | void rt2x00leds_register(struct rt2x00_dev *rt2x00dev); | 191 | void rt2x00leds_register(struct rt2x00_dev *rt2x00dev); |
| @@ -197,6 +198,11 @@ static inline void rt2x00leds_led_quality(struct rt2x00_dev *rt2x00dev, | |||
| 197 | { | 198 | { |
| 198 | } | 199 | } |
| 199 | 200 | ||
| 201 | static inline void rt2x00led_led_activity(struct rt2x00_dev *rt2x00dev, | ||
| 202 | bool enabled) | ||
| 203 | { | ||
| 204 | } | ||
| 205 | |||
| 200 | static inline void rt2x00leds_led_assoc(struct rt2x00_dev *rt2x00dev, | 206 | static inline void rt2x00leds_led_assoc(struct rt2x00_dev *rt2x00dev, |
| 201 | bool enabled) | 207 | bool enabled) |
| 202 | { | 208 | { |
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c index 468a31c8c113..ae12dcdd3c24 100644 --- a/drivers/net/wireless/rt2x00/rt61pci.c +++ b/drivers/net/wireless/rt2x00/rt61pci.c | |||
| @@ -2087,7 +2087,7 @@ static int rt61pci_init_eeprom(struct rt2x00_dev *rt2x00dev) | |||
| 2087 | 2087 | ||
| 2088 | if (value == LED_MODE_SIGNAL_STRENGTH) { | 2088 | if (value == LED_MODE_SIGNAL_STRENGTH) { |
| 2089 | rt2x00dev->led_qual.rt2x00dev = rt2x00dev; | 2089 | rt2x00dev->led_qual.rt2x00dev = rt2x00dev; |
| 2090 | rt2x00dev->led_radio.type = LED_TYPE_QUALITY; | 2090 | rt2x00dev->led_qual.type = LED_TYPE_QUALITY; |
| 2091 | rt2x00dev->led_qual.led_dev.brightness_set = | 2091 | rt2x00dev->led_qual.led_dev.brightness_set = |
| 2092 | rt61pci_brightness_set; | 2092 | rt61pci_brightness_set; |
| 2093 | rt2x00dev->led_qual.led_dev.blink_set = | 2093 | rt2x00dev->led_qual.led_dev.blink_set = |
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index a9efe25f1ea7..da19a3a91f4d 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c | |||
| @@ -1647,7 +1647,7 @@ static int rt73usb_init_eeprom(struct rt2x00_dev *rt2x00dev) | |||
| 1647 | 1647 | ||
| 1648 | if (value == LED_MODE_SIGNAL_STRENGTH) { | 1648 | if (value == LED_MODE_SIGNAL_STRENGTH) { |
| 1649 | rt2x00dev->led_qual.rt2x00dev = rt2x00dev; | 1649 | rt2x00dev->led_qual.rt2x00dev = rt2x00dev; |
| 1650 | rt2x00dev->led_radio.type = LED_TYPE_QUALITY; | 1650 | rt2x00dev->led_qual.type = LED_TYPE_QUALITY; |
| 1651 | rt2x00dev->led_qual.led_dev.brightness_set = | 1651 | rt2x00dev->led_qual.led_dev.brightness_set = |
| 1652 | rt73usb_brightness_set; | 1652 | rt73usb_brightness_set; |
| 1653 | rt2x00dev->led_qual.led_dev.blink_set = | 1653 | rt2x00dev->led_qual.led_dev.blink_set = |
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c index e62018a36133..8bddff150c70 100644 --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c | |||
| @@ -1803,7 +1803,7 @@ static void __exit netif_exit(void) | |||
| 1803 | if (is_initial_xendomain()) | 1803 | if (is_initial_xendomain()) |
| 1804 | return; | 1804 | return; |
| 1805 | 1805 | ||
| 1806 | return xenbus_unregister_driver(&netfront); | 1806 | xenbus_unregister_driver(&netfront); |
| 1807 | } | 1807 | } |
| 1808 | module_exit(netif_exit); | 1808 | module_exit(netif_exit); |
| 1809 | 1809 | ||
diff --git a/fs/proc/generic.c b/fs/proc/generic.c index 9d53b39a9cf8..43e54e86cefd 100644 --- a/fs/proc/generic.c +++ b/fs/proc/generic.c | |||
| @@ -641,6 +641,23 @@ struct proc_dir_entry *proc_mkdir_mode(const char *name, mode_t mode, | |||
| 641 | return ent; | 641 | return ent; |
| 642 | } | 642 | } |
| 643 | 643 | ||
| 644 | struct proc_dir_entry *proc_net_mkdir(struct net *net, const char *name, | ||
| 645 | struct proc_dir_entry *parent) | ||
| 646 | { | ||
| 647 | struct proc_dir_entry *ent; | ||
| 648 | |||
| 649 | ent = __proc_create(&parent, name, S_IFDIR | S_IRUGO | S_IXUGO, 2); | ||
| 650 | if (ent) { | ||
| 651 | ent->data = net; | ||
| 652 | if (proc_register(parent, ent) < 0) { | ||
| 653 | kfree(ent); | ||
| 654 | ent = NULL; | ||
| 655 | } | ||
| 656 | } | ||
| 657 | return ent; | ||
| 658 | } | ||
| 659 | EXPORT_SYMBOL_GPL(proc_net_mkdir); | ||
| 660 | |||
| 644 | struct proc_dir_entry *proc_mkdir(const char *name, | 661 | struct proc_dir_entry *proc_mkdir(const char *name, |
| 645 | struct proc_dir_entry *parent) | 662 | struct proc_dir_entry *parent) |
| 646 | { | 663 | { |
diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c index 13cd7835d0df..83f357b30d71 100644 --- a/fs/proc/proc_net.c +++ b/fs/proc/proc_net.c | |||
| @@ -159,17 +159,6 @@ struct net *get_proc_net(const struct inode *inode) | |||
| 159 | } | 159 | } |
| 160 | EXPORT_SYMBOL_GPL(get_proc_net); | 160 | EXPORT_SYMBOL_GPL(get_proc_net); |
| 161 | 161 | ||
| 162 | struct proc_dir_entry *proc_net_mkdir(struct net *net, const char *name, | ||
| 163 | struct proc_dir_entry *parent) | ||
| 164 | { | ||
| 165 | struct proc_dir_entry *pde; | ||
| 166 | pde = proc_mkdir_mode(name, S_IRUGO | S_IXUGO, parent); | ||
| 167 | if (pde != NULL) | ||
| 168 | pde->data = net; | ||
| 169 | return pde; | ||
| 170 | } | ||
| 171 | EXPORT_SYMBOL_GPL(proc_net_mkdir); | ||
| 172 | |||
| 173 | static __net_init int proc_net_ns_init(struct net *net) | 162 | static __net_init int proc_net_ns_init(struct net *net) |
| 174 | { | 163 | { |
| 175 | struct proc_dir_entry *netd, *net_statd; | 164 | struct proc_dir_entry *netd, *net_statd; |
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index 529f301d9372..0b5e03eae6d2 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h | |||
| @@ -113,7 +113,7 @@ struct ieee80211_hdr { | |||
| 113 | struct ieee80211s_hdr { | 113 | struct ieee80211s_hdr { |
| 114 | u8 flags; | 114 | u8 flags; |
| 115 | u8 ttl; | 115 | u8 ttl; |
| 116 | u8 seqnum[3]; | 116 | __le32 seqnum; |
| 117 | u8 eaddr1[6]; | 117 | u8 eaddr1[6]; |
| 118 | u8 eaddr2[6]; | 118 | u8 eaddr2[6]; |
| 119 | u8 eaddr3[6]; | 119 | u8 eaddr3[6]; |
diff --git a/include/linux/if_bridge.h b/include/linux/if_bridge.h index 58e43e566457..950e13d09e06 100644 --- a/include/linux/if_bridge.h +++ b/include/linux/if_bridge.h | |||
| @@ -97,7 +97,9 @@ struct __fdb_entry | |||
| 97 | __u8 port_no; | 97 | __u8 port_no; |
| 98 | __u8 is_local; | 98 | __u8 is_local; |
| 99 | __u32 ageing_timer_value; | 99 | __u32 ageing_timer_value; |
| 100 | __u32 unused; | 100 | __u8 port_hi; |
| 101 | __u8 pad0; | ||
| 102 | __u16 unused; | ||
| 101 | }; | 103 | }; |
| 102 | 104 | ||
| 103 | #ifdef __KERNEL__ | 105 | #ifdef __KERNEL__ |
diff --git a/include/linux/wireless.h b/include/linux/wireless.h index 2864b1699ecc..0a9b5b41ed67 100644 --- a/include/linux/wireless.h +++ b/include/linux/wireless.h | |||
| @@ -69,14 +69,9 @@ | |||
| 69 | 69 | ||
| 70 | /***************************** INCLUDES *****************************/ | 70 | /***************************** INCLUDES *****************************/ |
| 71 | 71 | ||
| 72 | /* This header is used in user-space, therefore need to be sanitised | 72 | #include <linux/types.h> /* for __u* and __s* typedefs */ |
| 73 | * for that purpose. Those includes are usually not compatible with glibc. | ||
| 74 | * To know which includes to use in user-space, check iwlib.h. */ | ||
| 75 | #ifdef __KERNEL__ | ||
| 76 | #include <linux/types.h> /* for "caddr_t" et al */ | ||
| 77 | #include <linux/socket.h> /* for "struct sockaddr" et al */ | 73 | #include <linux/socket.h> /* for "struct sockaddr" et al */ |
| 78 | #include <linux/if.h> /* for IFNAMSIZ and co... */ | 74 | #include <linux/if.h> /* for IFNAMSIZ and co... */ |
| 79 | #endif /* __KERNEL__ */ | ||
| 80 | 75 | ||
| 81 | /***************************** VERSION *****************************/ | 76 | /***************************** VERSION *****************************/ |
| 82 | /* | 77 | /* |
diff --git a/net/8021q/vlanproc.c b/net/8021q/vlanproc.c index daad0064e2c2..08b54b593d56 100644 --- a/net/8021q/vlanproc.c +++ b/net/8021q/vlanproc.c | |||
| @@ -176,12 +176,11 @@ int vlan_proc_add_dev(struct net_device *vlandev) | |||
| 176 | struct vlan_dev_info *dev_info = vlan_dev_info(vlandev); | 176 | struct vlan_dev_info *dev_info = vlan_dev_info(vlandev); |
| 177 | struct vlan_net *vn = net_generic(dev_net(vlandev), vlan_net_id); | 177 | struct vlan_net *vn = net_generic(dev_net(vlandev), vlan_net_id); |
| 178 | 178 | ||
| 179 | dev_info->dent = proc_create(vlandev->name, S_IFREG|S_IRUSR|S_IWUSR, | 179 | dev_info->dent = |
| 180 | vn->proc_vlan_dir, &vlandev_fops); | 180 | proc_create_data(vlandev->name, S_IFREG|S_IRUSR|S_IWUSR, |
| 181 | vn->proc_vlan_dir, &vlandev_fops, vlandev); | ||
| 181 | if (!dev_info->dent) | 182 | if (!dev_info->dent) |
| 182 | return -ENOBUFS; | 183 | return -ENOBUFS; |
| 183 | |||
| 184 | dev_info->dent->data = vlandev; | ||
| 185 | return 0; | 184 | return 0; |
| 186 | } | 185 | } |
| 187 | 186 | ||
diff --git a/net/atm/proc.c b/net/atm/proc.c index 5c9f3d148135..49487b313f22 100644 --- a/net/atm/proc.c +++ b/net/atm/proc.c | |||
| @@ -417,12 +417,10 @@ int atm_proc_dev_register(struct atm_dev *dev) | |||
| 417 | goto err_out; | 417 | goto err_out; |
| 418 | sprintf(dev->proc_name,"%s:%d",dev->type, dev->number); | 418 | sprintf(dev->proc_name,"%s:%d",dev->type, dev->number); |
| 419 | 419 | ||
| 420 | dev->proc_entry = proc_create(dev->proc_name, 0, atm_proc_root, | 420 | dev->proc_entry = proc_create_data(dev->proc_name, 0, atm_proc_root, |
| 421 | &proc_atm_dev_ops); | 421 | &proc_atm_dev_ops, dev); |
| 422 | if (!dev->proc_entry) | 422 | if (!dev->proc_entry) |
| 423 | goto err_free_name; | 423 | goto err_free_name; |
| 424 | dev->proc_entry->data = dev; | ||
| 425 | dev->proc_entry->owner = THIS_MODULE; | ||
| 426 | return 0; | 424 | return 0; |
| 427 | err_free_name: | 425 | err_free_name: |
| 428 | kfree(dev->proc_name); | 426 | kfree(dev->proc_name); |
diff --git a/net/bluetooth/bnep/core.c b/net/bluetooth/bnep/core.c index 347e935faaf0..f85d94643aaf 100644 --- a/net/bluetooth/bnep/core.c +++ b/net/bluetooth/bnep/core.c | |||
| @@ -135,7 +135,7 @@ static int bnep_ctrl_set_netfilter(struct bnep_session *s, __be16 *data, int len | |||
| 135 | if (len < 2) | 135 | if (len < 2) |
| 136 | return -EILSEQ; | 136 | return -EILSEQ; |
| 137 | 137 | ||
| 138 | n = ntohs(get_unaligned(data)); | 138 | n = get_unaligned_be16(data); |
| 139 | data++; len -= 2; | 139 | data++; len -= 2; |
| 140 | 140 | ||
| 141 | if (len < n) | 141 | if (len < n) |
| @@ -150,8 +150,8 @@ static int bnep_ctrl_set_netfilter(struct bnep_session *s, __be16 *data, int len | |||
| 150 | int i; | 150 | int i; |
| 151 | 151 | ||
| 152 | for (i = 0; i < n; i++) { | 152 | for (i = 0; i < n; i++) { |
| 153 | f[i].start = ntohs(get_unaligned(data++)); | 153 | f[i].start = get_unaligned_be16(data++); |
| 154 | f[i].end = ntohs(get_unaligned(data++)); | 154 | f[i].end = get_unaligned_be16(data++); |
| 155 | 155 | ||
| 156 | BT_DBG("proto filter start %d end %d", | 156 | BT_DBG("proto filter start %d end %d", |
| 157 | f[i].start, f[i].end); | 157 | f[i].start, f[i].end); |
| @@ -180,7 +180,7 @@ static int bnep_ctrl_set_mcfilter(struct bnep_session *s, u8 *data, int len) | |||
| 180 | if (len < 2) | 180 | if (len < 2) |
| 181 | return -EILSEQ; | 181 | return -EILSEQ; |
| 182 | 182 | ||
| 183 | n = ntohs(get_unaligned((__be16 *) data)); | 183 | n = get_unaligned_be16(data); |
| 184 | data += 2; len -= 2; | 184 | data += 2; len -= 2; |
| 185 | 185 | ||
| 186 | if (len < n) | 186 | if (len < n) |
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index 46df2e403df8..6aef8f24e581 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c | |||
| @@ -129,8 +129,7 @@ static void hci_cc_write_link_policy(struct hci_dev *hdev, struct sk_buff *skb) | |||
| 129 | 129 | ||
| 130 | conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(rp->handle)); | 130 | conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(rp->handle)); |
| 131 | if (conn) { | 131 | if (conn) { |
| 132 | __le16 policy = get_unaligned((__le16 *) (sent + 2)); | 132 | conn->link_policy = get_unaligned_le16(sent + 2); |
| 133 | conn->link_policy = __le16_to_cpu(policy); | ||
| 134 | } | 133 | } |
| 135 | 134 | ||
| 136 | hci_dev_unlock(hdev); | 135 | hci_dev_unlock(hdev); |
| @@ -313,7 +312,7 @@ static void hci_cc_write_voice_setting(struct hci_dev *hdev, struct sk_buff *skb | |||
| 313 | return; | 312 | return; |
| 314 | 313 | ||
| 315 | if (!status) { | 314 | if (!status) { |
| 316 | __u16 setting = __le16_to_cpu(get_unaligned((__le16 *) sent)); | 315 | __u16 setting = get_unaligned_le16(sent); |
| 317 | 316 | ||
| 318 | if (hdev->voice_setting != setting) { | 317 | if (hdev->voice_setting != setting) { |
| 319 | hdev->voice_setting = setting; | 318 | hdev->voice_setting = setting; |
| @@ -1152,8 +1151,8 @@ static inline void hci_num_comp_pkts_evt(struct hci_dev *hdev, struct sk_buff *s | |||
| 1152 | struct hci_conn *conn; | 1151 | struct hci_conn *conn; |
| 1153 | __u16 handle, count; | 1152 | __u16 handle, count; |
| 1154 | 1153 | ||
| 1155 | handle = __le16_to_cpu(get_unaligned(ptr++)); | 1154 | handle = get_unaligned_le16(ptr++); |
| 1156 | count = __le16_to_cpu(get_unaligned(ptr++)); | 1155 | count = get_unaligned_le16(ptr++); |
| 1157 | 1156 | ||
| 1158 | conn = hci_conn_hash_lookup_handle(hdev, handle); | 1157 | conn = hci_conn_hash_lookup_handle(hdev, handle); |
| 1159 | if (conn) { | 1158 | if (conn) { |
diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c index 1d36c093523b..747fabd735d2 100644 --- a/net/bluetooth/hci_sock.c +++ b/net/bluetooth/hci_sock.c | |||
| @@ -440,7 +440,7 @@ static int hci_sock_sendmsg(struct kiocb *iocb, struct socket *sock, | |||
| 440 | skb->dev = (void *) hdev; | 440 | skb->dev = (void *) hdev; |
| 441 | 441 | ||
| 442 | if (bt_cb(skb)->pkt_type == HCI_COMMAND_PKT) { | 442 | if (bt_cb(skb)->pkt_type == HCI_COMMAND_PKT) { |
| 443 | u16 opcode = __le16_to_cpu(get_unaligned((__le16 *) skb->data)); | 443 | u16 opcode = get_unaligned_le16(skb->data); |
| 444 | u16 ogf = hci_opcode_ogf(opcode); | 444 | u16 ogf = hci_opcode_ogf(opcode); |
| 445 | u16 ocf = hci_opcode_ocf(opcode); | 445 | u16 ocf = hci_opcode_ocf(opcode); |
| 446 | 446 | ||
diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c index a4849f2c1d81..6e180d255505 100644 --- a/net/bluetooth/l2cap.c +++ b/net/bluetooth/l2cap.c | |||
| @@ -1827,7 +1827,7 @@ static inline int l2cap_information_rsp(struct l2cap_conn *conn, struct l2cap_cm | |||
| 1827 | del_timer(&conn->info_timer); | 1827 | del_timer(&conn->info_timer); |
| 1828 | 1828 | ||
| 1829 | if (type == L2CAP_IT_FEAT_MASK) | 1829 | if (type == L2CAP_IT_FEAT_MASK) |
| 1830 | conn->feat_mask = __le32_to_cpu(get_unaligned((__le32 *) rsp->data)); | 1830 | conn->feat_mask = get_unaligned_le32(rsp->data); |
| 1831 | 1831 | ||
| 1832 | l2cap_conn_start(conn); | 1832 | l2cap_conn_start(conn); |
| 1833 | 1833 | ||
diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c index 9326c377822e..72c5976a5ce3 100644 --- a/net/bridge/br_fdb.c +++ b/net/bridge/br_fdb.c | |||
| @@ -285,7 +285,11 @@ int br_fdb_fillbuf(struct net_bridge *br, void *buf, | |||
| 285 | 285 | ||
| 286 | /* convert from internal format to API */ | 286 | /* convert from internal format to API */ |
| 287 | memcpy(fe->mac_addr, f->addr.addr, ETH_ALEN); | 287 | memcpy(fe->mac_addr, f->addr.addr, ETH_ALEN); |
| 288 | |||
| 289 | /* due to ABI compat need to split into hi/lo */ | ||
| 288 | fe->port_no = f->dst->port_no; | 290 | fe->port_no = f->dst->port_no; |
| 291 | fe->port_hi = f->dst->port_no >> 8; | ||
| 292 | |||
| 289 | fe->is_local = f->is_local; | 293 | fe->is_local = f->is_local; |
| 290 | if (!f->is_static) | 294 | if (!f->is_static) |
| 291 | fe->ageing_timer_value = jiffies_to_clock_t(jiffies - f->ageing_timer); | 295 | fe->ageing_timer_value = jiffies_to_clock_t(jiffies - f->ageing_timer); |
diff --git a/net/bridge/br_stp_bpdu.c b/net/bridge/br_stp_bpdu.c index 8deab645ef75..ddeb6e5d45d6 100644 --- a/net/bridge/br_stp_bpdu.c +++ b/net/bridge/br_stp_bpdu.c | |||
| @@ -58,12 +58,12 @@ static inline void br_set_ticks(unsigned char *dest, int j) | |||
| 58 | { | 58 | { |
| 59 | unsigned long ticks = (STP_HZ * j)/ HZ; | 59 | unsigned long ticks = (STP_HZ * j)/ HZ; |
| 60 | 60 | ||
| 61 | put_unaligned(htons(ticks), (__be16 *)dest); | 61 | put_unaligned_be16(ticks, dest); |
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | static inline int br_get_ticks(const unsigned char *src) | 64 | static inline int br_get_ticks(const unsigned char *src) |
| 65 | { | 65 | { |
| 66 | unsigned long ticks = ntohs(get_unaligned((__be16 *)src)); | 66 | unsigned long ticks = get_unaligned_be16(src); |
| 67 | 67 | ||
| 68 | return DIV_ROUND_UP(ticks * HZ, STP_HZ); | 68 | return DIV_ROUND_UP(ticks * HZ, STP_HZ); |
| 69 | } | 69 | } |
diff --git a/net/core/dev.c b/net/core/dev.c index ed49da592051..d334446a8eaf 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
| @@ -162,7 +162,7 @@ struct net_dma { | |||
| 162 | struct dma_client client; | 162 | struct dma_client client; |
| 163 | spinlock_t lock; | 163 | spinlock_t lock; |
| 164 | cpumask_t channel_mask; | 164 | cpumask_t channel_mask; |
| 165 | struct dma_chan *channels[NR_CPUS]; | 165 | struct dma_chan **channels; |
| 166 | }; | 166 | }; |
| 167 | 167 | ||
| 168 | static enum dma_state_client | 168 | static enum dma_state_client |
| @@ -2444,7 +2444,7 @@ static struct netif_rx_stats *softnet_get_online(loff_t *pos) | |||
| 2444 | { | 2444 | { |
| 2445 | struct netif_rx_stats *rc = NULL; | 2445 | struct netif_rx_stats *rc = NULL; |
| 2446 | 2446 | ||
| 2447 | while (*pos < NR_CPUS) | 2447 | while (*pos < nr_cpu_ids) |
| 2448 | if (cpu_online(*pos)) { | 2448 | if (cpu_online(*pos)) { |
| 2449 | rc = &per_cpu(netdev_rx_stat, *pos); | 2449 | rc = &per_cpu(netdev_rx_stat, *pos); |
| 2450 | break; | 2450 | break; |
| @@ -3776,6 +3776,7 @@ int register_netdevice(struct net_device *dev) | |||
| 3776 | } | 3776 | } |
| 3777 | } | 3777 | } |
| 3778 | 3778 | ||
| 3779 | netdev_initialize_kobject(dev); | ||
| 3779 | ret = netdev_register_kobject(dev); | 3780 | ret = netdev_register_kobject(dev); |
| 3780 | if (ret) | 3781 | if (ret) |
| 3781 | goto err_uninit; | 3782 | goto err_uninit; |
| @@ -4208,7 +4209,8 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char | |||
| 4208 | } | 4209 | } |
| 4209 | 4210 | ||
| 4210 | /* Fixup kobjects */ | 4211 | /* Fixup kobjects */ |
| 4211 | err = device_rename(&dev->dev, dev->name); | 4212 | netdev_unregister_kobject(dev); |
| 4213 | err = netdev_register_kobject(dev); | ||
| 4212 | WARN_ON(err); | 4214 | WARN_ON(err); |
| 4213 | 4215 | ||
| 4214 | /* Add the device back in the hashes */ | 4216 | /* Add the device back in the hashes */ |
| @@ -4324,7 +4326,7 @@ netdev_dma_event(struct dma_client *client, struct dma_chan *chan, | |||
| 4324 | spin_lock(&net_dma->lock); | 4326 | spin_lock(&net_dma->lock); |
| 4325 | switch (state) { | 4327 | switch (state) { |
| 4326 | case DMA_RESOURCE_AVAILABLE: | 4328 | case DMA_RESOURCE_AVAILABLE: |
| 4327 | for (i = 0; i < NR_CPUS; i++) | 4329 | for (i = 0; i < nr_cpu_ids; i++) |
| 4328 | if (net_dma->channels[i] == chan) { | 4330 | if (net_dma->channels[i] == chan) { |
| 4329 | found = 1; | 4331 | found = 1; |
| 4330 | break; | 4332 | break; |
| @@ -4339,7 +4341,7 @@ netdev_dma_event(struct dma_client *client, struct dma_chan *chan, | |||
| 4339 | } | 4341 | } |
| 4340 | break; | 4342 | break; |
| 4341 | case DMA_RESOURCE_REMOVED: | 4343 | case DMA_RESOURCE_REMOVED: |
| 4342 | for (i = 0; i < NR_CPUS; i++) | 4344 | for (i = 0; i < nr_cpu_ids; i++) |
| 4343 | if (net_dma->channels[i] == chan) { | 4345 | if (net_dma->channels[i] == chan) { |
| 4344 | found = 1; | 4346 | found = 1; |
| 4345 | pos = i; | 4347 | pos = i; |
| @@ -4366,6 +4368,13 @@ netdev_dma_event(struct dma_client *client, struct dma_chan *chan, | |||
| 4366 | */ | 4368 | */ |
| 4367 | static int __init netdev_dma_register(void) | 4369 | static int __init netdev_dma_register(void) |
| 4368 | { | 4370 | { |
| 4371 | net_dma.channels = kzalloc(nr_cpu_ids * sizeof(struct net_dma), | ||
| 4372 | GFP_KERNEL); | ||
| 4373 | if (unlikely(!net_dma.channels)) { | ||
| 4374 | printk(KERN_NOTICE | ||
| 4375 | "netdev_dma: no memory for net_dma.channels\n"); | ||
| 4376 | return -ENOMEM; | ||
| 4377 | } | ||
| 4369 | spin_lock_init(&net_dma.lock); | 4378 | spin_lock_init(&net_dma.lock); |
| 4370 | dma_cap_set(DMA_MEMCPY, net_dma.client.cap_mask); | 4379 | dma_cap_set(DMA_MEMCPY, net_dma.client.cap_mask); |
| 4371 | dma_async_client_register(&net_dma.client); | 4380 | dma_async_client_register(&net_dma.client); |
diff --git a/net/core/filter.c b/net/core/filter.c index f5f3cf603064..4f8369729a4e 100644 --- a/net/core/filter.c +++ b/net/core/filter.c | |||
| @@ -213,7 +213,7 @@ unsigned int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int | |||
| 213 | load_w: | 213 | load_w: |
| 214 | ptr = load_pointer(skb, k, 4, &tmp); | 214 | ptr = load_pointer(skb, k, 4, &tmp); |
| 215 | if (ptr != NULL) { | 215 | if (ptr != NULL) { |
| 216 | A = ntohl(get_unaligned((__be32 *)ptr)); | 216 | A = get_unaligned_be32(ptr); |
| 217 | continue; | 217 | continue; |
| 218 | } | 218 | } |
| 219 | break; | 219 | break; |
| @@ -222,7 +222,7 @@ load_w: | |||
| 222 | load_h: | 222 | load_h: |
| 223 | ptr = load_pointer(skb, k, 2, &tmp); | 223 | ptr = load_pointer(skb, k, 2, &tmp); |
| 224 | if (ptr != NULL) { | 224 | if (ptr != NULL) { |
| 225 | A = ntohs(get_unaligned((__be16 *)ptr)); | 225 | A = get_unaligned_be16(ptr); |
| 226 | continue; | 226 | continue; |
| 227 | } | 227 | } |
| 228 | break; | 228 | break; |
diff --git a/net/core/neighbour.c b/net/core/neighbour.c index 75075c303c44..5d9d7130bd6e 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c | |||
| @@ -1430,11 +1430,10 @@ void neigh_table_init_no_netlink(struct neigh_table *tbl) | |||
| 1430 | panic("cannot create neighbour cache statistics"); | 1430 | panic("cannot create neighbour cache statistics"); |
| 1431 | 1431 | ||
| 1432 | #ifdef CONFIG_PROC_FS | 1432 | #ifdef CONFIG_PROC_FS |
| 1433 | tbl->pde = proc_create(tbl->id, 0, init_net.proc_net_stat, | 1433 | tbl->pde = proc_create_data(tbl->id, 0, init_net.proc_net_stat, |
| 1434 | &neigh_stat_seq_fops); | 1434 | &neigh_stat_seq_fops, tbl); |
| 1435 | if (!tbl->pde) | 1435 | if (!tbl->pde) |
| 1436 | panic("cannot create neighbour proc dir entry"); | 1436 | panic("cannot create neighbour proc dir entry"); |
| 1437 | tbl->pde->data = tbl; | ||
| 1438 | #endif | 1437 | #endif |
| 1439 | 1438 | ||
| 1440 | tbl->hash_mask = 1; | 1439 | tbl->hash_mask = 1; |
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index 4e7b847347f7..90e2177af081 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c | |||
| @@ -449,7 +449,6 @@ int netdev_register_kobject(struct net_device *net) | |||
| 449 | struct device *dev = &(net->dev); | 449 | struct device *dev = &(net->dev); |
| 450 | struct attribute_group **groups = net->sysfs_groups; | 450 | struct attribute_group **groups = net->sysfs_groups; |
| 451 | 451 | ||
| 452 | device_initialize(dev); | ||
| 453 | dev->class = &net_class; | 452 | dev->class = &net_class; |
| 454 | dev->platform_data = net; | 453 | dev->platform_data = net; |
| 455 | dev->groups = groups; | 454 | dev->groups = groups; |
| @@ -470,6 +469,12 @@ int netdev_register_kobject(struct net_device *net) | |||
| 470 | return device_add(dev); | 469 | return device_add(dev); |
| 471 | } | 470 | } |
| 472 | 471 | ||
| 472 | void netdev_initialize_kobject(struct net_device *net) | ||
| 473 | { | ||
| 474 | struct device *device = &(net->dev); | ||
| 475 | device_initialize(device); | ||
| 476 | } | ||
| 477 | |||
| 473 | int netdev_kobject_init(void) | 478 | int netdev_kobject_init(void) |
| 474 | { | 479 | { |
| 475 | return class_register(&net_class); | 480 | return class_register(&net_class); |
diff --git a/net/core/net-sysfs.h b/net/core/net-sysfs.h index f5f108db3924..14e7524260b3 100644 --- a/net/core/net-sysfs.h +++ b/net/core/net-sysfs.h | |||
| @@ -4,5 +4,5 @@ | |||
| 4 | int netdev_kobject_init(void); | 4 | int netdev_kobject_init(void); |
| 5 | int netdev_register_kobject(struct net_device *); | 5 | int netdev_register_kobject(struct net_device *); |
| 6 | void netdev_unregister_kobject(struct net_device *); | 6 | void netdev_unregister_kobject(struct net_device *); |
| 7 | 7 | void netdev_initialize_kobject(struct net_device *); | |
| 8 | #endif | 8 | #endif |
diff --git a/net/core/pktgen.c b/net/core/pktgen.c index a803b442234c..8dca21110493 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c | |||
| @@ -3570,15 +3570,14 @@ static int pktgen_add_device(struct pktgen_thread *t, const char *ifname) | |||
| 3570 | if (err) | 3570 | if (err) |
| 3571 | goto out1; | 3571 | goto out1; |
| 3572 | 3572 | ||
| 3573 | pkt_dev->entry = proc_create(ifname, 0600, | 3573 | pkt_dev->entry = proc_create_data(ifname, 0600, pg_proc_dir, |
| 3574 | pg_proc_dir, &pktgen_if_fops); | 3574 | &pktgen_if_fops, pkt_dev); |
| 3575 | if (!pkt_dev->entry) { | 3575 | if (!pkt_dev->entry) { |
| 3576 | printk(KERN_ERR "pktgen: cannot create %s/%s procfs entry.\n", | 3576 | printk(KERN_ERR "pktgen: cannot create %s/%s procfs entry.\n", |
| 3577 | PG_PROC_DIR, ifname); | 3577 | PG_PROC_DIR, ifname); |
| 3578 | err = -EINVAL; | 3578 | err = -EINVAL; |
| 3579 | goto out2; | 3579 | goto out2; |
| 3580 | } | 3580 | } |
| 3581 | pkt_dev->entry->data = pkt_dev; | ||
| 3582 | #ifdef CONFIG_XFRM | 3581 | #ifdef CONFIG_XFRM |
| 3583 | pkt_dev->ipsmode = XFRM_MODE_TRANSPORT; | 3582 | pkt_dev->ipsmode = XFRM_MODE_TRANSPORT; |
| 3584 | pkt_dev->ipsproto = IPPROTO_ESP; | 3583 | pkt_dev->ipsproto = IPPROTO_ESP; |
| @@ -3628,7 +3627,8 @@ static int __init pktgen_create_thread(int cpu) | |||
| 3628 | kthread_bind(p, cpu); | 3627 | kthread_bind(p, cpu); |
| 3629 | t->tsk = p; | 3628 | t->tsk = p; |
| 3630 | 3629 | ||
| 3631 | pe = proc_create(t->tsk->comm, 0600, pg_proc_dir, &pktgen_thread_fops); | 3630 | pe = proc_create_data(t->tsk->comm, 0600, pg_proc_dir, |
| 3631 | &pktgen_thread_fops, t); | ||
| 3632 | if (!pe) { | 3632 | if (!pe) { |
| 3633 | printk(KERN_ERR "pktgen: cannot create %s/%s procfs entry.\n", | 3633 | printk(KERN_ERR "pktgen: cannot create %s/%s procfs entry.\n", |
| 3634 | PG_PROC_DIR, t->tsk->comm); | 3634 | PG_PROC_DIR, t->tsk->comm); |
| @@ -3638,8 +3638,6 @@ static int __init pktgen_create_thread(int cpu) | |||
| 3638 | return -EINVAL; | 3638 | return -EINVAL; |
| 3639 | } | 3639 | } |
| 3640 | 3640 | ||
| 3641 | pe->data = t; | ||
| 3642 | |||
| 3643 | wake_up_process(p); | 3641 | wake_up_process(p); |
| 3644 | 3642 | ||
| 3645 | return 0; | 3643 | return 0; |
| @@ -3716,8 +3714,6 @@ static int __init pg_init(void) | |||
| 3716 | return -EINVAL; | 3714 | return -EINVAL; |
| 3717 | } | 3715 | } |
| 3718 | 3716 | ||
| 3719 | pe->data = NULL; | ||
| 3720 | |||
| 3721 | /* Register us to receive netdevice events */ | 3717 | /* Register us to receive netdevice events */ |
| 3722 | register_netdevice_notifier(&pktgen_notifier_block); | 3718 | register_netdevice_notifier(&pktgen_notifier_block); |
| 3723 | 3719 | ||
diff --git a/net/core/sock.c b/net/core/sock.c index 5dbb81bc9673..fa76f04fa9c6 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
| @@ -228,11 +228,12 @@ static int sock_set_timeout(long *timeo_p, char __user *optval, int optlen) | |||
| 228 | static int warned __read_mostly; | 228 | static int warned __read_mostly; |
| 229 | 229 | ||
| 230 | *timeo_p = 0; | 230 | *timeo_p = 0; |
| 231 | if (warned < 10 && net_ratelimit()) | 231 | if (warned < 10 && net_ratelimit()) { |
| 232 | warned++; | 232 | warned++; |
| 233 | printk(KERN_INFO "sock_set_timeout: `%s' (pid %d) " | 233 | printk(KERN_INFO "sock_set_timeout: `%s' (pid %d) " |
| 234 | "tries to set negative timeout\n", | 234 | "tries to set negative timeout\n", |
| 235 | current->comm, task_pid_nr(current)); | 235 | current->comm, task_pid_nr(current)); |
| 236 | } | ||
| 236 | return 0; | 237 | return 0; |
| 237 | } | 238 | } |
| 238 | *timeo_p = MAX_SCHEDULE_TIMEOUT; | 239 | *timeo_p = MAX_SCHEDULE_TIMEOUT; |
diff --git a/net/dccp/ccids/ccid2.c b/net/dccp/ccids/ccid2.c index b5b52ebb2693..8e9580874216 100644 --- a/net/dccp/ccids/ccid2.c +++ b/net/dccp/ccids/ccid2.c | |||
| @@ -716,7 +716,7 @@ static int ccid2_hc_tx_init(struct ccid *ccid, struct sock *sk) | |||
| 716 | * packets for new connections, following the rules from [RFC3390]". | 716 | * packets for new connections, following the rules from [RFC3390]". |
| 717 | * We need to convert the bytes of RFC3390 into the packets of RFC 4341. | 717 | * We need to convert the bytes of RFC3390 into the packets of RFC 4341. |
| 718 | */ | 718 | */ |
| 719 | hctx->ccid2hctx_cwnd = min(4U, max(2U, 4380U / dp->dccps_mss_cache)); | 719 | hctx->ccid2hctx_cwnd = clamp(4380U / dp->dccps_mss_cache, 2U, 4U); |
| 720 | 720 | ||
| 721 | /* Make sure that Ack Ratio is enabled and within bounds. */ | 721 | /* Make sure that Ack Ratio is enabled and within bounds. */ |
| 722 | max_ratio = DIV_ROUND_UP(hctx->ccid2hctx_cwnd, 2); | 722 | max_ratio = DIV_ROUND_UP(hctx->ccid2hctx_cwnd, 2); |
diff --git a/net/dccp/ccids/ccid3.c b/net/dccp/ccids/ccid3.c index e76f460af0ea..cd61dea2eea1 100644 --- a/net/dccp/ccids/ccid3.c +++ b/net/dccp/ccids/ccid3.c | |||
| @@ -88,8 +88,8 @@ static void ccid3_hc_tx_set_state(struct sock *sk, | |||
| 88 | static inline u64 rfc3390_initial_rate(struct sock *sk) | 88 | static inline u64 rfc3390_initial_rate(struct sock *sk) |
| 89 | { | 89 | { |
| 90 | const struct ccid3_hc_tx_sock *hctx = ccid3_hc_tx_sk(sk); | 90 | const struct ccid3_hc_tx_sock *hctx = ccid3_hc_tx_sk(sk); |
| 91 | const __u32 w_init = min_t(__u32, 4 * hctx->ccid3hctx_s, | 91 | const __u32 w_init = clamp_t(__u32, 4380U, |
| 92 | max_t(__u32, 2 * hctx->ccid3hctx_s, 4380)); | 92 | 2 * hctx->ccid3hctx_s, 4 * hctx->ccid3hctx_s); |
| 93 | 93 | ||
| 94 | return scaled_div(w_init << 6, hctx->ccid3hctx_rtt); | 94 | return scaled_div(w_init << 6, hctx->ccid3hctx_rtt); |
| 95 | } | 95 | } |
diff --git a/net/ipv4/cipso_ipv4.c b/net/ipv4/cipso_ipv4.c index 4637ded3dba8..05afb576d935 100644 --- a/net/ipv4/cipso_ipv4.c +++ b/net/ipv4/cipso_ipv4.c | |||
| @@ -983,7 +983,7 @@ static int cipso_v4_map_cat_enum_valid(const struct cipso_v4_doi *doi_def, | |||
| 983 | return -EFAULT; | 983 | return -EFAULT; |
| 984 | 984 | ||
| 985 | for (iter = 0; iter < enumcat_len; iter += 2) { | 985 | for (iter = 0; iter < enumcat_len; iter += 2) { |
| 986 | cat = ntohs(get_unaligned((__be16 *)&enumcat[iter])); | 986 | cat = get_unaligned_be16(&enumcat[iter]); |
| 987 | if (cat <= cat_prev) | 987 | if (cat <= cat_prev) |
| 988 | return -EFAULT; | 988 | return -EFAULT; |
| 989 | cat_prev = cat; | 989 | cat_prev = cat; |
| @@ -1052,7 +1052,7 @@ static int cipso_v4_map_cat_enum_ntoh(const struct cipso_v4_doi *doi_def, | |||
| 1052 | 1052 | ||
| 1053 | for (iter = 0; iter < net_cat_len; iter += 2) { | 1053 | for (iter = 0; iter < net_cat_len; iter += 2) { |
| 1054 | ret_val = netlbl_secattr_catmap_setbit(secattr->attr.mls.cat, | 1054 | ret_val = netlbl_secattr_catmap_setbit(secattr->attr.mls.cat, |
| 1055 | ntohs(get_unaligned((__be16 *)&net_cat[iter])), | 1055 | get_unaligned_be16(&net_cat[iter]), |
| 1056 | GFP_ATOMIC); | 1056 | GFP_ATOMIC); |
| 1057 | if (ret_val != 0) | 1057 | if (ret_val != 0) |
| 1058 | return ret_val; | 1058 | return ret_val; |
| @@ -1086,10 +1086,9 @@ static int cipso_v4_map_cat_rng_valid(const struct cipso_v4_doi *doi_def, | |||
| 1086 | return -EFAULT; | 1086 | return -EFAULT; |
| 1087 | 1087 | ||
| 1088 | for (iter = 0; iter < rngcat_len; iter += 4) { | 1088 | for (iter = 0; iter < rngcat_len; iter += 4) { |
| 1089 | cat_high = ntohs(get_unaligned((__be16 *)&rngcat[iter])); | 1089 | cat_high = get_unaligned_be16(&rngcat[iter]); |
| 1090 | if ((iter + 4) <= rngcat_len) | 1090 | if ((iter + 4) <= rngcat_len) |
| 1091 | cat_low = ntohs( | 1091 | cat_low = get_unaligned_be16(&rngcat[iter + 2]); |
| 1092 | get_unaligned((__be16 *)&rngcat[iter + 2])); | ||
| 1093 | else | 1092 | else |
| 1094 | cat_low = 0; | 1093 | cat_low = 0; |
| 1095 | 1094 | ||
| @@ -1188,10 +1187,9 @@ static int cipso_v4_map_cat_rng_ntoh(const struct cipso_v4_doi *doi_def, | |||
| 1188 | u16 cat_high; | 1187 | u16 cat_high; |
| 1189 | 1188 | ||
| 1190 | for (net_iter = 0; net_iter < net_cat_len; net_iter += 4) { | 1189 | for (net_iter = 0; net_iter < net_cat_len; net_iter += 4) { |
| 1191 | cat_high = ntohs(get_unaligned((__be16 *)&net_cat[net_iter])); | 1190 | cat_high = get_unaligned_be16(&net_cat[net_iter]); |
| 1192 | if ((net_iter + 4) <= net_cat_len) | 1191 | if ((net_iter + 4) <= net_cat_len) |
| 1193 | cat_low = ntohs( | 1192 | cat_low = get_unaligned_be16(&net_cat[net_iter + 2]); |
| 1194 | get_unaligned((__be16 *)&net_cat[net_iter + 2])); | ||
| 1195 | else | 1193 | else |
| 1196 | cat_low = 0; | 1194 | cat_low = 0; |
| 1197 | 1195 | ||
| @@ -1562,7 +1560,7 @@ int cipso_v4_validate(unsigned char **option) | |||
| 1562 | } | 1560 | } |
| 1563 | 1561 | ||
| 1564 | rcu_read_lock(); | 1562 | rcu_read_lock(); |
| 1565 | doi_def = cipso_v4_doi_search(ntohl(get_unaligned((__be32 *)&opt[2]))); | 1563 | doi_def = cipso_v4_doi_search(get_unaligned_be32(&opt[2])); |
| 1566 | if (doi_def == NULL) { | 1564 | if (doi_def == NULL) { |
| 1567 | err_offset = 2; | 1565 | err_offset = 2; |
| 1568 | goto validate_return_locked; | 1566 | goto validate_return_locked; |
| @@ -1843,7 +1841,7 @@ static int cipso_v4_getattr(const unsigned char *cipso, | |||
| 1843 | if (cipso_v4_cache_check(cipso, cipso[1], secattr) == 0) | 1841 | if (cipso_v4_cache_check(cipso, cipso[1], secattr) == 0) |
| 1844 | return 0; | 1842 | return 0; |
| 1845 | 1843 | ||
| 1846 | doi = ntohl(get_unaligned((__be32 *)&cipso[2])); | 1844 | doi = get_unaligned_be32(&cipso[2]); |
| 1847 | rcu_read_lock(); | 1845 | rcu_read_lock(); |
| 1848 | doi_def = cipso_v4_doi_search(doi); | 1846 | doi_def = cipso_v4_doi_search(doi); |
| 1849 | if (doi_def == NULL) | 1847 | if (doi_def == NULL) |
diff --git a/net/ipv4/netfilter/ipt_CLUSTERIP.c b/net/ipv4/netfilter/ipt_CLUSTERIP.c index 22d8e7cd9197..1819ad7ab910 100644 --- a/net/ipv4/netfilter/ipt_CLUSTERIP.c +++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c | |||
| @@ -169,14 +169,14 @@ clusterip_config_init(const struct ipt_clusterip_tgt_info *i, __be32 ip, | |||
| 169 | 169 | ||
| 170 | /* create proc dir entry */ | 170 | /* create proc dir entry */ |
| 171 | sprintf(buffer, "%u.%u.%u.%u", NIPQUAD(ip)); | 171 | sprintf(buffer, "%u.%u.%u.%u", NIPQUAD(ip)); |
| 172 | c->pde = proc_create(buffer, S_IWUSR|S_IRUSR, | 172 | c->pde = proc_create_data(buffer, S_IWUSR|S_IRUSR, |
| 173 | clusterip_procdir, &clusterip_proc_fops); | 173 | clusterip_procdir, |
| 174 | &clusterip_proc_fops, c); | ||
| 174 | if (!c->pde) { | 175 | if (!c->pde) { |
| 175 | kfree(c); | 176 | kfree(c); |
| 176 | return NULL; | 177 | return NULL; |
| 177 | } | 178 | } |
| 178 | } | 179 | } |
| 179 | c->pde->data = c; | ||
| 180 | #endif | 180 | #endif |
| 181 | 181 | ||
| 182 | write_lock_bh(&clusterip_lock); | 182 | write_lock_bh(&clusterip_lock); |
diff --git a/net/ipv4/tcp_hybla.c b/net/ipv4/tcp_hybla.c index 44618b675916..bfcbd148a89d 100644 --- a/net/ipv4/tcp_hybla.c +++ b/net/ipv4/tcp_hybla.c | |||
| @@ -101,8 +101,10 @@ static void hybla_cong_avoid(struct sock *sk, u32 ack, u32 in_flight) | |||
| 101 | if (!tcp_is_cwnd_limited(sk, in_flight)) | 101 | if (!tcp_is_cwnd_limited(sk, in_flight)) |
| 102 | return; | 102 | return; |
| 103 | 103 | ||
| 104 | if (!ca->hybla_en) | 104 | if (!ca->hybla_en) { |
| 105 | return tcp_reno_cong_avoid(sk, ack, in_flight); | 105 | tcp_reno_cong_avoid(sk, ack, in_flight); |
| 106 | return; | ||
| 107 | } | ||
| 106 | 108 | ||
| 107 | if (ca->rho == 0) | 109 | if (ca->rho == 0) |
| 108 | hybla_recalc_param(sk); | 110 | hybla_recalc_param(sk); |
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 0298f80681f2..eda4f4a233f3 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
| @@ -1172,8 +1172,8 @@ static int tcp_check_dsack(struct tcp_sock *tp, struct sk_buff *ack_skb, | |||
| 1172 | struct tcp_sack_block_wire *sp, int num_sacks, | 1172 | struct tcp_sack_block_wire *sp, int num_sacks, |
| 1173 | u32 prior_snd_una) | 1173 | u32 prior_snd_una) |
| 1174 | { | 1174 | { |
| 1175 | u32 start_seq_0 = ntohl(get_unaligned(&sp[0].start_seq)); | 1175 | u32 start_seq_0 = get_unaligned_be32(&sp[0].start_seq); |
| 1176 | u32 end_seq_0 = ntohl(get_unaligned(&sp[0].end_seq)); | 1176 | u32 end_seq_0 = get_unaligned_be32(&sp[0].end_seq); |
| 1177 | int dup_sack = 0; | 1177 | int dup_sack = 0; |
| 1178 | 1178 | ||
| 1179 | if (before(start_seq_0, TCP_SKB_CB(ack_skb)->ack_seq)) { | 1179 | if (before(start_seq_0, TCP_SKB_CB(ack_skb)->ack_seq)) { |
| @@ -1181,8 +1181,8 @@ static int tcp_check_dsack(struct tcp_sock *tp, struct sk_buff *ack_skb, | |||
| 1181 | tcp_dsack_seen(tp); | 1181 | tcp_dsack_seen(tp); |
| 1182 | NET_INC_STATS_BH(LINUX_MIB_TCPDSACKRECV); | 1182 | NET_INC_STATS_BH(LINUX_MIB_TCPDSACKRECV); |
| 1183 | } else if (num_sacks > 1) { | 1183 | } else if (num_sacks > 1) { |
| 1184 | u32 end_seq_1 = ntohl(get_unaligned(&sp[1].end_seq)); | 1184 | u32 end_seq_1 = get_unaligned_be32(&sp[1].end_seq); |
| 1185 | u32 start_seq_1 = ntohl(get_unaligned(&sp[1].start_seq)); | 1185 | u32 start_seq_1 = get_unaligned_be32(&sp[1].start_seq); |
| 1186 | 1186 | ||
| 1187 | if (!after(end_seq_0, end_seq_1) && | 1187 | if (!after(end_seq_0, end_seq_1) && |
| 1188 | !before(start_seq_0, start_seq_1)) { | 1188 | !before(start_seq_0, start_seq_1)) { |
| @@ -1453,8 +1453,8 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, | |||
| 1453 | for (i = 0; i < num_sacks; i++) { | 1453 | for (i = 0; i < num_sacks; i++) { |
| 1454 | int dup_sack = !i && found_dup_sack; | 1454 | int dup_sack = !i && found_dup_sack; |
| 1455 | 1455 | ||
| 1456 | sp[used_sacks].start_seq = ntohl(get_unaligned(&sp_wire[i].start_seq)); | 1456 | sp[used_sacks].start_seq = get_unaligned_be32(&sp_wire[i].start_seq); |
| 1457 | sp[used_sacks].end_seq = ntohl(get_unaligned(&sp_wire[i].end_seq)); | 1457 | sp[used_sacks].end_seq = get_unaligned_be32(&sp_wire[i].end_seq); |
| 1458 | 1458 | ||
| 1459 | if (!tcp_is_sackblock_valid(tp, dup_sack, | 1459 | if (!tcp_is_sackblock_valid(tp, dup_sack, |
| 1460 | sp[used_sacks].start_seq, | 1460 | sp[used_sacks].start_seq, |
| @@ -3340,7 +3340,7 @@ void tcp_parse_options(struct sk_buff *skb, struct tcp_options_received *opt_rx, | |||
| 3340 | switch (opcode) { | 3340 | switch (opcode) { |
| 3341 | case TCPOPT_MSS: | 3341 | case TCPOPT_MSS: |
| 3342 | if (opsize == TCPOLEN_MSS && th->syn && !estab) { | 3342 | if (opsize == TCPOLEN_MSS && th->syn && !estab) { |
| 3343 | u16 in_mss = ntohs(get_unaligned((__be16 *)ptr)); | 3343 | u16 in_mss = get_unaligned_be16(ptr); |
| 3344 | if (in_mss) { | 3344 | if (in_mss) { |
| 3345 | if (opt_rx->user_mss && | 3345 | if (opt_rx->user_mss && |
| 3346 | opt_rx->user_mss < in_mss) | 3346 | opt_rx->user_mss < in_mss) |
| @@ -3369,8 +3369,8 @@ void tcp_parse_options(struct sk_buff *skb, struct tcp_options_received *opt_rx, | |||
| 3369 | ((estab && opt_rx->tstamp_ok) || | 3369 | ((estab && opt_rx->tstamp_ok) || |
| 3370 | (!estab && sysctl_tcp_timestamps))) { | 3370 | (!estab && sysctl_tcp_timestamps))) { |
| 3371 | opt_rx->saw_tstamp = 1; | 3371 | opt_rx->saw_tstamp = 1; |
| 3372 | opt_rx->rcv_tsval = ntohl(get_unaligned((__be32 *)ptr)); | 3372 | opt_rx->rcv_tsval = get_unaligned_be32(ptr); |
| 3373 | opt_rx->rcv_tsecr = ntohl(get_unaligned((__be32 *)(ptr+4))); | 3373 | opt_rx->rcv_tsecr = get_unaligned_be32(ptr + 4); |
| 3374 | } | 3374 | } |
| 3375 | break; | 3375 | break; |
| 3376 | case TCPOPT_SACK_PERM: | 3376 | case TCPOPT_SACK_PERM: |
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 0e9bc120707d..cd601a866c2f 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
| @@ -2214,9 +2214,6 @@ static int tcp_seq_open(struct inode *inode, struct file *file) | |||
| 2214 | struct tcp_iter_state *s; | 2214 | struct tcp_iter_state *s; |
| 2215 | int err; | 2215 | int err; |
| 2216 | 2216 | ||
| 2217 | if (unlikely(afinfo == NULL)) | ||
| 2218 | return -EINVAL; | ||
| 2219 | |||
| 2220 | err = seq_open_net(inode, file, &afinfo->seq_ops, | 2217 | err = seq_open_net(inode, file, &afinfo->seq_ops, |
| 2221 | sizeof(struct tcp_iter_state)); | 2218 | sizeof(struct tcp_iter_state)); |
| 2222 | if (err < 0) | 2219 | if (err < 0) |
| @@ -2241,10 +2238,9 @@ int tcp_proc_register(struct net *net, struct tcp_seq_afinfo *afinfo) | |||
| 2241 | afinfo->seq_ops.next = tcp_seq_next; | 2238 | afinfo->seq_ops.next = tcp_seq_next; |
| 2242 | afinfo->seq_ops.stop = tcp_seq_stop; | 2239 | afinfo->seq_ops.stop = tcp_seq_stop; |
| 2243 | 2240 | ||
| 2244 | p = proc_net_fops_create(net, afinfo->name, S_IRUGO, &afinfo->seq_fops); | 2241 | p = proc_create_data(afinfo->name, S_IRUGO, net->proc_net, |
| 2245 | if (p) | 2242 | &afinfo->seq_fops, afinfo); |
| 2246 | p->data = afinfo; | 2243 | if (!p) |
| 2247 | else | ||
| 2248 | rc = -ENOMEM; | 2244 | rc = -ENOMEM; |
| 2249 | return rc; | 2245 | return rc; |
| 2250 | } | 2246 | } |
diff --git a/net/ipv4/tcp_vegas.c b/net/ipv4/tcp_vegas.c index 0e1a8c91f78e..14504dada116 100644 --- a/net/ipv4/tcp_vegas.c +++ b/net/ipv4/tcp_vegas.c | |||
| @@ -167,8 +167,10 @@ static void tcp_vegas_cong_avoid(struct sock *sk, u32 ack, u32 in_flight) | |||
| 167 | struct tcp_sock *tp = tcp_sk(sk); | 167 | struct tcp_sock *tp = tcp_sk(sk); |
| 168 | struct vegas *vegas = inet_csk_ca(sk); | 168 | struct vegas *vegas = inet_csk_ca(sk); |
| 169 | 169 | ||
| 170 | if (!vegas->doing_vegas_now) | 170 | if (!vegas->doing_vegas_now) { |
| 171 | return tcp_reno_cong_avoid(sk, ack, in_flight); | 171 | tcp_reno_cong_avoid(sk, ack, in_flight); |
| 172 | return; | ||
| 173 | } | ||
| 172 | 174 | ||
| 173 | /* The key players are v_beg_snd_una and v_beg_snd_nxt. | 175 | /* The key players are v_beg_snd_una and v_beg_snd_nxt. |
| 174 | * | 176 | * |
diff --git a/net/ipv4/tcp_veno.c b/net/ipv4/tcp_veno.c index 2bf618a3b00b..d08b2e855c22 100644 --- a/net/ipv4/tcp_veno.c +++ b/net/ipv4/tcp_veno.c | |||
| @@ -119,8 +119,10 @@ static void tcp_veno_cong_avoid(struct sock *sk, u32 ack, u32 in_flight) | |||
| 119 | struct tcp_sock *tp = tcp_sk(sk); | 119 | struct tcp_sock *tp = tcp_sk(sk); |
| 120 | struct veno *veno = inet_csk_ca(sk); | 120 | struct veno *veno = inet_csk_ca(sk); |
| 121 | 121 | ||
| 122 | if (!veno->doing_veno_now) | 122 | if (!veno->doing_veno_now) { |
| 123 | return tcp_reno_cong_avoid(sk, ack, in_flight); | 123 | tcp_reno_cong_avoid(sk, ack, in_flight); |
| 124 | return; | ||
| 125 | } | ||
| 124 | 126 | ||
| 125 | /* limited by applications */ | 127 | /* limited by applications */ |
| 126 | if (!tcp_is_cwnd_limited(sk, in_flight)) | 128 | if (!tcp_is_cwnd_limited(sk, in_flight)) |
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 1f535e315188..db1cb7c96d63 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
| @@ -1605,10 +1605,9 @@ int udp_proc_register(struct net *net, struct udp_seq_afinfo *afinfo) | |||
| 1605 | afinfo->seq_ops.next = udp_seq_next; | 1605 | afinfo->seq_ops.next = udp_seq_next; |
| 1606 | afinfo->seq_ops.stop = udp_seq_stop; | 1606 | afinfo->seq_ops.stop = udp_seq_stop; |
| 1607 | 1607 | ||
| 1608 | p = proc_net_fops_create(net, afinfo->name, S_IRUGO, &afinfo->seq_fops); | 1608 | p = proc_create_data(afinfo->name, S_IRUGO, net->proc_net, |
| 1609 | if (p) | 1609 | &afinfo->seq_fops, afinfo); |
| 1610 | p->data = afinfo; | 1610 | if (!p) |
| 1611 | else | ||
| 1612 | rc = -ENOMEM; | 1611 | rc = -ENOMEM; |
| 1613 | return rc; | 1612 | return rc; |
| 1614 | } | 1613 | } |
diff --git a/net/ipv6/proc.c b/net/ipv6/proc.c index ca8b82f96fe5..df0736a4cafa 100644 --- a/net/ipv6/proc.c +++ b/net/ipv6/proc.c | |||
| @@ -247,13 +247,11 @@ int snmp6_register_dev(struct inet6_dev *idev) | |||
| 247 | if (!proc_net_devsnmp6) | 247 | if (!proc_net_devsnmp6) |
| 248 | return -ENOENT; | 248 | return -ENOENT; |
| 249 | 249 | ||
| 250 | p = proc_create(idev->dev->name, S_IRUGO, | 250 | p = proc_create_data(idev->dev->name, S_IRUGO, |
| 251 | proc_net_devsnmp6, &snmp6_seq_fops); | 251 | proc_net_devsnmp6, &snmp6_seq_fops, idev); |
| 252 | if (!p) | 252 | if (!p) |
| 253 | return -ENOMEM; | 253 | return -ENOMEM; |
| 254 | 254 | ||
| 255 | p->data = idev; | ||
| 256 | |||
| 257 | idev->stats.proc_dir_entry = p; | 255 | idev->stats.proc_dir_entry = p; |
| 258 | return 0; | 256 | return 0; |
| 259 | } | 257 | } |
diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c index 7b247e3a16fe..798cabc7535b 100644 --- a/net/ipv6/reassembly.c +++ b/net/ipv6/reassembly.c | |||
| @@ -197,6 +197,7 @@ static void ip6_frag_expire(unsigned long data) | |||
| 197 | { | 197 | { |
| 198 | struct frag_queue *fq; | 198 | struct frag_queue *fq; |
| 199 | struct net_device *dev = NULL; | 199 | struct net_device *dev = NULL; |
| 200 | struct net *net; | ||
| 200 | 201 | ||
| 201 | fq = container_of((struct inet_frag_queue *)data, struct frag_queue, q); | 202 | fq = container_of((struct inet_frag_queue *)data, struct frag_queue, q); |
| 202 | 203 | ||
| @@ -207,7 +208,8 @@ static void ip6_frag_expire(unsigned long data) | |||
| 207 | 208 | ||
| 208 | fq_kill(fq); | 209 | fq_kill(fq); |
| 209 | 210 | ||
| 210 | dev = dev_get_by_index(&init_net, fq->iif); | 211 | net = container_of(fq->q.net, struct net, ipv6.frags); |
| 212 | dev = dev_get_by_index(net, fq->iif); | ||
| 211 | if (!dev) | 213 | if (!dev) |
| 212 | goto out; | 214 | goto out; |
| 213 | 215 | ||
diff --git a/net/irda/iriap.c b/net/irda/iriap.c index 9e15c82960fe..4a105dc32dcd 100644 --- a/net/irda/iriap.c +++ b/net/irda/iriap.c | |||
| @@ -451,12 +451,14 @@ static void iriap_getvaluebyclass_confirm(struct iriap_cb *self, | |||
| 451 | n = 2; | 451 | n = 2; |
| 452 | 452 | ||
| 453 | /* Get length, MSB first */ | 453 | /* Get length, MSB first */ |
| 454 | len = be16_to_cpu(get_unaligned((__be16 *)(fp+n))); n += 2; | 454 | len = get_unaligned_be16(fp + n); |
| 455 | n += 2; | ||
| 455 | 456 | ||
| 456 | IRDA_DEBUG(4, "%s(), len=%d\n", __func__, len); | 457 | IRDA_DEBUG(4, "%s(), len=%d\n", __func__, len); |
| 457 | 458 | ||
| 458 | /* Get object ID, MSB first */ | 459 | /* Get object ID, MSB first */ |
| 459 | obj_id = be16_to_cpu(get_unaligned((__be16 *)(fp+n))); n += 2; | 460 | obj_id = get_unaligned_be16(fp + n); |
| 461 | n += 2; | ||
| 460 | 462 | ||
| 461 | type = fp[n++]; | 463 | type = fp[n++]; |
| 462 | IRDA_DEBUG(4, "%s(), Value type = %d\n", __func__, type); | 464 | IRDA_DEBUG(4, "%s(), Value type = %d\n", __func__, type); |
| @@ -506,7 +508,7 @@ static void iriap_getvaluebyclass_confirm(struct iriap_cb *self, | |||
| 506 | value = irias_new_string_value(fp+n); | 508 | value = irias_new_string_value(fp+n); |
| 507 | break; | 509 | break; |
| 508 | case IAS_OCT_SEQ: | 510 | case IAS_OCT_SEQ: |
| 509 | value_len = be16_to_cpu(get_unaligned((__be16 *)(fp+n))); | 511 | value_len = get_unaligned_be16(fp + n); |
| 510 | n += 2; | 512 | n += 2; |
| 511 | 513 | ||
| 512 | /* Will truncate to IAS_MAX_OCTET_STRING bytes */ | 514 | /* Will truncate to IAS_MAX_OCTET_STRING bytes */ |
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 8e53ce7ed444..c7314bf4bec2 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
| @@ -354,7 +354,7 @@ struct ieee80211_if_sta { | |||
| 354 | int preq_queue_len; | 354 | int preq_queue_len; |
| 355 | struct mesh_stats mshstats; | 355 | struct mesh_stats mshstats; |
| 356 | struct mesh_config mshcfg; | 356 | struct mesh_config mshcfg; |
| 357 | u8 mesh_seqnum[3]; | 357 | u32 mesh_seqnum; |
| 358 | bool accepting_plinks; | 358 | bool accepting_plinks; |
| 359 | #endif | 359 | #endif |
| 360 | u16 aid; | 360 | u16 aid; |
diff --git a/net/mac80211/main.c b/net/mac80211/main.c index e9a978979d38..9ad4e3631b6b 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c | |||
| @@ -255,22 +255,8 @@ static int ieee80211_open(struct net_device *dev) | |||
| 255 | 255 | ||
| 256 | switch (sdata->vif.type) { | 256 | switch (sdata->vif.type) { |
| 257 | case IEEE80211_IF_TYPE_WDS: | 257 | case IEEE80211_IF_TYPE_WDS: |
| 258 | if (is_zero_ether_addr(sdata->u.wds.remote_addr)) | 258 | if (!is_valid_ether_addr(sdata->u.wds.remote_addr)) |
| 259 | return -ENOLINK; | 259 | return -ENOLINK; |
| 260 | |||
| 261 | /* Create STA entry for the WDS peer */ | ||
| 262 | sta = sta_info_alloc(sdata, sdata->u.wds.remote_addr, | ||
| 263 | GFP_KERNEL); | ||
| 264 | if (!sta) | ||
| 265 | return -ENOMEM; | ||
| 266 | |||
| 267 | sta->flags |= WLAN_STA_AUTHORIZED; | ||
| 268 | |||
| 269 | res = sta_info_insert(sta); | ||
| 270 | if (res) { | ||
| 271 | /* STA has been freed */ | ||
| 272 | return res; | ||
| 273 | } | ||
| 274 | break; | 260 | break; |
| 275 | case IEEE80211_IF_TYPE_VLAN: | 261 | case IEEE80211_IF_TYPE_VLAN: |
| 276 | if (!sdata->u.vlan.ap) | 262 | if (!sdata->u.vlan.ap) |
| @@ -337,10 +323,8 @@ static int ieee80211_open(struct net_device *dev) | |||
| 337 | conf.type = sdata->vif.type; | 323 | conf.type = sdata->vif.type; |
| 338 | conf.mac_addr = dev->dev_addr; | 324 | conf.mac_addr = dev->dev_addr; |
| 339 | res = local->ops->add_interface(local_to_hw(local), &conf); | 325 | res = local->ops->add_interface(local_to_hw(local), &conf); |
| 340 | if (res && !local->open_count && local->ops->stop) | ||
| 341 | local->ops->stop(local_to_hw(local)); | ||
| 342 | if (res) | 326 | if (res) |
| 343 | return res; | 327 | goto err_stop; |
| 344 | 328 | ||
| 345 | ieee80211_if_config(dev); | 329 | ieee80211_if_config(dev); |
| 346 | ieee80211_reset_erp_info(dev); | 330 | ieee80211_reset_erp_info(dev); |
| @@ -353,9 +337,29 @@ static int ieee80211_open(struct net_device *dev) | |||
| 353 | netif_carrier_on(dev); | 337 | netif_carrier_on(dev); |
| 354 | } | 338 | } |
| 355 | 339 | ||
| 340 | if (sdata->vif.type == IEEE80211_IF_TYPE_WDS) { | ||
| 341 | /* Create STA entry for the WDS peer */ | ||
| 342 | sta = sta_info_alloc(sdata, sdata->u.wds.remote_addr, | ||
| 343 | GFP_KERNEL); | ||
| 344 | if (!sta) { | ||
| 345 | res = -ENOMEM; | ||
| 346 | goto err_del_interface; | ||
| 347 | } | ||
| 348 | |||
| 349 | sta->flags |= WLAN_STA_AUTHORIZED; | ||
| 350 | |||
| 351 | res = sta_info_insert(sta); | ||
| 352 | if (res) { | ||
| 353 | /* STA has been freed */ | ||
| 354 | goto err_del_interface; | ||
| 355 | } | ||
| 356 | } | ||
| 357 | |||
| 356 | if (local->open_count == 0) { | 358 | if (local->open_count == 0) { |
| 357 | res = dev_open(local->mdev); | 359 | res = dev_open(local->mdev); |
| 358 | WARN_ON(res); | 360 | WARN_ON(res); |
| 361 | if (res) | ||
| 362 | goto err_del_interface; | ||
| 359 | tasklet_enable(&local->tx_pending_tasklet); | 363 | tasklet_enable(&local->tx_pending_tasklet); |
| 360 | tasklet_enable(&local->tasklet); | 364 | tasklet_enable(&local->tasklet); |
| 361 | } | 365 | } |
| @@ -390,6 +394,12 @@ static int ieee80211_open(struct net_device *dev) | |||
| 390 | netif_start_queue(dev); | 394 | netif_start_queue(dev); |
| 391 | 395 | ||
| 392 | return 0; | 396 | return 0; |
| 397 | err_del_interface: | ||
| 398 | local->ops->remove_interface(local_to_hw(local), &conf); | ||
| 399 | err_stop: | ||
| 400 | if (!local->open_count && local->ops->stop) | ||
| 401 | local->ops->stop(local_to_hw(local)); | ||
| 402 | return res; | ||
| 393 | } | 403 | } |
| 394 | 404 | ||
| 395 | static int ieee80211_stop(struct net_device *dev) | 405 | static int ieee80211_stop(struct net_device *dev) |
| @@ -975,6 +985,7 @@ static int __ieee80211_if_config(struct net_device *dev, | |||
| 975 | conf.ssid_len = sdata->u.sta.ssid_len; | 985 | conf.ssid_len = sdata->u.sta.ssid_len; |
| 976 | } else if (ieee80211_vif_is_mesh(&sdata->vif)) { | 986 | } else if (ieee80211_vif_is_mesh(&sdata->vif)) { |
| 977 | conf.beacon = beacon; | 987 | conf.beacon = beacon; |
| 988 | conf.beacon_control = control; | ||
| 978 | ieee80211_start_mesh(dev); | 989 | ieee80211_start_mesh(dev); |
| 979 | } else if (sdata->vif.type == IEEE80211_IF_TYPE_AP) { | 990 | } else if (sdata->vif.type == IEEE80211_IF_TYPE_AP) { |
| 980 | conf.ssid = sdata->u.ap.ssid; | 991 | conf.ssid = sdata->u.ap.ssid; |
diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c index 594a3356a508..f76bc26ae4d2 100644 --- a/net/mac80211/mesh.c +++ b/net/mac80211/mesh.c | |||
| @@ -8,6 +8,7 @@ | |||
| 8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | #include <asm/unaligned.h> | ||
| 11 | #include "ieee80211_i.h" | 12 | #include "ieee80211_i.h" |
| 12 | #include "mesh.h" | 13 | #include "mesh.h" |
| 13 | 14 | ||
| @@ -167,8 +168,8 @@ int mesh_rmc_check(u8 *sa, struct ieee80211s_hdr *mesh_hdr, | |||
| 167 | struct rmc_entry *p, *n; | 168 | struct rmc_entry *p, *n; |
| 168 | 169 | ||
| 169 | /* Don't care about endianness since only match matters */ | 170 | /* Don't care about endianness since only match matters */ |
| 170 | memcpy(&seqnum, mesh_hdr->seqnum, sizeof(mesh_hdr->seqnum)); | 171 | memcpy(&seqnum, &mesh_hdr->seqnum, sizeof(mesh_hdr->seqnum)); |
| 171 | idx = mesh_hdr->seqnum[0] & rmc->idx_mask; | 172 | idx = le32_to_cpu(mesh_hdr->seqnum) & rmc->idx_mask; |
| 172 | list_for_each_entry_safe(p, n, &rmc->bucket[idx].list, list) { | 173 | list_for_each_entry_safe(p, n, &rmc->bucket[idx].list, list) { |
| 173 | ++entries; | 174 | ++entries; |
| 174 | if (time_after(jiffies, p->exp_time) || | 175 | if (time_after(jiffies, p->exp_time) || |
| @@ -393,16 +394,8 @@ int ieee80211_new_mesh_header(struct ieee80211s_hdr *meshhdr, | |||
| 393 | { | 394 | { |
| 394 | meshhdr->flags = 0; | 395 | meshhdr->flags = 0; |
| 395 | meshhdr->ttl = sdata->u.sta.mshcfg.dot11MeshTTL; | 396 | meshhdr->ttl = sdata->u.sta.mshcfg.dot11MeshTTL; |
| 396 | 397 | put_unaligned(cpu_to_le32(sdata->u.sta.mesh_seqnum), &meshhdr->seqnum); | |
| 397 | meshhdr->seqnum[0] = sdata->u.sta.mesh_seqnum[0]++; | 398 | sdata->u.sta.mesh_seqnum++; |
| 398 | meshhdr->seqnum[1] = sdata->u.sta.mesh_seqnum[1]; | ||
| 399 | meshhdr->seqnum[2] = sdata->u.sta.mesh_seqnum[2]; | ||
| 400 | |||
| 401 | if (sdata->u.sta.mesh_seqnum[0] == 0) { | ||
| 402 | sdata->u.sta.mesh_seqnum[1]++; | ||
| 403 | if (sdata->u.sta.mesh_seqnum[1] == 0) | ||
| 404 | sdata->u.sta.mesh_seqnum[2]++; | ||
| 405 | } | ||
| 406 | 399 | ||
| 407 | return 5; | 400 | return 5; |
| 408 | } | 401 | } |
diff --git a/net/mac80211/mesh.h b/net/mac80211/mesh.h index 9ee3affab346..2e161f6d8288 100644 --- a/net/mac80211/mesh.h +++ b/net/mac80211/mesh.h | |||
| @@ -140,7 +140,7 @@ struct rmc_entry { | |||
| 140 | 140 | ||
| 141 | struct mesh_rmc { | 141 | struct mesh_rmc { |
| 142 | struct rmc_entry bucket[RMC_BUCKETS]; | 142 | struct rmc_entry bucket[RMC_BUCKETS]; |
| 143 | u8 idx_mask; | 143 | u32 idx_mask; |
| 144 | }; | 144 | }; |
| 145 | 145 | ||
| 146 | 146 | ||
diff --git a/net/mac80211/tkip.c b/net/mac80211/tkip.c index dddbfd60f351..09093da24af6 100644 --- a/net/mac80211/tkip.c +++ b/net/mac80211/tkip.c | |||
| @@ -230,10 +230,8 @@ void ieee80211_get_tkip_key(struct ieee80211_key_conf *keyconf, | |||
| 230 | 230 | ||
| 231 | iv16 = data[hdr_len] << 8; | 231 | iv16 = data[hdr_len] << 8; |
| 232 | iv16 += data[hdr_len + 2]; | 232 | iv16 += data[hdr_len + 2]; |
| 233 | iv32 = data[hdr_len + 4] + | 233 | iv32 = data[hdr_len + 4] | (data[hdr_len + 5] << 8) | |
| 234 | (data[hdr_len + 5] >> 8) + | 234 | (data[hdr_len + 6] << 16) | (data[hdr_len + 7] << 24); |
| 235 | (data[hdr_len + 6] >> 16) + | ||
| 236 | (data[hdr_len + 7] >> 24); | ||
| 237 | 235 | ||
| 238 | #ifdef CONFIG_TKIP_DEBUG | 236 | #ifdef CONFIG_TKIP_DEBUG |
| 239 | printk(KERN_DEBUG "TKIP encrypt: iv16 = 0x%04x, iv32 = 0x%08x\n", | 237 | printk(KERN_DEBUG "TKIP encrypt: iv16 = 0x%04x, iv32 = 0x%08x\n", |
diff --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c index b59871f6bdda..46ea542d0df9 100644 --- a/net/netfilter/nf_conntrack_standalone.c +++ b/net/netfilter/nf_conntrack_standalone.c | |||
| @@ -296,11 +296,11 @@ static int nf_conntrack_standalone_init_proc(void) | |||
| 296 | pde = proc_net_fops_create(&init_net, "nf_conntrack", 0440, &ct_file_ops); | 296 | pde = proc_net_fops_create(&init_net, "nf_conntrack", 0440, &ct_file_ops); |
| 297 | if (!pde) | 297 | if (!pde) |
| 298 | goto out_nf_conntrack; | 298 | goto out_nf_conntrack; |
| 299 | pde = create_proc_entry("nf_conntrack", S_IRUGO, init_net.proc_net_stat); | 299 | |
| 300 | pde = proc_create("nf_conntrack", S_IRUGO, init_net.proc_net_stat, | ||
| 301 | &ct_cpu_seq_fops); | ||
| 300 | if (!pde) | 302 | if (!pde) |
| 301 | goto out_stat_nf_conntrack; | 303 | goto out_stat_nf_conntrack; |
| 302 | pde->proc_fops = &ct_cpu_seq_fops; | ||
| 303 | pde->owner = THIS_MODULE; | ||
| 304 | return 0; | 304 | return 0; |
| 305 | 305 | ||
| 306 | out_stat_nf_conntrack: | 306 | out_stat_nf_conntrack: |
diff --git a/net/netfilter/x_tables.c b/net/netfilter/x_tables.c index 11b22abc2b70..5d75cd86ebb3 100644 --- a/net/netfilter/x_tables.c +++ b/net/netfilter/x_tables.c | |||
| @@ -936,25 +936,24 @@ int xt_proto_init(struct net *net, int af) | |||
| 936 | #ifdef CONFIG_PROC_FS | 936 | #ifdef CONFIG_PROC_FS |
| 937 | strlcpy(buf, xt_prefix[af], sizeof(buf)); | 937 | strlcpy(buf, xt_prefix[af], sizeof(buf)); |
| 938 | strlcat(buf, FORMAT_TABLES, sizeof(buf)); | 938 | strlcat(buf, FORMAT_TABLES, sizeof(buf)); |
| 939 | proc = proc_net_fops_create(net, buf, 0440, &xt_table_ops); | 939 | proc = proc_create_data(buf, 0440, net->proc_net, &xt_table_ops, |
| 940 | (void *)(unsigned long)af); | ||
| 940 | if (!proc) | 941 | if (!proc) |
| 941 | goto out; | 942 | goto out; |
| 942 | proc->data = (void *)(unsigned long)af; | ||
| 943 | |||
| 944 | 943 | ||
| 945 | strlcpy(buf, xt_prefix[af], sizeof(buf)); | 944 | strlcpy(buf, xt_prefix[af], sizeof(buf)); |
| 946 | strlcat(buf, FORMAT_MATCHES, sizeof(buf)); | 945 | strlcat(buf, FORMAT_MATCHES, sizeof(buf)); |
| 947 | proc = proc_net_fops_create(net, buf, 0440, &xt_match_ops); | 946 | proc = proc_create_data(buf, 0440, net->proc_net, &xt_match_ops, |
| 947 | (void *)(unsigned long)af); | ||
| 948 | if (!proc) | 948 | if (!proc) |
| 949 | goto out_remove_tables; | 949 | goto out_remove_tables; |
| 950 | proc->data = (void *)(unsigned long)af; | ||
| 951 | 950 | ||
| 952 | strlcpy(buf, xt_prefix[af], sizeof(buf)); | 951 | strlcpy(buf, xt_prefix[af], sizeof(buf)); |
| 953 | strlcat(buf, FORMAT_TARGETS, sizeof(buf)); | 952 | strlcat(buf, FORMAT_TARGETS, sizeof(buf)); |
| 954 | proc = proc_net_fops_create(net, buf, 0440, &xt_target_ops); | 953 | proc = proc_create_data(buf, 0440, net->proc_net, &xt_target_ops, |
| 954 | (void *)(unsigned long)af); | ||
| 955 | if (!proc) | 955 | if (!proc) |
| 956 | goto out_remove_matches; | 956 | goto out_remove_matches; |
| 957 | proc->data = (void *)(unsigned long)af; | ||
| 958 | #endif | 957 | #endif |
| 959 | 958 | ||
| 960 | return 0; | 959 | return 0; |
diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c index 40d344b21453..6809af542a2c 100644 --- a/net/netfilter/xt_hashlimit.c +++ b/net/netfilter/xt_hashlimit.c | |||
| @@ -237,15 +237,15 @@ static int htable_create_v0(struct xt_hashlimit_info *minfo, int family) | |||
| 237 | hinfo->family = family; | 237 | hinfo->family = family; |
| 238 | hinfo->rnd_initialized = 0; | 238 | hinfo->rnd_initialized = 0; |
| 239 | spin_lock_init(&hinfo->lock); | 239 | spin_lock_init(&hinfo->lock); |
| 240 | hinfo->pde = proc_create(minfo->name, 0, | 240 | hinfo->pde = |
| 241 | proc_create_data(minfo->name, 0, | ||
| 241 | family == AF_INET ? hashlimit_procdir4 : | 242 | family == AF_INET ? hashlimit_procdir4 : |
| 242 | hashlimit_procdir6, | 243 | hashlimit_procdir6, |
| 243 | &dl_file_ops); | 244 | &dl_file_ops, hinfo); |
| 244 | if (!hinfo->pde) { | 245 | if (!hinfo->pde) { |
| 245 | vfree(hinfo); | 246 | vfree(hinfo); |
| 246 | return -1; | 247 | return -1; |
| 247 | } | 248 | } |
| 248 | hinfo->pde->data = hinfo; | ||
| 249 | 249 | ||
| 250 | setup_timer(&hinfo->timer, htable_gc, (unsigned long )hinfo); | 250 | setup_timer(&hinfo->timer, htable_gc, (unsigned long )hinfo); |
| 251 | hinfo->timer.expires = jiffies + msecs_to_jiffies(hinfo->cfg.gc_interval); | 251 | hinfo->timer.expires = jiffies + msecs_to_jiffies(hinfo->cfg.gc_interval); |
| @@ -301,15 +301,15 @@ static int htable_create(struct xt_hashlimit_mtinfo1 *minfo, | |||
| 301 | hinfo->rnd_initialized = 0; | 301 | hinfo->rnd_initialized = 0; |
| 302 | spin_lock_init(&hinfo->lock); | 302 | spin_lock_init(&hinfo->lock); |
| 303 | 303 | ||
| 304 | hinfo->pde = proc_create(minfo->name, 0, | 304 | hinfo->pde = |
| 305 | proc_create_data(minfo->name, 0, | ||
| 305 | family == AF_INET ? hashlimit_procdir4 : | 306 | family == AF_INET ? hashlimit_procdir4 : |
| 306 | hashlimit_procdir6, | 307 | hashlimit_procdir6, |
| 307 | &dl_file_ops); | 308 | &dl_file_ops, hinfo); |
| 308 | if (hinfo->pde == NULL) { | 309 | if (hinfo->pde == NULL) { |
| 309 | vfree(hinfo); | 310 | vfree(hinfo); |
| 310 | return -1; | 311 | return -1; |
| 311 | } | 312 | } |
| 312 | hinfo->pde->data = hinfo; | ||
| 313 | 313 | ||
| 314 | setup_timer(&hinfo->timer, htable_gc, (unsigned long)hinfo); | 314 | setup_timer(&hinfo->timer, htable_gc, (unsigned long)hinfo); |
| 315 | hinfo->timer.expires = jiffies + msecs_to_jiffies(hinfo->cfg.gc_interval); | 315 | hinfo->timer.expires = jiffies + msecs_to_jiffies(hinfo->cfg.gc_interval); |
diff --git a/net/rose/rose_route.c b/net/rose/rose_route.c index 5053a53ba24f..bd593871c81e 100644 --- a/net/rose/rose_route.c +++ b/net/rose/rose_route.c | |||
| @@ -1066,12 +1066,12 @@ out: | |||
| 1066 | #ifdef CONFIG_PROC_FS | 1066 | #ifdef CONFIG_PROC_FS |
| 1067 | 1067 | ||
| 1068 | static void *rose_node_start(struct seq_file *seq, loff_t *pos) | 1068 | static void *rose_node_start(struct seq_file *seq, loff_t *pos) |
| 1069 | __acquires(rose_neigh_list_lock) | 1069 | __acquires(rose_node_list_lock) |
| 1070 | { | 1070 | { |
| 1071 | struct rose_node *rose_node; | 1071 | struct rose_node *rose_node; |
| 1072 | int i = 1; | 1072 | int i = 1; |
| 1073 | 1073 | ||
| 1074 | spin_lock_bh(&rose_neigh_list_lock); | 1074 | spin_lock_bh(&rose_node_list_lock); |
| 1075 | if (*pos == 0) | 1075 | if (*pos == 0) |
| 1076 | return SEQ_START_TOKEN; | 1076 | return SEQ_START_TOKEN; |
| 1077 | 1077 | ||
| @@ -1090,9 +1090,9 @@ static void *rose_node_next(struct seq_file *seq, void *v, loff_t *pos) | |||
| 1090 | } | 1090 | } |
| 1091 | 1091 | ||
| 1092 | static void rose_node_stop(struct seq_file *seq, void *v) | 1092 | static void rose_node_stop(struct seq_file *seq, void *v) |
| 1093 | __releases(rose_neigh_list_lock) | 1093 | __releases(rose_node_list_lock) |
| 1094 | { | 1094 | { |
| 1095 | spin_unlock_bh(&rose_neigh_list_lock); | 1095 | spin_unlock_bh(&rose_node_list_lock); |
| 1096 | } | 1096 | } |
| 1097 | 1097 | ||
| 1098 | static int rose_node_show(struct seq_file *seq, void *v) | 1098 | static int rose_node_show(struct seq_file *seq, void *v) |
diff --git a/net/rxrpc/ar-transport.c b/net/rxrpc/ar-transport.c index bb282a6a19f0..64069c8769a5 100644 --- a/net/rxrpc/ar-transport.c +++ b/net/rxrpc/ar-transport.c | |||
| @@ -184,12 +184,13 @@ void rxrpc_put_transport(struct rxrpc_transport *trans) | |||
| 184 | ASSERTCMP(atomic_read(&trans->usage), >, 0); | 184 | ASSERTCMP(atomic_read(&trans->usage), >, 0); |
| 185 | 185 | ||
| 186 | trans->put_time = get_seconds(); | 186 | trans->put_time = get_seconds(); |
| 187 | if (unlikely(atomic_dec_and_test(&trans->usage))) | 187 | if (unlikely(atomic_dec_and_test(&trans->usage))) { |
| 188 | _debug("zombie"); | 188 | _debug("zombie"); |
| 189 | /* let the reaper determine the timeout to avoid a race with | 189 | /* let the reaper determine the timeout to avoid a race with |
| 190 | * overextending the timeout if the reaper is running at the | 190 | * overextending the timeout if the reaper is running at the |
| 191 | * same time */ | 191 | * same time */ |
| 192 | rxrpc_queue_delayed_work(&rxrpc_transport_reap, 0); | 192 | rxrpc_queue_delayed_work(&rxrpc_transport_reap, 0); |
| 193 | } | ||
| 193 | _leave(""); | 194 | _leave(""); |
| 194 | } | 195 | } |
| 195 | 196 | ||
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index b741618e4d54..d355e5e47fe3 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c | |||
| @@ -219,6 +219,7 @@ static void dev_watchdog(unsigned long arg) | |||
| 219 | printk(KERN_INFO "NETDEV WATCHDOG: %s: transmit timed out\n", | 219 | printk(KERN_INFO "NETDEV WATCHDOG: %s: transmit timed out\n", |
| 220 | dev->name); | 220 | dev->name); |
| 221 | dev->tx_timeout(dev); | 221 | dev->tx_timeout(dev); |
| 222 | WARN_ON_ONCE(1); | ||
| 222 | } | 223 | } |
| 223 | if (!mod_timer(&dev->watchdog_timer, round_jiffies(jiffies + dev->watchdog_timeo))) | 224 | if (!mod_timer(&dev->watchdog_timer, round_jiffies(jiffies + dev->watchdog_timeo))) |
| 224 | dev_hold(dev); | 225 | dev_hold(dev); |
diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c index d75530ff2a6d..c9966713282a 100644 --- a/net/sunrpc/cache.c +++ b/net/sunrpc/cache.c | |||
| @@ -316,31 +316,28 @@ static int create_cache_proc_entries(struct cache_detail *cd) | |||
| 316 | cd->proc_ent->owner = cd->owner; | 316 | cd->proc_ent->owner = cd->owner; |
| 317 | cd->channel_ent = cd->content_ent = NULL; | 317 | cd->channel_ent = cd->content_ent = NULL; |
| 318 | 318 | ||
| 319 | p = proc_create("flush", S_IFREG|S_IRUSR|S_IWUSR, | 319 | p = proc_create_data("flush", S_IFREG|S_IRUSR|S_IWUSR, |
| 320 | cd->proc_ent, &cache_flush_operations); | 320 | cd->proc_ent, &cache_flush_operations, cd); |
| 321 | cd->flush_ent = p; | 321 | cd->flush_ent = p; |
| 322 | if (p == NULL) | 322 | if (p == NULL) |
| 323 | goto out_nomem; | 323 | goto out_nomem; |
| 324 | p->owner = cd->owner; | 324 | p->owner = cd->owner; |
| 325 | p->data = cd; | ||
| 326 | 325 | ||
| 327 | if (cd->cache_request || cd->cache_parse) { | 326 | if (cd->cache_request || cd->cache_parse) { |
| 328 | p = proc_create("channel", S_IFREG|S_IRUSR|S_IWUSR, | 327 | p = proc_create_data("channel", S_IFREG|S_IRUSR|S_IWUSR, |
| 329 | cd->proc_ent, &cache_file_operations); | 328 | cd->proc_ent, &cache_file_operations, cd); |
| 330 | cd->channel_ent = p; | 329 | cd->channel_ent = p; |
| 331 | if (p == NULL) | 330 | if (p == NULL) |
| 332 | goto out_nomem; | 331 | goto out_nomem; |
| 333 | p->owner = cd->owner; | 332 | p->owner = cd->owner; |
| 334 | p->data = cd; | ||
| 335 | } | 333 | } |
| 336 | if (cd->cache_show) { | 334 | if (cd->cache_show) { |
| 337 | p = proc_create("content", S_IFREG|S_IRUSR|S_IWUSR, | 335 | p = proc_create_data("content", S_IFREG|S_IRUSR|S_IWUSR, |
| 338 | cd->proc_ent, &content_file_operations); | 336 | cd->proc_ent, &content_file_operations, cd); |
| 339 | cd->content_ent = p; | 337 | cd->content_ent = p; |
| 340 | if (p == NULL) | 338 | if (p == NULL) |
| 341 | goto out_nomem; | 339 | goto out_nomem; |
| 342 | p->owner = cd->owner; | 340 | p->owner = cd->owner; |
| 343 | p->data = cd; | ||
| 344 | } | 341 | } |
| 345 | return 0; | 342 | return 0; |
| 346 | out_nomem: | 343 | out_nomem: |
diff --git a/net/sunrpc/stats.c b/net/sunrpc/stats.c index c6061a4346c8..50b049c6598a 100644 --- a/net/sunrpc/stats.c +++ b/net/sunrpc/stats.c | |||
| @@ -224,16 +224,10 @@ EXPORT_SYMBOL_GPL(rpc_print_iostats); | |||
| 224 | static inline struct proc_dir_entry * | 224 | static inline struct proc_dir_entry * |
| 225 | do_register(const char *name, void *data, const struct file_operations *fops) | 225 | do_register(const char *name, void *data, const struct file_operations *fops) |
| 226 | { | 226 | { |
| 227 | struct proc_dir_entry *ent; | ||
| 228 | |||
| 229 | rpc_proc_init(); | 227 | rpc_proc_init(); |
| 230 | dprintk("RPC: registering /proc/net/rpc/%s\n", name); | 228 | dprintk("RPC: registering /proc/net/rpc/%s\n", name); |
| 231 | 229 | ||
| 232 | ent = proc_create(name, 0, proc_net_rpc, fops); | 230 | return proc_create_data(name, 0, proc_net_rpc, fops, data); |
| 233 | if (ent) { | ||
| 234 | ent->data = data; | ||
| 235 | } | ||
| 236 | return ent; | ||
| 237 | } | 231 | } |
| 238 | 232 | ||
| 239 | struct proc_dir_entry * | 233 | struct proc_dir_entry * |
diff --git a/net/sysctl_net.c b/net/sysctl_net.c index 665e856675a4..b4f0525f91af 100644 --- a/net/sysctl_net.c +++ b/net/sysctl_net.c | |||
| @@ -82,6 +82,6 @@ EXPORT_SYMBOL_GPL(register_net_sysctl_table); | |||
| 82 | 82 | ||
| 83 | void unregister_net_sysctl_table(struct ctl_table_header *header) | 83 | void unregister_net_sysctl_table(struct ctl_table_header *header) |
| 84 | { | 84 | { |
| 85 | return unregister_sysctl_table(header); | 85 | unregister_sysctl_table(header); |
| 86 | } | 86 | } |
| 87 | EXPORT_SYMBOL_GPL(unregister_net_sysctl_table); | 87 | EXPORT_SYMBOL_GPL(unregister_net_sysctl_table); |
