diff options
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); |