forked from Minki/linux
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (54 commits) glge: remove unused #include <version.h> dnet: remove unused #include <version.h> tcp: miscounts due to tcp_fragment pcount reset tcp: add helper for counter tweaking due mid-wq change hso: fix for the 'invalid frame length' messages hso: fix for crash when unplugging the device fsl_pq_mdio: Fix compile failure fsl_pq_mdio: Revive UCC MDIO support ucc_geth: Pass proper device to DMA routines, otherwise oops happens i.MX31: Fixing cs89x0 network building to i.MX31ADS tc35815: Fix build error if NAPI enabled hso: add Vendor/Product ID's for new devices ucc_geth: Remove unused header gianfar: Remove unused header kaweth: Fix locking to be SMP-safe net: allow multiple dev per napi with GRO r8169: reset IntrStatus after chip reset ixgbe: Fix potential memory leak/driver panic issue while setting up Tx & Rx ring parameters ixgbe: fix ethtool -A|a behavior ixgbe: Patch to fix driver panic while freeing up tx & rx resources ...
This commit is contained in:
commit
ef8a97bbc9
100
Documentation/networking/vxge.txt
Normal file
100
Documentation/networking/vxge.txt
Normal file
@ -0,0 +1,100 @@
|
||||
Neterion's (Formerly S2io) X3100 Series 10GbE PCIe Server Adapter Linux driver
|
||||
==============================================================================
|
||||
|
||||
Contents
|
||||
--------
|
||||
|
||||
1) Introduction
|
||||
2) Features supported
|
||||
3) Configurable driver parameters
|
||||
4) Troubleshooting
|
||||
|
||||
1) Introduction:
|
||||
----------------
|
||||
This Linux driver supports all Neterion's X3100 series 10 GbE PCIe I/O
|
||||
Virtualized Server adapters.
|
||||
The X3100 series supports four modes of operation, configurable via
|
||||
firmware -
|
||||
Single function mode
|
||||
Multi function mode
|
||||
SRIOV mode
|
||||
MRIOV mode
|
||||
The functions share a 10GbE link and the pci-e bus, but hardly anything else
|
||||
inside the ASIC. Features like independent hw reset, statistics, bandwidth/
|
||||
priority allocation and guarantees, GRO, TSO, interrupt moderation etc are
|
||||
supported independently on each function.
|
||||
|
||||
(See below for a complete list of features supported for both IPv4 and IPv6)
|
||||
|
||||
2) Features supported:
|
||||
----------------------
|
||||
|
||||
i) Single function mode (up to 17 queues)
|
||||
|
||||
ii) Multi function mode (up to 17 functions)
|
||||
|
||||
iii) PCI-SIG's I/O Virtualization
|
||||
- Single Root mode: v1.0 (up to 17 functions)
|
||||
- Multi-Root mode: v1.0 (up to 17 functions)
|
||||
|
||||
iv) Jumbo frames
|
||||
X3100 Series supports MTU up to 9600 bytes, modifiable using
|
||||
ifconfig command.
|
||||
|
||||
v) Offloads supported: (Enabled by default)
|
||||
Checksum offload (TCP/UDP/IP) on transmit and receive paths
|
||||
TCP Segmentation Offload (TSO) on transmit path
|
||||
Generic Receive Offload (GRO) on receive path
|
||||
|
||||
vi) MSI-X: (Enabled by default)
|
||||
Resulting in noticeable performance improvement (up to 7% on certain
|
||||
platforms).
|
||||
|
||||
vii) NAPI: (Enabled by default)
|
||||
For better Rx interrupt moderation.
|
||||
|
||||
viii)RTH (Receive Traffic Hash): (Enabled by default)
|
||||
Receive side steering for better scaling.
|
||||
|
||||
ix) Statistics
|
||||
Comprehensive MAC-level and software statistics displayed using
|
||||
"ethtool -S" option.
|
||||
|
||||
x) Multiple hardware queues: (Enabled by default)
|
||||
Up to 17 hardware based transmit and receive data channels, with
|
||||
multiple steering options (transmit multiqueue enabled by default).
|
||||
|
||||
3) Configurable driver parameters:
|
||||
----------------------------------
|
||||
|
||||
i) max_config_dev
|
||||
Specifies maximum device functions to be enabled.
|
||||
Valid range: 1-8
|
||||
|
||||
ii) max_config_port
|
||||
Specifies number of ports to be enabled.
|
||||
Valid range: 1,2
|
||||
Default: 1
|
||||
|
||||
iii)max_config_vpath
|
||||
Specifies maximum VPATH(s) configured for each device function.
|
||||
Valid range: 1-17
|
||||
|
||||
iv) vlan_tag_strip
|
||||
Enables/disables vlan tag stripping from all received tagged frames that
|
||||
are not replicated at the internal L2 switch.
|
||||
Valid range: 0,1 (disabled, enabled respectively)
|
||||
Default: 1
|
||||
|
||||
v) addr_learn_en
|
||||
Enable learning the mac address of the guest OS interface in
|
||||
virtualization environment.
|
||||
Valid range: 0,1 (disabled, enabled respectively)
|
||||
Default: 0
|
||||
|
||||
4) Troubleshooting:
|
||||
-------------------
|
||||
|
||||
To resolve an issue with the source code or X3100 series adapter, please collect
|
||||
the statistics, register dumps using ethool, relevant logs and email them to
|
||||
support@neterion.com.
|
@ -3104,7 +3104,7 @@ M: shemminger@linux-foundation.org
|
||||
L: netem@lists.linux-foundation.org
|
||||
S: Maintained
|
||||
|
||||
NETERION (S2IO) Xframe 10GbE DRIVER
|
||||
NETERION (S2IO) 10GbE DRIVER (xframe/vxge)
|
||||
P: Ramkrishna Vepa
|
||||
M: ram.vepa@neterion.com
|
||||
P: Rastapur Santosh
|
||||
@ -3113,8 +3113,11 @@ P: Sivakumar Subramani
|
||||
M: sivakumar.subramani@neterion.com
|
||||
P: Sreenivasa Honnur
|
||||
M: sreenivasa.honnur@neterion.com
|
||||
P: Anil Murthy
|
||||
M: anil.murthy@neterion.com
|
||||
L: netdev@vger.kernel.org
|
||||
W: http://trac.neterion.com/cgi-bin/trac.cgi/wiki/TitleIndex?anonymous
|
||||
W: http://trac.neterion.com/cgi-bin/trac.cgi/wiki/Linux?Anonymous
|
||||
W: http://trac.neterion.com/cgi-bin/trac.cgi/wiki/X3100Linux?Anonymous
|
||||
S: Supported
|
||||
|
||||
NETFILTER/IPTABLES/IPCHAINS
|
||||
|
@ -974,7 +974,7 @@ config ENC28J60_WRITEVERIFY
|
||||
|
||||
config ETHOC
|
||||
tristate "OpenCores 10/100 Mbps Ethernet MAC support"
|
||||
depends on NET_ETHERNET
|
||||
depends on NET_ETHERNET && HAS_IOMEM
|
||||
select MII
|
||||
select PHYLIB
|
||||
help
|
||||
@ -2547,6 +2547,23 @@ config S2IO
|
||||
More specific information on configuring the driver is in
|
||||
<file:Documentation/networking/s2io.txt>.
|
||||
|
||||
config VXGE
|
||||
tristate "Neterion X3100 Series 10GbE PCIe Server Adapter"
|
||||
depends on PCI && INET
|
||||
---help---
|
||||
This driver supports Neterion Inc's X3100 Series 10 GbE PCIe
|
||||
I/O Virtualized Server Adapter.
|
||||
More specific information on configuring the driver is in
|
||||
<file:Documentation/networking/vxge.txt>.
|
||||
|
||||
config VXGE_DEBUG_TRACE_ALL
|
||||
bool "Enabling All Debug trace statments in driver"
|
||||
default n
|
||||
depends on VXGE
|
||||
---help---
|
||||
Say Y here if you want to enabling all the debug trace statements in
|
||||
driver. By default only few debug trace statements are enabled.
|
||||
|
||||
config MYRI10GE
|
||||
tristate "Myricom Myri-10G Ethernet support"
|
||||
depends on PCI && INET
|
||||
|
@ -220,6 +220,7 @@ obj-$(CONFIG_R8169) += r8169.o
|
||||
obj-$(CONFIG_AMD8111_ETH) += amd8111e.o
|
||||
obj-$(CONFIG_IBMVETH) += ibmveth.o
|
||||
obj-$(CONFIG_S2IO) += s2io.o
|
||||
obj-$(CONFIG_VXGE) += vxge/
|
||||
obj-$(CONFIG_MYRI10GE) += myri10ge/
|
||||
obj-$(CONFIG_SMC91X) += smc91x.o
|
||||
obj-$(CONFIG_SMC911X) += smc911x.o
|
||||
|
@ -8,7 +8,6 @@
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
#include <linux/version.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/moduleparam.h>
|
||||
|
@ -129,7 +129,8 @@ static void mpc52xx_fec_free_rx_buffers(struct net_device *dev, struct bcom_task
|
||||
struct sk_buff *skb;
|
||||
|
||||
skb = bcom_retrieve_buffer(s, NULL, (struct bcom_bd **)&bd);
|
||||
dma_unmap_single(&dev->dev, bd->skb_pa, skb->len, DMA_FROM_DEVICE);
|
||||
dma_unmap_single(dev->dev.parent, bd->skb_pa, skb->len,
|
||||
DMA_FROM_DEVICE);
|
||||
kfree_skb(skb);
|
||||
}
|
||||
}
|
||||
@ -150,7 +151,7 @@ static int mpc52xx_fec_alloc_rx_buffers(struct net_device *dev, struct bcom_task
|
||||
bd = (struct bcom_fec_bd *)bcom_prepare_next_buffer(rxtsk);
|
||||
|
||||
bd->status = FEC_RX_BUFFER_SIZE;
|
||||
bd->skb_pa = dma_map_single(&dev->dev, skb->data,
|
||||
bd->skb_pa = dma_map_single(dev->dev.parent, skb->data,
|
||||
FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
|
||||
|
||||
bcom_submit_next_buffer(rxtsk, skb);
|
||||
@ -270,15 +271,6 @@ static void mpc52xx_fec_phy_stop(struct net_device *dev)
|
||||
phy_write(priv->phydev, MII_BMCR, BMCR_PDOWN);
|
||||
}
|
||||
|
||||
static int mpc52xx_fec_phy_mii_ioctl(struct mpc52xx_fec_priv *priv,
|
||||
struct mii_ioctl_data *mii_data, int cmd)
|
||||
{
|
||||
if (!priv->phydev)
|
||||
return -ENOTSUPP;
|
||||
|
||||
return phy_mii_ioctl(priv->phydev, mii_data, cmd);
|
||||
}
|
||||
|
||||
static void mpc52xx_fec_phy_hw_init(struct mpc52xx_fec_priv *priv)
|
||||
{
|
||||
struct mpc52xx_fec __iomem *fec = priv->fec;
|
||||
@ -370,7 +362,7 @@ static int mpc52xx_fec_close(struct net_device *dev)
|
||||
* invariant will hold if you make sure that the netif_*_queue()
|
||||
* calls are done at the proper times.
|
||||
*/
|
||||
static int mpc52xx_fec_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
static int mpc52xx_fec_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
{
|
||||
struct mpc52xx_fec_priv *priv = netdev_priv(dev);
|
||||
struct bcom_fec_bd *bd;
|
||||
@ -378,7 +370,7 @@ static int mpc52xx_fec_hard_start_xmit(struct sk_buff *skb, struct net_device *d
|
||||
if (bcom_queue_full(priv->tx_dmatsk)) {
|
||||
if (net_ratelimit())
|
||||
dev_err(&dev->dev, "transmit queue overrun\n");
|
||||
return 1;
|
||||
return NETDEV_TX_BUSY;
|
||||
}
|
||||
|
||||
spin_lock_irq(&priv->lock);
|
||||
@ -388,7 +380,8 @@ static int mpc52xx_fec_hard_start_xmit(struct sk_buff *skb, struct net_device *d
|
||||
bcom_prepare_next_buffer(priv->tx_dmatsk);
|
||||
|
||||
bd->status = skb->len | BCOM_FEC_TX_BD_TFD | BCOM_FEC_TX_BD_TC;
|
||||
bd->skb_pa = dma_map_single(&dev->dev, skb->data, skb->len, DMA_TO_DEVICE);
|
||||
bd->skb_pa = dma_map_single(dev->dev.parent, skb->data, skb->len,
|
||||
DMA_TO_DEVICE);
|
||||
|
||||
bcom_submit_next_buffer(priv->tx_dmatsk, skb);
|
||||
|
||||
@ -398,7 +391,7 @@ static int mpc52xx_fec_hard_start_xmit(struct sk_buff *skb, struct net_device *d
|
||||
|
||||
spin_unlock_irq(&priv->lock);
|
||||
|
||||
return 0;
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
@ -430,7 +423,8 @@ static irqreturn_t mpc52xx_fec_tx_interrupt(int irq, void *dev_id)
|
||||
struct bcom_fec_bd *bd;
|
||||
skb = bcom_retrieve_buffer(priv->tx_dmatsk, NULL,
|
||||
(struct bcom_bd **)&bd);
|
||||
dma_unmap_single(&dev->dev, bd->skb_pa, skb->len, DMA_TO_DEVICE);
|
||||
dma_unmap_single(dev->dev.parent, bd->skb_pa, skb->len,
|
||||
DMA_TO_DEVICE);
|
||||
|
||||
dev_kfree_skb_irq(skb);
|
||||
}
|
||||
@ -455,7 +449,8 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id)
|
||||
|
||||
rskb = bcom_retrieve_buffer(priv->rx_dmatsk, &status,
|
||||
(struct bcom_bd **)&bd);
|
||||
dma_unmap_single(&dev->dev, bd->skb_pa, rskb->len, DMA_FROM_DEVICE);
|
||||
dma_unmap_single(dev->dev.parent, bd->skb_pa, rskb->len,
|
||||
DMA_FROM_DEVICE);
|
||||
|
||||
/* Test for errors in received frame */
|
||||
if (status & BCOM_FEC_RX_BD_ERRORS) {
|
||||
@ -464,7 +459,8 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id)
|
||||
bcom_prepare_next_buffer(priv->rx_dmatsk);
|
||||
|
||||
bd->status = FEC_RX_BUFFER_SIZE;
|
||||
bd->skb_pa = dma_map_single(&dev->dev, rskb->data,
|
||||
bd->skb_pa = dma_map_single(dev->dev.parent,
|
||||
rskb->data,
|
||||
FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
|
||||
|
||||
bcom_submit_next_buffer(priv->rx_dmatsk, rskb);
|
||||
@ -499,7 +495,7 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int irq, void *dev_id)
|
||||
bcom_prepare_next_buffer(priv->rx_dmatsk);
|
||||
|
||||
bd->status = FEC_RX_BUFFER_SIZE;
|
||||
bd->skb_pa = dma_map_single(&dev->dev, skb->data,
|
||||
bd->skb_pa = dma_map_single(dev->dev.parent, skb->data,
|
||||
FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
|
||||
|
||||
bcom_submit_next_buffer(priv->rx_dmatsk, skb);
|
||||
@ -847,12 +843,20 @@ static void mpc52xx_fec_get_drvinfo(struct net_device *dev,
|
||||
static int mpc52xx_fec_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
|
||||
{
|
||||
struct mpc52xx_fec_priv *priv = netdev_priv(dev);
|
||||
|
||||
if (!priv->phydev)
|
||||
return -ENODEV;
|
||||
|
||||
return phy_ethtool_gset(priv->phydev, cmd);
|
||||
}
|
||||
|
||||
static int mpc52xx_fec_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
|
||||
{
|
||||
struct mpc52xx_fec_priv *priv = netdev_priv(dev);
|
||||
|
||||
if (!priv->phydev)
|
||||
return -ENODEV;
|
||||
|
||||
return phy_ethtool_sset(priv->phydev, cmd);
|
||||
}
|
||||
|
||||
@ -882,9 +886,28 @@ static int mpc52xx_fec_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
|
||||
{
|
||||
struct mpc52xx_fec_priv *priv = netdev_priv(dev);
|
||||
|
||||
return mpc52xx_fec_phy_mii_ioctl(priv, if_mii(rq), cmd);
|
||||
if (!priv->phydev)
|
||||
return -ENOTSUPP;
|
||||
|
||||
return phy_mii_ioctl(priv->phydev, if_mii(rq), cmd);
|
||||
}
|
||||
|
||||
static const struct net_device_ops mpc52xx_fec_netdev_ops = {
|
||||
.ndo_open = mpc52xx_fec_open,
|
||||
.ndo_stop = mpc52xx_fec_close,
|
||||
.ndo_start_xmit = mpc52xx_fec_start_xmit,
|
||||
.ndo_set_multicast_list = mpc52xx_fec_set_multicast_list,
|
||||
.ndo_set_mac_address = mpc52xx_fec_set_mac_address,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_do_ioctl = mpc52xx_fec_ioctl,
|
||||
.ndo_change_mtu = eth_change_mtu,
|
||||
.ndo_tx_timeout = mpc52xx_fec_tx_timeout,
|
||||
.ndo_get_stats = mpc52xx_fec_get_stats,
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
.ndo_poll_controller = mpc52xx_fec_poll_controller,
|
||||
#endif
|
||||
};
|
||||
|
||||
/* ======================================================================== */
|
||||
/* OF Driver */
|
||||
/* ======================================================================== */
|
||||
@ -929,22 +952,10 @@ mpc52xx_fec_probe(struct of_device *op, const struct of_device_id *match)
|
||||
return -EBUSY;
|
||||
|
||||
/* Init ether ndev with what we have */
|
||||
ndev->open = mpc52xx_fec_open;
|
||||
ndev->stop = mpc52xx_fec_close;
|
||||
ndev->hard_start_xmit = mpc52xx_fec_hard_start_xmit;
|
||||
ndev->do_ioctl = mpc52xx_fec_ioctl;
|
||||
ndev->netdev_ops = &mpc52xx_fec_netdev_ops;
|
||||
ndev->ethtool_ops = &mpc52xx_fec_ethtool_ops;
|
||||
ndev->get_stats = mpc52xx_fec_get_stats;
|
||||
ndev->set_mac_address = mpc52xx_fec_set_mac_address;
|
||||
ndev->set_multicast_list = mpc52xx_fec_set_multicast_list;
|
||||
ndev->tx_timeout = mpc52xx_fec_tx_timeout;
|
||||
ndev->watchdog_timeo = FEC_WATCHDOG_TIMEOUT;
|
||||
ndev->base_addr = mem.start;
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
ndev->poll_controller = mpc52xx_fec_poll_controller;
|
||||
#endif
|
||||
|
||||
priv->t_irq = priv->r_irq = ndev->irq = NO_IRQ; /* IRQ are free for now */
|
||||
|
||||
spin_lock_init(&priv->lock);
|
||||
|
||||
|
@ -204,6 +204,7 @@ void fsl_pq_mdio_bus_name(char *name, struct device_node *np)
|
||||
snprintf(name, MII_BUS_ID_SIZE, "%s@%llx", np->name,
|
||||
(unsigned long long)taddr);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(fsl_pq_mdio_bus_name);
|
||||
|
||||
/* Scan the bus in reverse, looking for an empty spot */
|
||||
static int fsl_pq_mdio_find_free(struct mii_bus *new_bus)
|
||||
@ -387,7 +388,7 @@ static int fsl_pq_mdio_probe(struct of_device *ofdev,
|
||||
* The TBIPHY-only buses will find PHYs at every address,
|
||||
* so we mask them all but the TBI
|
||||
*/
|
||||
if (!of_device_is_compatible(np, "fsl,gianfar-mdio"))
|
||||
if (of_device_is_compatible(np, "fsl,gianfar-tbi"))
|
||||
new_bus->phy_mask = ~(1 << tbiaddr);
|
||||
|
||||
err = mdiobus_register(new_bus);
|
||||
|
@ -45,7 +45,6 @@
|
||||
#include <linux/crc32.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/ethtool.h>
|
||||
#include <linux/fsl_devices.h>
|
||||
|
||||
/* The maximum number of packets to be handled in one call of gfar_poll */
|
||||
#define GFAR_DEV_WEIGHT 64
|
||||
|
@ -55,6 +55,8 @@
|
||||
#include <asm/system.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/firmware.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/if_arp.h>
|
||||
@ -71,8 +73,6 @@
|
||||
#include <linux/init.h>
|
||||
|
||||
#include <linux/yam.h>
|
||||
#include "yam9600.h"
|
||||
#include "yam1200.h"
|
||||
|
||||
/* --------------------------------------------------------------------- */
|
||||
|
||||
@ -82,6 +82,9 @@ static const char yam_drvinfo[] __initdata = KERN_INFO \
|
||||
|
||||
/* --------------------------------------------------------------------- */
|
||||
|
||||
#define FIRMWARE_9600 "yam/9600.bin"
|
||||
#define FIRMWARE_1200 "yam/1200.bin"
|
||||
|
||||
#define YAM_9600 1
|
||||
#define YAM_1200 2
|
||||
|
||||
@ -342,9 +345,51 @@ static int fpga_write(int iobase, unsigned char wrd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static unsigned char *add_mcs(unsigned char *bits, int bitrate)
|
||||
/*
|
||||
* predef should be 0 for loading user defined mcs
|
||||
* predef should be YAM_1200 for loading predef 1200 mcs
|
||||
* predef should be YAM_9600 for loading predef 9600 mcs
|
||||
*/
|
||||
static unsigned char *add_mcs(unsigned char *bits, int bitrate,
|
||||
unsigned int predef)
|
||||
{
|
||||
const char *fw_name[2] = {FIRMWARE_9600, FIRMWARE_1200};
|
||||
const struct firmware *fw;
|
||||
struct platform_device *pdev;
|
||||
struct yam_mcs *p;
|
||||
int err;
|
||||
|
||||
switch (predef) {
|
||||
case 0:
|
||||
fw = NULL;
|
||||
break;
|
||||
case YAM_1200:
|
||||
case YAM_9600:
|
||||
predef--;
|
||||
pdev = platform_device_register_simple("yam", 0, NULL, 0);
|
||||
if (IS_ERR(pdev)) {
|
||||
printk(KERN_ERR "yam: Failed to register firmware\n");
|
||||
return NULL;
|
||||
}
|
||||
err = request_firmware(&fw, fw_name[predef], &pdev->dev);
|
||||
platform_device_unregister(pdev);
|
||||
if (err) {
|
||||
printk(KERN_ERR "Failed to load firmware \"%s\"\n",
|
||||
fw_name[predef]);
|
||||
return NULL;
|
||||
}
|
||||
if (fw->size != YAM_FPGA_SIZE) {
|
||||
printk(KERN_ERR "Bogus length %zu in firmware \"%s\"\n",
|
||||
fw->size, fw_name[predef]);
|
||||
release_firmware(fw);
|
||||
return NULL;
|
||||
}
|
||||
bits = (unsigned char *)fw->data;
|
||||
break;
|
||||
default:
|
||||
printk(KERN_ERR "yam: Invalid predef number %u\n", predef);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* If it already exists, replace the bit data */
|
||||
p = yam_data;
|
||||
@ -359,6 +404,7 @@ static unsigned char *add_mcs(unsigned char *bits, int bitrate)
|
||||
/* Allocate a new mcs */
|
||||
if ((p = kmalloc(sizeof(struct yam_mcs), GFP_KERNEL)) == NULL) {
|
||||
printk(KERN_WARNING "YAM: no memory to allocate mcs\n");
|
||||
release_firmware(fw);
|
||||
return NULL;
|
||||
}
|
||||
memcpy(p->bits, bits, YAM_FPGA_SIZE);
|
||||
@ -366,6 +412,7 @@ static unsigned char *add_mcs(unsigned char *bits, int bitrate)
|
||||
p->next = yam_data;
|
||||
yam_data = p;
|
||||
|
||||
release_firmware(fw);
|
||||
return p->bits;
|
||||
}
|
||||
|
||||
@ -383,9 +430,11 @@ static unsigned char *get_mcs(int bitrate)
|
||||
/* Load predefined mcs data */
|
||||
switch (bitrate) {
|
||||
case 1200:
|
||||
return add_mcs(bits_1200, bitrate);
|
||||
/* setting predef as YAM_1200 for loading predef 1200 mcs */
|
||||
return add_mcs(NULL, bitrate, YAM_1200);
|
||||
default:
|
||||
return add_mcs(bits_9600, bitrate);
|
||||
/* setting predef as YAM_9600 for loading predef 9600 mcs */
|
||||
return add_mcs(NULL, bitrate, YAM_9600);
|
||||
}
|
||||
}
|
||||
|
||||
@ -936,7 +985,8 @@ static int yam_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
||||
kfree(ym);
|
||||
return -EINVAL;
|
||||
}
|
||||
add_mcs(ym->bits, ym->bitrate);
|
||||
/* setting predef as 0 for loading userdefined mcs data */
|
||||
add_mcs(ym->bits, ym->bitrate, 0);
|
||||
kfree(ym);
|
||||
break;
|
||||
|
||||
@ -1159,6 +1209,8 @@ static void __exit yam_cleanup_driver(void)
|
||||
MODULE_AUTHOR("Frederic Rible F1OAT frible@teaser.fr");
|
||||
MODULE_DESCRIPTION("Yam amateur radio modem driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_FIRMWARE(FIRMWARE_1200);
|
||||
MODULE_FIRMWARE(FIRMWARE_9600);
|
||||
|
||||
module_init(yam_init_driver);
|
||||
module_exit(yam_cleanup_driver);
|
||||
|
@ -1,343 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* File yam1k2b5.mcs converted to h format by mcs2h
|
||||
*
|
||||
* (C) F6FBB 1998
|
||||
*
|
||||
* Tue Aug 25 20:24:08 1998
|
||||
*
|
||||
*/
|
||||
|
||||
static unsigned char bits_1200[]= {
|
||||
0xff,0xf2,0x00,0xa5,0xad,0xff,0xfe,0x9f,0xff,0xef,0xf3,0xcb,0xff,0xdb,0xfc,0xf2,
|
||||
0xff,0xf6,0xff,0x3c,0xbf,0xfd,0xbf,0xdf,0x6e,0x3f,0x6f,0xf1,0x7d,0xb4,0xfd,0xbf,
|
||||
0xdf,0x6f,0x3f,0x6f,0xf7,0x0b,0xff,0xdb,0xfd,0xf2,0xff,0xf6,0xff,0xff,0xff,0xff,
|
||||
0xf0,0xcf,0xff,0xff,0xff,0xfe,0xff,0xff,0xdf,0xff,0xff,0xff,0xef,0xff,0xff,0xff,
|
||||
0xfd,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xbf,
|
||||
0xff,0xff,0xf7,0xff,0xff,0xfb,0xff,0xff,0xff,0xfc,0xff,0xfe,0xff,0xff,0xff,0xf0,
|
||||
0x5f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xf1,0xff,0xff,0xfe,0x7f,0xbf,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xfb,0xff,0xff,0xff,0xf0,0x9f,
|
||||
0xff,0xff,0xff,0xfe,0xff,0xfd,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xf7,0xff,
|
||||
0xff,0xff,0xfb,0xff,0xfb,0xff,0xff,0xff,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xf7,0xff,0xff,0xfb,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xef,0xff,0xf0,0x5f,0xff,
|
||||
0xff,0xff,0xfe,0xff,0xff,0xef,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xbf,0xff,0xff,0xdf,0xf7,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xfb,0xfe,0xff,0xff,0xff,0xff,0xff,0xf0,0xff,0xff,0xff,
|
||||
0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,
|
||||
0xff,0xff,0xff,0xfd,0xff,0xbf,0xf1,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xfb,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x6f,0xff,0xff,0xff,
|
||||
0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xf7,0xff,0xff,0xf1,0xff,0xff,0xf7,0xbf,0xe7,0xff,0xff,0xff,0xff,0xfb,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xff,0xff,0xff,0xf0,0xff,0xff,0xff,0xff,0xfe,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x1f,0xff,0xff,0xff,0xfe,0xdb,
|
||||
0xff,0xff,0xf5,0xa5,0xfd,0x4b,0x6e,0xef,0x33,0x32,0xdd,0xd3,0x4a,0xd6,0x92,0xfe,
|
||||
0xb3,0x3f,0xbd,0xf1,0xfa,0xdb,0xfe,0xf7,0xf6,0x96,0xbd,0xbd,0xff,0xbd,0xff,0xed,
|
||||
0x7f,0x6b,0x7f,0xfb,0xdf,0xfe,0xfb,0xfe,0x90,0xcf,0xff,0xff,0xff,0xfe,0xbe,0xef,
|
||||
0xff,0xff,0xdb,0x5f,0xf6,0xff,0xf6,0x8f,0xfd,0xa5,0xdd,0xff,0xff,0xff,0xff,0x6f,
|
||||
0x7f,0xdb,0xf1,0xfc,0xbf,0xff,0x6f,0xff,0xef,0xfc,0x5b,0x5d,0xda,0xdf,0xf4,0xff,
|
||||
0xf2,0xff,0xfd,0xbf,0xff,0xff,0xff,0xd0,0x1f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,
|
||||
0xff,0xfb,0xef,0xb7,0xfc,0x33,0xff,0xfb,0xff,0x04,0x6a,0xf3,0x3c,0x36,0xff,0xf0,
|
||||
0x0f,0xf1,0x0f,0xff,0xff,0xff,0xf3,0x15,0x72,0x0f,0xf1,0x6f,0xff,0xfe,0x94,0x3f,
|
||||
0xff,0xff,0xff,0x7b,0xff,0xff,0xf0,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xf0,
|
||||
0xf7,0xef,0xb7,0xfc,0x33,0xff,0xff,0xff,0x04,0x6a,0xf3,0x3c,0x36,0xff,0xf0,0x0f,
|
||||
0xf1,0x0f,0xff,0xff,0xff,0xf3,0x15,0x73,0x8f,0xf2,0x6f,0xff,0xfe,0x94,0x3f,0xff,
|
||||
0xff,0xff,0x7d,0x9f,0xff,0xf0,0x0f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x9e,
|
||||
0xff,0xfc,0xef,0xd3,0xfb,0xff,0x7f,0xf5,0x5f,0xfe,0x59,0xff,0xff,0xff,0xfc,0xf1,
|
||||
0xfe,0x7f,0xff,0xff,0xfa,0x17,0xff,0xe7,0xef,0xef,0xff,0xff,0x3f,0xf1,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xf0,0xff,0xff,0xff,0xff,0xfe,0xf5,0xff,0xbf,0xff,0xfc,0xea,
|
||||
0xff,0xf0,0xff,0xff,0xbf,0xf9,0x3f,0xb1,0xef,0xff,0xd7,0xff,0xfb,0xff,0xf0,0xff,
|
||||
0xff,0xf3,0xff,0xdf,0xff,0x7b,0xff,0xfd,0xff,0xf6,0xff,0xbf,0xff,0xff,0xbf,0xff,
|
||||
0xff,0xff,0xda,0xf0,0xff,0xff,0xff,0xff,0xfe,0xf2,0xc0,0x01,0x00,0x00,0x02,0x02,
|
||||
0x02,0x02,0x00,0x40,0x40,0x40,0x10,0x00,0x00,0x00,0x20,0x00,0x00,0x01,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x19,0x00,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
|
||||
0x00,0x3c,0xf0,0xaf,0xff,0xff,0xff,0xfe,0xfd,0xbf,0xff,0xff,0xfb,0xff,0xfd,0xff,
|
||||
0xff,0x7f,0xff,0xff,0xbf,0xff,0xef,0xff,0xff,0xfd,0xff,0xff,0xf1,0xff,0xdf,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xbf,0xfe,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xdf,
|
||||
0xdb,0xf0,0x6f,0xff,0xff,0xff,0xfe,0xf0,0xbf,0xdf,0xff,0x7f,0xff,0xff,0xff,0xff,
|
||||
0xdf,0xdf,0xff,0xef,0xff,0x9e,0xef,0xff,0xff,0x7f,0xff,0xf1,0xef,0xff,0xff,0xff,
|
||||
0xf7,0xfa,0xbf,0xff,0xff,0xfe,0x47,0xef,0xff,0xbd,0xf6,0xff,0xff,0xdf,0xf5,0xf0,
|
||||
0xf0,0xef,0xff,0xff,0xff,0xfe,0xf8,0x30,0x00,0x00,0x00,0x04,0x00,0x01,0x02,0x08,
|
||||
0x16,0x00,0x00,0x00,0x80,0x00,0x01,0x02,0x00,0x80,0x01,0x0c,0x02,0x00,0x00,0x01,
|
||||
0x00,0x00,0x20,0x00,0x00,0x06,0x00,0x20,0x00,0x10,0x00,0x14,0x00,0x04,0xc1,0xf0,
|
||||
0x2f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0x7f,
|
||||
0xec,0xff,0xff,0xfa,0xff,0xbf,0xff,0x6f,0xff,0xe1,0xff,0xff,0xff,0xff,0xbd,0xfe,
|
||||
0x46,0xff,0xef,0x7f,0xcd,0xdf,0xff,0xff,0xfd,0xff,0xbd,0xff,0x7f,0x7f,0xf0,0x4f,
|
||||
0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x0f,0xff,
|
||||
0xff,0xff,0xfe,0xff,0xff,0xff,0xfd,0xa4,0xbc,0xcd,0x6d,0x6b,0x6f,0x5b,0xdc,0x33,
|
||||
0x5a,0xf6,0xf7,0xf6,0xb3,0x3f,0xbd,0xc1,0xfa,0x5a,0xf6,0xf6,0xb6,0xf7,0xff,0xbd,
|
||||
0xbb,0x3c,0xce,0xcf,0x34,0xef,0x33,0xbb,0xcc,0xff,0xff,0xff,0xf0,0x4f,0xff,0xff,
|
||||
0xff,0xfe,0xbf,0xff,0xff,0xff,0xdb,0xff,0xf6,0xd6,0xff,0xfd,0xfd,0xbf,0xff,0xad,
|
||||
0xbf,0xf9,0x7f,0x6f,0xfc,0xdb,0xf1,0xfd,0xbf,0xff,0x6f,0xff,0xff,0xda,0xdb,0xfc,
|
||||
0xdb,0xff,0x76,0x8f,0xf6,0xff,0xcd,0xab,0xfe,0xfb,0xff,0xd0,0xff,0xff,0xff,0xff,
|
||||
0xfe,0xff,0x9f,0xff,0xf4,0x20,0xaf,0x6d,0x0b,0xc1,0x7b,0xff,0xff,0xff,0xcb,0xff,
|
||||
0x3f,0xf0,0xef,0x7f,0x0f,0xf1,0xc3,0x3c,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x0b,
|
||||
0x1d,0x6a,0x64,0x05,0x6b,0x99,0x01,0xff,0xfd,0xef,0xf0,0x2f,0xff,0xff,0xff,0xfe,
|
||||
0xff,0xff,0xff,0xf4,0x00,0x2f,0xcc,0x0b,0xc3,0x7f,0xff,0xff,0xff,0x0a,0xdf,0xbf,
|
||||
0xfd,0x7f,0xff,0xff,0xf1,0xc3,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x4a,0x0e,
|
||||
0x96,0x64,0x02,0x97,0x99,0x10,0xff,0xff,0xff,0xf0,0xdf,0xff,0xff,0xff,0xfe,0xff,
|
||||
0xff,0xff,0xfe,0x84,0xf9,0xd5,0x27,0xf1,0x7f,0xff,0xf8,0xeb,0xdf,0xf3,0xcf,0x3f,
|
||||
0x1f,0xff,0xf7,0x11,0xff,0xcf,0xff,0xfe,0x67,0xff,0xff,0xff,0xff,0xc4,0xff,0xff,
|
||||
0xb3,0xa1,0xff,0xf9,0xe0,0xff,0xff,0xff,0xf0,0xef,0xff,0xff,0xff,0xfe,0xf5,0xff,
|
||||
0xff,0xfb,0x7f,0xe0,0xff,0xc7,0xfe,0x7f,0x3f,0xff,0xfd,0x77,0x8d,0x7f,0x0f,0xff,
|
||||
0xc3,0xff,0xf1,0xbf,0x8f,0xcf,0xff,0xff,0xdd,0x7b,0xff,0xf6,0xfa,0xf7,0xff,0x40,
|
||||
0x9f,0xf9,0x7f,0xd8,0xff,0xff,0xfa,0xf0,0x1f,0xff,0xff,0xff,0xfe,0xf1,0xc0,0x00,
|
||||
0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x10,0x00,0x00,0x10,
|
||||
0x00,0x01,0x00,0x10,0x20,0x20,0x00,0x00,0x10,0x00,0x04,0x01,0x05,0x00,0x00,0x00,
|
||||
0x00,0x40,0x40,0x00,0x00,0x3c,0xf0,0x1f,0xff,0xff,0xff,0xfe,0xfd,0xbf,0xff,0xff,
|
||||
0xff,0xff,0xfe,0x7f,0x7f,0xff,0xef,0xff,0xff,0xdf,0xff,0xff,0xdf,0xff,0xef,0xf7,
|
||||
0xf1,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xf7,0xff,0xff,0xff,0xfc,0xfd,0xff,0x7f,
|
||||
0x7e,0xff,0xff,0xff,0xdb,0xf0,0x6f,0xff,0xff,0xff,0xfe,0xf0,0xbb,0xff,0xff,0xff,
|
||||
0xff,0xff,0xfe,0xeb,0xfd,0x6f,0xff,0xf7,0xfe,0xf5,0x7f,0xff,0xff,0x7f,0xbf,0xb1,
|
||||
0xff,0xff,0x9f,0xbf,0xfb,0xff,0xfe,0xff,0xfe,0xff,0xf7,0xeb,0xdf,0xbf,0x5f,0xdd,
|
||||
0xff,0xdb,0xfd,0xd0,0xf0,0x6f,0xff,0xff,0xff,0xfe,0xf8,0x30,0x20,0x00,0x42,0x00,
|
||||
0x00,0x00,0x30,0x18,0x04,0x08,0x09,0x21,0x82,0x80,0x02,0x00,0x08,0x00,0x01,0x00,
|
||||
0x00,0x00,0x0c,0x20,0x10,0x00,0x11,0x00,0x44,0x84,0x00,0x20,0x20,0x84,0x80,0x00,
|
||||
0x00,0x00,0xc1,0xf0,0xdf,0xff,0xff,0xff,0xfe,0xff,0xf7,0xff,0xfb,0xdd,0xf9,0xff,
|
||||
0xda,0xff,0xdc,0xdd,0xfc,0xfb,0xff,0xbf,0xfb,0x3e,0xd7,0x96,0xfe,0x61,0xf7,0xff,
|
||||
0x7f,0xff,0x3f,0xfd,0xff,0xdf,0xcf,0xf7,0xdf,0xf7,0xbf,0xfd,0xff,0xfe,0xef,0xef,
|
||||
0xfe,0xff,0xf0,0x7f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xf0,0x2f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xf3,0xbd,0xfd,0x4b,0x74,0xcf,
|
||||
0x73,0x5b,0xcb,0x3b,0xdf,0xfe,0xf7,0xfe,0xd3,0x75,0xac,0xa1,0xfb,0xdf,0xfe,0xf7,
|
||||
0x76,0x96,0xb5,0x24,0xbd,0xa5,0xad,0x49,0x2f,0x69,0x2b,0x52,0x5b,0xbd,0xff,0xff,
|
||||
0xf0,0xcf,0xff,0xff,0xff,0xfe,0xbf,0xff,0xff,0xff,0xdb,0xff,0xf6,0xfe,0xff,0xcc,
|
||||
0xa7,0xfb,0xad,0xff,0x7f,0x6f,0xff,0x6d,0x7f,0xdb,0xf1,0xfd,0xbf,0xff,0x6f,0xff,
|
||||
0x6f,0xff,0xdb,0xff,0xdb,0xff,0xf6,0x97,0xf6,0xff,0xb5,0xb5,0xff,0xff,0xff,0xd0,
|
||||
0xef,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xfd,0xa5,0xbc,0x43,0xfc,0x7c,0x03,0xe7,
|
||||
0xff,0xff,0x20,0xff,0xff,0xff,0xcc,0xfd,0x7d,0xf1,0xff,0xff,0xff,0xff,0xd5,0x59,
|
||||
0xba,0x56,0x66,0x6a,0xad,0x9a,0xa9,0x9a,0x97,0xa5,0xaa,0xbb,0xff,0xff,0xf0,0x0f,
|
||||
0xff,0xff,0xff,0xfe,0xfe,0xfb,0xff,0xfd,0xf7,0xfd,0x43,0xff,0xfd,0x6b,0xe7,0xff,
|
||||
0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0x3f,0xf1,0xff,0xff,0xff,0xff,0xd5,0x59,0xb5,
|
||||
0xa6,0x66,0x6a,0xad,0x9a,0xa9,0x99,0x6b,0x5a,0xaa,0xff,0xff,0xb7,0xf0,0x3f,0xff,
|
||||
0xff,0xff,0xfe,0xff,0xff,0xff,0xfe,0x9c,0xf7,0xfd,0xd2,0x41,0xff,0xff,0xf2,0x7f,
|
||||
0x8f,0xff,0xff,0x3d,0xf3,0xff,0x17,0xf1,0xff,0xff,0xff,0xff,0xff,0x7f,0xdf,0xfc,
|
||||
0x8f,0x38,0xff,0xef,0x23,0xff,0xfb,0xf7,0xc8,0xff,0xff,0xff,0xf0,0x9f,0xff,0xff,
|
||||
0xff,0xfe,0xf5,0x7f,0xff,0xfd,0xff,0xe4,0xff,0xeb,0xff,0xcf,0xbf,0xfa,0xff,0xab,
|
||||
0xef,0xff,0xfb,0xff,0xf3,0xfd,0x61,0xff,0xff,0xff,0xff,0xfa,0xff,0xfb,0xfd,0x0d,
|
||||
0xff,0xfe,0xff,0x43,0x7f,0xfe,0xbf,0xd0,0xfd,0xff,0xfa,0xf0,0x3f,0xff,0xff,0xff,
|
||||
0xfe,0xf3,0xc0,0x00,0x00,0x00,0x02,0x00,0x02,0x01,0x00,0x60,0xc0,0x40,0x00,0x00,
|
||||
0x00,0x00,0x34,0x04,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x88,0x00,
|
||||
0x00,0x03,0x00,0x00,0x40,0x00,0x40,0x00,0x00,0x3c,0xf0,0x3f,0xff,0xff,0xff,0xfe,
|
||||
0xfd,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x7f,0xbf,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xf7,0xf1,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xfd,0xff,
|
||||
0xff,0xff,0xff,0xfe,0xfe,0x5f,0xff,0xff,0xcb,0xf0,0xdf,0xff,0xff,0xff,0xfe,0xf0,
|
||||
0xff,0xff,0xfd,0xff,0xef,0xe3,0xde,0xee,0xd9,0xc5,0x93,0xff,0xff,0xfe,0xfe,0xff,
|
||||
0xfb,0xee,0xfe,0xf1,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xbf,0xf7,0xff,0xff,0x7f,
|
||||
0xaf,0xbd,0xdf,0xdf,0xfb,0xf3,0xf3,0xf0,0xf0,0xaf,0xff,0xff,0xff,0xfe,0xf8,0x34,
|
||||
0x00,0x06,0x61,0x00,0x18,0x01,0xa0,0x05,0x17,0x00,0x20,0x05,0x28,0x20,0x00,0x00,
|
||||
0x05,0x00,0x41,0x00,0x00,0x40,0x00,0x09,0x00,0x01,0x20,0x86,0x82,0x08,0x40,0x03,
|
||||
0x80,0x30,0x70,0x08,0x14,0x02,0xc1,0xf0,0xcf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,
|
||||
0xff,0xff,0xbd,0xef,0xfb,0xff,0xff,0xfb,0x9c,0x7f,0xef,0xdf,0xff,0xbf,0xeb,0xde,
|
||||
0xff,0xc1,0x7f,0xff,0xfb,0x7f,0xff,0xff,0xff,0x5f,0xff,0xff,0xff,0xdf,0xbf,0xef,
|
||||
0x3f,0xf7,0x8f,0xef,0x7f,0xff,0xf0,0x7f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xf0,0x3f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xbd,
|
||||
0xdf,0xef,0x7d,0x6d,0x2b,0x5a,0x5d,0xd2,0xdf,0xf6,0x92,0xb6,0xb2,0xb3,0xac,0xa1,
|
||||
0xfb,0xdf,0xfe,0xf1,0xee,0xf5,0xf6,0xbc,0x6b,0xbd,0x7d,0xaf,0x1a,0xef,0x5f,0x6b,
|
||||
0xc6,0xff,0xff,0xff,0xf0,0x5f,0xff,0xff,0xff,0xfe,0xbf,0xff,0xff,0xff,0xdb,0xff,
|
||||
0xf6,0xff,0xf6,0xb7,0xfd,0xad,0xfd,0xbf,0xf3,0x6f,0xff,0x6f,0xff,0xdb,0xd1,0xfd,
|
||||
0xbf,0xff,0x6f,0xf5,0x6b,0xbc,0x5b,0x3c,0xda,0xef,0x16,0xaf,0x16,0xff,0xcd,0xab,
|
||||
0xff,0x6f,0xff,0xd0,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xfc,0xbf,0xff,0xff,
|
||||
0xff,0x6c,0x03,0x10,0xc1,0xf3,0xff,0xf3,0x3a,0xf3,0xca,0xff,0xaf,0xf1,0xff,0xff,
|
||||
0xff,0xff,0xd9,0x96,0xa6,0x65,0xa6,0x66,0x6a,0x95,0x69,0x69,0x6a,0x5a,0x5a,0xff,
|
||||
0xff,0x5f,0xf0,0x1f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,
|
||||
0xea,0x0f,0x50,0xc3,0xf3,0x7f,0xff,0xf3,0xf3,0xc3,0xff,0xaf,0xf1,0xff,0xff,0xff,
|
||||
0xff,0xd9,0x96,0xa6,0x65,0xa6,0x66,0x6a,0x95,0x69,0x69,0x6a,0x5a,0x5a,0xff,0xff,
|
||||
0xff,0xf0,0x3f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xd7,0xff,0xff,0x5f,0xc1,
|
||||
0x3f,0xf7,0x5e,0xf5,0xce,0x9e,0x5f,0x3f,0x17,0xff,0xf3,0xe1,0xff,0xff,0xff,0xff,
|
||||
0xd8,0xff,0xfa,0xfe,0x67,0xff,0xfe,0xbf,0x5a,0xff,0xff,0xaf,0xf5,0xff,0xff,0xff,
|
||||
0xf0,0x2f,0xff,0xff,0xff,0xfe,0xf5,0xff,0xff,0xfd,0xff,0xf7,0xff,0xfd,0x4e,0x3d,
|
||||
0x3f,0xe7,0x0b,0xbf,0x8f,0xf9,0xff,0xeb,0xe3,0xff,0xe1,0xff,0xff,0xfc,0xff,0xc7,
|
||||
0x9f,0xff,0x3e,0x39,0xe5,0xff,0xcf,0x9b,0xf9,0xff,0xff,0xc5,0xff,0xff,0xfa,0xf0,
|
||||
0x5f,0xff,0xff,0xff,0xfe,0xf3,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,
|
||||
0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x20,0x00,0x20,
|
||||
0x00,0x01,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0xf0,0x4f,
|
||||
0xff,0xff,0xff,0xfe,0xfd,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xbf,
|
||||
0x3f,0xff,0xff,0xbf,0xff,0xff,0xff,0xfb,0xf1,0xff,0xff,0xff,0xff,0xf7,0xff,0xf7,
|
||||
0xff,0xed,0xff,0xfb,0xfe,0xff,0x7f,0xff,0x7f,0xdf,0xff,0xff,0xdd,0xf0,0x3f,0xff,
|
||||
0xff,0xff,0xfe,0xf0,0xff,0xff,0xf3,0xff,0xf7,0xff,0xfe,0x5f,0xff,0xf7,0xff,0xff,
|
||||
0xdf,0xff,0xff,0xff,0xf7,0xfe,0x7b,0xf1,0xff,0xfd,0xfd,0xff,0xdf,0xdf,0xff,0x7d,
|
||||
0x73,0xf9,0xff,0xc3,0x7e,0xfe,0xff,0xef,0xd7,0xff,0xcf,0xd0,0xf0,0x6f,0xff,0xff,
|
||||
0xff,0xfe,0xf8,0x30,0x00,0x00,0x40,0x04,0x00,0x01,0x41,0x20,0x00,0x04,0x00,0x02,
|
||||
0xd5,0x09,0x00,0x02,0x80,0x02,0x01,0x00,0x00,0x00,0x0a,0x04,0x00,0x07,0x00,0x01,
|
||||
0x50,0x01,0x80,0x02,0x61,0x40,0x41,0x0c,0x14,0x08,0xc1,0xf0,0x9f,0xff,0xff,0xff,
|
||||
0xfe,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xfe,0xdf,0xcb,0x5f,0xfe,0xef,0xff,0xfe,
|
||||
0xff,0x3f,0xff,0x7f,0xfd,0xc1,0xff,0xff,0x7f,0xff,0xdf,0xfd,0xfc,0xfd,0xf7,0xee,
|
||||
0xff,0xff,0x4e,0xff,0xdf,0xcf,0xdb,0xeb,0xff,0xff,0xf0,0x1f,0xff,0xff,0xff,0xfe,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x2f,0xff,0xff,0xff,0xfe,0x7f,
|
||||
0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,
|
||||
0xf7,0xfb,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x7f,0xff,0xff,0xff,0x7f,0xff,0xf0,0x1f,0xff,0xff,0xff,0xfe,0xdd,0xff,
|
||||
0xff,0xff,0xa5,0xff,0x6f,0x6b,0xe9,0x6f,0xda,0xca,0xfb,0xdd,0xee,0xf7,0xf6,0xb2,
|
||||
0xb3,0xa4,0xa1,0x5b,0x5b,0xf6,0xd7,0xf4,0xf7,0x7b,0xbd,0xbd,0xad,0xcf,0xef,0x7f,
|
||||
0x6b,0x7f,0x3b,0xdf,0xdb,0xff,0xff,0x30,0xcf,0xff,0xff,0xff,0xfe,0xbf,0xff,0xff,
|
||||
0xff,0xff,0xff,0xf6,0xfe,0x96,0xff,0xfd,0xb5,0xfd,0xbf,0xad,0x7f,0xff,0x6f,0xff,
|
||||
0xde,0xd1,0xad,0xad,0xe9,0xff,0xf1,0xec,0xef,0xde,0x3f,0xcb,0xff,0xf6,0xff,0x32,
|
||||
0xff,0xc5,0xbd,0xff,0xff,0xff,0xd0,0xbf,0xff,0xff,0xff,0xfe,0xfe,0xfb,0xff,0xf4,
|
||||
0x28,0xbf,0xff,0xfd,0xfb,0xd3,0xff,0xff,0x42,0xff,0xff,0xff,0xea,0xb3,0xfc,0xc3,
|
||||
0xc1,0xff,0x33,0xff,0xc0,0x15,0x6b,0x70,0xff,0xf0,0xf2,0x4f,0xff,0xfc,0x3e,0x97,
|
||||
0x3c,0xff,0xff,0xfd,0xef,0xf0,0xbf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xfe,0x78,
|
||||
0xbf,0xff,0xfd,0xf3,0xef,0x55,0xff,0x7e,0xff,0xff,0xff,0xea,0xb3,0xfc,0xc3,0xc1,
|
||||
0xff,0x33,0xff,0xc0,0x15,0x6f,0xff,0x0f,0xf0,0xf0,0x0f,0xff,0xfc,0x3d,0x6b,0xc3,
|
||||
0xff,0xff,0xfe,0xf7,0xf0,0xcf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xff,
|
||||
0xff,0x23,0xf8,0x7f,0xff,0x4e,0xff,0xff,0xff,0xfb,0xf9,0x17,0xff,0xf6,0xf1,0xff,
|
||||
0xcf,0xef,0xff,0xff,0x13,0xdf,0xe6,0x2f,0xc7,0xff,0xff,0xe7,0xc1,0xfd,0xff,0xfe,
|
||||
0xff,0xff,0xff,0xf0,0x4f,0xff,0xff,0xff,0xfe,0xf5,0xff,0xff,0xff,0xfe,0xae,0xff,
|
||||
0xff,0x7f,0x3b,0x3f,0xfc,0x7f,0xfc,0xef,0xff,0xfc,0xe2,0x7b,0xff,0xf1,0xfd,0xed,
|
||||
0xef,0xff,0xff,0x35,0x73,0xff,0xff,0xfe,0xfa,0xff,0xff,0xff,0xfe,0xbf,0xff,0xff,
|
||||
0xff,0xfa,0xf0,0x8f,0xff,0xff,0xff,0xfe,0xf1,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x80,0x00,0x00,0x40,0x00,0x00,0x00,0x0c,0x04,0x01,0x40,0x40,0x00,
|
||||
0x00,0x30,0x28,0x04,0x00,0x08,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,
|
||||
0x38,0xf0,0x0f,0xff,0xff,0xff,0xfe,0xfd,0xbf,0xff,0xff,0xff,0xff,0xfb,0xff,0x7f,
|
||||
0xff,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xdf,0xdf,0xff,
|
||||
0xff,0xff,0xff,0xed,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xbf,0xbf,0xff,0xff,0xc3,
|
||||
0xf0,0x3f,0xff,0xff,0xff,0xfe,0xf0,0xbf,0xfd,0xff,0xbf,0xff,0xff,0xfd,0xff,0xff,
|
||||
0xff,0xff,0xff,0xfd,0x7b,0xff,0x7f,0xff,0xbd,0xff,0xf1,0xef,0xff,0xff,0xfd,0xdf,
|
||||
0xfd,0xfb,0xff,0xff,0xbf,0xbe,0xff,0xcd,0x7f,0xfc,0xf7,0xf7,0x6f,0xbf,0xd8,0xf0,
|
||||
0xef,0xff,0xff,0xff,0xfe,0xf8,0x30,0x00,0x00,0x00,0x04,0x00,0x00,0xa0,0x00,0x00,
|
||||
0xc0,0x00,0x00,0x20,0x34,0x00,0x00,0x00,0x0c,0x81,0x00,0x20,0xa4,0x20,0x00,0x10,
|
||||
0x08,0x04,0x48,0x08,0x00,0x40,0x93,0x00,0x10,0x00,0x38,0x18,0x20,0xc1,0xf0,0x3f,
|
||||
0xff,0xff,0xff,0xfe,0xff,0xfb,0xff,0xff,0xb9,0xdf,0xfe,0xb3,0xff,0xff,0xe7,0xfd,
|
||||
0xff,0xff,0x3b,0xff,0x7f,0xff,0xbf,0xff,0xc1,0xff,0xfc,0xff,0xff,0x3f,0x77,0xfe,
|
||||
0xfe,0xcf,0xff,0xbf,0xfd,0xbf,0xff,0xfe,0xed,0xf2,0xfd,0xf7,0xff,0xf0,0x2f,0xff,
|
||||
0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xbf,0xff,0xff,
|
||||
0xff,0xfe,0xff,0xff,0xff,0xf3,0xad,0xcf,0xef,0x70,0xc9,0x73,0x3b,0xdf,0x5b,0x4a,
|
||||
0xf6,0xb7,0xfe,0xd7,0xf5,0xbc,0xc1,0x33,0xca,0xd6,0xb7,0x6e,0xf7,0xfb,0xbd,0xc5,
|
||||
0x24,0xcf,0x6f,0x2f,0x4d,0x2b,0xba,0x5a,0xff,0xff,0xff,0xf0,0xaf,0xff,0xff,0xff,
|
||||
0xfe,0xbf,0xff,0xff,0xff,0xff,0xf6,0xf6,0xd7,0xff,0xff,0xad,0xbd,0xff,0xff,0xff,
|
||||
0xef,0xf7,0x7f,0xfc,0x5b,0xb1,0xfd,0xbd,0x75,0x6f,0xef,0x6a,0xfd,0x5b,0xfb,0xdb,
|
||||
0x3a,0xbf,0x8e,0x9f,0xff,0xbf,0xfd,0xff,0x6f,0xff,0xd0,0x6f,0xff,0xff,0xff,0xfe,
|
||||
0xff,0xbb,0xff,0xf0,0x3f,0xff,0xff,0xfd,0xfb,0x7f,0xde,0xff,0xff,0x5a,0xd6,0xbf,
|
||||
0xd8,0x2a,0xbf,0xbf,0xf1,0xe5,0xff,0xcc,0xc0,0xa9,0x70,0xff,0xf3,0x3c,0x3c,0xfd,
|
||||
0x57,0xfd,0x98,0x03,0x00,0xc3,0xff,0xff,0xff,0xf0,0xaf,0xff,0xff,0xff,0xfe,0xff,
|
||||
0xff,0xff,0xff,0x3d,0xbf,0xff,0xfd,0xfb,0xff,0xdb,0xff,0xff,0x0f,0xfc,0x3f,0xd8,
|
||||
0x2a,0xbf,0xbf,0xf1,0xef,0xff,0xcc,0xc0,0x96,0xbe,0xff,0xf3,0x3f,0xff,0xfd,0x57,
|
||||
0xfd,0x99,0x0f,0xff,0xc3,0xff,0xff,0xff,0xf0,0x4f,0xff,0xff,0xff,0xfe,0xff,0xff,
|
||||
0xff,0xf1,0xe7,0xff,0xff,0xf3,0x8e,0x7b,0xff,0xa8,0xff,0xdf,0x7f,0x8e,0x78,0x73,
|
||||
0xff,0xf1,0x51,0x62,0xff,0xfc,0x4b,0xff,0xf3,0xff,0x7e,0xcf,0xf9,0xff,0xfd,0xff,
|
||||
0xff,0x7f,0xff,0xe0,0xff,0xff,0xff,0xf0,0x4f,0xff,0xff,0xff,0xfe,0xf5,0xff,0xff,
|
||||
0xfb,0xfd,0xae,0xff,0xfc,0xfe,0x6f,0x3f,0xf8,0xfd,0x77,0xaf,0xfe,0x37,0xfe,0x7b,
|
||||
0xff,0xb1,0x8c,0xff,0xef,0xfd,0xf8,0xe7,0xbf,0xff,0xf1,0xfe,0x3e,0xf7,0xfe,0x95,
|
||||
0x3e,0xbf,0xff,0xff,0xff,0xfa,0xf0,0xbf,0xff,0xff,0xff,0xfe,0xf1,0xc0,0x00,0x00,
|
||||
0x01,0x04,0x00,0x00,0x00,0x00,0x80,0x02,0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x08,
|
||||
0x41,0x80,0x10,0x00,0x00,0x08,0x10,0x84,0x00,0x0c,0x04,0x02,0x61,0x00,0x00,0x81,
|
||||
0x00,0x00,0x00,0x00,0x3d,0xf0,0x7f,0xff,0xff,0xff,0xfe,0xfd,0xbf,0xff,0xff,0xff,
|
||||
0xff,0xff,0x7f,0xff,0xfe,0xfd,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,
|
||||
0x7f,0xbf,0xf7,0x7f,0xef,0xff,0xef,0xff,0xf7,0xfd,0xff,0xff,0xfd,0x7f,0xff,0xbe,
|
||||
0xdf,0xff,0xff,0xd9,0xf0,0xbf,0xff,0xff,0xff,0xfe,0xf0,0xbb,0xff,0x7f,0xfb,0xff,
|
||||
0xfb,0xff,0xbf,0xff,0xf3,0x7f,0xfb,0xfd,0xeb,0x7f,0xdf,0xfa,0xff,0xde,0xf0,0xed,
|
||||
0xff,0xb1,0xf7,0xf9,0x1f,0xb5,0x5b,0xfe,0x7e,0xf7,0xbe,0xfd,0x7f,0x5f,0xb5,0xf7,
|
||||
0xff,0xff,0xd0,0xf0,0x4f,0xff,0xff,0xff,0xfe,0xf8,0x30,0x01,0x00,0x07,0x42,0x01,
|
||||
0x00,0x6a,0x18,0x50,0x80,0x00,0x00,0x02,0x40,0x01,0x01,0x20,0x01,0x01,0x24,0x14,
|
||||
0x21,0x10,0x02,0x08,0x07,0x08,0x00,0x40,0x10,0x80,0x58,0x00,0x84,0x80,0x18,0x10,
|
||||
0x40,0xc1,0xf0,0xbf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xf7,0xff,0xdb,0xb7,0xf3,
|
||||
0xdf,0x7c,0xf8,0x74,0xff,0xff,0x6f,0x7d,0x3f,0x7e,0xec,0x7f,0xc1,0xf5,0xff,0xcf,
|
||||
0x6f,0x9f,0xf9,0xdf,0xbe,0xe5,0xe7,0xff,0xd7,0xf3,0xdd,0xfb,0xff,0xfc,0xff,0xbf,
|
||||
0xff,0xf0,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xf0,0x2f,0xff,0xff,0xff,0xfe,0xd7,0xff,0xff,0xff,0xb4,0xcf,0xef,0x77,0x6f,0x73,
|
||||
0x3a,0x4a,0x3a,0xcb,0xd4,0xf7,0x2e,0xd6,0xbd,0xbd,0xa1,0x3b,0xdf,0xd6,0xf7,0xee,
|
||||
0xd3,0x35,0xbd,0xfb,0xbd,0xce,0xeb,0x2b,0x4d,0x2f,0xbb,0xda,0xff,0xff,0xfe,0xb0,
|
||||
0x5f,0xff,0xff,0xff,0xfe,0xbf,0xff,0xff,0xff,0xdf,0x5f,0x36,0xaf,0x3f,0xed,0xb7,
|
||||
0xf5,0xfd,0xf3,0x2b,0xef,0x77,0xff,0xfb,0xda,0xb1,0xbd,0xa3,0x77,0x69,0x7f,0x4f,
|
||||
0xff,0xdb,0xfa,0x5b,0xff,0xf2,0xfe,0xff,0x96,0xff,0xff,0xfe,0xdf,0xff,0xd0,0xaf,
|
||||
0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xfd,0x8f,0xfd,0x40,0x6f,0x9e,0x83,0x5a,0x0f,
|
||||
0xfa,0xc3,0xff,0xff,0xfc,0xe9,0x7f,0xf3,0x01,0xd0,0x00,0xfe,0xbf,0xcd,0x3f,0xf0,
|
||||
0xef,0xfc,0xc5,0x0c,0x3f,0xfd,0x68,0x0b,0xff,0xff,0xff,0xfe,0xdf,0xf0,0xff,0xff,
|
||||
0xff,0xff,0xfe,0xff,0xbb,0xff,0xfd,0x85,0xff,0xd4,0x6f,0x9f,0xc3,0x5a,0x0f,0xff,
|
||||
0xff,0xff,0xff,0xfc,0xe9,0x7f,0xf3,0x01,0xf0,0xfb,0xc2,0xbf,0xfc,0x00,0x37,0xef,
|
||||
0xfc,0xcd,0xbc,0x3f,0xff,0x0c,0xbf,0xff,0xff,0xff,0xff,0xff,0xf0,0x5f,0xff,0xff,
|
||||
0xff,0xfe,0xff,0xff,0xff,0xff,0xd9,0xf7,0xd1,0xb7,0x7e,0x7f,0xf1,0xe4,0xfd,0xff,
|
||||
0xfb,0xfb,0xff,0x5f,0xff,0x7f,0xb1,0xbc,0x0f,0x67,0xeb,0xb8,0x3f,0xff,0xe2,0xff,
|
||||
0xe9,0xff,0xfd,0xe3,0xff,0x3f,0x9f,0xc2,0xff,0xff,0xff,0xf0,0x9f,0xff,0xff,0xff,
|
||||
0xfe,0xf5,0x7f,0xff,0xf0,0x3f,0xbc,0xff,0xd5,0xf5,0xce,0x3f,0xfe,0xff,0xfe,0x6d,
|
||||
0xff,0xf1,0xbf,0x7b,0xff,0xf1,0xfd,0xff,0x4f,0xff,0x87,0xff,0xae,0xff,0xb1,0xf8,
|
||||
0xfe,0xff,0xff,0x78,0x01,0xb9,0xff,0xff,0xff,0xfa,0xf0,0x2f,0xff,0xff,0xff,0xfe,
|
||||
0xf3,0xc0,0x00,0x00,0x00,0x04,0x02,0x13,0x02,0x00,0x80,0x40,0x00,0x90,0x10,0x00,
|
||||
0x10,0x00,0x02,0x00,0x01,0x20,0x80,0x12,0x10,0x00,0x40,0x08,0x00,0x04,0x00,0x00,
|
||||
0x02,0x00,0x01,0x40,0x00,0x80,0x00,0x00,0x3c,0xf0,0xef,0xff,0xff,0xff,0xfe,0xfd,
|
||||
0x1f,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x7f,0xff,0x7f,0xf7,0xdf,0xf7,0xff,
|
||||
0xf7,0xfb,0xeb,0xd1,0xff,0xff,0xff,0xff,0xef,0xf7,0xff,0xff,0xfb,0xff,0xfe,0xff,
|
||||
0xff,0x7e,0xff,0xfb,0xff,0xff,0xff,0xdb,0xf0,0xff,0xff,0xff,0xff,0xfe,0xf0,0xff,
|
||||
0xff,0xb7,0xeb,0xf7,0xdf,0xff,0xfe,0xf5,0x6b,0xe7,0xed,0xf7,0x3e,0xec,0xff,0x54,
|
||||
0xef,0x6f,0xf1,0xf5,0xaf,0x6f,0xf6,0xfd,0xff,0xdd,0x7b,0xff,0xef,0xbf,0x7f,0xff,
|
||||
0xff,0xf7,0xff,0xf3,0x5f,0xf7,0xd0,0xf0,0xcf,0xff,0xff,0xff,0xfe,0xf8,0x30,0x00,
|
||||
0x80,0x40,0x04,0x00,0x81,0x2c,0x04,0x24,0x00,0x02,0x01,0xc8,0x02,0x00,0x02,0x24,
|
||||
0x00,0x01,0xb4,0x42,0xdc,0x44,0x02,0x15,0x90,0x02,0x03,0x48,0x39,0x10,0x02,0x24,
|
||||
0xa0,0xba,0x00,0x00,0x40,0xc1,0xf0,0xbf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,
|
||||
0xfe,0xfc,0xf7,0xf0,0xee,0xb6,0x5d,0xfd,0xf5,0xff,0xdb,0xf7,0x7f,0x7f,0xbe,0xff,
|
||||
0xc1,0xfe,0xbf,0xfa,0xfa,0x5f,0xff,0xad,0xff,0xef,0xff,0x7f,0xdf,0x7f,0xfe,0xbf,
|
||||
0xb7,0x94,0xbf,0xff,0xff,0xf0,0x9f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xf0,0x8f,0xff,0xff,0xff,0xfe,0xd7,0xff,0xff,0xfb,0xb5,0xff,
|
||||
0xef,0x7c,0xeb,0x2b,0x52,0x5b,0x3b,0xda,0xd4,0xf3,0x36,0x96,0xb5,0xbd,0xf1,0xfb,
|
||||
0xda,0xee,0xf6,0xfe,0xd3,0x35,0xbd,0xdf,0xad,0xcf,0xef,0x7e,0xcd,0x6b,0xbb,0xdf,
|
||||
0xff,0xff,0xfd,0xb0,0xef,0xff,0xff,0xff,0xfe,0xbf,0xff,0xff,0xff,0xd3,0x5f,0xf6,
|
||||
0xff,0xf6,0xff,0xfd,0xad,0xfd,0xff,0x7f,0xef,0xff,0x6f,0x7f,0xdb,0xf1,0xa5,0xa3,
|
||||
0x7f,0x6f,0x6b,0x4f,0xff,0xdb,0xfb,0xcb,0xff,0xf6,0xff,0xf4,0xd7,0xfd,0xbf,0xfe,
|
||||
0xdf,0xff,0xd0,0xcf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xf7,0xdf,0xff,0xff,0xff,
|
||||
0x3f,0x7f,0xfc,0xe5,0xff,0x20,0xfe,0xff,0xff,0xdf,0x7f,0xff,0xf1,0x7f,0xff,0xfe,
|
||||
0xff,0xf0,0x7c,0x3d,0x4f,0xf3,0xc3,0x3f,0xff,0xff,0x6f,0xc3,0xff,0x0f,0xff,0xff,
|
||||
0xaf,0xf0,0x2f,0xff,0xff,0xff,0xfe,0xff,0xff,0xfb,0xb7,0xe0,0x0f,0xff,0xff,0x2b,
|
||||
0xff,0x7d,0xbf,0xff,0xdf,0xff,0xff,0xf8,0x9f,0x7f,0xff,0xf1,0x55,0xff,0xff,0xff,
|
||||
0xfd,0x7c,0x3c,0xff,0xf3,0xc3,0x3f,0xff,0xff,0xef,0xc3,0xff,0xdf,0xff,0xff,0xff,
|
||||
0xf0,0x9f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0x9f,0xbf,0x7f,
|
||||
0xf9,0x19,0x47,0x8e,0xe7,0x9f,0x3f,0x17,0xff,0xfc,0x81,0xc1,0x7e,0xf3,0xd9,0xf9,
|
||||
0x73,0xdf,0xf4,0x7f,0xfa,0xff,0xff,0xff,0xfb,0x7f,0x77,0xc7,0xff,0xff,0xff,0xf0,
|
||||
0x2f,0xff,0xff,0xff,0xfe,0xf5,0xf7,0xff,0xfb,0xff,0xf7,0x3f,0xfc,0xbf,0x3e,0x3f,
|
||||
0xec,0xff,0x81,0xaf,0xfe,0x4f,0xf3,0xbb,0xff,0xf0,0x7e,0xff,0x6f,0xff,0x87,0xff,
|
||||
0xbb,0xff,0xd5,0xfc,0xff,0x7f,0xfc,0x6f,0xff,0xef,0xe7,0xff,0xff,0xfa,0xf0,0x3f,
|
||||
0xff,0xff,0xff,0xfe,0xf3,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
|
||||
0x00,0x30,0x10,0x60,0x20,0x00,0x08,0x00,0x01,0x20,0x80,0x00,0x10,0x00,0x04,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x80,0x40,0x00,0x08,0x20,0x3c,0xf0,0x6f,0xff,
|
||||
0xff,0xff,0xfe,0xf5,0xbf,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0x7f,0xfe,0x3f,0xff,
|
||||
0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xf1,0xdf,0xdf,0xff,0xff,0xff,0x7f,0xdf,0xff,
|
||||
0xfd,0xbd,0xff,0xff,0xff,0xfb,0xdf,0xff,0xff,0xff,0xff,0x5b,0xf0,0xff,0xff,0xff,
|
||||
0xff,0xfe,0xf0,0xbf,0xbf,0xbf,0xff,0xf7,0xfb,0xff,0xfe,0xee,0xfa,0xff,0xff,0xff,
|
||||
0x3d,0x3b,0xff,0xff,0xfe,0xfb,0xf1,0xff,0xbf,0x7b,0xff,0xff,0xef,0xff,0xbf,0xff,
|
||||
0xff,0xff,0xff,0xff,0xfe,0xff,0xf7,0xef,0xff,0xfb,0xd0,0xf0,0xdf,0xff,0xff,0xff,
|
||||
0xfe,0xf8,0x30,0x00,0x00,0x00,0x00,0x00,0x0b,0x10,0x05,0x01,0x00,0x08,0x00,0x02,
|
||||
0x01,0x01,0x00,0x00,0x10,0x01,0xc8,0x08,0x00,0x00,0x00,0x00,0x42,0x02,0x00,0x00,
|
||||
0x00,0x80,0x02,0x00,0x00,0x40,0x24,0x80,0x00,0xc1,0xf0,0x3f,0xff,0xff,0xff,0xfe,
|
||||
0xff,0xff,0xff,0xff,0xf7,0xfd,0xf7,0xfa,0xef,0xee,0xf9,0xfd,0xff,0xf7,0xfe,0xbf,
|
||||
0x1f,0xfd,0x9e,0xfd,0xd1,0xef,0xff,0xf7,0x7f,0x9f,0xff,0xef,0xff,0xf6,0xff,0xfe,
|
||||
0xfe,0x7b,0xff,0xbd,0xff,0x7e,0xff,0xff,0xff,0xf0,0x3f,0xff,0xff,0xff,0xfe,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xaf,0xff,0xff,0xff,0xfe,0xff,0xff,
|
||||
0xff,0xf7,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xdf,0xfd,0xff,0xff,0xdf,0xff,
|
||||
0xff,0x5f,0xf1,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xdf,0xff,0xff,0xff,0xfe,0xff,0xef,0xff,
|
||||
0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfb,0xff,0xff,0xef,0xfb,0xfd,
|
||||
0xff,0xf1,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x2f,0xff,0xff,0xff,0xfe,0xf7,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xe7,0xff,
|
||||
0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xf0,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0xff,0xfb,0xff,0xfb,0xf1,
|
||||
0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xf0,0x2f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7b,0xff,0xff,0xff,0x7f,0xff,0xf1,0xff,
|
||||
0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xf0,0x7f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xef,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0x57,0xff,0xfe,0xbf,0xfb,0xf1,0xff,0xff,
|
||||
0xfd,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xd7,0xff,0xf0,0x7f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xf7,0xdb,0xff,0xdb,0xfd,
|
||||
0xf6,0xff,0xf6,0xff,0x3c,0xbc,0xbc,0xbf,0xdf,0x6f,0xef,0x2f,0xf1,0x3c,0xbf,0xbc,
|
||||
0xbf,0xdf,0x6f,0xff,0x6f,0xf7,0xdb,0xff,0xdb,0xfd,0xf6,0xff,0xf6,0xff,0xff,0xff,
|
||||
0x01,0xe2,0xef,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff };
|
@ -1,343 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* File yam111.mcs converted to h format by mcs2h
|
||||
*
|
||||
* (C) F6FBB 1998
|
||||
*
|
||||
* Tue Aug 25 20:23:03 1998
|
||||
*
|
||||
*/
|
||||
|
||||
static unsigned char bits_9600[]= {
|
||||
0xff,0xf2,0x00,0xa5,0xad,0xff,0xfe,0x9f,0xff,0xef,0xfb,0xcb,0xff,0xdb,0xfe,0xf2,
|
||||
0xff,0xf6,0xff,0x9c,0xbf,0xfd,0xbf,0xef,0x2e,0x3f,0x6f,0xf1,0xfd,0xb4,0xfd,0xbf,
|
||||
0xff,0x6f,0xff,0x6f,0xff,0x0b,0xff,0xdb,0xff,0xf2,0xff,0xf6,0xff,0xff,0xff,0xff,
|
||||
0xf0,0x6f,0xff,0xff,0xff,0xfe,0xff,0xfd,0xdf,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,
|
||||
0xfb,0xff,0xff,0xf7,0xff,0xff,0xff,0xfe,0xff,0x7f,0xf1,0xff,0xfe,0xff,0xbf,0xbf,
|
||||
0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xfe,0xff,0xfe,0xff,0xff,0xff,0xf0,
|
||||
0xef,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xf7,
|
||||
0xff,0xff,0xf7,0xef,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0x7e,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xf0,0xdf,
|
||||
0xff,0xff,0xff,0xfe,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xef,0xff,0xf3,0xfb,0xfe,0xff,0xf1,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xdf,0xff,0xf0,0x7f,0xff,
|
||||
0xff,0xff,0xfe,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xdf,0xff,0xff,0xff,0xf7,0xf1,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xf0,0x0f,0xff,0xff,
|
||||
0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x2f,0xff,0xff,0xff,
|
||||
0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xef,0xff,0x7f,0xff,0xef,
|
||||
0xff,0xef,0xff,0x7f,0xef,0xf1,0xff,0xef,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xf0,0x9f,0xff,0xff,0xff,0xfe,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xbf,0xff,0xff,0xff,0xfe,0xff,
|
||||
0xff,0xff,0xff,0xbd,0xff,0xef,0x7f,0xef,0x7f,0xfb,0xdf,0xd3,0x5a,0xfe,0xd7,0xd6,
|
||||
0xf7,0x7f,0xbd,0xf1,0xbb,0x5d,0xd6,0xf7,0xfe,0x96,0xff,0xbd,0xaf,0xad,0xbf,0xef,
|
||||
0x7f,0x6b,0x7f,0xfb,0xd6,0xfe,0xf7,0xff,0x10,0xef,0xff,0xff,0xff,0xfe,0xbe,0xef,
|
||||
0xff,0xff,0xdb,0xff,0xf6,0xff,0xf6,0xff,0xfd,0xbf,0xfd,0xbf,0xff,0x7f,0xff,0x7f,
|
||||
0xdf,0xdb,0xf1,0xfd,0x35,0xff,0x6f,0xff,0x6f,0xff,0xdb,0xff,0xcb,0xff,0xf6,0xff,
|
||||
0xf2,0xfd,0xfd,0xbf,0xff,0xff,0xff,0xd0,0xef,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xff,0xcc,0xc0,0x3f,0xff,
|
||||
0xff,0xf1,0x24,0xf0,0xff,0xff,0xcf,0xef,0x3f,0xff,0xf0,0xff,0xff,0xff,0xfc,0x3f,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xcf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xff,0xcc,0xc0,0x3f,0xff,0xff,
|
||||
0xf1,0x00,0xf0,0xff,0xff,0xcf,0xdf,0xff,0xff,0xf0,0xff,0xff,0xff,0xfc,0x3f,0xff,
|
||||
0xff,0xff,0x7d,0xff,0xff,0xf0,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xfe,0x7f,0xdf,0xff,0xff,0xff,0xf1,
|
||||
0xff,0xcf,0xff,0xf3,0xff,0x97,0xff,0xff,0x8f,0xe7,0xff,0xff,0xfc,0x71,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xf0,0xef,0xff,0xff,0xff,0xfe,0xf5,0xff,0xbf,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xf7,0xef,0xff,0xff,0xfc,0x7b,0xff,0xf1,0x3f,
|
||||
0xff,0xef,0xff,0xcf,0xe3,0xe3,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xbf,0xff,
|
||||
0xbf,0xff,0xda,0xf0,0x7f,0xff,0xff,0xff,0xfe,0xf2,0xc0,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,
|
||||
0x01,0x3c,0xf0,0xaf,0xff,0xff,0xff,0xfe,0xfd,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xdb,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0x9f,0xff,
|
||||
0xff,0xff,0xf7,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xdb,0xf0,0x7f,0xff,0xff,0xff,0xfe,0xf0,0xbb,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xfb,0xdf,0xbf,0xf1,0xfe,0xfd,0xf7,0xff,
|
||||
0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x77,0xfd,0xf2,
|
||||
0xf0,0x1f,0xff,0xff,0xff,0xfe,0xf8,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
|
||||
0x00,0x00,0x00,0x02,0x00,0x90,0x00,0x00,0x00,0x0c,0x01,0x00,0x00,0x04,0x24,0x00,
|
||||
0x40,0x01,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x01,0xc0,0xf0,
|
||||
0x4f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xbf,0xff,0xff,0x6f,0xff,0xdf,0xff,0xd1,0xff,0xfe,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xdf,0xff,0xfb,0xff,0xfb,0xef,0xff,0xff,0xee,0xff,0xff,0x7f,0xf0,0xdf,
|
||||
0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x8f,0xff,
|
||||
0xff,0xff,0xfe,0xff,0xff,0xff,0xf5,0xad,0xff,0x69,0x2a,0xed,0x6b,0xfb,0xdf,0x3a,
|
||||
0xdc,0xf4,0x96,0xee,0xb3,0x3d,0x35,0xc1,0xbb,0xdd,0xfe,0xf6,0xfe,0xd6,0xb5,0xad,
|
||||
0xbf,0xa5,0xad,0x49,0x2f,0x4f,0x2b,0xda,0x5f,0xff,0xff,0xff,0xf0,0x2f,0xff,0xff,
|
||||
0xff,0xfe,0xbf,0xff,0xff,0xfb,0x5b,0xf7,0xf6,0xff,0xf6,0xff,0xfd,0xbf,0xfd,0xa5,
|
||||
0xf3,0x6f,0xf3,0x6e,0xfa,0x7b,0xd1,0xfd,0xb5,0x77,0x6f,0xe9,0x6f,0xff,0xdb,0xfb,
|
||||
0xdb,0xdf,0xf6,0xff,0xf6,0xff,0xfd,0x3f,0xfe,0xf7,0xff,0xd0,0x4f,0xff,0xff,0xff,
|
||||
0xfe,0xff,0x9f,0xff,0xff,0x0f,0xff,0xc0,0x3f,0x9c,0x03,0xff,0xff,0x8b,0xa5,0xfe,
|
||||
0x80,0x3e,0xc2,0xbf,0xac,0xb1,0x24,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xff,0xa3,
|
||||
0xff,0xfd,0x6b,0xff,0xff,0xf0,0xa5,0xff,0xff,0xff,0xf0,0xaf,0xff,0xff,0xff,0xfe,
|
||||
0xff,0xff,0xff,0xff,0x0f,0xff,0xc0,0x3f,0xd4,0x6b,0xff,0xff,0xdb,0xff,0xfe,0x86,
|
||||
0xbf,0xc2,0xbf,0x30,0xa1,0x24,0xff,0xff,0xff,0xff,0xcc,0xff,0x0f,0xff,0xa3,0xff,
|
||||
0x05,0x6b,0xff,0xff,0xf0,0xa5,0xff,0xff,0xff,0xf0,0x7f,0xff,0xff,0xff,0xfe,0xff,
|
||||
0xff,0xff,0xfb,0xc7,0xff,0xc4,0xff,0xff,0x7f,0xff,0xec,0xfe,0x7f,0xdf,0xd8,0xb9,
|
||||
0x47,0xfc,0x36,0xc1,0xdf,0xff,0xff,0xf9,0xff,0xf3,0xff,0xf7,0xff,0xfc,0xff,0xfd,
|
||||
0x3f,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xf0,0x7f,0xff,0xff,0xff,0xfe,0xf5,0xff,
|
||||
0xff,0xff,0xff,0xfe,0xff,0xff,0x7e,0xbd,0x3f,0xff,0x2b,0xfe,0x2f,0xf5,0xa3,0xfc,
|
||||
0x5b,0xfe,0x61,0x9f,0x7f,0xef,0xff,0xff,0xa7,0xfb,0xff,0xff,0xfa,0xfe,0xff,0x33,
|
||||
0xf1,0xff,0xbf,0xff,0xff,0xff,0xfa,0xf0,0x7f,0xff,0xff,0xff,0xfe,0xf1,0xc0,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x30,0x24,0x04,
|
||||
0x00,0x01,0x00,0x80,0x40,0x00,0x08,0x00,0x00,0x00,0x02,0x01,0x01,0x00,0x02,0x00,
|
||||
0x00,0x00,0x00,0x00,0x01,0x3d,0xf0,0x2f,0xff,0xff,0xff,0xfe,0xfd,0xbd,0xff,0xfd,
|
||||
0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0x7f,0xf6,0xef,0xbf,0xf7,0xff,0x73,0xeb,
|
||||
0xf1,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xf9,0xff,0xfd,0xfe,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xd9,0xf0,0xdf,0xff,0xff,0xff,0xfe,0xf0,0xbf,0x7f,0xff,0xff,
|
||||
0xff,0x7f,0xff,0xff,0xde,0xff,0xff,0xef,0xdd,0xde,0x77,0xf2,0xfb,0xed,0xe7,0xf1,
|
||||
0x73,0xfd,0xfd,0xdf,0xff,0x7d,0xbe,0xdf,0xff,0xfb,0xff,0xef,0xff,0xef,0xff,0xff,
|
||||
0xff,0xff,0xff,0xd0,0xf0,0xbf,0xff,0xff,0xff,0xfe,0xf8,0x30,0x20,0x02,0x00,0x22,
|
||||
0x40,0xc0,0x00,0x00,0x00,0x08,0x00,0x02,0x41,0x02,0x12,0x00,0x21,0x87,0x81,0x00,
|
||||
0x00,0x80,0x04,0x0b,0x28,0x01,0xb0,0x00,0x82,0x00,0x40,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xc1,0xf0,0xdf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,
|
||||
0xf7,0xff,0xfe,0x7f,0xed,0x79,0xff,0xde,0xeb,0x7f,0x74,0xf7,0xf7,0xe1,0xf9,0xff,
|
||||
0xf6,0x5f,0x7f,0xff,0xff,0xff,0xd7,0xdb,0xef,0xff,0xbb,0xff,0xff,0xff,0xcc,0xff,
|
||||
0xff,0xff,0xf0,0xcf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xf0,0x0f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xfd,0x3d,0xcd,0x49,0x7f,0x6f,
|
||||
0x2b,0xba,0x5c,0xd2,0xda,0xf6,0xf3,0x3e,0xf7,0xff,0xbd,0xf1,0xfa,0xdf,0xfe,0xf7,
|
||||
0xcc,0xf6,0xbb,0xa5,0xb3,0xad,0xbf,0x6f,0x7d,0x6f,0x6b,0xdb,0xdf,0xbd,0xff,0xfe,
|
||||
0xb0,0x5f,0xff,0xff,0xff,0xfe,0xbf,0xff,0xff,0xfb,0xdb,0x57,0xf6,0xfe,0x9f,0xd5,
|
||||
0xb7,0xff,0xaf,0xe5,0x3f,0xff,0xff,0x6f,0xff,0xdb,0xf1,0xfd,0xbf,0xff,0x6f,0x69,
|
||||
0x6c,0xdf,0xda,0xdf,0xcb,0xff,0xf6,0xff,0x76,0xfd,0xfd,0xbf,0xff,0xff,0xff,0xd0,
|
||||
0x3f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xfd,0xbd,0x08,0x03,0x89,0x4f,0x5a,
|
||||
0x0f,0xf0,0xff,0xf8,0xbf,0xff,0xff,0xff,0xff,0xf1,0x5a,0xff,0xff,0xff,0xff,0xf3,
|
||||
0xfa,0xa0,0xf0,0xf2,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xff,
|
||||
0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xfd,0x00,0x6b,0xff,0xff,0x5a,0x0f,
|
||||
0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0x5a,0xff,0xff,0xff,0xff,0xb3,0xf5,
|
||||
0x50,0xf0,0xf0,0xff,0xff,0xff,0xd7,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x7f,0xff,
|
||||
0xff,0xff,0xfe,0xff,0xff,0xff,0xfd,0xbc,0xff,0xe4,0xe7,0x71,0xff,0xf9,0xc4,0xf4,
|
||||
0x7f,0x7f,0xcf,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xfb,0xf7,0x73,0xbf,0x14,
|
||||
0xff,0xe6,0xff,0xff,0xe1,0x7d,0xff,0xff,0xe7,0xff,0xff,0xff,0xf0,0x3f,0xff,0xff,
|
||||
0xff,0xfe,0xf5,0xff,0xff,0xfe,0xd2,0xfa,0xff,0xc4,0xf4,0x5c,0xbf,0xfa,0xff,0xff,
|
||||
0xec,0x7e,0xbf,0xff,0xff,0xff,0xf1,0xff,0xff,0xef,0xff,0xff,0x6b,0xdb,0xff,0xdf,
|
||||
0xf9,0xfb,0xbf,0xff,0xf1,0xff,0xbf,0xff,0xff,0xff,0xfb,0xf0,0xbf,0xff,0xff,0xff,
|
||||
0xfe,0xf3,0xc0,0x00,0x02,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x80,0x00,
|
||||
0x00,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x01,0x08,0x20,0x00,0x00,0x00,0x00,
|
||||
0x01,0x00,0x01,0x00,0x00,0x80,0x02,0x00,0x01,0x3c,0xf0,0x5f,0xff,0xff,0xff,0xfe,
|
||||
0xfd,0xbf,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0x7f,0xff,0xdf,0xff,0xef,0xff,
|
||||
0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xfb,0xff,0xfd,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xc3,0xf0,0xaf,0xff,0xff,0xff,0xfe,0xf0,
|
||||
0xff,0xdf,0xff,0xff,0xf7,0x23,0xff,0xff,0xfd,0xff,0xef,0xff,0xfe,0x7f,0x7d,0xf7,
|
||||
0xfe,0xff,0x7f,0x71,0xff,0xfb,0x7f,0xff,0xff,0xff,0x6e,0xfd,0xf7,0xfd,0xff,0xbf,
|
||||
0xff,0xbf,0xf9,0xfd,0xff,0xdf,0xef,0xf0,0xf0,0xaf,0xff,0xff,0xff,0xfe,0xf8,0x30,
|
||||
0x40,0x01,0x00,0x83,0x00,0x00,0x00,0x0c,0x06,0x08,0x04,0x26,0x26,0x00,0x00,0x06,
|
||||
0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x04,0x00,0x70,0x08,0x80,0x00,0x20,0x01,0x20,
|
||||
0x00,0x02,0x00,0x30,0x00,0x00,0xc1,0xf0,0x5f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,
|
||||
0xff,0xff,0x7b,0x3f,0xf7,0xff,0xd7,0xfe,0xfe,0xfb,0xfe,0x3b,0xfe,0xbd,0xff,0x2f,
|
||||
0xff,0x71,0xff,0xfb,0x7f,0xe7,0xff,0xf9,0xef,0xff,0xd7,0xfa,0xff,0xb7,0xbb,0xfe,
|
||||
0xff,0xff,0x74,0xff,0xf7,0xff,0xf0,0xcf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xf0,0x8f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xb5,
|
||||
0xbd,0x6f,0x7c,0xeb,0x7f,0xfb,0xdb,0xd3,0x4b,0xee,0xd6,0xf6,0xb7,0xfd,0xac,0xa1,
|
||||
0xfb,0xdf,0xfe,0xf7,0xf4,0x96,0xbd,0xb4,0xc5,0xa5,0xaf,0x6f,0x69,0x4f,0x7f,0xba,
|
||||
0xdb,0xff,0xff,0xff,0xf0,0x3f,0xff,0xff,0xff,0xfe,0xbf,0xff,0xff,0xff,0xdb,0xff,
|
||||
0xf6,0xff,0xf6,0xff,0xbd,0xbf,0xa5,0xbf,0xff,0x7d,0x7f,0xef,0xff,0xfb,0xf1,0xfd,
|
||||
0xbf,0xff,0x6f,0xff,0x6b,0x7a,0xdb,0xff,0xdb,0xdf,0xf6,0xfe,0xb6,0xfd,0xfd,0xbf,
|
||||
0xfe,0xf7,0xff,0xd0,0xef,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xf4,0x2f,0xff,
|
||||
0xfc,0x43,0x6b,0xff,0xff,0xff,0x0d,0xff,0xfc,0x33,0x3f,0xf0,0x5f,0xf1,0xff,0xff,
|
||||
0xff,0xff,0xf9,0xde,0xf0,0x4c,0xfe,0x77,0xaf,0xff,0xff,0xef,0xff,0xf0,0xff,0xdb,
|
||||
0xff,0x5f,0xf0,0xef,0xff,0xff,0xff,0xfe,0xff,0xfe,0xf7,0xff,0xf0,0x2f,0xff,0xfd,
|
||||
0x43,0x7f,0xff,0xff,0xf1,0x0f,0xff,0xfc,0x33,0x3f,0xff,0xaf,0xf1,0xff,0xff,0xff,
|
||||
0xff,0xf6,0xd7,0xff,0xbc,0xfd,0xbd,0xff,0xff,0xff,0xff,0xff,0xf0,0xff,0xff,0xff,
|
||||
0xff,0xf0,0xef,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xff,0xff,0xfb,0xf1,
|
||||
0xbf,0xff,0xf9,0xfd,0xcf,0xf2,0x70,0xff,0x1f,0x9f,0xf3,0xf1,0xff,0xff,0xff,0xff,
|
||||
0xfc,0xf7,0xff,0x13,0x9f,0xfc,0xff,0xff,0x84,0xf7,0xff,0xff,0x47,0xff,0xff,0xff,
|
||||
0xf0,0xbf,0xff,0xff,0xff,0xfe,0xf5,0xff,0xff,0xff,0xf1,0xfc,0xff,0xfe,0xfe,0x79,
|
||||
0x3f,0xff,0x1d,0x46,0xcf,0xff,0xcf,0xfc,0x7b,0xff,0xf1,0xff,0xff,0xff,0xff,0xed,
|
||||
0xf3,0xab,0xff,0xcb,0xff,0xf8,0xff,0xfc,0xf5,0xff,0xbf,0xff,0xff,0xff,0xfa,0xf0,
|
||||
0x8f,0xff,0xff,0xff,0xfe,0xf3,0xc2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,
|
||||
0x00,0x00,0x20,0x00,0x20,0x00,0x00,0x04,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x20,
|
||||
0x0c,0x00,0x00,0x04,0x01,0x00,0x01,0x00,0x00,0x80,0x00,0x00,0x01,0x3c,0xf0,0x7f,
|
||||
0xff,0xff,0xff,0xfe,0xfd,0xbf,0xff,0xff,0xfd,0xfe,0xff,0xff,0xff,0xff,0xfe,0xff,
|
||||
0xdf,0xff,0xff,0xf7,0xff,0xff,0xff,0xef,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,
|
||||
0xff,0xdf,0xff,0xff,0xfb,0xf7,0x7f,0xff,0xfe,0xff,0xff,0xbf,0xdb,0xf0,0xff,0xff,
|
||||
0xff,0xff,0xfe,0xf0,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0x7f,0xf7,0xff,
|
||||
0xbf,0xbf,0xcf,0xff,0xff,0xff,0x3e,0xf1,0x7f,0xff,0xff,0xef,0xff,0xff,0xff,0xfe,
|
||||
0xff,0xfd,0xff,0xbf,0xbd,0xfe,0xff,0xfb,0xf7,0xdf,0xfb,0xd0,0xf0,0x9f,0xff,0xff,
|
||||
0xff,0xfe,0xf8,0x30,0x20,0x00,0x40,0x01,0x80,0xc0,0x30,0x00,0x00,0x20,0x00,0x10,
|
||||
0x50,0x88,0x20,0x00,0x00,0x13,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,
|
||||
0x00,0x00,0x01,0x80,0x08,0x00,0x00,0xa0,0x00,0x10,0xc1,0xf0,0xef,0xff,0xff,0xff,
|
||||
0xfe,0xfd,0xef,0x7f,0xff,0xff,0xbf,0xff,0xf7,0xff,0xef,0xfb,0xfd,0x77,0xef,0xbf,
|
||||
0xf7,0x7f,0xff,0xff,0xbf,0xd1,0x7f,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xaf,0xff,
|
||||
0xdf,0xf7,0xfb,0xff,0xfd,0xff,0xfc,0xff,0xfd,0xff,0xf0,0xff,0xff,0xff,0xff,0xfe,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x5f,0xff,0xff,0xff,0xfe,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x3f,0xff,0xff,0xff,0xfe,0xdd,0xff,
|
||||
0xff,0xff,0xa5,0xfd,0x6f,0x7d,0x6d,0x7f,0x52,0xdf,0x5a,0x4b,0xee,0xb6,0xee,0xf2,
|
||||
0xbb,0xac,0xa1,0x5b,0x4d,0xd6,0xf7,0xfe,0xb2,0xbd,0x35,0xb5,0xb5,0xdd,0x6f,0x7f,
|
||||
0xe9,0x5f,0x52,0xdf,0xbd,0xff,0xff,0xf0,0xdf,0xff,0xff,0xff,0xfe,0xbf,0xff,0xff,
|
||||
0xff,0xdb,0xfe,0xf6,0xff,0xf6,0xff,0xfd,0xbf,0xfd,0xb5,0xbf,0xf9,0x7f,0x6f,0xff,
|
||||
0xdb,0xf1,0xfd,0xbf,0xff,0x6f,0xff,0x69,0x7f,0xdb,0xff,0xd3,0xff,0xf6,0xfe,0xf2,
|
||||
0xff,0xad,0xbf,0xff,0xff,0xff,0xd0,0xdf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xf5,
|
||||
0x30,0x0f,0xff,0xff,0xfd,0x6b,0xca,0xff,0xf0,0x0f,0xd6,0xbf,0xcf,0x3f,0xff,0xff,
|
||||
0xf1,0xff,0xff,0xff,0xca,0xfe,0xbf,0xff,0xf0,0x05,0xaf,0x0f,0xff,0xfc,0xf0,0xcf,
|
||||
0xf0,0xff,0xff,0xff,0xff,0xf0,0xef,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xf5,0x30,
|
||||
0x0f,0xff,0xff,0xfc,0x3f,0xca,0xff,0x0f,0x0f,0xd6,0xbf,0xff,0xff,0xf5,0x5f,0xf1,
|
||||
0xff,0x8b,0xff,0xc3,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xff,0xfc,0xf0,0xcf,0xf0,
|
||||
0xff,0xff,0xff,0xff,0xf0,0x3f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xcf,0xff,
|
||||
0xff,0xbf,0x9f,0x3f,0xfe,0xfc,0xff,0x4f,0xff,0xff,0xff,0xff,0xff,0xf7,0xf1,0xff,
|
||||
0xdf,0xfe,0x7e,0x3f,0x9f,0xf4,0xfc,0x7f,0xfc,0xff,0xff,0x3f,0xff,0x3f,0xfe,0x3f,
|
||||
0xff,0xff,0xff,0xf0,0x4f,0xff,0xff,0xff,0xfe,0xf5,0xff,0xff,0xfb,0xff,0xfe,0xff,
|
||||
0xff,0xff,0xff,0xbf,0xfb,0xff,0xf8,0xed,0xff,0x8f,0xff,0xbb,0xff,0xb1,0xf3,0xef,
|
||||
0x8f,0xf7,0xff,0xff,0xdb,0xff,0xff,0xff,0xef,0xbf,0xfd,0x79,0xbf,0xbf,0xff,0xff,
|
||||
0xff,0xfb,0xf0,0xdf,0xff,0xff,0xff,0xfe,0xf3,0xc0,0x00,0x00,0x00,0x04,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x04,0x08,0x08,0x01,0x01,0x00,0x90,
|
||||
0x00,0x00,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x00,0x08,0x00,0x04,0x00,0x00,0x01,
|
||||
0x3c,0xf0,0xdf,0xff,0xff,0xff,0xfe,0xfd,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0x9f,0xff,0xaf,0xdf,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,
|
||||
0xbf,0xef,0xff,0xff,0xff,0xed,0xff,0xff,0xff,0xef,0xff,0xbf,0xff,0xff,0xff,0xc3,
|
||||
0xf0,0x3f,0xff,0xff,0xff,0xfe,0xf0,0xff,0xfd,0xff,0xff,0xff,0xfb,0xff,0xbb,0xff,
|
||||
0xff,0xff,0x7f,0xf6,0xff,0x7f,0xfb,0xfd,0xed,0xff,0xf1,0xff,0xfe,0x7f,0xff,0xff,
|
||||
0xff,0x5f,0xff,0xf7,0xff,0x7e,0xff,0xfd,0xff,0xef,0xff,0xff,0xff,0xef,0xf0,0xf0,
|
||||
0x8f,0xff,0xff,0xff,0xfe,0xf8,0x30,0x80,0x00,0x04,0x00,0x00,0x40,0x02,0x00,0x03,
|
||||
0x00,0x05,0x04,0x20,0x00,0x00,0x01,0xd0,0x00,0x81,0x00,0x20,0x04,0x04,0x00,0x00,
|
||||
0x81,0x04,0x08,0x80,0x10,0x00,0xc0,0x00,0x00,0x00,0x20,0x00,0x08,0xc1,0xf0,0x6f,
|
||||
0xff,0xff,0xff,0xfe,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xf3,0xfd,0xff,0xed,0xfc,
|
||||
0xff,0xff,0x9f,0xfb,0xfd,0xff,0xff,0xff,0xf1,0xff,0xff,0x7f,0xfb,0x3e,0xff,0x9f,
|
||||
0xff,0xff,0xff,0xff,0xfd,0xf9,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xf0,0x6f,0xff,
|
||||
0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xcf,0xff,0xff,
|
||||
0xff,0xfe,0xff,0xff,0xff,0xfd,0xbd,0xff,0xef,0x7c,0xeb,0x7f,0xfb,0xdb,0xfa,0xdc,
|
||||
0xee,0xf7,0xf6,0xd7,0xf5,0x2d,0xa1,0xbb,0xdd,0xee,0xf7,0x54,0xf7,0xfb,0x2c,0xb5,
|
||||
0xb4,0xbd,0x6b,0x6f,0xef,0x6f,0xbb,0xdf,0xff,0xff,0xff,0xf0,0x1f,0xff,0xff,0xff,
|
||||
0xfe,0xbf,0xff,0xff,0xff,0xfb,0xff,0xf6,0xff,0xf6,0xff,0xfd,0xbf,0xff,0xbf,0xef,
|
||||
0x6f,0xff,0x6f,0xfa,0xdb,0xf1,0xc5,0xbd,0xf5,0x6f,0xff,0x6f,0xca,0xdb,0xff,0xdb,
|
||||
0xfb,0xf6,0x97,0xf6,0xff,0xfd,0xbf,0xfe,0xf7,0xff,0xd0,0x9f,0xff,0xff,0xff,0xfe,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b,0x7f,0xff,0xff,0xe7,0x63,0xff,0xff,
|
||||
0xff,0xfc,0x77,0xdf,0xf1,0xdb,0xff,0xd6,0xa8,0x3f,0xff,0xff,0x08,0x2f,0xf0,0xff,
|
||||
0xc3,0xff,0xeb,0xff,0xff,0xff,0xff,0xff,0x5f,0xf0,0xef,0xff,0xff,0xff,0xfe,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xfc,0xff,0xcf,0xf1,0xdb,0xff,0xd6,0xa8,0x3f,0xff,0xff,0x08,0x2f,0xf0,0xff,0xc3,
|
||||
0xff,0xeb,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x5f,0xff,0xff,0xff,0xfe,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xf5,0xbf,0xff,0xca,0xff,0x9f,0xff,0xfa,0xb9,0xe7,
|
||||
0x9f,0xf3,0x81,0xff,0xff,0xfc,0x73,0xd7,0xff,0xff,0x77,0xff,0xfd,0xff,0xfc,0xff,
|
||||
0xff,0xff,0xff,0xcf,0xff,0xff,0xff,0xf0,0x1f,0xff,0xff,0xff,0xfe,0xf5,0xff,0xff,
|
||||
0xff,0xf7,0xde,0xff,0xfe,0x7e,0xff,0xbf,0xff,0xbf,0xf1,0xb3,0xff,0xff,0xe3,0xfb,
|
||||
0xff,0xe1,0x1f,0x7f,0xff,0xf8,0x78,0xff,0xfb,0x1e,0xff,0xf7,0xfe,0xe7,0xff,0xff,
|
||||
0xff,0xbf,0xff,0xff,0xff,0xfa,0xf0,0x4f,0xff,0xff,0xff,0xfe,0xf3,0xc0,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x04,0x00,
|
||||
0x01,0x80,0x40,0x40,0x20,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
|
||||
0x80,0x00,0x00,0x01,0x3c,0xf0,0xaf,0xff,0xff,0xff,0xfe,0xfd,0xbf,0xff,0xfb,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xf7,0xf1,
|
||||
0xfd,0xff,0xff,0xff,0xdf,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
|
||||
0xff,0xff,0xff,0xdb,0xf0,0x8f,0xff,0xff,0xff,0xfe,0xf0,0xff,0xdf,0xff,0xff,0x7f,
|
||||
0xff,0xff,0xff,0xbe,0xd7,0xff,0xed,0xbd,0x7e,0xbf,0xfe,0xf6,0x7f,0xbf,0x71,0xff,
|
||||
0xff,0xda,0xff,0xf9,0xff,0xbf,0x7f,0xfe,0xff,0x6f,0x7f,0xff,0xff,0xff,0xff,0xff,
|
||||
0x7f,0xff,0xd0,0xf0,0xcf,0xff,0xff,0xff,0xfe,0xf8,0x30,0x42,0x00,0x00,0x00,0x00,
|
||||
0x80,0xc1,0x00,0x00,0x90,0x00,0xc4,0x00,0x00,0x12,0x20,0x43,0x22,0x81,0x84,0x00,
|
||||
0x00,0x14,0x00,0x01,0x00,0x08,0x80,0x00,0x02,0x00,0x02,0x00,0x04,0x02,0x00,0x00,
|
||||
0x10,0xc1,0xf0,0x1f,0xff,0xff,0xff,0xfe,0xff,0xff,0xfd,0xff,0xff,0xdd,0xfe,0xff,
|
||||
0xb6,0x76,0xe5,0xbc,0xf9,0xf7,0xaf,0x5f,0xbf,0xfc,0xdf,0xcf,0xf1,0xff,0xef,0x79,
|
||||
0xff,0xbd,0xff,0xef,0xff,0xff,0xf7,0x6f,0x5f,0xff,0xff,0xfd,0xef,0xef,0xbf,0xff,
|
||||
0xff,0xf0,0x9f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xf0,0xff,0xff,0xff,0xff,0xfe,0xdb,0xff,0xff,0xfd,0x2d,0xff,0x69,0x2a,0xef,0x77,
|
||||
0xbb,0xdd,0x5a,0xdf,0xf6,0xf6,0xd6,0xf7,0x7d,0xbd,0xd1,0xb2,0x4a,0xd6,0xb2,0xbe,
|
||||
0x97,0xf5,0xbd,0xb3,0xad,0xff,0xef,0x7f,0x69,0x6b,0xfb,0xdf,0xff,0xff,0xff,0xf0,
|
||||
0x2f,0xff,0xff,0xff,0xfe,0xbf,0xff,0xff,0xff,0xdb,0xff,0xf6,0xfe,0x9f,0xd4,0xbf,
|
||||
0xed,0xaf,0xff,0x6b,0x6f,0xf7,0xff,0xdd,0xdb,0x31,0xfd,0xbf,0xff,0x6f,0x7f,0xff,
|
||||
0xff,0xdb,0xff,0xcb,0xdf,0xf6,0xff,0xf6,0xff,0xfd,0xbf,0xfe,0xf7,0xff,0xd0,0x8f,
|
||||
0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xfd,0x1f,0xff,0x46,0x2f,0x9f,0xff,0xff,0xff,
|
||||
0xa5,0xff,0xff,0xff,0xdf,0xb7,0xff,0xff,0xf1,0xff,0xff,0xff,0xf7,0xe9,0x6a,0xbf,
|
||||
0xff,0xff,0xfd,0xff,0xff,0xfd,0x55,0x57,0xff,0xff,0xff,0xff,0xaf,0xf0,0x4f,0xff,
|
||||
0xff,0xff,0xfe,0xfe,0xdf,0xff,0xfd,0x1f,0xff,0x46,0x2f,0x9f,0xff,0xff,0xff,0xa5,
|
||||
0xff,0xff,0xff,0xc0,0x37,0xff,0xff,0xf1,0x99,0x8e,0xdc,0x7f,0xe9,0x6a,0xbf,0xff,
|
||||
0xf0,0x0f,0xff,0xff,0xfd,0x55,0x57,0xff,0xff,0xff,0xff,0xff,0xf0,0x0f,0xff,0xff,
|
||||
0xff,0xfe,0xff,0xff,0xff,0xff,0x07,0xff,0xc0,0xbe,0xff,0xff,0xcf,0xef,0x9f,0xff,
|
||||
0xff,0xfb,0xff,0xe7,0xff,0xff,0xa1,0xe3,0xce,0x3c,0x58,0x3f,0xf3,0xff,0xfd,0xef,
|
||||
0xf9,0xff,0xff,0xf7,0xf1,0x7f,0xff,0xcb,0xff,0xff,0xff,0xf0,0x2f,0xff,0xff,0xff,
|
||||
0xfe,0xf5,0x7f,0xff,0xf0,0xff,0xfe,0xff,0xc4,0x75,0xe7,0xb9,0xff,0xff,0xff,0xef,
|
||||
0xff,0xc7,0x37,0x3b,0xff,0xf0,0x13,0x9e,0x0f,0xf4,0xff,0xfe,0xfb,0xff,0xff,0xf9,
|
||||
0xfc,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xfa,0xf0,0xef,0xff,0xff,0xff,0xfe,
|
||||
0xf3,0xc0,0x01,0x00,0x00,0x02,0x00,0x02,0x22,0x00,0x00,0xc0,0x40,0x00,0x40,0x00,
|
||||
0x04,0x08,0x04,0x0a,0x01,0x01,0x10,0x20,0x20,0x00,0x00,0x04,0x08,0x08,0x04,0x00,
|
||||
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x3c,0xf0,0xcf,0xff,0xff,0xff,0xfe,0xfd,
|
||||
0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0x7f,0xff,0x7f,0xff,0xcf,0x9d,0xff,
|
||||
0xff,0xf7,0xfd,0xf1,0xff,0xff,0xff,0xee,0xbf,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdb,0xf0,0x6f,0xff,0xff,0xff,0xfe,0xf0,0xff,
|
||||
0xff,0xff,0xf7,0xf7,0xff,0xff,0xfe,0xbf,0xf7,0xff,0xff,0x5b,0xff,0xbf,0xf7,0xff,
|
||||
0xfd,0x7f,0x71,0xfd,0xff,0xed,0xf7,0xfe,0xef,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xef,0xff,0x7f,0xff,0xd0,0xf0,0xff,0xff,0xff,0xff,0xfe,0xf8,0x30,0x11,
|
||||
0x00,0x48,0x60,0x40,0x82,0x60,0x24,0x60,0x00,0xcc,0x00,0x80,0x04,0x01,0x00,0x00,
|
||||
0x14,0x01,0x0c,0x04,0x00,0x30,0x00,0x00,0x00,0x08,0x08,0x00,0x01,0x00,0xc2,0x00,
|
||||
0x00,0x02,0x00,0x80,0x00,0xc1,0xf0,0x5f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,
|
||||
0xf7,0x7b,0xff,0xf3,0xeb,0xbf,0xff,0xf7,0xff,0xff,0xff,0xe7,0x5d,0x3f,0xff,0xf6,
|
||||
0xd1,0xfd,0xff,0xeb,0xf7,0x3d,0xff,0xff,0xff,0x5f,0xff,0x7f,0x7f,0xf3,0xff,0xff,
|
||||
0xef,0xfd,0xbf,0xff,0xff,0xf0,0x5f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xf0,0xdf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xf5,0xb5,0xdf,
|
||||
0x6f,0x7d,0x69,0x7f,0xfb,0xdf,0x52,0x5f,0xf6,0xf7,0xfe,0xf6,0xf3,0xbd,0xb1,0xda,
|
||||
0xcd,0xfe,0xf6,0xee,0xd2,0xbd,0xa5,0xaf,0xbd,0xff,0x6f,0x7c,0xeb,0x2b,0xfa,0xda,
|
||||
0xff,0xfe,0xdf,0xf0,0x4f,0xff,0xff,0xff,0xfe,0xbf,0xff,0xff,0xff,0xdb,0xff,0xf6,
|
||||
0xff,0xf6,0xff,0xbd,0xbf,0xcd,0xbf,0xeb,0x6f,0xf7,0x6f,0xdf,0xdb,0x51,0xfd,0xbd,
|
||||
0xff,0x6f,0xff,0x6f,0xfb,0x5b,0xff,0xdb,0xff,0xf6,0xfe,0xf6,0xfd,0xfd,0xbf,0xfe,
|
||||
0xf7,0xff,0xd0,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xfa,0x50,0xff,0xff,0xff,
|
||||
0xf0,0x6f,0xff,0xff,0xf0,0x96,0xff,0xff,0xc6,0x2b,0xff,0xff,0xf1,0xfc,0xff,0xff,
|
||||
0xf7,0xdb,0xc3,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xc1,0x4f,0xc3,0xff,0xff,0xff,
|
||||
0xaf,0xf0,0x9f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xf5,0xa0,0xff,0xff,0xff,0xf0,
|
||||
0x6f,0xff,0xff,0xf0,0x96,0xff,0xff,0xc6,0x2b,0xff,0xff,0xf1,0x5a,0xff,0xff,0xff,
|
||||
0xf3,0xc3,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xc1,0x4f,0xc3,0xff,0xff,0xff,0xff,
|
||||
0xf0,0xcf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xfc,0xff,0xff,0x9f,0xf0,0x7f,
|
||||
0xff,0xf9,0xfc,0x4f,0xf3,0xff,0x27,0xeb,0xff,0xfc,0x81,0xfc,0x7f,0xfe,0x7b,0xff,
|
||||
0xf7,0xff,0x12,0x7f,0xff,0xff,0xff,0xff,0x18,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,
|
||||
0x7f,0xff,0xff,0xff,0xfe,0xf5,0xff,0xff,0xff,0xdf,0xfe,0xff,0xfc,0x7e,0x7f,0xbf,
|
||||
0xff,0xff,0xaf,0xef,0xff,0xdf,0xdf,0xfb,0xff,0xf1,0xc3,0xfe,0x6f,0xf1,0xcf,0x3f,
|
||||
0xfb,0xff,0xff,0xcf,0xfe,0xff,0xff,0xfe,0x7f,0xbf,0xff,0xff,0xbf,0xfa,0xf0,0xdf,
|
||||
0xff,0xff,0xff,0xfe,0xf3,0xc0,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
|
||||
0x20,0x00,0x01,0x00,0x10,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x02,0x00,0x00,0x80,0x00,0x02,0x80,0x00,0x02,0x3c,0xf0,0x2f,0xff,
|
||||
0xff,0xff,0xfe,0xfd,0xbf,0xff,0xfb,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xf5,0xf1,0xff,0x7f,0xff,0xff,0xff,0xff,0xef,0xff,
|
||||
0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xdb,0xf0,0x2f,0xff,0xff,
|
||||
0xff,0xfe,0xf0,0xff,0xff,0xff,0xfb,0xff,0xbf,0xff,0xff,0xff,0xff,0xf7,0xbf,0xfb,
|
||||
0xff,0xff,0xff,0xdf,0xf7,0xff,0xf1,0xf7,0xbf,0xfb,0xff,0xff,0xff,0x7f,0xde,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xed,0xf7,0xff,0xff,0x7f,0xd0,0xf0,0x3f,0xff,0xff,0xff,
|
||||
0xfe,0xf8,0x30,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x80,
|
||||
0x20,0x01,0x01,0x92,0x00,0x01,0x01,0x00,0xe0,0x1c,0x60,0x20,0x30,0x08,0x08,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0xc1,0xf0,0x6f,0xff,0xff,0xff,0xfe,
|
||||
0xff,0xff,0xff,0xff,0xff,0xdb,0xfe,0xff,0xff,0xdf,0xff,0xfc,0x7f,0xfb,0xbf,0xff,
|
||||
0xff,0xff,0xff,0xff,0xf1,0xf6,0xff,0xf7,0x7e,0x3f,0xff,0x7f,0xff,0xff,0xff,0xf7,
|
||||
0xff,0xff,0xff,0xed,0xff,0xdf,0xff,0xb7,0xff,0xf0,0x3f,0xff,0xff,0xff,0xfe,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xbf,0xff,0xdf,
|
||||
0x57,0xef,0xf1,0xfd,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xfb,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x7f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xdf,0xff,
|
||||
0xff,0xf1,0xfd,0xff,0x7f,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xfe,0xff,0xff,0xff,0xff,0xf0,0x9f,0xff,0xff,0xff,0xfe,0xf7,0xfd,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,
|
||||
0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xf0,0x6f,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,
|
||||
0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xf0,0xcf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xfb,0xff,0xff,0xff,0xfe,0xff,0xff,0xfb,0x6f,0xff,0xfe,0xbf,0xff,0xf1,0xff,
|
||||
0xf7,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,
|
||||
0xff,0xff,0xff,0xf0,0xef,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xfb,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0x57,0xff,0xfd,0xbf,0xff,0xf1,0xff,0xef,
|
||||
0xfe,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,
|
||||
0xde,0xff,0xf0,0xcf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xf7,0xdb,0xff,0xdb,0xfd,
|
||||
0xf6,0xff,0xf6,0xff,0x3c,0xbc,0xbc,0xbf,0xdf,0x6f,0xe7,0x2f,0xf1,0x3c,0xbf,0xfd,
|
||||
0xbf,0xdf,0x6f,0xff,0x6f,0xf7,0xdb,0xff,0xdb,0xfd,0xf6,0xff,0xf6,0xff,0xff,0xff,
|
||||
0x02,0x01,0xdf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff };
|
@ -448,8 +448,11 @@ s32 igb_copper_link_setup_igp(struct e1000_hw *hw)
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Wait 15ms for MAC to configure PHY from NVM settings. */
|
||||
msleep(15);
|
||||
/*
|
||||
* Wait 100ms for MAC to configure PHY from NVM settings, to avoid
|
||||
* timeout issues when LFS is enabled.
|
||||
*/
|
||||
msleep(100);
|
||||
|
||||
/*
|
||||
* The NVM settings will configure LPLU in D3 for
|
||||
|
@ -1419,7 +1419,6 @@ static int igb_integrated_phy_loopback(struct igb_adapter *adapter)
|
||||
{
|
||||
struct e1000_hw *hw = &adapter->hw;
|
||||
u32 ctrl_reg = 0;
|
||||
u32 stat_reg = 0;
|
||||
|
||||
hw->mac.autoneg = false;
|
||||
|
||||
@ -1443,18 +1442,11 @@ static int igb_integrated_phy_loopback(struct igb_adapter *adapter)
|
||||
ctrl_reg |= (E1000_CTRL_FRCSPD | /* Set the Force Speed Bit */
|
||||
E1000_CTRL_FRCDPX | /* Set the Force Duplex Bit */
|
||||
E1000_CTRL_SPD_1000 |/* Force Speed to 1000 */
|
||||
E1000_CTRL_FD); /* Force Duplex to FULL */
|
||||
E1000_CTRL_FD | /* Force Duplex to FULL */
|
||||
E1000_CTRL_SLU); /* Set link up enable bit */
|
||||
|
||||
if (hw->phy.media_type == e1000_media_type_copper &&
|
||||
hw->phy.type == e1000_phy_m88)
|
||||
if (hw->phy.type == e1000_phy_m88)
|
||||
ctrl_reg |= E1000_CTRL_ILOS; /* Invert Loss of Signal */
|
||||
else {
|
||||
/* Set the ILOS bit on the fiber Nic if half duplex link is
|
||||
* detected. */
|
||||
stat_reg = rd32(E1000_STATUS);
|
||||
if ((stat_reg & E1000_STATUS_FD) == 0)
|
||||
ctrl_reg |= (E1000_CTRL_ILOS | E1000_CTRL_SLU);
|
||||
}
|
||||
|
||||
wr32(E1000_CTRL, ctrl_reg);
|
||||
|
||||
|
@ -135,8 +135,8 @@ static inline int igb_set_vf_rlpml(struct igb_adapter *, int, int);
|
||||
static int igb_set_vf_mac(struct igb_adapter *adapter, int, unsigned char *);
|
||||
static void igb_restore_vf_multicasts(struct igb_adapter *adapter);
|
||||
|
||||
static int igb_suspend(struct pci_dev *, pm_message_t);
|
||||
#ifdef CONFIG_PM
|
||||
static int igb_suspend(struct pci_dev *, pm_message_t);
|
||||
static int igb_resume(struct pci_dev *);
|
||||
#endif
|
||||
static void igb_shutdown(struct pci_dev *);
|
||||
@ -420,6 +420,9 @@ static void igb_free_queues(struct igb_adapter *adapter)
|
||||
for (i = 0; i < adapter->num_rx_queues; i++)
|
||||
netif_napi_del(&adapter->rx_ring[i].napi);
|
||||
|
||||
adapter->num_rx_queues = 0;
|
||||
adapter->num_tx_queues = 0;
|
||||
|
||||
kfree(adapter->tx_ring);
|
||||
kfree(adapter->rx_ring);
|
||||
}
|
||||
@ -1476,9 +1479,10 @@ static int __devinit igb_probe(struct pci_dev *pdev,
|
||||
netdev->name,
|
||||
((hw->bus.speed == e1000_bus_speed_2500)
|
||||
? "2.5Gb/s" : "unknown"),
|
||||
((hw->bus.width == e1000_bus_width_pcie_x4)
|
||||
? "Width x4" : (hw->bus.width == e1000_bus_width_pcie_x1)
|
||||
? "Width x1" : "unknown"),
|
||||
((hw->bus.width == e1000_bus_width_pcie_x4) ? "Width x4" :
|
||||
(hw->bus.width == e1000_bus_width_pcie_x2) ? "Width x2" :
|
||||
(hw->bus.width == e1000_bus_width_pcie_x1) ? "Width x1" :
|
||||
"unknown"),
|
||||
netdev->dev_addr);
|
||||
|
||||
igb_read_part_num(hw, &part_num);
|
||||
@ -5056,7 +5060,7 @@ int igb_set_spd_dplx(struct igb_adapter *adapter, u16 spddplx)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int igb_suspend(struct pci_dev *pdev, pm_message_t state)
|
||||
static int __igb_shutdown(struct pci_dev *pdev, bool *enable_wake)
|
||||
{
|
||||
struct net_device *netdev = pci_get_drvdata(pdev);
|
||||
struct igb_adapter *adapter = netdev_priv(netdev);
|
||||
@ -5115,15 +5119,9 @@ static int igb_suspend(struct pci_dev *pdev, pm_message_t state)
|
||||
wr32(E1000_WUFC, 0);
|
||||
}
|
||||
|
||||
/* make sure adapter isn't asleep if manageability/wol is enabled */
|
||||
if (wufc || adapter->en_mng_pt) {
|
||||
pci_enable_wake(pdev, PCI_D3hot, 1);
|
||||
pci_enable_wake(pdev, PCI_D3cold, 1);
|
||||
} else {
|
||||
*enable_wake = wufc || adapter->en_mng_pt;
|
||||
if (!*enable_wake)
|
||||
igb_shutdown_fiber_serdes_link_82575(hw);
|
||||
pci_enable_wake(pdev, PCI_D3hot, 0);
|
||||
pci_enable_wake(pdev, PCI_D3cold, 0);
|
||||
}
|
||||
|
||||
/* Release control of h/w to f/w. If f/w is AMT enabled, this
|
||||
* would have already happened in close and is redundant. */
|
||||
@ -5131,12 +5129,29 @@ static int igb_suspend(struct pci_dev *pdev, pm_message_t state)
|
||||
|
||||
pci_disable_device(pdev);
|
||||
|
||||
pci_set_power_state(pdev, pci_choose_state(pdev, state));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static int igb_suspend(struct pci_dev *pdev, pm_message_t state)
|
||||
{
|
||||
int retval;
|
||||
bool wake;
|
||||
|
||||
retval = __igb_shutdown(pdev, &wake);
|
||||
if (retval)
|
||||
return retval;
|
||||
|
||||
if (wake) {
|
||||
pci_prepare_to_sleep(pdev);
|
||||
} else {
|
||||
pci_wake_from_d3(pdev, false);
|
||||
pci_set_power_state(pdev, PCI_D3hot);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int igb_resume(struct pci_dev *pdev)
|
||||
{
|
||||
struct net_device *netdev = pci_get_drvdata(pdev);
|
||||
@ -5189,7 +5204,14 @@ static int igb_resume(struct pci_dev *pdev)
|
||||
|
||||
static void igb_shutdown(struct pci_dev *pdev)
|
||||
{
|
||||
igb_suspend(pdev, PMSG_SUSPEND);
|
||||
bool wake;
|
||||
|
||||
__igb_shutdown(pdev, &wake);
|
||||
|
||||
if (system_state == SYSTEM_POWER_OFF) {
|
||||
pci_wake_from_d3(pdev, wake);
|
||||
pci_set_power_state(pdev, PCI_D3hot);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
|
@ -411,7 +411,8 @@ static s32 ixgbe_setup_fc_82598(struct ixgbe_hw *hw, s32 packetbuf_num)
|
||||
|
||||
/* Decide whether to use autoneg or not. */
|
||||
hw->mac.ops.check_link(hw, &speed, &link_up, false);
|
||||
if (hw->phy.multispeed_fiber && (speed == IXGBE_LINK_SPEED_1GB_FULL))
|
||||
if (!hw->fc.disable_fc_autoneg && hw->phy.multispeed_fiber &&
|
||||
(speed == IXGBE_LINK_SPEED_1GB_FULL))
|
||||
ret_val = ixgbe_fc_autoneg(hw);
|
||||
|
||||
if (ret_val)
|
||||
|
@ -1937,7 +1937,8 @@ s32 ixgbe_setup_fc_generic(struct ixgbe_hw *hw, s32 packetbuf_num)
|
||||
|
||||
/* Decide whether to use autoneg or not. */
|
||||
hw->mac.ops.check_link(hw, &speed, &link_up, false);
|
||||
if (hw->phy.multispeed_fiber && (speed == IXGBE_LINK_SPEED_1GB_FULL))
|
||||
if (!hw->fc.disable_fc_autoneg && hw->phy.multispeed_fiber &&
|
||||
(speed == IXGBE_LINK_SPEED_1GB_FULL))
|
||||
ret_val = ixgbe_fc_autoneg(hw);
|
||||
|
||||
if (ret_val)
|
||||
|
@ -96,14 +96,11 @@ s32 ixgbe_write_analog_reg8_generic(struct ixgbe_hw *hw, u32 reg, u8 val);
|
||||
#define IXGBE_WRITE_FLUSH(a) IXGBE_READ_REG(a, IXGBE_STATUS)
|
||||
|
||||
#ifdef DEBUG
|
||||
extern char *ixgbe_get_hw_dev_name(struct ixgbe_hw *hw);
|
||||
#define hw_dbg(hw, format, arg...) \
|
||||
printk(KERN_DEBUG, "%s: " format, ixgbe_get_hw_dev_name(hw), ##arg);
|
||||
printk(KERN_DEBUG "%s: " format, ixgbe_get_hw_dev_name(hw), ##arg)
|
||||
#else
|
||||
static inline int __attribute__ ((format (printf, 2, 3)))
|
||||
hw_dbg(struct ixgbe_hw *hw, const char *format, ...)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#define hw_dbg(hw, format, arg...) do {} while (0)
|
||||
#endif
|
||||
|
||||
#endif /* IXGBE_COMMON */
|
||||
|
@ -90,6 +90,8 @@ int ixgbe_copy_dcb_cfg(struct ixgbe_dcb_config *src_dcb_cfg,
|
||||
src_dcb_cfg->tc_config[i - DCB_PFC_UP_ATTR_0].dcb_pfc;
|
||||
}
|
||||
|
||||
dst_dcb_cfg->pfc_mode_enable = src_dcb_cfg->pfc_mode_enable;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -298,8 +300,10 @@ static void ixgbe_dcbnl_set_pfc_cfg(struct net_device *netdev, int priority,
|
||||
|
||||
adapter->temp_dcb_cfg.tc_config[priority].dcb_pfc = setting;
|
||||
if (adapter->temp_dcb_cfg.tc_config[priority].dcb_pfc !=
|
||||
adapter->dcb_cfg.tc_config[priority].dcb_pfc)
|
||||
adapter->dcb_cfg.tc_config[priority].dcb_pfc) {
|
||||
adapter->dcb_set_bitmap |= BIT_PFC;
|
||||
adapter->temp_dcb_cfg.pfc_mode_enable = true;
|
||||
}
|
||||
}
|
||||
|
||||
static void ixgbe_dcbnl_get_pfc_cfg(struct net_device *netdev, int priority,
|
||||
|
@ -129,6 +129,15 @@ static int ixgbe_get_settings(struct net_device *netdev,
|
||||
ecmd->advertising |= ADVERTISED_10000baseT_Full;
|
||||
if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_1GB_FULL)
|
||||
ecmd->advertising |= ADVERTISED_1000baseT_Full;
|
||||
/*
|
||||
* It's possible that phy.autoneg_advertised may not be
|
||||
* set yet. If so display what the default would be -
|
||||
* both 1G and 10G supported.
|
||||
*/
|
||||
if (!(ecmd->advertising & (ADVERTISED_1000baseT_Full |
|
||||
ADVERTISED_10000baseT_Full)))
|
||||
ecmd->advertising |= (ADVERTISED_10000baseT_Full |
|
||||
ADVERTISED_1000baseT_Full);
|
||||
|
||||
ecmd->port = PORT_TP;
|
||||
} else if (hw->phy.media_type == ixgbe_media_type_backplane) {
|
||||
@ -225,7 +234,16 @@ static void ixgbe_get_pauseparam(struct net_device *netdev,
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgbe_hw *hw = &adapter->hw;
|
||||
|
||||
pause->autoneg = (hw->fc.current_mode == ixgbe_fc_full ? 1 : 0);
|
||||
/*
|
||||
* Flow Control Autoneg isn't on if
|
||||
* - we didn't ask for it OR
|
||||
* - it failed, we know this by tx & rx being off
|
||||
*/
|
||||
if (hw->fc.disable_fc_autoneg ||
|
||||
(hw->fc.current_mode == ixgbe_fc_none))
|
||||
pause->autoneg = 0;
|
||||
else
|
||||
pause->autoneg = 1;
|
||||
|
||||
if (hw->fc.current_mode == ixgbe_fc_rx_pause) {
|
||||
pause->rx_pause = 1;
|
||||
@ -243,8 +261,12 @@ static int ixgbe_set_pauseparam(struct net_device *netdev,
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgbe_hw *hw = &adapter->hw;
|
||||
|
||||
if ((pause->autoneg == AUTONEG_ENABLE) ||
|
||||
(pause->rx_pause && pause->tx_pause))
|
||||
if (pause->autoneg != AUTONEG_ENABLE)
|
||||
hw->fc.disable_fc_autoneg = true;
|
||||
else
|
||||
hw->fc.disable_fc_autoneg = false;
|
||||
|
||||
if (pause->rx_pause && pause->tx_pause)
|
||||
hw->fc.requested_mode = ixgbe_fc_full;
|
||||
else if (pause->rx_pause && !pause->tx_pause)
|
||||
hw->fc.requested_mode = ixgbe_fc_rx_pause;
|
||||
@ -712,9 +734,10 @@ static int ixgbe_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgbe_ring *temp_ring;
|
||||
struct ixgbe_ring *temp_tx_ring, *temp_rx_ring;
|
||||
int i, err;
|
||||
u32 new_rx_count, new_tx_count;
|
||||
bool need_update = false;
|
||||
|
||||
if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending))
|
||||
return -EINVAL;
|
||||
@ -733,80 +756,94 @@ static int ixgbe_set_ringparam(struct net_device *netdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
temp_ring = kcalloc(adapter->num_tx_queues,
|
||||
sizeof(struct ixgbe_ring), GFP_KERNEL);
|
||||
if (!temp_ring)
|
||||
return -ENOMEM;
|
||||
|
||||
while (test_and_set_bit(__IXGBE_RESETTING, &adapter->state))
|
||||
msleep(1);
|
||||
|
||||
if (new_tx_count != adapter->tx_ring->count) {
|
||||
temp_tx_ring = kcalloc(adapter->num_tx_queues,
|
||||
sizeof(struct ixgbe_ring), GFP_KERNEL);
|
||||
if (!temp_tx_ring) {
|
||||
err = -ENOMEM;
|
||||
goto err_setup;
|
||||
}
|
||||
|
||||
if (new_tx_count != adapter->tx_ring_count) {
|
||||
memcpy(temp_tx_ring, adapter->tx_ring,
|
||||
adapter->num_tx_queues * sizeof(struct ixgbe_ring));
|
||||
for (i = 0; i < adapter->num_tx_queues; i++) {
|
||||
temp_ring[i].count = new_tx_count;
|
||||
err = ixgbe_setup_tx_resources(adapter, &temp_ring[i]);
|
||||
temp_tx_ring[i].count = new_tx_count;
|
||||
err = ixgbe_setup_tx_resources(adapter,
|
||||
&temp_tx_ring[i]);
|
||||
if (err) {
|
||||
while (i) {
|
||||
i--;
|
||||
ixgbe_free_tx_resources(adapter,
|
||||
&temp_ring[i]);
|
||||
&temp_tx_ring[i]);
|
||||
}
|
||||
goto err_setup;
|
||||
}
|
||||
temp_ring[i].v_idx = adapter->tx_ring[i].v_idx;
|
||||
temp_tx_ring[i].v_idx = adapter->tx_ring[i].v_idx;
|
||||
}
|
||||
if (netif_running(netdev))
|
||||
netdev->netdev_ops->ndo_stop(netdev);
|
||||
ixgbe_reset_interrupt_capability(adapter);
|
||||
ixgbe_napi_del_all(adapter);
|
||||
INIT_LIST_HEAD(&netdev->napi_list);
|
||||
kfree(adapter->tx_ring);
|
||||
adapter->tx_ring = temp_ring;
|
||||
temp_ring = NULL;
|
||||
adapter->tx_ring_count = new_tx_count;
|
||||
need_update = true;
|
||||
}
|
||||
|
||||
temp_ring = kcalloc(adapter->num_rx_queues,
|
||||
sizeof(struct ixgbe_ring), GFP_KERNEL);
|
||||
if (!temp_ring) {
|
||||
if (netif_running(netdev))
|
||||
netdev->netdev_ops->ndo_open(netdev);
|
||||
return -ENOMEM;
|
||||
temp_rx_ring = kcalloc(adapter->num_rx_queues,
|
||||
sizeof(struct ixgbe_ring), GFP_KERNEL);
|
||||
if ((!temp_rx_ring) && (need_update)) {
|
||||
for (i = 0; i < adapter->num_tx_queues; i++)
|
||||
ixgbe_free_tx_resources(adapter, &temp_tx_ring[i]);
|
||||
kfree(temp_tx_ring);
|
||||
err = -ENOMEM;
|
||||
goto err_setup;
|
||||
}
|
||||
|
||||
if (new_rx_count != adapter->rx_ring->count) {
|
||||
if (new_rx_count != adapter->rx_ring_count) {
|
||||
memcpy(temp_rx_ring, adapter->rx_ring,
|
||||
adapter->num_rx_queues * sizeof(struct ixgbe_ring));
|
||||
for (i = 0; i < adapter->num_rx_queues; i++) {
|
||||
temp_ring[i].count = new_rx_count;
|
||||
err = ixgbe_setup_rx_resources(adapter, &temp_ring[i]);
|
||||
temp_rx_ring[i].count = new_rx_count;
|
||||
err = ixgbe_setup_rx_resources(adapter,
|
||||
&temp_rx_ring[i]);
|
||||
if (err) {
|
||||
while (i) {
|
||||
i--;
|
||||
ixgbe_free_rx_resources(adapter,
|
||||
&temp_ring[i]);
|
||||
&temp_rx_ring[i]);
|
||||
}
|
||||
goto err_setup;
|
||||
}
|
||||
temp_ring[i].v_idx = adapter->rx_ring[i].v_idx;
|
||||
temp_rx_ring[i].v_idx = adapter->rx_ring[i].v_idx;
|
||||
}
|
||||
if (netif_running(netdev))
|
||||
netdev->netdev_ops->ndo_stop(netdev);
|
||||
ixgbe_reset_interrupt_capability(adapter);
|
||||
ixgbe_napi_del_all(adapter);
|
||||
INIT_LIST_HEAD(&netdev->napi_list);
|
||||
kfree(adapter->rx_ring);
|
||||
adapter->rx_ring = temp_ring;
|
||||
temp_ring = NULL;
|
||||
need_update = true;
|
||||
}
|
||||
|
||||
adapter->rx_ring_count = new_rx_count;
|
||||
/* if rings need to be updated, here's the place to do it in one shot */
|
||||
if (need_update) {
|
||||
if (netif_running(netdev))
|
||||
ixgbe_down(adapter);
|
||||
|
||||
/* tx */
|
||||
if (new_tx_count != adapter->tx_ring_count) {
|
||||
kfree(adapter->tx_ring);
|
||||
adapter->tx_ring = temp_tx_ring;
|
||||
temp_tx_ring = NULL;
|
||||
adapter->tx_ring_count = new_tx_count;
|
||||
}
|
||||
|
||||
/* rx */
|
||||
if (new_rx_count != adapter->rx_ring_count) {
|
||||
kfree(adapter->rx_ring);
|
||||
adapter->rx_ring = temp_rx_ring;
|
||||
temp_rx_ring = NULL;
|
||||
adapter->rx_ring_count = new_rx_count;
|
||||
}
|
||||
}
|
||||
|
||||
/* success! */
|
||||
err = 0;
|
||||
err_setup:
|
||||
ixgbe_init_interrupt_scheme(adapter);
|
||||
if (netif_running(netdev))
|
||||
netdev->netdev_ops->ndo_open(netdev);
|
||||
ixgbe_up(adapter);
|
||||
|
||||
err_setup:
|
||||
clear_bit(__IXGBE_RESETTING, &adapter->state);
|
||||
return err;
|
||||
}
|
||||
|
@ -187,15 +187,14 @@ static void ixgbe_unmap_and_free_tx_resource(struct ixgbe_adapter *adapter,
|
||||
struct ixgbe_tx_buffer
|
||||
*tx_buffer_info)
|
||||
{
|
||||
if (tx_buffer_info->dma) {
|
||||
pci_unmap_page(adapter->pdev, tx_buffer_info->dma,
|
||||
tx_buffer_info->length, PCI_DMA_TODEVICE);
|
||||
tx_buffer_info->dma = 0;
|
||||
}
|
||||
tx_buffer_info->dma = 0;
|
||||
if (tx_buffer_info->skb) {
|
||||
skb_dma_unmap(&adapter->pdev->dev, tx_buffer_info->skb,
|
||||
DMA_TO_DEVICE);
|
||||
dev_kfree_skb_any(tx_buffer_info->skb);
|
||||
tx_buffer_info->skb = NULL;
|
||||
}
|
||||
tx_buffer_info->time_stamp = 0;
|
||||
/* tx_buffer_info must be completely set up in the transmit path */
|
||||
}
|
||||
|
||||
@ -204,15 +203,11 @@ static inline bool ixgbe_check_tx_hang(struct ixgbe_adapter *adapter,
|
||||
unsigned int eop)
|
||||
{
|
||||
struct ixgbe_hw *hw = &adapter->hw;
|
||||
u32 head, tail;
|
||||
|
||||
/* Detect a transmit hang in hardware, this serializes the
|
||||
* check with the clearing of time_stamp and movement of eop */
|
||||
head = IXGBE_READ_REG(hw, tx_ring->head);
|
||||
tail = IXGBE_READ_REG(hw, tx_ring->tail);
|
||||
adapter->detect_tx_hung = false;
|
||||
if ((head != tail) &&
|
||||
tx_ring->tx_buffer_info[eop].time_stamp &&
|
||||
if (tx_ring->tx_buffer_info[eop].time_stamp &&
|
||||
time_after(jiffies, tx_ring->tx_buffer_info[eop].time_stamp + HZ) &&
|
||||
!(IXGBE_READ_REG(&adapter->hw, IXGBE_TFCS) & IXGBE_TFCS_TXOFF)) {
|
||||
/* detected Tx unit hang */
|
||||
@ -227,7 +222,8 @@ static inline bool ixgbe_check_tx_hang(struct ixgbe_adapter *adapter,
|
||||
" time_stamp <%lx>\n"
|
||||
" jiffies <%lx>\n",
|
||||
tx_ring->queue_index,
|
||||
head, tail,
|
||||
IXGBE_READ_REG(hw, tx_ring->head),
|
||||
IXGBE_READ_REG(hw, tx_ring->tail),
|
||||
tx_ring->next_to_use, eop,
|
||||
tx_ring->tx_buffer_info[eop].time_stamp, jiffies);
|
||||
return true;
|
||||
@ -2934,6 +2930,7 @@ err_tx_ring_allocation:
|
||||
**/
|
||||
static int ixgbe_set_interrupt_capability(struct ixgbe_adapter *adapter)
|
||||
{
|
||||
struct ixgbe_hw *hw = &adapter->hw;
|
||||
int err = 0;
|
||||
int vector, v_budget;
|
||||
|
||||
@ -2948,12 +2945,12 @@ static int ixgbe_set_interrupt_capability(struct ixgbe_adapter *adapter)
|
||||
|
||||
/*
|
||||
* At the same time, hardware can only support a maximum of
|
||||
* MAX_MSIX_COUNT vectors. With features such as RSS and VMDq,
|
||||
* we can easily reach upwards of 64 Rx descriptor queues and
|
||||
* 32 Tx queues. Thus, we cap it off in those rare cases where
|
||||
* the cpu count also exceeds our vector limit.
|
||||
* hw.mac->max_msix_vectors vectors. With features
|
||||
* such as RSS and VMDq, we can easily surpass the number of Rx and Tx
|
||||
* descriptor queues supported by our device. Thus, we cap it off in
|
||||
* those rare cases where the cpu count also exceeds our vector limit.
|
||||
*/
|
||||
v_budget = min(v_budget, MAX_MSIX_COUNT);
|
||||
v_budget = min(v_budget, (int)hw->mac.max_msix_vectors);
|
||||
|
||||
/* A failure in MSI-X entry allocation isn't fatal, but it does
|
||||
* mean we disable MSI-X capabilities of the adapter. */
|
||||
@ -3169,11 +3166,13 @@ static int __devinit ixgbe_sw_init(struct ixgbe_adapter *adapter)
|
||||
#endif
|
||||
|
||||
/* default flow control settings */
|
||||
hw->fc.requested_mode = ixgbe_fc_none;
|
||||
hw->fc.requested_mode = ixgbe_fc_full;
|
||||
hw->fc.current_mode = ixgbe_fc_full; /* init for ethtool output */
|
||||
hw->fc.high_water = IXGBE_DEFAULT_FCRTH;
|
||||
hw->fc.low_water = IXGBE_DEFAULT_FCRTL;
|
||||
hw->fc.pause_time = IXGBE_DEFAULT_FCPAUSE;
|
||||
hw->fc.send_xon = true;
|
||||
hw->fc.disable_fc_autoneg = false;
|
||||
|
||||
/* enable itr by default in dynamic mode */
|
||||
adapter->itr_setting = 1;
|
||||
@ -3489,10 +3488,10 @@ err_up:
|
||||
ixgbe_release_hw_control(adapter);
|
||||
ixgbe_free_irq(adapter);
|
||||
err_req_irq:
|
||||
ixgbe_free_all_rx_resources(adapter);
|
||||
err_setup_rx:
|
||||
ixgbe_free_all_tx_resources(adapter);
|
||||
ixgbe_free_all_rx_resources(adapter);
|
||||
err_setup_tx:
|
||||
ixgbe_free_all_tx_resources(adapter);
|
||||
ixgbe_reset(adapter);
|
||||
|
||||
return err;
|
||||
@ -4163,32 +4162,39 @@ static int ixgbe_tx_map(struct ixgbe_adapter *adapter,
|
||||
struct sk_buff *skb, unsigned int first)
|
||||
{
|
||||
struct ixgbe_tx_buffer *tx_buffer_info;
|
||||
unsigned int len = skb->len;
|
||||
unsigned int len = skb_headlen(skb);
|
||||
unsigned int offset = 0, size, count = 0, i;
|
||||
unsigned int nr_frags = skb_shinfo(skb)->nr_frags;
|
||||
unsigned int f;
|
||||
|
||||
len -= skb->data_len;
|
||||
dma_addr_t *map;
|
||||
|
||||
i = tx_ring->next_to_use;
|
||||
|
||||
if (skb_dma_map(&adapter->pdev->dev, skb, DMA_TO_DEVICE)) {
|
||||
dev_err(&adapter->pdev->dev, "TX DMA map failed\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
map = skb_shinfo(skb)->dma_maps;
|
||||
|
||||
while (len) {
|
||||
tx_buffer_info = &tx_ring->tx_buffer_info[i];
|
||||
size = min(len, (uint)IXGBE_MAX_DATA_PER_TXD);
|
||||
|
||||
tx_buffer_info->length = size;
|
||||
tx_buffer_info->dma = pci_map_single(adapter->pdev,
|
||||
skb->data + offset,
|
||||
size, PCI_DMA_TODEVICE);
|
||||
tx_buffer_info->dma = map[0] + offset;
|
||||
tx_buffer_info->time_stamp = jiffies;
|
||||
tx_buffer_info->next_to_watch = i;
|
||||
|
||||
len -= size;
|
||||
offset += size;
|
||||
count++;
|
||||
i++;
|
||||
if (i == tx_ring->count)
|
||||
i = 0;
|
||||
|
||||
if (len) {
|
||||
i++;
|
||||
if (i == tx_ring->count)
|
||||
i = 0;
|
||||
}
|
||||
}
|
||||
|
||||
for (f = 0; f < nr_frags; f++) {
|
||||
@ -4196,33 +4202,27 @@ static int ixgbe_tx_map(struct ixgbe_adapter *adapter,
|
||||
|
||||
frag = &skb_shinfo(skb)->frags[f];
|
||||
len = frag->size;
|
||||
offset = frag->page_offset;
|
||||
offset = 0;
|
||||
|
||||
while (len) {
|
||||
i++;
|
||||
if (i == tx_ring->count)
|
||||
i = 0;
|
||||
|
||||
tx_buffer_info = &tx_ring->tx_buffer_info[i];
|
||||
size = min(len, (uint)IXGBE_MAX_DATA_PER_TXD);
|
||||
|
||||
tx_buffer_info->length = size;
|
||||
tx_buffer_info->dma = pci_map_page(adapter->pdev,
|
||||
frag->page,
|
||||
offset,
|
||||
size,
|
||||
PCI_DMA_TODEVICE);
|
||||
tx_buffer_info->dma = map[f + 1] + offset;
|
||||
tx_buffer_info->time_stamp = jiffies;
|
||||
tx_buffer_info->next_to_watch = i;
|
||||
|
||||
len -= size;
|
||||
offset += size;
|
||||
count++;
|
||||
i++;
|
||||
if (i == tx_ring->count)
|
||||
i = 0;
|
||||
}
|
||||
}
|
||||
if (i == 0)
|
||||
i = tx_ring->count - 1;
|
||||
else
|
||||
i = i - 1;
|
||||
|
||||
tx_ring->tx_buffer_info[i].skb = skb;
|
||||
tx_ring->tx_buffer_info[first].next_to_watch = i;
|
||||
|
||||
@ -4388,13 +4388,19 @@ static int ixgbe_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
|
||||
(skb->ip_summed == CHECKSUM_PARTIAL))
|
||||
tx_flags |= IXGBE_TX_FLAGS_CSUM;
|
||||
|
||||
ixgbe_tx_queue(adapter, tx_ring, tx_flags,
|
||||
ixgbe_tx_map(adapter, tx_ring, skb, first),
|
||||
skb->len, hdr_len);
|
||||
count = ixgbe_tx_map(adapter, tx_ring, skb, first);
|
||||
|
||||
netdev->trans_start = jiffies;
|
||||
if (count) {
|
||||
ixgbe_tx_queue(adapter, tx_ring, tx_flags, count, skb->len,
|
||||
hdr_len);
|
||||
netdev->trans_start = jiffies;
|
||||
ixgbe_maybe_stop_tx(netdev, tx_ring, DESC_NEEDED);
|
||||
|
||||
ixgbe_maybe_stop_tx(netdev, tx_ring, DESC_NEEDED);
|
||||
} else {
|
||||
dev_kfree_skb_any(skb);
|
||||
tx_ring->tx_buffer_info[first].time_stamp = 0;
|
||||
tx_ring->next_to_use = first;
|
||||
}
|
||||
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
@ -4987,8 +4993,20 @@ static int ixgbe_notify_dca(struct notifier_block *nb, unsigned long event,
|
||||
|
||||
return ret_val ? NOTIFY_BAD : NOTIFY_DONE;
|
||||
}
|
||||
#endif /* CONFIG_IXGBE_DCA */
|
||||
|
||||
#endif /* CONFIG_IXGBE_DCA */
|
||||
#ifdef DEBUG
|
||||
/**
|
||||
* ixgbe_get_hw_dev_name - return device name string
|
||||
* used by hardware layer to print debugging information
|
||||
**/
|
||||
char *ixgbe_get_hw_dev_name(struct ixgbe_hw *hw)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = hw->back;
|
||||
return adapter->netdev->name;
|
||||
}
|
||||
|
||||
#endif
|
||||
module_exit(ixgbe_exit_module);
|
||||
|
||||
/* ixgbe_main.c */
|
||||
|
@ -2005,6 +2005,7 @@ struct ixgbe_fc_info {
|
||||
u16 pause_time; /* Flow Control Pause timer */
|
||||
bool send_xon; /* Flow control send XON */
|
||||
bool strict_ieee; /* Strict IEEE mode */
|
||||
bool disable_fc_autoneg; /* Turn off autoneg FC mode */
|
||||
enum ixgbe_fc_mode current_mode; /* FC mode in effect */
|
||||
enum ixgbe_fc_mode requested_mode; /* FC mode requested by caller */
|
||||
};
|
||||
|
@ -1,358 +0,0 @@
|
||||
/*
|
||||
This file contains the firmware of Seven of Diamonds from OSITECH.
|
||||
(Special thanks to Kevin MacPherson of OSITECH)
|
||||
|
||||
This software may be used and distributed according to the terms of
|
||||
the GNU General Public License, incorporated herein by reference.
|
||||
*/
|
||||
|
||||
static const u_char __Xilinx7OD[] = {
|
||||
0xFF, 0x04, 0xA0, 0x36, 0xF3, 0xEC, 0xFF, 0xFF, 0xFF, 0xDF, 0xFB, 0xFF,
|
||||
0xF3, 0xFF, 0xFF, 0xFF,
|
||||
0xEF, 0x3F, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x7F, 0xFE, 0xFF,
|
||||
0xCE, 0xFE, 0xFE, 0xFE,
|
||||
0xFE, 0xDE, 0xBD, 0xDD, 0xFD, 0xFF, 0xFD, 0xCF, 0xF7, 0xBF, 0x7F, 0xFF,
|
||||
0x7F, 0x3F, 0xFE, 0xBF,
|
||||
0xFF, 0xFF, 0xFF, 0xBC, 0xFF, 0xFF, 0xBD, 0xB5, 0x7F, 0x7F, 0xBF, 0xBF,
|
||||
0x7F, 0xFF, 0xEF, 0xFF,
|
||||
0xFF, 0xFF, 0xFB, 0xFF, 0xF7, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xDE,
|
||||
0xFE, 0xFE, 0xFA, 0xDE,
|
||||
0xBD, 0xFD, 0xED, 0xFD, 0xFD, 0xCF, 0xEF, 0xEF, 0xEF, 0xEF, 0xC7, 0xDF,
|
||||
0xDF, 0xDF, 0xDF, 0xDF,
|
||||
0xFF, 0x7E, 0xFE, 0xFD, 0x7D, 0x6D, 0xEE, 0xFE, 0x7C, 0xFB, 0xF4, 0xFB,
|
||||
0xCF, 0xDB, 0xDF, 0xFF,
|
||||
0xFF, 0xBB, 0x7F, 0xFF, 0x7F, 0xFF, 0xF7, 0xFF, 0x9E, 0xBF, 0x3B, 0xBF,
|
||||
0xBF, 0x7F, 0x7F, 0x7F,
|
||||
0x7E, 0x6F, 0xDF, 0xEF, 0xF5, 0xF6, 0xFD, 0xF6, 0xF5, 0xED, 0xEB, 0xFF,
|
||||
0xEF, 0xEF, 0xEF, 0x7E,
|
||||
0x7F, 0x7F, 0x6F, 0x7F, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xEF, 0xBF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x1F, 0x1F, 0xEE, 0xFF, 0xBC,
|
||||
0xB7, 0xFF, 0xDF, 0xFF,
|
||||
0xDF, 0xEF, 0x3B, 0xE3, 0xD3, 0xFF, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF,
|
||||
0xFF, 0xBA, 0xBF, 0x2D,
|
||||
0xDB, 0xBD, 0xFD, 0xDB, 0xDF, 0xFA, 0xFB, 0xFF, 0xEF, 0xFB, 0xDB, 0xF3,
|
||||
0xFF, 0xDF, 0xFD, 0x7F,
|
||||
0xEF, 0xFB, 0xFF, 0xFF, 0xBE, 0xBF, 0x27, 0xBA, 0xFE, 0xFB, 0xDF, 0xFF,
|
||||
0xF6, 0xFF, 0xFF, 0xEF,
|
||||
0xFB, 0xDB, 0xF3, 0xD9, 0x9A, 0x3F, 0xFF, 0xAF, 0xBF, 0xFF, 0xFF, 0xBE,
|
||||
0x3F, 0x37, 0xBD, 0x96,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0xFB, 0xF3, 0xF3, 0xEB, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xF7, 0xFA, 0xBC, 0xAE, 0xFE, 0xBE, 0xFE, 0xBB, 0x7F, 0xFD, 0xFF,
|
||||
0x7F, 0xEF, 0xF7, 0xFB,
|
||||
0xBB, 0xD7, 0xF7, 0x7F, 0xFF, 0xF7, 0xFF, 0xFF, 0xF7, 0xBC, 0xED, 0xFD,
|
||||
0xBD, 0x9D, 0x7D, 0x7B,
|
||||
0xFB, 0x7B, 0x7B, 0xFB, 0xAF, 0xFF, 0xFE, 0xFD, 0xFD, 0xFE, 0xFE, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xF7,
|
||||
0xAA, 0xB9, 0xBF, 0x8F, 0xBF, 0xDF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xCF,
|
||||
0xFB, 0xEB, 0xCB, 0xEB,
|
||||
0xEE, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xFF, 0x3E, 0x33, 0x3F, 0x1C, 0x7C,
|
||||
0xFC, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xCF, 0xD3, 0xF3, 0xE3, 0xF3, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xEB, 0xFE, 0x35,
|
||||
0x3F, 0x3D, 0xFD, 0xFD, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xEF, 0x6F, 0xE3,
|
||||
0xE3, 0xE3, 0xEF, 0xFF,
|
||||
0xFF, 0xDF, 0xFF, 0xFF, 0xF7, 0xFE, 0x3E, 0x5E, 0xFE, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFD, 0xFF, 0xFF,
|
||||
0xAF, 0xCF, 0xF2, 0xCB, 0xCF, 0x8E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
|
||||
0xFC, 0x3E, 0x1F, 0x9E,
|
||||
0xAD, 0xFD, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xEF, 0xFF, 0xB3, 0xF7, 0xE7,
|
||||
0xF7, 0xFA, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xEE, 0xEB, 0xAB, 0xAF, 0x9F, 0xE3, 0x7F, 0xFF, 0xDE,
|
||||
0xFF, 0x7F, 0xEE, 0xFF,
|
||||
0xFF, 0xFB, 0x3A, 0xFA, 0xFF, 0xF2, 0x77, 0xFF, 0xFF, 0xF7, 0xFE, 0xFF,
|
||||
0xFE, 0xBD, 0xAE, 0xDE,
|
||||
0x7D, 0x7D, 0xFD, 0xFF, 0xBF, 0xEE, 0xFF, 0xFD, 0xFF, 0xDB, 0xFB, 0xFF,
|
||||
0xF7, 0xEF, 0xFB, 0xFF,
|
||||
0xFF, 0xFE, 0xFF, 0x2D, 0xAF, 0xB9, 0xFD, 0x79, 0xFB, 0xFA, 0xFF, 0xBF,
|
||||
0xEF, 0xFF, 0xFF, 0x91,
|
||||
0xFA, 0xFB, 0xDF, 0xF7, 0xF7, 0xFF, 0xFF, 0xFF, 0xFC, 0xCF, 0x37, 0xBF,
|
||||
0xBF, 0xFF, 0x7F, 0x7F,
|
||||
0xFF, 0xFF, 0xFF, 0xAF, 0xFF, 0xFF, 0xF3, 0xFB, 0xFB, 0xFF, 0xF5, 0xEF,
|
||||
0xFF, 0xFF, 0xF7, 0xFA,
|
||||
0xFF, 0xFF, 0xEE, 0xFA, 0xFE, 0xFB, 0x55, 0xDD, 0xFF, 0x7F, 0xAF, 0xFE,
|
||||
0xFF, 0xFB, 0xFB, 0xF5,
|
||||
0xFF, 0xF7, 0xEF, 0xFF, 0xFF, 0xFF, 0xBE, 0xBD, 0xBD, 0xBD, 0xBD, 0x7D,
|
||||
0x7B, 0x7B, 0x7B, 0x7B,
|
||||
0xFB, 0xAE, 0xFF, 0xFD, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xF7, 0xDA, 0xB7, 0x61,
|
||||
0xFF, 0xB9, 0x59, 0xF3, 0x73, 0xF3, 0xDF, 0x7F, 0x6F, 0xDF, 0xEF, 0xF7,
|
||||
0xEB, 0xEB, 0xD7, 0xFF,
|
||||
0xD7, 0xFF, 0xFF, 0xF7, 0xFE, 0x7F, 0xFB, 0x3E, 0x38, 0x73, 0xF6, 0x7F,
|
||||
0xFC, 0xFF, 0xFF, 0xCF,
|
||||
0xFF, 0xB7, 0xFB, 0xB3, 0xB3, 0x67, 0xFF, 0xE7, 0xFD, 0xFF, 0xEF, 0xF6,
|
||||
0x7F, 0xB7, 0xBC, 0xF5,
|
||||
0x7B, 0xF6, 0xF7, 0xF5, 0xFF, 0xFF, 0xEF, 0xFF, 0xF7, 0xFF, 0xF7, 0xCE,
|
||||
0xE7, 0xFF, 0x9F, 0xFF,
|
||||
0xFF, 0xF5, 0xFE, 0x7D, 0xFF, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xEF, 0xFF, 0xF6,
|
||||
0xCB, 0xDB, 0xEE, 0xFE, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xBE,
|
||||
0x1E, 0x3E, 0xFE, 0xFF,
|
||||
0x7D, 0xFE, 0xFF, 0xFF, 0xEF, 0xBF, 0xE7, 0xFF, 0xE3, 0xE3, 0xFF, 0xDF,
|
||||
0xE7, 0xFF, 0xFF, 0xFF,
|
||||
0xB8, 0xEF, 0xB7, 0x2F, 0xEE, 0xFF, 0xDF, 0xFF, 0xBF, 0xFF, 0x7F, 0xEF,
|
||||
0xEB, 0xBF, 0xA3, 0xD3,
|
||||
0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xBE, 0xFD, 0x3F, 0xCF, 0xFD,
|
||||
0xFB, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xAF, 0xFB, 0xBF, 0xBB, 0xBF, 0xDB, 0xFD, 0xFB, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0x3E, 0xFE,
|
||||
0x3F, 0xBA, 0xBA, 0xFE, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xEF, 0xC3, 0x7F,
|
||||
0xB2, 0x9B, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x3C, 0xFF, 0x3F, 0x3C, 0xFF, 0xFE, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xAF, 0xF3, 0xFE, 0xF3, 0xE3, 0xEB, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xF7,
|
||||
0x9A, 0xFE, 0xAF, 0x9E,
|
||||
0xBE, 0xFE, 0xFF, 0xDF, 0xFF, 0xFF, 0x7B, 0xEF, 0xF7, 0xBF, 0xFB, 0xFB,
|
||||
0xFB, 0xFF, 0xFF, 0x7F,
|
||||
0xFF, 0xFF, 0xFF, 0xBC, 0xBD, 0xFD, 0xBD, 0xDD, 0x7D, 0x7B, 0x7B, 0x7B,
|
||||
0x7B, 0xFB, 0xAE, 0xFF,
|
||||
0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xF7, 0x9A, 0xFF,
|
||||
0x9F, 0xFF, 0xAF, 0xEF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xCF, 0xF3, 0xFF, 0xEB, 0xFF, 0xEB, 0xFF,
|
||||
0xFF, 0xBF, 0xFF, 0xFF,
|
||||
0xEF, 0xFE, 0xFF, 0x37, 0xFC, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xCF, 0xEF, 0xFD, 0xF3,
|
||||
0xFF, 0xEE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 0xFD, 0x2F, 0xFD,
|
||||
0xFF, 0xFD, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xEF, 0xCF, 0xFF, 0xF3, 0xBF, 0x69, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFE,
|
||||
0xFB, 0x9F, 0xFF, 0xBF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x87,
|
||||
0xFE, 0xDA, 0xEF, 0xCF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xEF, 0xBF, 0xEF, 0xEF, 0xFD,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xEF, 0xFD, 0xFF, 0x7B, 0xFF, 0xEB, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xEB, 0xF8, 0xFF, 0xEF,
|
||||
0xAF, 0xFF, 0xFF, 0xBD, 0xFF, 0xFF, 0xFF, 0x7F, 0xEE, 0x7F, 0xEF, 0xFF,
|
||||
0xBB, 0xFF, 0xBF, 0xFB,
|
||||
0xFF, 0xFF, 0xFF, 0xF7, 0xF6, 0xFB, 0xBD, 0xFD, 0xDD, 0xF5, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xAF,
|
||||
0xFF, 0x5F, 0xF5, 0xDF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6,
|
||||
0xF3, 0xFF, 0xDE, 0xFE,
|
||||
0xEF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xDE, 0xDF, 0x5F, 0xDF,
|
||||
0xFD, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xAF, 0xFF, 0xFF,
|
||||
0xEF, 0xED, 0xFF, 0xDF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xDA, 0xBD, 0xBE,
|
||||
0xAE, 0xFE, 0x7F, 0xFD,
|
||||
0xDF, 0xFF, 0xFF, 0x7F, 0xEF, 0xFF, 0xFB, 0xFB, 0xFB, 0x7F, 0xF7, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xF7,
|
||||
0xBC, 0xFD, 0xBD, 0xBD, 0xBD, 0xFD, 0x7B, 0x7B, 0x7B, 0x7B, 0xFB, 0xAE,
|
||||
0xFF, 0xFF, 0xFD, 0xFF,
|
||||
0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x9F, 0xBF, 0xBF, 0xCF,
|
||||
0x7F, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xAF, 0xFF, 0xEB, 0xEB, 0xEB, 0xFF, 0xD7, 0xFE, 0xFF, 0xFF,
|
||||
0xBF, 0xE7, 0xFE, 0xBF,
|
||||
0x7F, 0xFC, 0xFF, 0xFF, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0xFF, 0xFB,
|
||||
0xFB, 0xFF, 0xFF, 0xDD,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xBD, 0xDF, 0x9D, 0xFD, 0xDF, 0xB9,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xEF, 0xFF, 0xFB, 0xEF, 0xEB, 0xFF, 0xDE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xF6, 0x9F, 0xFF, 0xFC,
|
||||
0xFE, 0xFB, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xDF, 0xFA, 0xCD, 0xCF,
|
||||
0xBF, 0x9F, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xF7, 0xFE, 0xBF, 0xFF, 0xDF, 0xEF, 0x5F, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0x7F, 0x6F, 0xFF,
|
||||
0xBB, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0xFF,
|
||||
0x5F, 0xFF, 0xBF, 0xBF,
|
||||
0xF9, 0xFF, 0xFF, 0xFF, 0x7F, 0x6E, 0x7B, 0xFF, 0xEF, 0xFD, 0xEB, 0xDF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xF7, 0xB6, 0x3E, 0xFC, 0xFD, 0xBF, 0x7E, 0xFB, 0xFF, 0xFF, 0xFF, 0xF7,
|
||||
0xEF, 0xF7, 0xF3, 0xF7,
|
||||
0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 0x35, 0x79, 0xFF,
|
||||
0xBF, 0xFC, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xEF, 0xFB, 0x53, 0xDF, 0xFF, 0xEB, 0xBF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xBC,
|
||||
0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xF5,
|
||||
0xFF, 0xF7, 0xFF, 0xFB,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xAA, 0xEE, 0xFE, 0x3F, 0x7D,
|
||||
0xFD, 0xFF, 0xFF, 0xFF,
|
||||
0x7F, 0xAF, 0x77, 0xFB, 0xFB, 0xFF, 0xFB, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xF7, 0xBE, 0xBD, 0xBD,
|
||||
0xBD, 0xBD, 0xFD, 0x7B, 0x7B, 0x7B, 0x7B, 0xFB, 0xAE, 0xFF, 0xEF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFC,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x9A, 0xD9, 0xB8, 0xFF, 0xFF, 0x79, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xCF,
|
||||
0xFB, 0xFF, 0xEB, 0xFF, 0xEB, 0xD7, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xDE,
|
||||
0xF8, 0xFB, 0xFE, 0x3F,
|
||||
0xFB, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xAD, 0xBF, 0xFA, 0xFF, 0x73,
|
||||
0xDF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0x3A, 0xF5, 0xB7, 0xFC, 0x3F, 0xF9, 0xFD, 0xFF, 0xFF, 0xFF,
|
||||
0x7F, 0xEF, 0xF3, 0xFF,
|
||||
0xBF, 0xFE, 0xF3, 0x9F, 0xFE, 0xFF, 0xFF, 0xFF, 0xF7, 0x3E, 0xFF, 0xFF,
|
||||
0xFF, 0xBF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xD3, 0xFE, 0xDB, 0xFF, 0xDB, 0xDF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x3E, 0xFF, 0xBF, 0xFF, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F,
|
||||
0xF3, 0xFF, 0xED, 0xFF,
|
||||
0xF7, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xF6, 0x3C, 0xFE, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0x9F, 0xEF, 0xEF, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0x7E, 0xBF,
|
||||
0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xEF, 0xDF, 0xF1,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x3E, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xBF,
|
||||
0xEF, 0xFD, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF,
|
||||
0xFC, 0x3E, 0xFE, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2E, 0xEF, 0xF3, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xF7, 0xBA, 0xBE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0x7F, 0xAF, 0xFB,
|
||||
0xFB, 0xFD, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF2, 0xD6, 0xED,
|
||||
0xBD, 0xBD, 0xBD, 0x7D,
|
||||
0x7B, 0x7B, 0x7B, 0x7B, 0xFB, 0xAF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0x92, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
|
||||
0xAF, 0xEB, 0xEB, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFE, 0x2E, 0xFE, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0x4F, 0xEF, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFE,
|
||||
0x3C, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xCE,
|
||||
0xC3, 0xFD, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x5D, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xEF, 0xCF, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xF7, 0xEE, 0x3E, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xEF, 0xDF, 0xE2, 0xFF,
|
||||
0xFF, 0xFF, 0xFB, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xBE, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0x7F, 0xEE,
|
||||
0x5F, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E,
|
||||
0x7D, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xF3, 0xFB, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xBF, 0xF7, 0x36, 0xBE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xEF, 0xD3, 0xF6,
|
||||
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7F, 0xEE,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xEF, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xBA, 0xBE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE,
|
||||
0xFB, 0xFA, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xD6, 0xFD, 0xBD, 0xBD, 0xBD,
|
||||
0x7D, 0x7B, 0x7B, 0x7B,
|
||||
0x7B, 0xFB, 0xAE, 0xFF, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xF7, 0xBA, 0xBF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xEF, 0xEB, 0x6B,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFE, 0xBE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x4F, 0xEF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF,
|
||||
0x3E, 0x6E, 0xFC, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xC3, 0xC9, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0x3E, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xEF, 0xFB,
|
||||
0xD5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE,
|
||||
0xFE, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0xEF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFB,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xF6, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE,
|
||||
0xEF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFE, 0xFF, 0xF7, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0x7F, 0xFA, 0xEF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xE7, 0xFF, 0xFE,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xEF, 0xBF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0xFF, 0xFC, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0x7F,
|
||||
0xFE, 0xAE, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7,
|
||||
0xF7, 0xFA, 0xFF, 0xFD,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xAF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xF7, 0xBE, 0xBD, 0xBD, 0xBD, 0xBD, 0x7D, 0x7B, 0x7B,
|
||||
0x7B, 0x7B, 0xFB, 0xAF,
|
||||
0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xE7, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xCF, 0xFE, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xDF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xEF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xE7, 0xF2, 0xFC,
|
||||
0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xAE, 0xEF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x7E, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xEF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF,
|
||||
0xFE, 0xFE, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xEF, 0xDD, 0xFE, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xAF, 0xEF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xFE,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFA, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xF6, 0x9C, 0xBD, 0xBD, 0xBD, 0xBD, 0x7D, 0x7B, 0x7B, 0x7B, 0x7B, 0xFB,
|
||||
0xAE, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x7A, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xDF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0x6F, 0xEF, 0xF7, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xF7, 0xFE,
|
||||
0xFE, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xEB,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x9E, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xEF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFE, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xEF, 0xCB, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFD,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xEF,
|
||||
0xEF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFB, 0xAF, 0x7F, 0xFF,
|
||||
0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xEF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xBF, 0xFF,
|
||||
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0x7F, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xF7, 0xBC, 0xBD,
|
||||
0xBD, 0xBD, 0xBD, 0x7D, 0x7B, 0x7B, 0x7B, 0x7B, 0xFB, 0xAF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0x7F,
|
||||
0xAF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF,
|
||||
0xFE, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF,
|
||||
0xFF, 0xFF, 0xEF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xBF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xEF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFE, 0xFF, 0x9F, 0x9F,
|
||||
0x9F, 0x3F, 0x3F, 0x3F,
|
||||
0x3F, 0x3F, 0xFF, 0xEF, 0xDF, 0xDF, 0xDF, 0xDF, 0xCF, 0xB7, 0xBF, 0xBF,
|
||||
0xBF, 0xBF, 0xFF, 0xBC,
|
||||
0xB9, 0x9D, 0xBD, 0xBD, 0x7D, 0x7B, 0x7B, 0x7B, 0x7B, 0xFB, 0xEF, 0xD7,
|
||||
0xF5, 0xF3, 0xF1, 0xD1,
|
||||
0x65, 0xE3, 0xE3, 0xE3, 0xA3, 0xFF, 0xFE, 0x7F, 0xFE, 0xDE, 0xDE, 0xFF,
|
||||
0xBD, 0xBD, 0xBD, 0xBD,
|
||||
0xDF, 0xEF, 0xFB, 0xF7, 0xF3, 0xF3, 0xF3, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7,
|
||||
0xFB, 0xFE, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||
|
||||
};
|
@ -42,6 +42,7 @@
|
||||
#include <linux/ethtool.h>
|
||||
#include <linux/mii.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/firmware.h>
|
||||
|
||||
#include <pcmcia/cs_types.h>
|
||||
#include <pcmcia/cs.h>
|
||||
@ -55,17 +56,18 @@
|
||||
#include <asm/system.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
/* Ositech Seven of Diamonds firmware */
|
||||
#include "ositech.h"
|
||||
|
||||
/*====================================================================*/
|
||||
|
||||
static const char *if_names[] = { "auto", "10baseT", "10base2"};
|
||||
|
||||
/* Firmware name */
|
||||
#define FIRMWARE_NAME "ositech/Xilinx7OD.bin"
|
||||
|
||||
/* Module parameters */
|
||||
|
||||
MODULE_DESCRIPTION("SMC 91c92 series PCMCIA ethernet driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_FIRMWARE(FIRMWARE_NAME);
|
||||
|
||||
#define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0)
|
||||
|
||||
@ -771,6 +773,26 @@ static int osi_config(struct pcmcia_device *link)
|
||||
return i;
|
||||
}
|
||||
|
||||
static int osi_load_firmware(struct pcmcia_device *link)
|
||||
{
|
||||
const struct firmware *fw;
|
||||
int i, err;
|
||||
|
||||
err = request_firmware(&fw, FIRMWARE_NAME, &link->dev);
|
||||
if (err) {
|
||||
pr_err("Failed to load firmware \"%s\"\n", FIRMWARE_NAME);
|
||||
return err;
|
||||
}
|
||||
|
||||
/* Download the Seven of Diamonds firmware */
|
||||
for (i = 0; i < fw->size; i++) {
|
||||
outb(fw->data[i], link->io.BasePort1 + 2);
|
||||
udelay(50);
|
||||
}
|
||||
release_firmware(fw);
|
||||
return err;
|
||||
}
|
||||
|
||||
static int osi_setup(struct pcmcia_device *link, u_short manfid, u_short cardid)
|
||||
{
|
||||
struct net_device *dev = link->priv;
|
||||
@ -811,11 +833,9 @@ static int osi_setup(struct pcmcia_device *link, u_short manfid, u_short cardid)
|
||||
(cardid == PRODID_OSITECH_SEVEN)) ||
|
||||
((manfid == MANFID_PSION) &&
|
||||
(cardid == PRODID_PSION_NET100))) {
|
||||
/* Download the Seven of Diamonds firmware */
|
||||
for (i = 0; i < sizeof(__Xilinx7OD); i++) {
|
||||
outb(__Xilinx7OD[i], link->io.BasePort1+2);
|
||||
udelay(50);
|
||||
}
|
||||
rc = osi_load_firmware(link);
|
||||
if (rc)
|
||||
goto free_cfg_mem;
|
||||
} else if (manfid == MANFID_OSITECH) {
|
||||
/* Make sure both functions are powered up */
|
||||
set_bits(0x300, link->io.BasePort1 + OSITECH_AUI_PWR);
|
||||
@ -862,10 +882,10 @@ static int smc91c92_resume(struct pcmcia_device *link)
|
||||
(smc->cardid == PRODID_OSITECH_SEVEN)) ||
|
||||
((smc->manfid == MANFID_PSION) &&
|
||||
(smc->cardid == PRODID_PSION_NET100))) {
|
||||
/* Download the Seven of Diamonds firmware */
|
||||
for (i = 0; i < sizeof(__Xilinx7OD); i++) {
|
||||
outb(__Xilinx7OD[i], link->io.BasePort1+2);
|
||||
udelay(50);
|
||||
i = osi_load_firmware(link);
|
||||
if (i) {
|
||||
pr_err("smc91c92_cs: Failed to load firmware\n");
|
||||
return i;
|
||||
}
|
||||
}
|
||||
if (link->open) {
|
||||
|
@ -33,7 +33,6 @@
|
||||
#include <linux/mm.h>
|
||||
#include <linux/vmalloc.h>
|
||||
|
||||
#include <linux/version.h>
|
||||
|
||||
#include "qlge.h"
|
||||
|
||||
|
@ -2075,8 +2075,7 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
if (!tp->pcie_cap && netif_msg_probe(tp))
|
||||
dev_info(&pdev->dev, "no PCI Express capability\n");
|
||||
|
||||
/* Unneeded ? Don't mess with Mrs. Murphy. */
|
||||
rtl8169_irq_mask_and_ack(ioaddr);
|
||||
RTL_W16(IntrMask, 0x0000);
|
||||
|
||||
/* Soft reset the chip. */
|
||||
RTL_W8(ChipCmd, CmdReset);
|
||||
@ -2088,6 +2087,8 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
msleep_interruptible(1);
|
||||
}
|
||||
|
||||
RTL_W16(IntrStatus, 0xffff);
|
||||
|
||||
/* Identify chip attached to board */
|
||||
rtl8169_get_mac_version(tp, ioaddr);
|
||||
|
||||
|
@ -448,6 +448,9 @@ static void efx_init_channels(struct efx_nic *efx)
|
||||
|
||||
WARN_ON(channel->rx_pkt != NULL);
|
||||
efx_rx_strategy(channel);
|
||||
|
||||
netif_napi_add(channel->napi_dev, &channel->napi_str,
|
||||
efx_poll, napi_weight);
|
||||
}
|
||||
}
|
||||
|
||||
@ -462,10 +465,6 @@ static void efx_start_channel(struct efx_channel *channel)
|
||||
|
||||
EFX_LOG(channel->efx, "starting chan %d\n", channel->channel);
|
||||
|
||||
if (!(channel->efx->net_dev->flags & IFF_UP))
|
||||
netif_napi_add(channel->napi_dev, &channel->napi_str,
|
||||
efx_poll, napi_weight);
|
||||
|
||||
/* The interrupt handler for this channel may set work_pending
|
||||
* as soon as we enable it. Make sure it's cleared before
|
||||
* then. Similarly, make sure it sees the enabled flag set. */
|
||||
|
@ -1908,7 +1908,7 @@ static int tc35815_poll(struct napi_struct *napi, int budget)
|
||||
do {
|
||||
tc_writel(status, &tr->Int_Src); /* write to clear */
|
||||
|
||||
handled = tc35815_do_interrupt(dev, status, limit);
|
||||
handled = tc35815_do_interrupt(dev, status, budget - received);
|
||||
if (handled >= 0) {
|
||||
received += handled;
|
||||
if (received >= budget)
|
||||
|
@ -62,6 +62,7 @@
|
||||
#include <linux/pci.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/firmware.h>
|
||||
|
||||
#include <net/checksum.h>
|
||||
|
||||
@ -73,8 +74,10 @@
|
||||
static char version[] __devinitdata =
|
||||
"3c359.c v1.2.0 2/17/01 - Mike Phillips (mikep@linuxtr.net)" ;
|
||||
|
||||
#define FW_NAME "3com/3C359.bin"
|
||||
MODULE_AUTHOR("Mike Phillips <mikep@linuxtr.net>") ;
|
||||
MODULE_DESCRIPTION("3Com 3C359 Velocity XL Token Ring Adapter Driver \n") ;
|
||||
MODULE_FIRMWARE(FW_NAME);
|
||||
|
||||
/* Module paramters */
|
||||
|
||||
@ -114,8 +117,6 @@ MODULE_PARM_DESC(message_level, "3c359: Level of reported messages") ;
|
||||
* will be stuck with 1555 lines of hex #'s in the code.
|
||||
*/
|
||||
|
||||
#include "3c359_microcode.h"
|
||||
|
||||
static struct pci_device_id xl_pci_tbl[] =
|
||||
{
|
||||
{PCI_VENDOR_ID_3COM,PCI_DEVICE_ID_3COM_3C359, PCI_ANY_ID, PCI_ANY_ID, },
|
||||
@ -364,10 +365,30 @@ static int __devinit xl_probe(struct pci_dev *pdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int xl_init_firmware(struct xl_private *xl_priv)
|
||||
{
|
||||
int err;
|
||||
|
||||
err = request_firmware(&xl_priv->fw, FW_NAME, &xl_priv->pdev->dev);
|
||||
if (err) {
|
||||
printk(KERN_ERR "Failed to load firmware \"%s\"\n", FW_NAME);
|
||||
return err;
|
||||
}
|
||||
|
||||
if (xl_priv->fw->size < 16) {
|
||||
printk(KERN_ERR "Bogus length %zu in \"%s\"\n",
|
||||
xl_priv->fw->size, FW_NAME);
|
||||
release_firmware(xl_priv->fw);
|
||||
err = -EINVAL;
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static int __devinit xl_init(struct net_device *dev)
|
||||
{
|
||||
struct xl_private *xl_priv = netdev_priv(dev);
|
||||
int err;
|
||||
|
||||
printk(KERN_INFO "%s \n", version);
|
||||
printk(KERN_INFO "%s: I/O at %hx, MMIO at %p, using irq %d\n",
|
||||
@ -375,8 +396,11 @@ static int __devinit xl_init(struct net_device *dev)
|
||||
|
||||
spin_lock_init(&xl_priv->xl_lock) ;
|
||||
|
||||
return xl_hw_reset(dev) ;
|
||||
err = xl_init_firmware(xl_priv);
|
||||
if (err == 0)
|
||||
err = xl_hw_reset(dev);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
@ -386,7 +410,7 @@ static int __devinit xl_init(struct net_device *dev)
|
||||
*/
|
||||
|
||||
static int xl_hw_reset(struct net_device *dev)
|
||||
{
|
||||
{
|
||||
struct xl_private *xl_priv = netdev_priv(dev);
|
||||
u8 __iomem *xl_mmio = xl_priv->xl_mmio ;
|
||||
unsigned long t ;
|
||||
@ -396,6 +420,9 @@ static int xl_hw_reset(struct net_device *dev)
|
||||
u16 start ;
|
||||
int j ;
|
||||
|
||||
if (xl_priv->fw == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* Reset the card. If the card has got the microcode on board, we have
|
||||
* missed the initialization interrupt, so we must always do this.
|
||||
@ -458,25 +485,30 @@ static int xl_hw_reset(struct net_device *dev)
|
||||
|
||||
/*
|
||||
* Now to write the microcode into the shared ram
|
||||
* The microcode must finish at position 0xFFFF, so we must subtract
|
||||
* to get the start position for the code
|
||||
* The microcode must finish at position 0xFFFF,
|
||||
* so we must subtract to get the start position for the code
|
||||
*
|
||||
* Looks strange but ensures compiler only uses
|
||||
* 16 bit unsigned int
|
||||
*/
|
||||
start = (0xFFFF - (xl_priv->fw->size) + 1) ;
|
||||
|
||||
start = (0xFFFF - (mc_size) + 1 ) ; /* Looks strange but ensures compiler only uses 16 bit unsigned int for this */
|
||||
|
||||
printk(KERN_INFO "3C359: Uploading Microcode: ");
|
||||
|
||||
for (i = start, j = 0; j < mc_size; i++, j++) {
|
||||
writel(MEM_BYTE_WRITE | 0XD0000 | i, xl_mmio + MMIO_MAC_ACCESS_CMD) ;
|
||||
writeb(microcode[j],xl_mmio + MMIO_MACDATA) ;
|
||||
|
||||
for (i = start, j = 0; j < xl_priv->fw->size; i++, j++) {
|
||||
writel(MEM_BYTE_WRITE | 0XD0000 | i,
|
||||
xl_mmio + MMIO_MAC_ACCESS_CMD);
|
||||
writeb(xl_priv->fw->data[j], xl_mmio + MMIO_MACDATA);
|
||||
if (j % 1024 == 0)
|
||||
printk(".");
|
||||
}
|
||||
printk("\n") ;
|
||||
|
||||
for (i=0;i < 16; i++) {
|
||||
writel( (MEM_BYTE_WRITE | 0xDFFF0) + i, xl_mmio + MMIO_MAC_ACCESS_CMD) ;
|
||||
writeb(microcode[mc_size - 16 + i], xl_mmio + MMIO_MACDATA) ;
|
||||
for (i = 0; i < 16; i++) {
|
||||
writel((MEM_BYTE_WRITE | 0xDFFF0) + i,
|
||||
xl_mmio + MMIO_MAC_ACCESS_CMD);
|
||||
writeb(xl_priv->fw->data[xl_priv->fw->size - 16 + i],
|
||||
xl_mmio + MMIO_MACDATA);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1782,6 +1814,7 @@ static void __devexit xl_remove_one (struct pci_dev *pdev)
|
||||
struct net_device *dev = pci_get_drvdata(pdev);
|
||||
struct xl_private *xl_priv=netdev_priv(dev);
|
||||
|
||||
release_firmware(xl_priv->fw);
|
||||
unregister_netdev(dev);
|
||||
iounmap(xl_priv->xl_mmio) ;
|
||||
pci_release_regions(pdev) ;
|
||||
|
@ -284,5 +284,8 @@ struct xl_private {
|
||||
u8 xl_laa[6] ;
|
||||
u32 rx_ring_dma_addr ;
|
||||
u32 tx_ring_dma_addr ;
|
||||
|
||||
/* firmware section */
|
||||
const struct firmware *fw;
|
||||
};
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -24,7 +24,6 @@
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/fsl_devices.h>
|
||||
#include <linux/mii.h>
|
||||
#include <linux/phy.h>
|
||||
#include <linux/workqueue.h>
|
||||
@ -223,10 +222,10 @@ static struct sk_buff *get_new_skb(struct ucc_geth_private *ugeth,
|
||||
(((unsigned)skb->data) & (UCC_GETH_RX_DATA_BUF_ALIGNMENT -
|
||||
1)));
|
||||
|
||||
skb->dev = ugeth->dev;
|
||||
skb->dev = ugeth->ndev;
|
||||
|
||||
out_be32(&((struct qe_bd __iomem *)bd)->buf,
|
||||
dma_map_single(&ugeth->dev->dev,
|
||||
dma_map_single(ugeth->dev,
|
||||
skb->data,
|
||||
ugeth->ug_info->uf_info.max_rx_buf_length +
|
||||
UCC_GETH_RX_DATA_BUF_ALIGNMENT,
|
||||
@ -1872,7 +1871,7 @@ static void ucc_geth_memclean(struct ucc_geth_private *ugeth)
|
||||
continue;
|
||||
for (j = 0; j < ugeth->ug_info->bdRingLenTx[i]; j++) {
|
||||
if (ugeth->tx_skbuff[i][j]) {
|
||||
dma_unmap_single(&ugeth->dev->dev,
|
||||
dma_unmap_single(ugeth->dev,
|
||||
in_be32(&((struct qe_bd __iomem *)bd)->buf),
|
||||
(in_be32((u32 __iomem *)bd) &
|
||||
BD_LENGTH_MASK),
|
||||
@ -1900,7 +1899,7 @@ static void ucc_geth_memclean(struct ucc_geth_private *ugeth)
|
||||
bd = ugeth->p_rx_bd_ring[i];
|
||||
for (j = 0; j < ugeth->ug_info->bdRingLenRx[i]; j++) {
|
||||
if (ugeth->rx_skbuff[i][j]) {
|
||||
dma_unmap_single(&ugeth->dev->dev,
|
||||
dma_unmap_single(ugeth->dev,
|
||||
in_be32(&((struct qe_bd __iomem *)bd)->buf),
|
||||
ugeth->ug_info->
|
||||
uf_info.max_rx_buf_length +
|
||||
@ -3071,7 +3070,7 @@ static int ucc_geth_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
|
||||
/* set up the buffer descriptor */
|
||||
out_be32(&((struct qe_bd __iomem *)bd)->buf,
|
||||
dma_map_single(&ugeth->dev->dev, skb->data,
|
||||
dma_map_single(ugeth->dev, skb->data,
|
||||
skb->len, DMA_TO_DEVICE));
|
||||
|
||||
/* printk(KERN_DEBUG"skb->data is 0x%x\n",skb->data); */
|
||||
@ -3127,7 +3126,7 @@ static int ucc_geth_rx(struct ucc_geth_private *ugeth, u8 rxQ, int rx_work_limit
|
||||
|
||||
ugeth_vdbg("%s: IN", __func__);
|
||||
|
||||
dev = ugeth->dev;
|
||||
dev = ugeth->ndev;
|
||||
|
||||
/* collect received buffers */
|
||||
bd = ugeth->rxBd[rxQ];
|
||||
@ -3161,7 +3160,7 @@ static int ucc_geth_rx(struct ucc_geth_private *ugeth, u8 rxQ, int rx_work_limit
|
||||
skb_put(skb, length);
|
||||
|
||||
/* Tell the skb what kind of packet this is */
|
||||
skb->protocol = eth_type_trans(skb, ugeth->dev);
|
||||
skb->protocol = eth_type_trans(skb, ugeth->ndev);
|
||||
|
||||
dev->stats.rx_bytes += length;
|
||||
/* Send the packet up the stack */
|
||||
@ -3432,7 +3431,7 @@ static int ucc_geth_close(struct net_device *dev)
|
||||
|
||||
ucc_geth_stop(ugeth);
|
||||
|
||||
free_irq(ugeth->ug_info->uf_info.irq, ugeth->dev);
|
||||
free_irq(ugeth->ug_info->uf_info.irq, ugeth->ndev);
|
||||
|
||||
netif_stop_queue(dev);
|
||||
|
||||
@ -3446,7 +3445,7 @@ static void ucc_geth_timeout_work(struct work_struct *work)
|
||||
struct net_device *dev;
|
||||
|
||||
ugeth = container_of(work, struct ucc_geth_private, timeout_work);
|
||||
dev = ugeth->dev;
|
||||
dev = ugeth->ndev;
|
||||
|
||||
ugeth_vdbg("%s: IN", __func__);
|
||||
|
||||
@ -3756,7 +3755,8 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
|
||||
memcpy(dev->dev_addr, mac_addr, 6);
|
||||
|
||||
ugeth->ug_info = ug_info;
|
||||
ugeth->dev = dev;
|
||||
ugeth->dev = device;
|
||||
ugeth->ndev = dev;
|
||||
ugeth->node = np;
|
||||
|
||||
return 0;
|
||||
|
@ -20,7 +20,6 @@
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/fsl_devices.h>
|
||||
|
||||
#include <asm/immap_qe.h>
|
||||
#include <asm/qe.h>
|
||||
@ -1129,7 +1128,8 @@ struct ucc_geth_info {
|
||||
struct ucc_geth_private {
|
||||
struct ucc_geth_info *ug_info;
|
||||
struct ucc_fast_private *uccf;
|
||||
struct net_device *dev;
|
||||
struct device *dev;
|
||||
struct net_device *ndev;
|
||||
struct napi_struct napi;
|
||||
struct work_struct timeout_work;
|
||||
struct ucc_geth __iomem *ug_regs;
|
||||
|
@ -28,7 +28,6 @@
|
||||
#include <linux/mm.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/fsl_devices.h>
|
||||
#include <linux/ethtool.h>
|
||||
#include <linux/mii.h>
|
||||
#include <linux/phy.h>
|
||||
|
@ -5,6 +5,7 @@
|
||||
* Copyright (C) 2008 Option International
|
||||
* Filip Aben <f.aben@option.com>
|
||||
* Denis Joseph Barrow <d.barow@option.com>
|
||||
* Jan Dumon <j.dumon@option.com>
|
||||
* Copyright (C) 2007 Andrew Bird (Sphere Systems Ltd)
|
||||
* <ajb@spheresystems.co.uk>
|
||||
* Copyright (C) 2008 Greg Kroah-Hartman <gregkh@suse.de>
|
||||
@ -462,9 +463,16 @@ static const struct usb_device_id hso_ids[] = {
|
||||
{USB_DEVICE(0x0af0, 0x7701)},
|
||||
{USB_DEVICE(0x0af0, 0x7801)},
|
||||
{USB_DEVICE(0x0af0, 0x7901)},
|
||||
{USB_DEVICE(0x0af0, 0x7361)},
|
||||
{USB_DEVICE(0x0af0, 0xd057)},
|
||||
{USB_DEVICE(0x0af0, 0x8200)},
|
||||
{USB_DEVICE(0x0af0, 0x8201)},
|
||||
{USB_DEVICE(0x0af0, 0xd035)},
|
||||
{USB_DEVICE(0x0af0, 0xd055)},
|
||||
{USB_DEVICE(0x0af0, 0xd155)},
|
||||
{USB_DEVICE(0x0af0, 0xd255)},
|
||||
{USB_DEVICE(0x0af0, 0xd057)},
|
||||
{USB_DEVICE(0x0af0, 0xd157)},
|
||||
{USB_DEVICE(0x0af0, 0xd257)},
|
||||
{USB_DEVICE(0x0af0, 0xd357)},
|
||||
{}
|
||||
};
|
||||
MODULE_DEVICE_TABLE(usb, hso_ids);
|
||||
@ -2410,14 +2418,6 @@ static void hso_free_net_device(struct hso_device *hso_dev)
|
||||
if (!hso_net)
|
||||
return;
|
||||
|
||||
/* start freeing */
|
||||
for (i = 0; i < MUX_BULK_RX_BUF_COUNT; i++) {
|
||||
usb_free_urb(hso_net->mux_bulk_rx_urb_pool[i]);
|
||||
kfree(hso_net->mux_bulk_rx_buf_pool[i]);
|
||||
}
|
||||
usb_free_urb(hso_net->mux_bulk_tx_urb);
|
||||
kfree(hso_net->mux_bulk_tx_buf);
|
||||
|
||||
remove_net_device(hso_net->parent);
|
||||
|
||||
if (hso_net->net) {
|
||||
@ -2425,6 +2425,16 @@ static void hso_free_net_device(struct hso_device *hso_dev)
|
||||
free_netdev(hso_net->net);
|
||||
}
|
||||
|
||||
/* start freeing */
|
||||
for (i = 0; i < MUX_BULK_RX_BUF_COUNT; i++) {
|
||||
usb_free_urb(hso_net->mux_bulk_rx_urb_pool[i]);
|
||||
kfree(hso_net->mux_bulk_rx_buf_pool[i]);
|
||||
hso_net->mux_bulk_rx_buf_pool[i] = NULL;
|
||||
}
|
||||
usb_free_urb(hso_net->mux_bulk_tx_urb);
|
||||
kfree(hso_net->mux_bulk_tx_buf);
|
||||
hso_net->mux_bulk_tx_buf = NULL;
|
||||
|
||||
kfree(hso_dev);
|
||||
}
|
||||
|
||||
@ -2526,14 +2536,15 @@ static void hso_create_rfkill(struct hso_device *hso_dev,
|
||||
}
|
||||
|
||||
/* Creates our network device */
|
||||
static struct hso_device *hso_create_net_device(struct usb_interface *interface)
|
||||
static struct hso_device *hso_create_net_device(struct usb_interface *interface,
|
||||
int port_spec)
|
||||
{
|
||||
int result, i;
|
||||
struct net_device *net;
|
||||
struct hso_net *hso_net;
|
||||
struct hso_device *hso_dev;
|
||||
|
||||
hso_dev = hso_create_device(interface, HSO_INTF_MUX | HSO_PORT_NETWORK);
|
||||
hso_dev = hso_create_device(interface, port_spec);
|
||||
if (!hso_dev)
|
||||
return NULL;
|
||||
|
||||
@ -2613,12 +2624,12 @@ static void hso_free_tiomget(struct hso_serial *serial)
|
||||
{
|
||||
struct hso_tiocmget *tiocmget = serial->tiocmget;
|
||||
if (tiocmget) {
|
||||
kfree(tiocmget);
|
||||
if (tiocmget->urb) {
|
||||
usb_free_urb(tiocmget->urb);
|
||||
tiocmget->urb = NULL;
|
||||
}
|
||||
serial->tiocmget = NULL;
|
||||
kfree(tiocmget);
|
||||
|
||||
}
|
||||
}
|
||||
@ -2933,7 +2944,8 @@ static int hso_probe(struct usb_interface *interface,
|
||||
if ((port_spec & HSO_PORT_MASK) == HSO_PORT_NETWORK) {
|
||||
/* Create the network device */
|
||||
if (!disable_net) {
|
||||
hso_dev = hso_create_net_device(interface);
|
||||
hso_dev = hso_create_net_device(interface,
|
||||
port_spec);
|
||||
if (!hso_dev)
|
||||
goto exit;
|
||||
tmp_dev = hso_dev;
|
||||
@ -2965,7 +2977,7 @@ static int hso_probe(struct usb_interface *interface,
|
||||
/* It's a regular bulk interface */
|
||||
if (((port_spec & HSO_PORT_MASK) == HSO_PORT_NETWORK)
|
||||
&& !disable_net)
|
||||
hso_dev = hso_create_net_device(interface);
|
||||
hso_dev = hso_create_net_device(interface, port_spec);
|
||||
else
|
||||
hso_dev =
|
||||
hso_create_bulk_serial_device(interface, port_spec);
|
||||
|
@ -36,7 +36,6 @@
|
||||
* Run test procedures
|
||||
* Fix bugs from previous two steps
|
||||
* Snoop other OSs for any tricks we're not doing
|
||||
* SMP locking
|
||||
* Reduce arbitrary timeouts
|
||||
* Smart multicast support
|
||||
* Temporary MAC change support
|
||||
@ -796,7 +795,7 @@ static int kaweth_start_xmit(struct sk_buff *skb, struct net_device *net)
|
||||
|
||||
int res;
|
||||
|
||||
spin_lock(&kaweth->device_lock);
|
||||
spin_lock_irq(&kaweth->device_lock);
|
||||
|
||||
kaweth_async_set_rx_mode(kaweth);
|
||||
netif_stop_queue(net);
|
||||
@ -814,7 +813,7 @@ static int kaweth_start_xmit(struct sk_buff *skb, struct net_device *net)
|
||||
if (!copied_skb) {
|
||||
kaweth->stats.tx_errors++;
|
||||
netif_start_queue(net);
|
||||
spin_unlock(&kaweth->device_lock);
|
||||
spin_unlock_irq(&kaweth->device_lock);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -848,7 +847,7 @@ skip:
|
||||
net->trans_start = jiffies;
|
||||
}
|
||||
|
||||
spin_unlock(&kaweth->device_lock);
|
||||
spin_unlock_irq(&kaweth->device_lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
7
drivers/net/vxge/Makefile
Normal file
7
drivers/net/vxge/Makefile
Normal file
@ -0,0 +1,7 @@
|
||||
#
|
||||
# Makefile for Neterion Inc's X3100 Series 10 GbE PCIe # I/O
|
||||
# Virtualized Server Adapter linux driver
|
||||
|
||||
obj-$(CONFIG_VXGE) += vxge.o
|
||||
|
||||
vxge-objs := vxge-config.o vxge-traffic.o vxge-ethtool.o vxge-main.o
|
5264
drivers/net/vxge/vxge-config.c
Normal file
5264
drivers/net/vxge/vxge-config.c
Normal file
File diff suppressed because it is too large
Load Diff
2259
drivers/net/vxge/vxge-config.h
Normal file
2259
drivers/net/vxge/vxge-config.h
Normal file
File diff suppressed because it is too large
Load Diff
1148
drivers/net/vxge/vxge-ethtool.c
Normal file
1148
drivers/net/vxge/vxge-ethtool.c
Normal file
File diff suppressed because it is too large
Load Diff
67
drivers/net/vxge/vxge-ethtool.h
Normal file
67
drivers/net/vxge/vxge-ethtool.h
Normal file
@ -0,0 +1,67 @@
|
||||
/******************************************************************************
|
||||
* This software may be used and distributed according to the terms of
|
||||
* the GNU General Public License (GPL), incorporated herein by reference.
|
||||
* Drivers based on or derived from this code fall under the GPL and must
|
||||
* retain the authorship, copyright and license notice. This file is not
|
||||
* a complete program and may only be used when the entire operating
|
||||
* system is licensed under the GPL.
|
||||
* See the file COPYING in this distribution for more information.
|
||||
*
|
||||
* vxge-ethtool.h: Driver for Neterion Inc's X3100 Series 10GbE PCIe I/O
|
||||
* Virtualized Server Adapter.
|
||||
* Copyright(c) 2002-2009 Neterion Inc.
|
||||
******************************************************************************/
|
||||
#ifndef _VXGE_ETHTOOL_H
|
||||
#define _VXGE_ETHTOOL_H
|
||||
|
||||
#include "vxge-main.h"
|
||||
|
||||
/* Ethtool related variables and Macros. */
|
||||
static int vxge_ethtool_get_sset_count(struct net_device *dev, int sset);
|
||||
|
||||
static char ethtool_driver_stats_keys[][ETH_GSTRING_LEN] = {
|
||||
{"\n DRIVER STATISTICS"},
|
||||
{"vpaths_opened"},
|
||||
{"vpath_open_fail_cnt"},
|
||||
{"link_up_cnt"},
|
||||
{"link_down_cnt"},
|
||||
{"tx_frms"},
|
||||
{"tx_errors"},
|
||||
{"tx_bytes"},
|
||||
{"txd_not_free"},
|
||||
{"txd_out_of_desc"},
|
||||
{"rx_frms"},
|
||||
{"rx_errors"},
|
||||
{"rx_bytes"},
|
||||
{"rx_mcast"},
|
||||
{"pci_map_fail_cnt"},
|
||||
{"skb_alloc_fail_cnt"}
|
||||
};
|
||||
|
||||
#define VXGE_TITLE_LEN 5
|
||||
#define VXGE_HW_VPATH_STATS_LEN 27
|
||||
#define VXGE_HW_AGGR_STATS_LEN 13
|
||||
#define VXGE_HW_PORT_STATS_LEN 94
|
||||
#define VXGE_HW_VPATH_TX_STATS_LEN 19
|
||||
#define VXGE_HW_VPATH_RX_STATS_LEN 42
|
||||
#define VXGE_SW_STATS_LEN 60
|
||||
#define VXGE_HW_STATS_LEN (VXGE_HW_VPATH_STATS_LEN +\
|
||||
VXGE_HW_AGGR_STATS_LEN +\
|
||||
VXGE_HW_PORT_STATS_LEN +\
|
||||
VXGE_HW_VPATH_TX_STATS_LEN +\
|
||||
VXGE_HW_VPATH_RX_STATS_LEN)
|
||||
|
||||
#define DRIVER_STAT_LEN (sizeof(ethtool_driver_stats_keys)/ETH_GSTRING_LEN)
|
||||
#define STAT_LEN (VXGE_HW_STATS_LEN + DRIVER_STAT_LEN + VXGE_SW_STATS_LEN)
|
||||
|
||||
/* Maximum flicker time of adapter LED */
|
||||
#define VXGE_MAX_FLICKER_TIME (60 * HZ) /* 60 seconds */
|
||||
#define VXGE_FLICKER_ON 1
|
||||
#define VXGE_FLICKER_OFF 0
|
||||
|
||||
#define vxge_add_string(fmt, size, buf, ...) {\
|
||||
snprintf(buf + *size, ETH_GSTRING_LEN, fmt, __VA_ARGS__); \
|
||||
*size += ETH_GSTRING_LEN; \
|
||||
}
|
||||
|
||||
#endif /*_VXGE_ETHTOOL_H*/
|
4502
drivers/net/vxge/vxge-main.c
Normal file
4502
drivers/net/vxge/vxge-main.c
Normal file
File diff suppressed because it is too large
Load Diff
557
drivers/net/vxge/vxge-main.h
Normal file
557
drivers/net/vxge/vxge-main.h
Normal file
@ -0,0 +1,557 @@
|
||||
/******************************************************************************
|
||||
* This software may be used and distributed according to the terms of
|
||||
* the GNU General Public License (GPL), incorporated herein by reference.
|
||||
* Drivers based on or derived from this code fall under the GPL and must
|
||||
* retain the authorship, copyright and license notice. This file is not
|
||||
* a complete program and may only be used when the entire operating
|
||||
* system is licensed under the GPL.
|
||||
* See the file COPYING in this distribution for more information.
|
||||
*
|
||||
* vxge-main.h: Driver for Neterion Inc's X3100 Series 10GbE PCIe I/O
|
||||
* Virtualized Server Adapter.
|
||||
* Copyright(c) 2002-2009 Neterion Inc.
|
||||
******************************************************************************/
|
||||
#ifndef VXGE_MAIN_H
|
||||
#define VXGE_MAIN_H
|
||||
|
||||
#include "vxge-traffic.h"
|
||||
#include "vxge-config.h"
|
||||
#include "vxge-version.h"
|
||||
#include <linux/list.h>
|
||||
|
||||
#define VXGE_DRIVER_NAME "vxge"
|
||||
#define VXGE_DRIVER_VENDOR "Neterion, Inc"
|
||||
#define VXGE_DRIVER_VERSION_MAJOR 0
|
||||
|
||||
#define DRV_VERSION VXGE_VERSION_MAJOR"."VXGE_VERSION_MINOR"."\
|
||||
VXGE_VERSION_FIX"."VXGE_VERSION_BUILD"-"\
|
||||
VXGE_VERSION_FOR
|
||||
|
||||
#define PCI_DEVICE_ID_TITAN_WIN 0x5733
|
||||
#define PCI_DEVICE_ID_TITAN_UNI 0x5833
|
||||
#define VXGE_USE_DEFAULT 0xffffffff
|
||||
#define VXGE_HW_VPATH_MSIX_ACTIVE 4
|
||||
#define VXGE_HW_RXSYNC_FREQ_CNT 4
|
||||
#define VXGE_LL_WATCH_DOG_TIMEOUT (15 * HZ)
|
||||
#define VXGE_LL_RX_COPY_THRESHOLD 256
|
||||
#define VXGE_DEF_FIFO_LENGTH 84
|
||||
|
||||
#define NO_STEERING 0
|
||||
#define PORT_STEERING 0x1
|
||||
#define RTH_STEERING 0x2
|
||||
#define RX_TOS_STEERING 0x3
|
||||
#define RX_VLAN_STEERING 0x4
|
||||
#define RTH_BUCKET_SIZE 4
|
||||
|
||||
#define TX_PRIORITY_STEERING 1
|
||||
#define TX_VLAN_STEERING 2
|
||||
#define TX_PORT_STEERING 3
|
||||
#define TX_MULTIQ_STEERING 4
|
||||
|
||||
#define VXGE_HW_MAC_ADDR_LEARN_DEFAULT VXGE_HW_RTS_MAC_DISABLE
|
||||
|
||||
#define VXGE_TTI_BTIMER_VAL 250000
|
||||
|
||||
#define VXGE_TTI_LTIMER_VAL 1000
|
||||
#define VXGE_TTI_RTIMER_VAL 0
|
||||
#define VXGE_RTI_BTIMER_VAL 250
|
||||
#define VXGE_RTI_LTIMER_VAL 100
|
||||
#define VXGE_RTI_RTIMER_VAL 0
|
||||
#define VXGE_FIFO_INDICATE_MAX_PKTS VXGE_DEF_FIFO_LENGTH
|
||||
#define VXGE_ISR_POLLING_CNT 8
|
||||
#define VXGE_MAX_CONFIG_DEV 0xFF
|
||||
#define VXGE_EXEC_MODE_DISABLE 0
|
||||
#define VXGE_EXEC_MODE_ENABLE 1
|
||||
#define VXGE_MAX_CONFIG_PORT 1
|
||||
#define VXGE_ALL_VID_DISABLE 0
|
||||
#define VXGE_ALL_VID_ENABLE 1
|
||||
#define VXGE_PAUSE_CTRL_DISABLE 0
|
||||
#define VXGE_PAUSE_CTRL_ENABLE 1
|
||||
|
||||
#define TTI_TX_URANGE_A 5
|
||||
#define TTI_TX_URANGE_B 15
|
||||
#define TTI_TX_URANGE_C 40
|
||||
#define TTI_TX_UFC_A 5
|
||||
#define TTI_TX_UFC_B 40
|
||||
#define TTI_TX_UFC_C 60
|
||||
#define TTI_TX_UFC_D 100
|
||||
|
||||
#define RTI_RX_URANGE_A 5
|
||||
#define RTI_RX_URANGE_B 15
|
||||
#define RTI_RX_URANGE_C 40
|
||||
#define RTI_RX_UFC_A 1
|
||||
#define RTI_RX_UFC_B 5
|
||||
#define RTI_RX_UFC_C 10
|
||||
#define RTI_RX_UFC_D 15
|
||||
|
||||
/* Milli secs timer period */
|
||||
#define VXGE_TIMER_DELAY 10000
|
||||
|
||||
#define VXGE_LL_MAX_FRAME_SIZE(dev) ((dev)->mtu + VXGE_HW_MAC_HEADER_MAX_SIZE)
|
||||
|
||||
enum vxge_reset_event {
|
||||
/* reset events */
|
||||
VXGE_LL_VPATH_RESET = 0,
|
||||
VXGE_LL_DEVICE_RESET = 1,
|
||||
VXGE_LL_FULL_RESET = 2,
|
||||
VXGE_LL_START_RESET = 3,
|
||||
VXGE_LL_COMPL_RESET = 4
|
||||
};
|
||||
/* These flags represent the devices temporary state */
|
||||
enum vxge_device_state_t {
|
||||
__VXGE_STATE_RESET_CARD = 0,
|
||||
__VXGE_STATE_CARD_UP
|
||||
};
|
||||
|
||||
enum vxge_mac_addr_state {
|
||||
/* mac address states */
|
||||
VXGE_LL_MAC_ADDR_IN_LIST = 0,
|
||||
VXGE_LL_MAC_ADDR_IN_DA_TABLE = 1
|
||||
};
|
||||
|
||||
struct vxge_drv_config {
|
||||
int config_dev_cnt;
|
||||
int total_dev_cnt;
|
||||
unsigned long inta_dev_open;
|
||||
int g_no_cpus;
|
||||
unsigned int vpath_per_dev;
|
||||
};
|
||||
|
||||
struct macInfo {
|
||||
unsigned char macaddr[ETH_ALEN];
|
||||
unsigned char macmask[ETH_ALEN];
|
||||
unsigned int vpath_no;
|
||||
enum vxge_mac_addr_state state;
|
||||
};
|
||||
|
||||
struct vxge_config {
|
||||
int tx_pause_enable;
|
||||
int rx_pause_enable;
|
||||
|
||||
#define NEW_NAPI_WEIGHT 64
|
||||
int napi_weight;
|
||||
#define VXGE_GRO_DONOT_AGGREGATE 0
|
||||
#define VXGE_GRO_ALWAYS_AGGREGATE 1
|
||||
int gro_enable;
|
||||
int intr_type;
|
||||
#define INTA 0
|
||||
#define MSI 1
|
||||
#define MSI_X 2
|
||||
|
||||
int addr_learn_en;
|
||||
|
||||
int rth_steering;
|
||||
int rth_algorithm;
|
||||
int rth_hash_type_tcpipv4;
|
||||
int rth_hash_type_ipv4;
|
||||
int rth_hash_type_tcpipv6;
|
||||
int rth_hash_type_ipv6;
|
||||
int rth_hash_type_tcpipv6ex;
|
||||
int rth_hash_type_ipv6ex;
|
||||
int rth_bkt_sz;
|
||||
int rth_jhash_golden_ratio;
|
||||
int tx_steering_type;
|
||||
int fifo_indicate_max_pkts;
|
||||
struct vxge_hw_device_hw_info device_hw_info;
|
||||
};
|
||||
|
||||
struct vxge_msix_entry {
|
||||
/* Mimicing the msix_entry struct of Kernel. */
|
||||
u16 vector;
|
||||
u16 entry;
|
||||
u16 in_use;
|
||||
void *arg;
|
||||
};
|
||||
|
||||
/* Software Statistics */
|
||||
|
||||
struct vxge_sw_stats {
|
||||
/* Network Stats (interface stats) */
|
||||
struct net_device_stats net_stats;
|
||||
|
||||
/* Tx */
|
||||
u64 tx_frms;
|
||||
u64 tx_errors;
|
||||
u64 tx_bytes;
|
||||
u64 txd_not_free;
|
||||
u64 txd_out_of_desc;
|
||||
|
||||
/* Virtual Path */
|
||||
u64 vpaths_open;
|
||||
u64 vpath_open_fail;
|
||||
|
||||
/* Rx */
|
||||
u64 rx_frms;
|
||||
u64 rx_errors;
|
||||
u64 rx_bytes;
|
||||
u64 rx_mcast;
|
||||
|
||||
/* Misc. */
|
||||
u64 link_up;
|
||||
u64 link_down;
|
||||
u64 pci_map_fail;
|
||||
u64 skb_alloc_fail;
|
||||
};
|
||||
|
||||
struct vxge_mac_addrs {
|
||||
struct list_head item;
|
||||
u64 macaddr;
|
||||
u64 macmask;
|
||||
enum vxge_mac_addr_state state;
|
||||
};
|
||||
|
||||
struct vxgedev;
|
||||
|
||||
struct vxge_fifo_stats {
|
||||
u64 tx_frms;
|
||||
u64 tx_errors;
|
||||
u64 tx_bytes;
|
||||
u64 txd_not_free;
|
||||
u64 txd_out_of_desc;
|
||||
u64 pci_map_fail;
|
||||
};
|
||||
|
||||
struct vxge_fifo {
|
||||
struct net_device *ndev;
|
||||
struct pci_dev *pdev;
|
||||
struct __vxge_hw_fifo *handle;
|
||||
|
||||
/* The vpath id maintained in the driver -
|
||||
* 0 to 'maximum_vpaths_in_function - 1'
|
||||
*/
|
||||
int driver_id;
|
||||
int tx_steering_type;
|
||||
int indicate_max_pkts;
|
||||
spinlock_t tx_lock;
|
||||
/* flag used to maintain queue state when MULTIQ is not enabled */
|
||||
#define VPATH_QUEUE_START 0
|
||||
#define VPATH_QUEUE_STOP 1
|
||||
int queue_state;
|
||||
|
||||
/* Tx stats */
|
||||
struct vxge_fifo_stats stats;
|
||||
} ____cacheline_aligned;
|
||||
|
||||
struct vxge_ring_stats {
|
||||
u64 prev_rx_frms;
|
||||
u64 rx_frms;
|
||||
u64 rx_errors;
|
||||
u64 rx_dropped;
|
||||
u64 rx_bytes;
|
||||
u64 rx_mcast;
|
||||
u64 pci_map_fail;
|
||||
u64 skb_alloc_fail;
|
||||
};
|
||||
|
||||
struct vxge_ring {
|
||||
struct net_device *ndev;
|
||||
struct pci_dev *pdev;
|
||||
struct __vxge_hw_ring *handle;
|
||||
/* The vpath id maintained in the driver -
|
||||
* 0 to 'maximum_vpaths_in_function - 1'
|
||||
*/
|
||||
int driver_id;
|
||||
|
||||
/* copy of the flag indicating whether rx_csum is to be used */
|
||||
u32 rx_csum;
|
||||
|
||||
int pkts_processed;
|
||||
int budget;
|
||||
int gro_enable;
|
||||
|
||||
struct napi_struct napi;
|
||||
|
||||
#define VXGE_MAX_MAC_ADDR_COUNT 30
|
||||
|
||||
int vlan_tag_strip;
|
||||
struct vlan_group *vlgrp;
|
||||
int rx_vector_no;
|
||||
enum vxge_hw_status last_status;
|
||||
|
||||
/* Rx stats */
|
||||
struct vxge_ring_stats stats;
|
||||
} ____cacheline_aligned;
|
||||
|
||||
struct vxge_vpath {
|
||||
|
||||
struct vxge_fifo fifo;
|
||||
struct vxge_ring ring;
|
||||
|
||||
struct __vxge_hw_vpath_handle *handle;
|
||||
|
||||
/* Actual vpath id for this vpath in the device - 0 to 16 */
|
||||
int device_id;
|
||||
int max_mac_addr_cnt;
|
||||
int is_configured;
|
||||
int is_open;
|
||||
struct vxgedev *vdev;
|
||||
u8 (macaddr)[ETH_ALEN];
|
||||
u8 (macmask)[ETH_ALEN];
|
||||
|
||||
#define VXGE_MAX_LEARN_MAC_ADDR_CNT 2048
|
||||
/* mac addresses currently programmed into NIC */
|
||||
u16 mac_addr_cnt;
|
||||
u16 mcast_addr_cnt;
|
||||
struct list_head mac_addr_list;
|
||||
|
||||
u32 level_err;
|
||||
u32 level_trace;
|
||||
};
|
||||
#define VXGE_COPY_DEBUG_INFO_TO_LL(vdev, err, trace) { \
|
||||
for (i = 0; i < vdev->no_of_vpath; i++) { \
|
||||
vdev->vpaths[i].level_err = err; \
|
||||
vdev->vpaths[i].level_trace = trace; \
|
||||
} \
|
||||
vdev->level_err = err; \
|
||||
vdev->level_trace = trace; \
|
||||
}
|
||||
|
||||
struct vxgedev {
|
||||
struct net_device *ndev;
|
||||
struct pci_dev *pdev;
|
||||
struct __vxge_hw_device *devh;
|
||||
struct vlan_group *vlgrp;
|
||||
int vlan_tag_strip;
|
||||
struct vxge_config config;
|
||||
unsigned long state;
|
||||
|
||||
/* Indicates which vpath to reset */
|
||||
unsigned long vp_reset;
|
||||
|
||||
/* Timer used for polling vpath resets */
|
||||
struct timer_list vp_reset_timer;
|
||||
|
||||
/* Timer used for polling vpath lockup */
|
||||
struct timer_list vp_lockup_timer;
|
||||
|
||||
/*
|
||||
* Flags to track whether device is in All Multicast
|
||||
* or in promiscuous mode.
|
||||
*/
|
||||
u16 all_multi_flg;
|
||||
|
||||
/* A flag indicating whether rx_csum is to be used or not. */
|
||||
u32 rx_csum;
|
||||
|
||||
struct vxge_msix_entry *vxge_entries;
|
||||
struct msix_entry *entries;
|
||||
/*
|
||||
* 4 for each vpath * 17;
|
||||
* total is 68
|
||||
*/
|
||||
#define VXGE_MAX_REQUESTED_MSIX 68
|
||||
#define VXGE_INTR_STRLEN 80
|
||||
char desc[VXGE_MAX_REQUESTED_MSIX][VXGE_INTR_STRLEN];
|
||||
|
||||
enum vxge_hw_event cric_err_event;
|
||||
|
||||
int max_vpath_supported;
|
||||
int no_of_vpath;
|
||||
|
||||
struct napi_struct napi;
|
||||
/* A debug option, when enabled and if error condition occurs,
|
||||
* the driver will do following steps:
|
||||
* - mask all interrupts
|
||||
* - Not clear the source of the alarm
|
||||
* - gracefully stop all I/O
|
||||
* A diagnostic dump of register and stats at this point
|
||||
* reveals very useful information.
|
||||
*/
|
||||
int exec_mode;
|
||||
int max_config_port;
|
||||
struct vxge_vpath *vpaths;
|
||||
|
||||
struct __vxge_hw_vpath_handle *vp_handles[VXGE_HW_MAX_VIRTUAL_PATHS];
|
||||
void __iomem *bar0;
|
||||
void __iomem *bar1;
|
||||
struct vxge_sw_stats stats;
|
||||
int mtu;
|
||||
/* Below variables are used for vpath selection to transmit a packet */
|
||||
u8 vpath_selector[VXGE_HW_MAX_VIRTUAL_PATHS];
|
||||
u64 vpaths_deployed;
|
||||
|
||||
u32 intr_cnt;
|
||||
u32 level_err;
|
||||
u32 level_trace;
|
||||
char fw_version[VXGE_HW_FW_STRLEN];
|
||||
};
|
||||
|
||||
struct vxge_rx_priv {
|
||||
struct sk_buff *skb;
|
||||
dma_addr_t data_dma;
|
||||
dma_addr_t data_size;
|
||||
};
|
||||
|
||||
struct vxge_tx_priv {
|
||||
struct sk_buff *skb;
|
||||
dma_addr_t dma_buffers[MAX_SKB_FRAGS+1];
|
||||
};
|
||||
|
||||
#define VXGE_MODULE_PARAM_INT(p, val) \
|
||||
static int p = val; \
|
||||
module_param(p, int, 0)
|
||||
|
||||
#define vxge_os_bug(fmt...) { printk(fmt); BUG(); }
|
||||
|
||||
#define vxge_os_timer(timer, handle, arg, exp) do { \
|
||||
init_timer(&timer); \
|
||||
timer.function = handle; \
|
||||
timer.data = (unsigned long) arg; \
|
||||
mod_timer(&timer, (jiffies + exp)); \
|
||||
} while (0);
|
||||
|
||||
int __devinit vxge_device_register(struct __vxge_hw_device *devh,
|
||||
struct vxge_config *config,
|
||||
int high_dma, int no_of_vpath,
|
||||
struct vxgedev **vdev);
|
||||
|
||||
void vxge_device_unregister(struct __vxge_hw_device *devh);
|
||||
|
||||
void vxge_vpath_intr_enable(struct vxgedev *vdev, int vp_id);
|
||||
|
||||
void vxge_vpath_intr_disable(struct vxgedev *vdev, int vp_id);
|
||||
|
||||
void vxge_callback_link_up(struct __vxge_hw_device *devh);
|
||||
|
||||
void vxge_callback_link_down(struct __vxge_hw_device *devh);
|
||||
|
||||
enum vxge_hw_status vxge_add_mac_addr(struct vxgedev *vdev,
|
||||
struct macInfo *mac);
|
||||
|
||||
int vxge_mac_list_del(struct vxge_vpath *vpath, struct macInfo *mac);
|
||||
|
||||
int vxge_reset(struct vxgedev *vdev);
|
||||
|
||||
enum vxge_hw_status
|
||||
vxge_rx_1b_compl(struct __vxge_hw_ring *ringh, void *dtr,
|
||||
u8 t_code, void *userdata);
|
||||
|
||||
enum vxge_hw_status
|
||||
vxge_xmit_compl(struct __vxge_hw_fifo *fifo_hw, void *dtr,
|
||||
enum vxge_hw_fifo_tcode t_code, void *userdata, void **skb_ptr);
|
||||
|
||||
int vxge_close(struct net_device *dev);
|
||||
|
||||
int vxge_open(struct net_device *dev);
|
||||
|
||||
void vxge_close_vpaths(struct vxgedev *vdev, int index);
|
||||
|
||||
int vxge_open_vpaths(struct vxgedev *vdev);
|
||||
|
||||
enum vxge_hw_status vxge_reset_all_vpaths(struct vxgedev *vdev);
|
||||
|
||||
void vxge_stop_all_tx_queue(struct vxgedev *vdev);
|
||||
|
||||
void vxge_stop_tx_queue(struct vxge_fifo *fifo);
|
||||
|
||||
void vxge_start_all_tx_queue(struct vxgedev *vdev);
|
||||
|
||||
void vxge_wake_tx_queue(struct vxge_fifo *fifo, struct sk_buff *skb);
|
||||
|
||||
enum vxge_hw_status vxge_add_mac_addr(struct vxgedev *vdev,
|
||||
struct macInfo *mac);
|
||||
|
||||
enum vxge_hw_status vxge_del_mac_addr(struct vxgedev *vdev,
|
||||
struct macInfo *mac);
|
||||
|
||||
int vxge_mac_list_add(struct vxge_vpath *vpath,
|
||||
struct macInfo *mac);
|
||||
|
||||
void vxge_free_mac_add_list(struct vxge_vpath *vpath);
|
||||
|
||||
enum vxge_hw_status vxge_restore_vpath_mac_addr(struct vxge_vpath *vpath);
|
||||
|
||||
enum vxge_hw_status vxge_restore_vpath_vid_table(struct vxge_vpath *vpath);
|
||||
|
||||
int do_vxge_close(struct net_device *dev, int do_io);
|
||||
extern void initialize_ethtool_ops(struct net_device *ndev);
|
||||
/**
|
||||
* #define VXGE_DEBUG_INIT: debug for initialization functions
|
||||
* #define VXGE_DEBUG_TX : debug transmit related functions
|
||||
* #define VXGE_DEBUG_RX : debug recevice related functions
|
||||
* #define VXGE_DEBUG_MEM : debug memory module
|
||||
* #define VXGE_DEBUG_LOCK: debug locks
|
||||
* #define VXGE_DEBUG_SEM : debug semaphore
|
||||
* #define VXGE_DEBUG_ENTRYEXIT: debug functions by adding entry exit statements
|
||||
*/
|
||||
#define VXGE_DEBUG_INIT 0x00000001
|
||||
#define VXGE_DEBUG_TX 0x00000002
|
||||
#define VXGE_DEBUG_RX 0x00000004
|
||||
#define VXGE_DEBUG_MEM 0x00000008
|
||||
#define VXGE_DEBUG_LOCK 0x00000010
|
||||
#define VXGE_DEBUG_SEM 0x00000020
|
||||
#define VXGE_DEBUG_ENTRYEXIT 0x00000040
|
||||
#define VXGE_DEBUG_INTR 0x00000080
|
||||
#define VXGE_DEBUG_LL_CONFIG 0x00000100
|
||||
|
||||
/* Debug tracing for VXGE driver */
|
||||
#ifndef VXGE_DEBUG_MASK
|
||||
#define VXGE_DEBUG_MASK 0x0
|
||||
#endif
|
||||
|
||||
#if (VXGE_DEBUG_LL_CONFIG & VXGE_DEBUG_MASK)
|
||||
#define vxge_debug_ll_config(level, fmt, ...) \
|
||||
vxge_debug_ll(level, VXGE_DEBUG_LL_CONFIG, fmt, __VA_ARGS__)
|
||||
#else
|
||||
#define vxge_debug_ll_config(level, fmt, ...)
|
||||
#endif
|
||||
|
||||
#if (VXGE_DEBUG_INIT & VXGE_DEBUG_MASK)
|
||||
#define vxge_debug_init(level, fmt, ...) \
|
||||
vxge_debug_ll(level, VXGE_DEBUG_INIT, fmt, __VA_ARGS__)
|
||||
#else
|
||||
#define vxge_debug_init(level, fmt, ...)
|
||||
#endif
|
||||
|
||||
#if (VXGE_DEBUG_TX & VXGE_DEBUG_MASK)
|
||||
#define vxge_debug_tx(level, fmt, ...) \
|
||||
vxge_debug_ll(level, VXGE_DEBUG_TX, fmt, __VA_ARGS__)
|
||||
#else
|
||||
#define vxge_debug_tx(level, fmt, ...)
|
||||
#endif
|
||||
|
||||
#if (VXGE_DEBUG_RX & VXGE_DEBUG_MASK)
|
||||
#define vxge_debug_rx(level, fmt, ...) \
|
||||
vxge_debug_ll(level, VXGE_DEBUG_RX, fmt, __VA_ARGS__)
|
||||
#else
|
||||
#define vxge_debug_rx(level, fmt, ...)
|
||||
#endif
|
||||
|
||||
#if (VXGE_DEBUG_MEM & VXGE_DEBUG_MASK)
|
||||
#define vxge_debug_mem(level, fmt, ...) \
|
||||
vxge_debug_ll(level, VXGE_DEBUG_MEM, fmt, __VA_ARGS__)
|
||||
#else
|
||||
#define vxge_debug_mem(level, fmt, ...)
|
||||
#endif
|
||||
|
||||
#if (VXGE_DEBUG_ENTRYEXIT & VXGE_DEBUG_MASK)
|
||||
#define vxge_debug_entryexit(level, fmt, ...) \
|
||||
vxge_debug_ll(level, VXGE_DEBUG_ENTRYEXIT, fmt, __VA_ARGS__)
|
||||
#else
|
||||
#define vxge_debug_entryexit(level, fmt, ...)
|
||||
#endif
|
||||
|
||||
#if (VXGE_DEBUG_INTR & VXGE_DEBUG_MASK)
|
||||
#define vxge_debug_intr(level, fmt, ...) \
|
||||
vxge_debug_ll(level, VXGE_DEBUG_INTR, fmt, __VA_ARGS__)
|
||||
#else
|
||||
#define vxge_debug_intr(level, fmt, ...)
|
||||
#endif
|
||||
|
||||
#define VXGE_DEVICE_DEBUG_LEVEL_SET(level, mask, vdev) {\
|
||||
vxge_hw_device_debug_set((struct __vxge_hw_device *)vdev->devh, \
|
||||
level, mask);\
|
||||
VXGE_COPY_DEBUG_INFO_TO_LL(vdev, \
|
||||
vxge_hw_device_error_level_get((struct __vxge_hw_device *) \
|
||||
vdev->devh), \
|
||||
vxge_hw_device_trace_level_get((struct __vxge_hw_device *) \
|
||||
vdev->devh));\
|
||||
}
|
||||
|
||||
#ifdef NETIF_F_GSO
|
||||
#define vxge_tcp_mss(skb) (skb_shinfo(skb)->gso_size)
|
||||
#define vxge_udp_mss(skb) (skb_shinfo(skb)->gso_size)
|
||||
#define vxge_offload_type(skb) (skb_shinfo(skb)->gso_type)
|
||||
#endif
|
||||
|
||||
#endif
|
4608
drivers/net/vxge/vxge-reg.h
Normal file
4608
drivers/net/vxge/vxge-reg.h
Normal file
File diff suppressed because it is too large
Load Diff
2528
drivers/net/vxge/vxge-traffic.c
Normal file
2528
drivers/net/vxge/vxge-traffic.c
Normal file
File diff suppressed because it is too large
Load Diff
2409
drivers/net/vxge/vxge-traffic.h
Normal file
2409
drivers/net/vxge/vxge-traffic.h
Normal file
File diff suppressed because it is too large
Load Diff
23
drivers/net/vxge/vxge-version.h
Normal file
23
drivers/net/vxge/vxge-version.h
Normal file
@ -0,0 +1,23 @@
|
||||
/******************************************************************************
|
||||
* This software may be used and distributed according to the terms of
|
||||
* the GNU General Public License (GPL), incorporated herein by reference.
|
||||
* Drivers based on or derived from this code fall under the GPL and must
|
||||
* retain the authorship, copyright and license notice. This file is not
|
||||
* a complete program and may only be used when the entire operating
|
||||
* system is licensed under the GPL.
|
||||
* See the file COPYING in this distribution for more information.
|
||||
*
|
||||
* vxge-version.h: Driver for Neterion Inc's X3100 Series 10GbE PCIe I/O
|
||||
* Virtualized Server Adapter.
|
||||
* Copyright(c) 2002-2009 Neterion Inc.
|
||||
******************************************************************************/
|
||||
#ifndef VXGE_VERSION_H
|
||||
|
||||
#define VXGE_VERSION_H
|
||||
|
||||
#define VXGE_VERSION_MAJOR "2"
|
||||
#define VXGE_VERSION_MINOR "0"
|
||||
#define VXGE_VERSION_FIX "1"
|
||||
#define VXGE_VERSION_BUILD "17129"
|
||||
#define VXGE_VERSION_FOR "k"
|
||||
#endif
|
1573
firmware/3com/3C359.bin.ihex
Normal file
1573
firmware/3com/3C359.bin.ihex
Normal file
File diff suppressed because it is too large
Load Diff
@ -26,6 +26,7 @@ fw-shipped- += acenic/tg1.bin
|
||||
else
|
||||
acenic-objs := acenic/tg1.bin acenic/tg2.bin
|
||||
endif
|
||||
fw-shipped-$(CONFIG_3C359) += 3com/3C359.bin
|
||||
fw-shipped-$(CONFIG_ACENIC) += $(acenic-objs)
|
||||
fw-shipped-$(CONFIG_ADAPTEC_STARFIRE) += adaptec/starfire_rx.bin \
|
||||
adaptec/starfire_tx.bin
|
||||
@ -39,6 +40,7 @@ fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \
|
||||
fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin
|
||||
fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \
|
||||
e100/d102e_ucode.bin
|
||||
fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += ositech/Xilinx7OD.bin
|
||||
fw-shipped-$(CONFIG_SMCTR) += tr_smctr.bin
|
||||
fw-shipped-$(CONFIG_SND_KORG1212) += korg/k1212.dsp
|
||||
fw-shipped-$(CONFIG_SND_MAESTRO3) += ess/maestro3_assp_kernel.fw \
|
||||
@ -91,6 +93,7 @@ fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_PDA) += keyspan_pda/keyspan_pda.fw
|
||||
fw-shipped-$(CONFIG_USB_SERIAL_XIRCOM) += keyspan_pda/xircom_pgs.fw
|
||||
fw-shipped-$(CONFIG_USB_VICAM) += vicam/firmware.fw
|
||||
fw-shipped-$(CONFIG_VIDEO_CPIA2) += cpia2/stv0672_vp4.bin
|
||||
fw-shipped-$(CONFIG_YAM) += yam/1200.bin yam/9600.bin
|
||||
|
||||
fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-)
|
||||
|
||||
|
@ -493,3 +493,53 @@ Licence:
|
||||
Found in hex form in kernel source.
|
||||
|
||||
--------------------------------------------------------------------------
|
||||
|
||||
Driver: YAM - YAM driver for AX.25
|
||||
|
||||
File: yam/1200.bin
|
||||
File: yam/9600.bin
|
||||
|
||||
Licence:
|
||||
* (C) F6FBB 1998
|
||||
|
||||
Found in hex form in kernel source.
|
||||
|
||||
--------------------------------------------------------------------------
|
||||
|
||||
Driver: 3C359 - 3Com 3C359 Token Link Velocity XL adapter
|
||||
|
||||
File: 3com/3C359.bin
|
||||
|
||||
Licence:
|
||||
/*
|
||||
* The firmware this driver downloads into the tokenring card is a
|
||||
* separate program and is not GPL'd source code, even though the Linux
|
||||
* side driver and the routine that loads this data into the card are.
|
||||
*
|
||||
* This firmware is licensed to you strictly for use in conjunction
|
||||
* with the use of 3Com 3C359 TokenRing adapters. There is no
|
||||
* waranty expressed or implied about its fitness for any purpose.
|
||||
*/
|
||||
/* 3c359_microcode.mac: 3Com 3C359 Tokenring microcode.
|
||||
*
|
||||
* Notes:
|
||||
* - Loaded from xl_init upon adapter initialization.
|
||||
*
|
||||
* Available from 3Com as part of their standard 3C359 driver.
|
||||
*/
|
||||
|
||||
Found in hex form in kernel source.
|
||||
|
||||
--------------------------------------------------------------------------
|
||||
|
||||
Driver: PCMCIA_SMC91C92 - SMC 91Cxx PCMCIA
|
||||
|
||||
File: ositech/Xilinx7OD.bin
|
||||
|
||||
Licence: Allegedly GPL, but no source visible. Marked:
|
||||
This file contains the firmware of Seven of Diamonds from OSITECH.
|
||||
(Special thanks to Kevin MacPherson of OSITECH)
|
||||
|
||||
Found in hex form in kernel source.
|
||||
|
||||
--------------------------------------------------------------------------
|
||||
|
177
firmware/ositech/Xilinx7OD.bin.ihex
Normal file
177
firmware/ositech/Xilinx7OD.bin.ihex
Normal file
@ -0,0 +1,177 @@
|
||||
:10000000FF04A036F3ECFFFFFFDFFBFFF3FFFFFF72
|
||||
:10001000EF3FFFF7FFFFFFFFEF7FFEFFCEFEFEFE8D
|
||||
:10002000FEDEBDDDFDFFFDCFF7BF7FFF7F3FFEBFE3
|
||||
:10003000FFFFFFBCFFFFBDB57F7FBFBF7FFFEFFFAF
|
||||
:10004000FFFFFBFFF7F7FFFFFFFFFEDEFEFEFADE1E
|
||||
:10005000BDFDEDFDFDCFEFEFEFEFC7DFDFDFDFDF52
|
||||
:10006000FF7EFEFD7D6DEEFE7CFBF4FBCFDBDFFF54
|
||||
:10007000FFBB7FFF7FFFF7FF9EBF3BBFBF7F7F7F41
|
||||
:100080007E6FDFEFF5F6FDF6F5EDEBFFEFEFEF7EC0
|
||||
:100090007F7F6F7FFFFEFEFEFEFEEFBFFFFFFFFFD5
|
||||
:1000A000FFFFFFFFFFFFBC1F1FEEFFBCB7FFDFFF1F
|
||||
:1000B000DFEF3BE3D3FFFBFFFFDFFFFFFFBABF2D07
|
||||
:1000C000DBBDFDDBDFFAFBFFEFFBDBF3FFDFFD7FDB
|
||||
:1000D000EFFBFFFFBEBF27BAFEFBDFFFF6FFFFEF20
|
||||
:1000E000FBDBF3D99A3FFFAFBFFFFFBE3F37BD96A3
|
||||
:1000F000FFFFFFFFFFFFAEFBF3F3EBFFFFFFFFFF91
|
||||
:10010000FFF7FABCAEFEBEFEBB7FFDFF7FEFF7FB45
|
||||
:10011000BBD7F77FFFF7FFFFF7BCEDFDBD9D7D7BF4
|
||||
:10012000FB7B7BFBAFFFFEFDFDFEFEFFFFFFFFF74E
|
||||
:10013000AAB9BF8FBFDFFF7FFFFF7FCFFBEBCBEB0A
|
||||
:10014000EEFFFFD7FFFFFF3E333F1C7CFCFFFFFFAE
|
||||
:10015000FFFFCFD3F3E3F3FBFFFFFFFFFFEBFE3522
|
||||
:100160003F3DFDFDFFFFFFBFFFEF6FE3E3E3EFFF69
|
||||
:10017000FFDFFFFFF7FE3E5EFEFFFFFFFFFDFFFF1D
|
||||
:10018000AFCFF2CBCF8EFFFFFFFFFFFDFC3E1F9EE8
|
||||
:10019000ADFDFFFFBFFFFFEFFFB3F7E7F7FAFFFF8C
|
||||
:1001A000FFFFFFEEEBABAF9FE37FFFDEFF7FEEFFD6
|
||||
:1001B000FFFB3AFAFFF277FFFFF7FEFFFEBDAEDE70
|
||||
:1001C0007D7DFDFFBFEEFFFDFFDBFBFFF7EFFBFFDC
|
||||
:1001D000FFFEFF2DAFB9FD79FBFAFFBFEFFFFF91E7
|
||||
:1001E000FAFBDFF7F7FFFFFFFCCF37BFBFFF7F7FD3
|
||||
:1001F000FFFFFFAFFFFFF3FBFBFFF5EFFFFFF7FA9A
|
||||
:10020000FFFFEEFAFEFB55DDFF7FAFFEFFFBFBF5C8
|
||||
:10021000FFF7EFFFFFFFBEBDBDBDBD7D7B7B7B7BE1
|
||||
:10022000FBAEFFFDFEFFFFFFFFFFFFFFF7DAB76149
|
||||
:10023000FFB959F373F3DF7F6FDFEFF7EBEBD7FF16
|
||||
:10024000D7FFFFF7FE7FFB3E3873F67FFCFFFFCF43
|
||||
:10025000FFB7FBB3B367FFE7FDFFEFF67FB7BCF572
|
||||
:100260007BF6F7F5FFFFEFFFF7FFF7CEE7FF9FFF06
|
||||
:10027000FFF5FE7DFF5FFFFFFFFFFFFFFFEFFFF6D4
|
||||
:10028000CBDBEEFEFFDFFFFFFFFE7FBE1E3EFEFF6D
|
||||
:100290007DFEFFFFEFBFE7FFE3E3FFDFE7FFFFFFC9
|
||||
:1002A000B8EFB72FEEFFDFFFBFFF7FEFEBBFA3D3AA
|
||||
:1002B000FF7FFFFFFFFFF7BEFD3FCFFDFBFFFFFF0F
|
||||
:1002C000FFFFAFFBBFBBBFDBFDFBFFFFFFFF3EFE42
|
||||
:1002D0003FBABAFEFFFFFFEFFFEFC37FB29BFFFF06
|
||||
:1002E000FFFFFEFFFF3CFF3F3CFFFEFFFFFFFFFF66
|
||||
:1002F000AFF3FEF3E3EBFFFFFFFBFFF79AFEAF9ECA
|
||||
:10030000BEFEFFDFFFFF7BEFF7BFFBFBFBFFFF7FC7
|
||||
:10031000FFFFFFBCBDFDBDDD7D7B7B7B7BFBAEFFBF
|
||||
:10032000FFFFFEFEFFFDFFFFFFF79AFF9FFFAFEF0E
|
||||
:10033000FFFFFFFF7FCFF3FFEBFFEBFFFFBFFFFFF1
|
||||
:10034000EFFEFF37FCBFFFFFFFFFFFFFCFEFFDF327
|
||||
:10035000FFEEFEFFFFFFFFFF6EFD2FFDFFFDFFFF26
|
||||
:10036000FFFFFFEFCFFFF3BF69FFFFFFFFFFFFFEC0
|
||||
:10037000FB9FFFBFFDFFFFFFFFFFEF87FEDAEFCF21
|
||||
:10038000FFFFFFFFFFFFFEEFBFEFEFFDFFFFFFFFF0
|
||||
:10039000FFEFFDFF7BFFEBFEFFFFFFFFEBF8FFEF43
|
||||
:1003A000AFFFFFBDFFFFFF7FEE7FEFFFBBFFBFFB98
|
||||
:1003B000FFFFFFF7F6FBBDFDDDF5FFFFFFFFFFAF22
|
||||
:1003C000FF5FF5DFFF7FFFFFFFFFFFF6F3FFDEFEBE
|
||||
:1003D000EFFDFFFFFFFFEFFFDEDF5FDFFDFFFFFF52
|
||||
:1003E000FFFFFEFFFFFEFEFFFDFFFFFFFFAFFFFF72
|
||||
:1003F000EFEDFFDFFFFFFBFFFFDABDBEAEFE7FFDCF
|
||||
:10040000DFFFFF7FEFFFFBFBFB7FF7FFFFFFFFF748
|
||||
:10041000BCFDBDBDBDFD7B7B7B7BFBAEFFFFFDFF60
|
||||
:10042000FFFFFDFFFFFFFFFA9FBFBFCF7FFFFFFF73
|
||||
:10043000FFFFAFFFEBEBEBFFD7FEFFFFBFE7FEBF1A
|
||||
:100440007FFCFFFFEDFFFFFFFF4FFFFBFBFFFFDD2B
|
||||
:10045000FFFFFFFFFFFEBDDF9DFDDFB9FFFFFFFFD9
|
||||
:10046000EFFFFBEFEBFFDEFFFFFFFFFFF69FFFFC61
|
||||
:10047000FEFBFDFFFFFFFFEFDFFACDCFBF9FFFFFCA
|
||||
:10048000FFFFF7FEBFFFDFEF5FFFFFFFFF7F6FFFA5
|
||||
:10049000BBFDFFFFFFFFFFFFFFFF7EFF5FFFBFBF53
|
||||
:1004A000F9FFFFFF7F6E7BFFEFFDEBDFFFFFFFFF3D
|
||||
:1004B000F7B63EFCFDBF7EFBFFFFFFF7EFF7F3F75C
|
||||
:1004C000FFFBFFFFFFFFFFFF6E3579FFBFFCFFFF64
|
||||
:1004D000FFFFFFEFFB53DFFFEBBFFFFFFFFFFFBCA3
|
||||
:1004E000FFFFFFBFFFFDFFFFFFFFAFF5FFF7FFFBC4
|
||||
:1004F000FFFFFFFFFFFFBAAAEEFE3F7DFDFFFFFFFC
|
||||
:100500007FAF77FBFBFFFBF7FFFFFFFFF7BEBDBD34
|
||||
:10051000BDBDFD7B7B7B7BFBAEFFEFFFFFFFFFFCE9
|
||||
:10052000FFFFFFFF9AD9B8FFFF79FFFFFFFFFFCF63
|
||||
:10053000FBFFEBFFEBD7FFFFFFFFE7DEF8FBFE3F24
|
||||
:10054000FBFDFFFFFFFFCFADBFFAFF73DFFFFFFF34
|
||||
:10055000FFFF3AF5B7FC3FF9FDFFFFFF7FEFF3FF29
|
||||
:10056000BFFEF39FFEFFFFFFF73EFFFFFFBFFFFF52
|
||||
:10057000FFFFFFFFAFD3FEDBFFDBDFFFFFFFFFFF70
|
||||
:100580003EFFBFFF7FFFFDFFFFFFFF8FF3FFEDFF8C
|
||||
:10059000F7FBFFFFFFFFEFF63CFEFFFFFFFFFFFF54
|
||||
:1005A000FF9FEFEFD1FFFFFFFFFFFFFFFFFF7EBFCA
|
||||
:1005B000FDFFFFFFFFFFFFFFBBEFDFF1FFFFFFFFCF
|
||||
:1005C000FFFFFFFFFFEE3EFEFFFFFFFFFFFFFFBF4E
|
||||
:1005D000EFFDC3FFFFFFFFFFFFFFBFFFFC3EFEFF7E
|
||||
:1005E000FFFFFFFFFFFFFF2EEFF3FFFFFFFFFFFF08
|
||||
:1005F000FFFFF7BABEFEFFFFFFFFFFFFFF7FAFFB6E
|
||||
:10060000FBFDFFFFFFFEFFFFFFF2D6EDBDBDBD7D91
|
||||
:100610007B7B7B7BFBAFDFFFFFFFFFFFFFFFFFFF6E
|
||||
:10062000FF92BFFFFFFFFFFFFFFFFF7FAFEBEBFF7F
|
||||
:10063000FFFFFFFFFFFFFFE7FE2EFEFFFFFFFFFFB5
|
||||
:10064000FFFFFF4FEFF3FFFFFFFFFFFFFFFFFFFE87
|
||||
:100650003CFEFFFFFFFFFFFFFFFFEFCEC3FDFFFFED
|
||||
:10066000FFFFFFFFFFFFFE5DFFFFFFFFFFFFFFFF3D
|
||||
:10067000FFEFCFEBFFFFFFFFFFFFFFFFF7EE3EFFB8
|
||||
:10068000FFFFFFFFFFFFFF7FEFDFE2FFFFFFFBFF4B
|
||||
:10069000FFFFFFFFF6BEFCFFFFFFFFFFFFFF7FEE48
|
||||
:1006A0005FE6FFFFFFFFFFFFFFFFFF3E7DFFFFFF56
|
||||
:1006B000FFFFFFFFFFFFEFF3FBFFFFFFFFFFFFFF6A
|
||||
:1006C000BFF736BEFEFFFFFFFFFFFFFFFFEFD3F6D2
|
||||
:1006D000FEFFFFFFFFFFFFFFFFFC7FEEFFFFFFFFBF
|
||||
:1006E000FFFFFFFFAFEFEBFFFFFFFFFFFFFFFFFF8E
|
||||
:1006F000BABEFEFFFFFFFFFFFFFFFFEEFBFAFFFFAB
|
||||
:10070000FFFFFFFFFFFFF7D6FDBDBDBD7D7B7B7B00
|
||||
:100710007BFBAEFF7EFFFFFFFFFFFFFFFFF7BABFD0
|
||||
:10072000FFFFFFFFFFFFFFFF7FEFEB6BFFFFFFFF11
|
||||
:10073000FFFFFFFFF7FEBEFEFFFFFFFFFFFFFFFF14
|
||||
:100740004FEFF7FFFFFFFFFFFFFFFFEF3E6EFCFFE6
|
||||
:10075000FFFFFFFFFFFFFFEFC3C9FFFFFFFFFFFF2B
|
||||
:10076000FFFFFF3EBFFFFFFFFFFFFFFFFFFFEFFBAE
|
||||
:10077000D5FFFFFFFFFFFFFFFFFFFEFEFEFFFFFFB6
|
||||
:10078000FFFFFFFFFF6FEFFBFFFFFFFBFFFFFFFF21
|
||||
:10079000FFF6DFFFFFFFFFFFFFFF7FFEEFFFFFFF23
|
||||
:1007A000FFFFFFFFFFFFE7FFFEFFF7FFFFFFFFFF7A
|
||||
:1007B000FF7FFAEFBFFFFFFFFFFFFFFFFFE7FFFE37
|
||||
:1007C000FFFFFFFFFFFFFFFF7FFEEFBFFFFFFFFF0A
|
||||
:1007D000FFFFFFFFA7FFFCF7FFFFFFFFFFFFFF7F0C
|
||||
:1007E000FEAEFFFFFDFFFFFFFFFFFFE7F7FAFFFD94
|
||||
:1007F000FFFFFFFFFFFFFF7FAFFFFFFFFFFFFFFFD9
|
||||
:10080000FFFFFFF7BEBDBDBDBD7D7B7B7B7BFBAF2F
|
||||
:100810007FFFFFFFFFFFFFFFFFFFFFCAFFFFFFFF9D
|
||||
:10082000FFFFFFFFFF7F6FFFFFFFFFFFFFFFFFFFE8
|
||||
:10083000FFE7FEFFFFFFFFFFFFFFFFFFFFCFFEFF12
|
||||
:10084000FFFFFFFFFFFFFFFFFFFEDFFFFFFFFFFFD9
|
||||
:10085000FFFFFFFFEFFFFEFFFFFFFFFFFFFFFFFFB9
|
||||
:10086000FEFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFA9
|
||||
:10087000FFFFFFFFFFFFF7FEFFFFFFFFFFFFFFFF91
|
||||
:10088000FFFFEFFFFEFFFFFFFBFFFFFFFFE7F2FCB5
|
||||
:10089000EFFFFFFFFFFFFFFF7FAEEFFFFFFFFFFF59
|
||||
:1008A000FFFFFFFFF77EFDFFFFFFFFFFFFFFFFFFE3
|
||||
:1008B000EFFFFEFFFFFFBFFFFFFFBFFFFEFEFFFFDB
|
||||
:1008C000FFFFFFFFFFFFDFEFDDFEFFFFFFFFFFFF8B
|
||||
:1008D000FFFFFFFEFEFFFFFFFFFFFFFFFFFFAFEF8A
|
||||
:1008E000FFFFFFFFFFFFFFFFFFFFBAFEFFFFFFFF5E
|
||||
:1008F000FFFFFFFFFFEFFAFEFFFFFFFFFFFFFFFF1E
|
||||
:10090000F69CBDBDBDBD7D7B7B7B7BFBAEFFFFFF52
|
||||
:10091000FFFFFFFFFFFFFFF77AFFFFFFFFDFFFFF94
|
||||
:10092000FFFF6FEFF7FFFFFFDFFFFFFFFFFFF7FEA8
|
||||
:10093000FEFFFFFFDFFFFFFFFFFFCFEBFFFFFFFF2C
|
||||
:10094000FFFFFFFFFFEF9EFCFFFFFFFFFFFFFFFF2B
|
||||
:10095000FFEFEFFFFFFFFFFFFFFFFFFFFFFEFFFFC8
|
||||
:10096000FFFFFFFFFFFFFF7FEFCBFFFFFFFFFFFD5D
|
||||
:10097000FFFFFFFFBEFDFFFFFFFFFFFFFFFFFFEFDA
|
||||
:10098000EFFFFFFFDFFFFFFFFFFFFFF8FFFFFFFFAE
|
||||
:10099000BFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFB7
|
||||
:1009A000FFFFFEFFFFFFFFFFFFFFFFFFFBAF7FFF2C
|
||||
:1009B000FFFFDFFFFFFFFFFFFFFEEFFFFFFFFFFF78
|
||||
:1009C000FFFFFFFFEFFFFFFFFFFFFFFFFFFFBFFF87
|
||||
:1009D000FEFFFFFFFFFFFFFFFFFFFFAEFFFFFFFF79
|
||||
:1009E000FFFFFFFFFFFFF7FAFFFFFFFFFFFFFFFF24
|
||||
:1009F000FF7FEFFFFFFFFFFFFFFFFFFFFFF7BCBD24
|
||||
:100A0000BDBDBD7D7B7B7B7BFBAFFFFFFFFFFFFFA2
|
||||
:100A1000FFFFFFFFF7FAFFFFFFFFFFFFFFFFFF7F73
|
||||
:100A2000AF7FFFFFFFFFFFFFFFFFFFEFFEFFFFFFB7
|
||||
:100A3000FFFFFFFFFFFFFFCFFFFFFFFFFFFFFFFFF6
|
||||
:100A4000FFFFFFFEFFFFFFFFFFFFFBFFFFFFEFFFCB
|
||||
:100A5000FFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFA7
|
||||
:100A6000FFFFFFFFFFEFFFFFFFFFFFFFBFFFFFFFE6
|
||||
:100A7000FFFCFFFFFFFFFFFFFFFFFFFFEFFFFFFF99
|
||||
:100A8000FFFFFBFFFFFFFFEFFEFF9F9F9F3F3F3FEB
|
||||
:100A90003F3FFFEFDFDFDFDFCFB7BFBFBFBFFFBC31
|
||||
:100AA000B99DBDBD7D7B7B7B7BFBEFD7F5F3F1D1A2
|
||||
:100AB00065E3E3E3A3FFFE7FFEDEDEFFBDBDBDBD5C
|
||||
:100AC000DFEFFBF7F3F3F3E7E7E7E7E7FBFEFFFF13
|
||||
:0A0AD000FFFFFFFFFFFFFFFFFFFF26
|
||||
:00000001FF
|
||||
This file contains the firmware of Seven of Diamonds from OSITECH.
|
||||
(Special thanks to Kevin MacPherson of OSITECH)
|
342
firmware/yam/1200.bin.ihex
Normal file
342
firmware/yam/1200.bin.ihex
Normal file
@ -0,0 +1,342 @@
|
||||
:10000000FFF200A5ADFFFE9FFFEFF3CBFFDBFCF29D
|
||||
:10001000FFF6FF3CBFFDBFDF6E3F6FF17DB4FDBF5C
|
||||
:10002000DF6F3F6FF70BFFDBFDF2FFF6FFFFFFFF18
|
||||
:10003000F0CFFFFFFFFEFFFFDFFFFFFFEFFFFFFF40
|
||||
:10004000FDFFFFFFFEFFFFFFFFFFF1FFFFFFFFBF11
|
||||
:10005000FFFFF7FFFFFBFFFFFFFCFFFEFFFFFFF0CF
|
||||
:100060005FFFFFFFFEFFFFFFFFFFFFFFFFFFFFFF41
|
||||
:10007000FFFFFFFFFFF7FFFFFFF1FFFFFE7FBFFF67
|
||||
:10008000FFFFFFFFFFFFFFFFF7FFFBFFFFFFF09FFB
|
||||
:10009000FFFFFFFEFFFDFFFFFFFFDFFFFFFFF7FF9B
|
||||
:1000A000FFFFFBFFFBFFFFFFF0FFFFFFFFFFFFFF77
|
||||
:1000B000F7FFFFFBFFFFFFFEFFFFFFEFFFF05FFF1C
|
||||
:1000C000FFFFFEFFFFEFFFFFFBFFFFFFFFFFFFFF55
|
||||
:1000D000FFBFFFFFDFF7FFF1FFFFFFFFFFFFFFFFA6
|
||||
:1000E000FFFFFFFFFFFBFEFFFFFFFFFFF0FFFFFF34
|
||||
:1000F000FFFEFFFFFFFFFFFFFFFFFFFFFFFFFFEB25
|
||||
:10010000FFFFFFFDFFBFF1FFFFFFFFDFFFFFFFFB73
|
||||
:10011000FFFFFFFFFFFFFFFFFFFFFFF06FFFFFFF8E
|
||||
:10012000FEFFFFFFFFFFFFFFFFFFDFFFFFFFFFFF00
|
||||
:10013000FFFFF7FFFFF1FFFFF7BFE7FFFFFFFFFB49
|
||||
:10014000FFFFFFFFFFFF77FFFFFFF0FFFFFFFFFE57
|
||||
:10015000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
|
||||
:10016000FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFAD
|
||||
:10017000FFFFFFFFFFFFFFFFFFF01FFFFFFFFEDBA3
|
||||
:10018000FFFFF5A5FD4B6EEF3332DDD34AD692FE6D
|
||||
:10019000B33FBDF1FADBFEF7F696BDBDFFBDFFED47
|
||||
:1001A0007F6B7FFBDFFEFBFE90CFFFFFFFFEBEEF0E
|
||||
:1001B000FFFFDB5FF6FFF68FFDA5DDFFFFFFFF6FA3
|
||||
:1001C0007FDBF1FCBFFF6FFFEFFC5B5DDADFF4FF6D
|
||||
:1001D000F2FFFDBFFFFFFFD01FFFFFFFFEFFFFFF8E
|
||||
:1001E000FFFBEFB7FC33FFFBFF046AF33C36FFF085
|
||||
:1001F0000FF10FFFFFFFF315720FF16FFFFE943F3A
|
||||
:10020000FFFFFF7BFFFFF0FFFFFFFFFEFFFFFFF0A1
|
||||
:10021000F7EFB7FC33FFFFFF046AF33C36FFF00F44
|
||||
:10022000F10FFFFFFFF315738FF26FFFFE943FFF97
|
||||
:10023000FFFF7D9FFFF00FFFFFFFFEFFFFFFFF9E11
|
||||
:10024000FFFCEFD3FBFF7FF55FFE59FFFFFFFCF1E3
|
||||
:10025000FE7FFFFFFA17FFE7EFEFFFFF3FF1FFFF22
|
||||
:10026000FFFFFFFFF0FFFFFFFFFEF5FFBFFFFCEA10
|
||||
:10027000FFF0FFFFBFF93FB1EFFFD7FFFBFFF0FF3C
|
||||
:10028000FFF3FFDFFF7BFFFDFFF6FFBFFFFFBFFFB9
|
||||
:10029000FFFFDAF0FFFFFFFFFEF2C00100000202E5
|
||||
:1002A0000202004040401000000020000001000059
|
||||
:1002B000000000001900040400000000000000100D
|
||||
:1002C000003CF0AFFFFFFFFEFDBFFFFFFBFFFDFFA8
|
||||
:1002D000FF7FFFFFBFFFEFFFFFFDFFFFF1FFDFFF2E
|
||||
:1002E000FFFFFFFFFFBFFEFFFFFEFFFFFFFFFFDF80
|
||||
:1002F000DBF06FFFFFFFFEF0BFDFFF7FFFFFFFFFC1
|
||||
:10030000DFDFFFEFFF9EEFFFFF7FFFF1EFFFFFFF5C
|
||||
:10031000F7FABFFFFFFE47EFFFBDF6FFFFDFF5F087
|
||||
:10032000F0EFFFFFFFFEF8300000000400010208BC
|
||||
:1003300016000000800001020080010C0200000194
|
||||
:100340000000200000060020001000140004C1F08E
|
||||
:100350002FFFFFFFFEFFFFFFFFFFFFFFFBFFFF7F02
|
||||
:10036000ECFFFFFAFFBFFF6FFFE1FFFFFFFFBDFEE6
|
||||
:1003700046FFEF7FCDDFFFFFFDFFBDFF7F7FF04F2B
|
||||
:10038000FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7E
|
||||
:10039000FFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFF7B
|
||||
:1003A000FFFFFFFFFFFFFFFFFFFFFFFFFFF00FFF5C
|
||||
:1003B000FFFFFEFFFFFFFDA4BCCD6D6B6F5BDC3369
|
||||
:1003C0005AF6F7F6B33FBDC1FA5AF6F6B6F7FFBDD7
|
||||
:1003D000BB3CCECF34EF33BBCCFFFFFFF04FFFFF72
|
||||
:1003E000FFFEBFFFFFFFDBFFF6D6FFFDFDBFFFAD4A
|
||||
:1003F000BFF97F6FFCDBF1FDBFFF6FFFFFDADBFCB6
|
||||
:10040000DBFF768FF6FFCDABFEFBFFD0FFFFFFFFDC
|
||||
:10041000FEFF9FFFF420AF6D0BC17BFFFFFFCBFF03
|
||||
:100420003FF0EF7F0FF1C33CFFFFFFFFFFFFF80B33
|
||||
:100430001D6A64056B9901FFFDEFF02FFFFFFFFEC2
|
||||
:10044000FFFFFFF4002FCC0BC37FFFFFFF0ADFBFCE
|
||||
:10045000FD7FFFFFF1C3BFFFFFFFFFFFFFF04A0E6D
|
||||
:10046000966402979910FFFFFFF0DFFFFFFFFEFF8A
|
||||
:10047000FFFFFE84F9D527F17FFFF8EBDFF3CF3FD5
|
||||
:100480001FFFF711FFCFFFFE67FFFFFFFFC4FFFF56
|
||||
:10049000B3A1FFF9E0FFFFFFF0EFFFFFFFFEF5FF65
|
||||
:1004A000FFFB7FE0FFC7FE7F3FFFFD778D7F0FFFE4
|
||||
:1004B000C3FFF1BF8FCFFFFFDD7BFFF6FAF7FF40F1
|
||||
:1004C0009FF97FD8FFFFFAF01FFFFFFFFEF1C0008A
|
||||
:1004D00000030000000000000000400010000010B9
|
||||
:1004E00000010010202000001000040105000000A1
|
||||
:1004F00000404000003CF01FFFFFFFFEFDBFFFFF7C
|
||||
:10050000FFFFFE7F7FFFEFFFFFDFFFFFDFFFEFF764
|
||||
:10051000F1FFFFFFFFDFFFFFF7FFFFFFFCFDFF7FA6
|
||||
:100520007EFFFFFFDBF06FFFFFFFFEF0BBFFFFFF73
|
||||
:10053000FFFFFEEBFD6FFFF7FEF57FFFFF7FBFB113
|
||||
:10054000FFFF9FBFFBFFFEFFFEFFF7EBDFBF5FDD9F
|
||||
:10055000FFDBFDD0F06FFFFFFFFEF8302000420010
|
||||
:100560000000301804080921828002000800010000
|
||||
:1005700000000C2010001100448400202084800022
|
||||
:100580000000C1F0DFFFFFFFFEFFF7FFFBDDF9FF1B
|
||||
:10059000DAFFDCDDFCFBFFBFFB3ED796FE61F7FF19
|
||||
:1005A0007FFF3FFDFFDFCFF7DFF7BFFDFFFEEFEF80
|
||||
:1005B000FEFFF07FFFFFFFFEFFFFFFFFFFFFFFFFDC
|
||||
:1005C000FFFFFFFFFFFFFFFFFFFFFFFFF1FFFFFF49
|
||||
:1005D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
|
||||
:1005E000FFF02FFFFFFFFEFFFFFFF3BDFD4B74CFBA
|
||||
:1005F000735BCB3BDFFEF7FED375ACA1FBDFFEF7F1
|
||||
:100600007696B524BDA5AD492F692B525BBDFFFF82
|
||||
:10061000F0CFFFFFFFFEBFFFFFFFDBFFF6FEFFCCCB
|
||||
:10062000A7FBADFF7F6FFF6D7FDBF1FDBFFF6FFFAE
|
||||
:100630006FFFDBFFDBFFF697F6FFB5B5FFFFFFD0DF
|
||||
:10064000EFFFFFFFFEFFFFFFFDA5BC43FC7C03E7C0
|
||||
:10065000FFFF20FFFFFFCCFD7DF1FFFFFFFFD5591E
|
||||
:10066000BA56666AAD9AA99A97A5AABBFFFFF00F82
|
||||
:10067000FFFFFFFEFEFBFFFDF7FD43FFFD6BE7FF06
|
||||
:10068000FFDFFFFFFFFFFF3FF1FFFFFFFFD559B582
|
||||
:10069000A6666AAD9AA9996B5AAAFFFFB7F03FFF09
|
||||
:1006A000FFFFFEFFFFFFFE9CF7FDD241FFFFF27F41
|
||||
:1006B0008FFFFF3DF3FF17F1FFFFFFFFFF7FDFFC21
|
||||
:1006C0008F38FFEF23FFFBF7C8FFFFFFF09FFFFF0F
|
||||
:1006D000FFFEF57FFFFDFFE4FFEBFFCFBFFAFFABAF
|
||||
:1006E000EFFFFBFFF3FD61FFFFFFFFFAFFFBFD0DD7
|
||||
:1006F000FFFEFF437FFEBFD0FDFFFAF03FFFFFFF8D
|
||||
:10070000FEF3C0000000020002010060C0400000D3
|
||||
:100710000000340400010000000000000008880010
|
||||
:100720000003000040004000003CF03FFFFFFFFEE0
|
||||
:10073000FD3FFFFFFFFFFFFF7F7FBFFFFFFFFFFFCB
|
||||
:10074000FFFFFFF7F1FFFFFFFFFFF7FFFFFFFDFFD9
|
||||
:10075000FFFFFFFEFE5FFFFFCBF0DFFFFFFFFEF0BE
|
||||
:10076000FFFFFDFFEFE3DEEED9C593FFFFFEFEFFC7
|
||||
:10077000FBEEFEF1FFFFFFFFFFFDFFBFF7FFFF7F77
|
||||
:10078000AFBDDFDFFBF3F3F0F0AFFFFFFFFEF834A8
|
||||
:10079000000661001801A0051700200528200000B0
|
||||
:1007A0000500410000400009000120868208400346
|
||||
:1007B000803070081402C1F0CFFFFFFFFEFFFFFF83
|
||||
:1007C000FFFFBDEFFBFFFFFB9C7FEFDFFFBFEBDE1B
|
||||
:1007D000FFC17FFFFB7FFFFFFF5FFFFFFFDFBFEF7B
|
||||
:1007E0003FF78FEF7FFFF07FFFFFFFFEFFFFFFFF71
|
||||
:1007F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
|
||||
:10080000F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
|
||||
:10081000FFFFFFFFFFF03FFFFFFFFEFFFFFFFFBDFA
|
||||
:10082000DFEF7D6D2B5A5DD2DFF692B6B2B3ACA18D
|
||||
:10083000FBDFFEF1EEF5F6BC6BBD7DAF1AEF5F6B33
|
||||
:10084000C6FFFFFFF05FFFFFFFFEBFFFFFFFDBFF05
|
||||
:10085000F6FFF6B7FDADFDBFF36FFF6FFFDBD1FD18
|
||||
:10086000BFFF6FF56BBC5B3CDAEF16AF16FFCDAB8D
|
||||
:10087000FF6FFFD0FFFFFFFFFEFFFFFFFCBFFFFF8B
|
||||
:10088000FF6C0310C1F3FFF33AF3CAFFAFF1FFFFB0
|
||||
:10089000FFFFD996A665A6666A9569696A5A5AFFE6
|
||||
:1008A000FF5FF01FFFFFFFFEFFFFFFFFBFFFFFFF28
|
||||
:1008B000EA0F50C3F37FFFF3F3C3FFAFF1FFFFFF76
|
||||
:1008C000FFD996A665A6666A9569696A5A5AFFFFB6
|
||||
:1008D000FFF03FFFFFFFFEFFFFFFFFD7FFFF5FC1FE
|
||||
:1008E0003FF75EF5CE9E5F3F17FFF3E1FFFFFFFF8F
|
||||
:1008F000D8FFFAFE67FFFEBF5AFFFFAFF5FFFFFF0D
|
||||
:10090000F02FFFFFFFFEF5FFFFFDFFF7FFFD4E3D60
|
||||
:100910003FE70BBF8FF9FFEBE3FFE1FFFFFCFFC7F2
|
||||
:100920009FFF3E39E5FFCF9BF9FFFFC5FFFFFAF0C0
|
||||
:100930005FFFFFFFFEF3C00000000000000040006A
|
||||
:100940000000006000000000000100000020002006
|
||||
:10095000000110080000000000000000003CF04F03
|
||||
:10096000FFFFFFFEFDBFFFFFFFFFFFFFFEFFFFBF1B
|
||||
:100970003FFFFFBFFFFFFFFBF1FFFFFFFFF7FFF7A9
|
||||
:10098000FFEDFFFBFEFF7FFF7FDFFFFFDDF03FFF9F
|
||||
:10099000FFFFFEF0FFFFF3FFF7FFFE5FFFF7FFFF34
|
||||
:1009A000DFFFFFFFF7FE7BF1FFFDFDFFDFDFFF7DD8
|
||||
:1009B00073F9FFC37EFEFFEFD7FFCFD0F06FFFFFCD
|
||||
:1009C000FFFEF83000004004000141200004000256
|
||||
:1009D000D50900028002010000000A04000700019E
|
||||
:1009E000500180026140410C1408C1F09FFFFFFFDD
|
||||
:1009F000FEFFFFFFFEFFFFFFFEDFCB5FFEEFFFFE10
|
||||
:100A0000FF3FFF7FFDC1FFFF7FFFDFFDFCFDF7EE36
|
||||
:100A1000FFFF4EFFDFCFDBEBFFFFF01FFFFFFFFE0F
|
||||
:100A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
|
||||
:100A3000FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFD4
|
||||
:100A4000FFFFFFFFFFFFFFFFFFF02FFFFFFFFE7F16
|
||||
:100A5000FFFFFFFDFFFFFFFFFFFFFFFFDFFFFFFFC8
|
||||
:100A6000F7FBFFF1FFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:100A7000FFFF7FFFFFFF7FFFF01FFFFFFFFEDDFF98
|
||||
:100A8000FFFFA5FF6F6BE96FDACAFBDDEEF7F6B289
|
||||
:100A9000B3A4A15B5BF6D7F4F77BBDBDADCFEF7F11
|
||||
:100AA0006B7F3BDFDBFFFF30CFFFFFFFFEBFFFFFB2
|
||||
:100AB000FFFFFFF6FE96FFFDB5FDBFAD7FFF6FFFA9
|
||||
:100AC000DED1ADADE9FFF1ECEFDE3FCBFFF6FF325B
|
||||
:100AD000FFC5BDFFFFFFD0BFFFFFFFFEFEFBFFF422
|
||||
:100AE00028BFFFFDFBD3FFFF42FFFFFFEAB3FCC3BC
|
||||
:100AF000C1FF33FFC0156B70FFF0F24FFFFC3E9754
|
||||
:100B00003CFFFFFDEFF0BFFFFFFFFEFFFFFFFE78A2
|
||||
:100B1000BFFFFDF3EF55FF7EFFFFFFEAB3FCC3C14C
|
||||
:100B2000FF33FFC0156FFF0FF0F00FFFFC3D6BC3ED
|
||||
:100B3000FFFFFEF7F0CFFFFFFFFEFFFFFFFFFCFF11
|
||||
:100B4000FF23F87FFF4EFFFFFFFBF917FFF6F1FFD2
|
||||
:100B5000CFEFFFFF13DFE62FC7FFFFE7C1FDFFFE6B
|
||||
:100B6000FFFFFFF04FFFFFFFFEF5FFFFFFFEAEFFB1
|
||||
:100B7000FF7F3B3FFC7FFCEFFFFCE27BFFF1FDEDE5
|
||||
:100B8000EFFFFF3573FFFFFEFAFFFFFFFEBFFFFF22
|
||||
:100B9000FFFAF08FFFFFFFFEF1C000000000000031
|
||||
:100BA000000000800000400000000C0401404000F4
|
||||
:100BB00000302804000800000001000100000000CF
|
||||
:100BC00038F00FFFFFFFFEFDBFFFFFFFFFFBFF7FC2
|
||||
:100BD000FFFF9FFFFFFFFFFFFFFFFFF1FFDFDFFFD3
|
||||
:100BE000FFFFFFEDFFFDFFFFFFFFFFBFBFFFFFC3E5
|
||||
:100BF000F03FFFFFFFFEF0BFFDFFBFFFFFFDFFFF68
|
||||
:100C0000FFFFFFFD7BFF7FFFBDFFF1EFFFFFFDDF7C
|
||||
:100C1000FDFBFFFFBFBEFFCD7FFCF7F76FBFD8F036
|
||||
:100C2000EFFFFFFFFEF830000000040000A000000E
|
||||
:100C3000C0000020340000000C810020A42000101F
|
||||
:100C400008044808004093001000381820C1F03F05
|
||||
:100C5000FFFFFFFEFFFBFFFFB9DFFEB3FFFFE7FD76
|
||||
:100C6000FFFF3BFF7FFFBFFFC1FFFCFFFF3F77FEA2
|
||||
:100C7000FECFFFBFFDBFFFFEEDF2FDF7FFF02FFF40
|
||||
:100C8000FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFF75
|
||||
:100C9000FFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFF72
|
||||
:100CA000FFFFFFFFFFFFFFFFFFFFFFFFF0BFFFFFA3
|
||||
:100CB000FFFEFFFFFFF3ADCFEF70C9733BDF5B4A71
|
||||
:100CC000F6B7FED7F5BCC133CAD6B76EF7FBBDC5C4
|
||||
:100CD00024CF6F2F4D2BBA5AFFFFFFF0AFFFFFFF5E
|
||||
:100CE000FEBFFFFFFFFFF6F6D7FFFFADBDFFFFFF23
|
||||
:100CF000EFF77FFC5BB1FDBD756FEF6AFD5BFBDB62
|
||||
:100D00003ABF8E9FFFBFFDFF6FFFD06FFFFFFFFE5B
|
||||
:100D1000FFBBFFF03FFFFFFDFB7FDEFFFF5AD6BFAB
|
||||
:100D2000D82ABFBFF1E5FFCCC0A970FFF33C3CFD62
|
||||
:100D300057FD980300C3FFFFFFF0AFFFFFFFFEFF6B
|
||||
:100D4000FFFFFF3DBFFFFDFBFFDBFFFF0FFC3FD8B9
|
||||
:100D50002ABFBFF1EFFFCCC096BEFFF33FFFFD57A8
|
||||
:100D6000FD990FFFC3FFFFFFF04FFFFFFFFEFFFFE7
|
||||
:100D7000FFF1E7FFFFF38E7BFFA8FFDF7F8E787325
|
||||
:100D8000FFF15162FFFC4BFFF3FF7ECFF9FFFDFF48
|
||||
:100D9000FF7FFFE0FFFFFFF04FFFFFFFFEF5FFFFCC
|
||||
:100DA000FBFDAEFFFCFE6F3FF8FD77AFFE37FE7B2D
|
||||
:100DB000FFB18CFFEFFDF8E7BFFFF1FE3EF7FE95B8
|
||||
:100DC0003EBFFFFFFFFAF0BFFFFFFFFEF1C00000D4
|
||||
:100DD0000104000000008002000010001000100854
|
||||
:100DE0004180100000081084000C040261000081A2
|
||||
:100DF000000000003DF07FFFFFFFFEFDBFFFFFFF93
|
||||
:100E0000FFFF7FFFFEFDBFFFFFFFFFFFFFFFFFF1C3
|
||||
:100E10007FBFF77FEFFFEFFFF7FDFFFFFD7FFFBE17
|
||||
:100E2000DFFFFFD9F0BFFFFFFFFEF0BBFF7FFBFF3F
|
||||
:100E3000FBFFBFFFF37FFBFDEB7FDFFAFFDEF0ED93
|
||||
:100E4000FFB1F7F91FB55BFE7EF7BEFD7F5FB5F71B
|
||||
:100E5000FFFFD0F04FFFFFFFFEF830010007420117
|
||||
:100E6000006A185080000002400101200101241492
|
||||
:100E700021100208070800401080580084801810D4
|
||||
:100E800040C1F0BFFFFFFFFEFFFFFFF7FFDBB7F33F
|
||||
:100E9000DF7CF874FFFF6F7D3F7EEC7FC1F5FFCFF5
|
||||
:100EA0006F9FF9DFBEE5E7FFD7F3DDFBFFFCFFBF78
|
||||
:100EB000FFF0FFFFFFFFFEFFFFFFFFFFFFFFFFFF52
|
||||
:100EC000FFFFFFFFFFFFFFFFFFFFFFF1FFFFFFFF40
|
||||
:100ED000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
|
||||
:100EE000F02FFFFFFFFED7FFFFFFB4CFEF776F7349
|
||||
:100EF0003A4A3ACBD4F72ED6BDBDA13BDFD6F7EEAA
|
||||
:100F0000D335BDFBBDCEEB2B4D2FBBDAFFFFFEB0C3
|
||||
:100F10005FFFFFFFFEBFFFFFFFDF5F36AF3FEDB7B5
|
||||
:100F2000F5FDF32BEF77FFFBDAB1BDA377697F4FB8
|
||||
:100F3000FFDBFA5BFFF2FEFF96FFFFFEDFFFD0AFA5
|
||||
:100F4000FFFFFFFEFFFFFFFD8FFD406F9E835A0FE7
|
||||
:100F5000FAC3FFFFFCE97FF301D000FEBFCD3FF0F5
|
||||
:100F6000EFFCC50C3FFD680BFFFFFFFEDFF0FFFF4E
|
||||
:100F7000FFFFFEFFBBFFFD85FFD46F9FC35A0FFF2E
|
||||
:100F8000FFFFFFFCE97FF301F0FBC2BFFC0037EF7E
|
||||
:100F9000FCCDBC3FFF0CBFFFFFFFFFFFF05FFFFF7B
|
||||
:100FA000FFFEFFFFFFFFD9F7D1B77E7FF1E4FDFF22
|
||||
:100FB000FBFBFF5FFF7FB1BC0F67EBB83FFFE2FFBA
|
||||
:100FC000E9FFFDE3FF3F9FC2FFFFFFF09FFFFFFF31
|
||||
:100FD000FEF57FFFF03FBCFFD5F5CE3FFEFFFE6D77
|
||||
:100FE000FFF1BF7BFFF1FDFF4FFF87FFAEFFB1F8C1
|
||||
:100FF000FEFFFF7801B9FFFFFFFAF02FFFFFFFFEB2
|
||||
:10100000F3C00000000402130200804000901000B2
|
||||
:1010100010000200012080121000400800040000AF
|
||||
:1010200002000140008000003CF0EFFFFFFFFEFDEA
|
||||
:101030001FFFFFFF7FFFFFFFFF7FFF7FF7DFF7FF50
|
||||
:10104000F7FBEBD1FFFFFFFFEFF7FFFFFBFFFEFF1B
|
||||
:10105000FF7EFFFBFFFFFFDBF0FFFFFFFFFEF0FF68
|
||||
:10106000FFB7EBF7DFFFFEF56BE7EDF73EECFF5464
|
||||
:10107000EF6FF1F5AF6FF6FDFFDD7BFFEFBF7FFF99
|
||||
:10108000FFF7FFF35FF7D0F0CFFFFFFFFEF8300070
|
||||
:1010900080400400812C0424000201C802000224C4
|
||||
:1010A0000001B442DC4402159002034839100224C6
|
||||
:1010B000A0BA000040C1F0BFFFFFFFFEFFFFFFFF2F
|
||||
:1010C000FEFCF7F0EEB65DFDF5FFDBF77F7FBEFFC0
|
||||
:1010D000C1FEBFFAFA5FFFADFFEFFF7FDF7FFEBF0C
|
||||
:1010E000B794BFFFFFF09FFFFFFFFEFFFFFFFFFF73
|
||||
:1010F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10E
|
||||
:10110000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
|
||||
:10111000FFFFFFFFF08FFFFFFFFED7FFFFFBB5FFD5
|
||||
:10112000EF7CEB2B525B3BDAD4F33696B5BDF1FB8B
|
||||
:10113000DAEEF6FED335BDDFADCFEF7ECD6BBBDF94
|
||||
:10114000FFFFFDB0EFFFFFFFFEBFFFFFFFD35FF626
|
||||
:10115000FFF6FFFDADFDFF7FEFFF6F7FDBF1A5A386
|
||||
:101160007F6F6B4FFFDBFBCBFFF6FFF4D7FDBFFEBE
|
||||
:10117000DFFFD0CFFFFFFFFEFFFFFFF7DFFFFFFF27
|
||||
:101180003F7FFCE5FF20FEFFFFDF7FFFF17FFFFEDB
|
||||
:10119000FFF07C3D4FF3C33FFFFF6FC3FF0FFFFF27
|
||||
:1011A000AFF02FFFFFFFFEFFFFFBB7E00FFFFF2BAE
|
||||
:1011B000FF7DBFFFDFFFFFF89F7FFFF155FFFFFFC0
|
||||
:1011C000FD7C3CFFF3C33FFFFFEFC3FFDFFFFFFFEB
|
||||
:1011D000F09FFFFFFFFEFFFFFFFFEFFFFF9FBF7FBF
|
||||
:1011E000F919478EE79F3F17FFFC81C17EF3D9F9BC
|
||||
:1011F00073DFF47FFAFFFFFFFB7F77C7FFFFFFF08E
|
||||
:101200002FFFFFFFFEF5F7FFFBFFF73FFCBF3E3F61
|
||||
:10121000ECFF81AFFE4FF3BBFFF07EFF6FFF87FF58
|
||||
:10122000BBFFD5FCFF7FFC6FFFEFE7FFFFFAF03F4E
|
||||
:10123000FFFFFFFEF3C00000000000000000008080
|
||||
:101240000030106020000800012080001000040021
|
||||
:101250000000000000020080400008203CF06FFF0A
|
||||
:10126000FFFFFEF5BFFFFFFEFFFFFFFF7FFE3FFF1B
|
||||
:10127000FFFFFFFFEFFFFFF1DFDFFFFFFF7FDFFF7C
|
||||
:10128000FDBDFFFFFFFBDFFFFFFFFF5BF0FFFFFF89
|
||||
:10129000FFFEF0BFBFBFFFF7FBFFFEEEFAFFFFFF51
|
||||
:1012A0003D3BFFFFFEFBF1FFBF7BFFFFEFFFBFFFFB
|
||||
:1012B000FFFFFFFFFEFFF7EFFFFBD0F0DFFFFFFFB9
|
||||
:1012C000FEF83000000000000B10050100080002CD
|
||||
:1012D000010100001001C8080000000042020000E7
|
||||
:1012E000008002000040248000C1F03FFFFFFFFEAD
|
||||
:1012F000FFFFFFFFF7FDF7FAEFEEF9FDFFF7FEBF87
|
||||
:101300001FFD9EFDD1EFFFF77F9FFFEFFFF6FFFE72
|
||||
:10131000FE7BFFBDFF7EFFFFFFF03FFFFFFFFEFFF5
|
||||
:10132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
|
||||
:10133000FFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFCB
|
||||
:10134000FFFFFFFFFFFFFFFFF0AFFFFFFFFEFFFF0D
|
||||
:10135000FFF7FFFFFFFF7FFFFFFFDFFDFFFFDFFF67
|
||||
:10136000FF5FF1BFFFFFFFFFFFFFFFFFFFFFFFFF7B
|
||||
:10137000FFFFFFFFFFFFFFF0DFFFFFFFFEFFEFFFBD
|
||||
:10138000F7FFFFFFFFFFFFFFFF3FFBFFFFEFFBFD4F
|
||||
:10139000FFF1FFFFFBFFFFFFFFFFFFFFFFFFFFFF6F
|
||||
:1013A000FFFFFFFFFFFFF02FFFFFFFFEF7FFFFFF35
|
||||
:1013B000FFFFFFFFFDFFFFFFFFFFFF7FFFFFE7FFD7
|
||||
:1013C000F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
|
||||
:1013D000FFFFFFFFFFF0FFFFFFFFFEFFFFFFFFFF2D
|
||||
:1013E000FFFFFFFFFFFFFFFFFFFFCFFFFBFFFBF153
|
||||
:1013F000FFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFF01
|
||||
:10140000FFFFFFFFF02FFFFFFFFEFFFFFFFFFFFFCC
|
||||
:10141000FFFFFFFFFFFFFFFF7BFFFFFF7FFFF1FFEE
|
||||
:10142000FFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
|
||||
:10143000FFFFFFF07FFFFFFFFEFFFFFFEFFFFFFF5C
|
||||
:10144000FFFFFFFFFFFFFFDF57FFFEBFFBF1FFFFC7
|
||||
:10145000FDF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFA6
|
||||
:10146000D7FFF07FFFFFFFFEFFFFFFF7DBFFDBFD96
|
||||
:10147000F6FFF6FF3CBCBCBFDF6FEF2FF13CBFBCFB
|
||||
:10148000BFDF6FFF6FF7DBFFDBFDF6FFF6FFFFFF50
|
||||
:1014900001E2EFFFFFFFFEFFFFFFFFFFFFFFFFFF88
|
||||
:1014A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
|
||||
:0614B000FFFFFFFFFFFF3C
|
||||
:00000001FF
|
||||
/*
|
||||
*
|
||||
* File yam1k2b5.mcs converted to h format by mcs2h
|
||||
*
|
||||
* (C) F6FBB 1998
|
||||
*
|
||||
* Tue Aug 25 20:24:08 1998
|
||||
*
|
||||
*/
|
342
firmware/yam/9600.bin.ihex
Normal file
342
firmware/yam/9600.bin.ihex
Normal file
@ -0,0 +1,342 @@
|
||||
:10000000FFF200A5ADFFFE9FFFEFFBCBFFDBFEF293
|
||||
:10001000FFF6FF9CBFFDBFEF2E3F6FF1FDB4FDBFAC
|
||||
:10002000FF6FFF6FFF0BFFDBFFF2FFF6FFFFFFFF2E
|
||||
:10003000F06FFFFFFFFEFFFDDFFFFFFFF7FFFFFF9A
|
||||
:10004000FBFFFFF7FFFFFFFEFF7FF1FFFEFFBFBFDC
|
||||
:10005000FFFFFFFFFFF7FFFFFFFEFFFEFFFFFFF0C9
|
||||
:10006000EFFFFFFFFEFFFFFFFFFFFFBFFFFFFFF7F9
|
||||
:10007000FFFFF7EFFFFFFFFFFFF1FFFFFF7EFFFF37
|
||||
:10008000FFFFFFFFDFFFFFFFFFFFFDFFFFFFF0DFD1
|
||||
:10009000FFFFFFFEFFFFDFFFFFFFFFFFFFFFFFFF91
|
||||
:1000A000FFFFEFFFF3FBFEFFF1FFFDFFFFFFFFFF91
|
||||
:1000B000FFFFFFFFFFFFFFFEFFFFFFDFFFF07FFF00
|
||||
:1000C000FFFFFEFFFFEFFFFFFFFFFFFFFFFFFFFF51
|
||||
:1000D000FFFFDFFFFFFFF7F1FFFFFFDFFFFFFFFF86
|
||||
:1000E000FFFFFFFFFFFFFFFEFFFFFFFFF00FFFFF20
|
||||
:1000F000FFFEFFFFFFFFFFFFFFFFFFFFFFFF7FFF91
|
||||
:10010000FFFFFFFFFFFFF1FFFFFFFFFFFFFFFFF517
|
||||
:10011000FFFFFFFFFFFFFFFFFFFFFFF02FFFFFFFCE
|
||||
:10012000FEFFFFFFFFFFFFFBFFFFFFEFFF7FFFEF84
|
||||
:10013000FFEFFF7FEFF1FFEFFF7FFFFFFFFFFFFF0D
|
||||
:10014000FFFFFFFFFFFEFFFFFFFFF09FFFFFFFFE30
|
||||
:10015000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
|
||||
:10016000FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFAD
|
||||
:10017000FFFFFFFFFFFFFFFFFFF0BFFFFFFFFEFFDF
|
||||
:10018000FFFFFFBDFFEF7FEF7FFBDFD35AFED7D628
|
||||
:10019000F77FBDF1BB5DD6F7FE96FFBDAFADBFEFFC
|
||||
:1001A0007F6B7FFBD6FEF7FF10EFFFFFFFFEBEEF7A
|
||||
:1001B000FFFFDBFFF6FFF6FFFDBFFDBFFF7FFF7F09
|
||||
:1001C000DFDBF1FD35FF6FFF6FFFDBFFCBFFF6FFDE
|
||||
:1001D000F2FDFDBFFFFFFFD0EFFFFFFFFEFFFFFFC0
|
||||
:1001E000FFFFFFFFFFFFFFFFFFFF55FFCCC03FFFFB
|
||||
:1001F000FFF124F0FFFFCFEF3FFFF0FFFFFFFC3FD9
|
||||
:10020000FFFFFFFFFFFFF0CFFFFFFFFEFFFFFFFF3E
|
||||
:10021000FFFFFFFFFFFFFFFFFF55FFCCC03FFFFFCA
|
||||
:10022000F100F0FFFFCFDFFFFFF0FFFFFFFC3FFF1C
|
||||
:10023000FFFF7DFFFFF0FFFFFFFFFEFFFFFFFFFF60
|
||||
:10024000FFFFFFFFFFFFFFFFDFFE7FDFFFFFFFF18D
|
||||
:10025000FFCFFFF3FF97FFFF8FE7FFFFFC71FFFF6B
|
||||
:10026000FFFFFFFFF0EFFFFFFFFEF5FFBFFFFFFF08
|
||||
:10027000FFFFFFFFFFFFE3F7EFFFFFFC7BFFF13F17
|
||||
:10028000FFEFFFCFE3E3FFFFFFFF3FFFFFFFBFFFF6
|
||||
:10029000BFFFDAF07FFFFFFFFEF2C00000000000AA
|
||||
:1002A000000000000000000000000000000100004D
|
||||
:1002B000000000000000000100000200000000003B
|
||||
:1002C000013CF0AFFFFFFFFEFDBFFFFFFFFFFFFFA1
|
||||
:1002D000FFFFFFFFFFDBFFFFFFFFFFFFF1FF9FFFC0
|
||||
:1002E000FFFFF7FFEFFFFFFFFFFFFFFFFFFFFFFF36
|
||||
:1002F000DBF07FFFFFFFFEF0BBDFFFFFFFFFFFFF35
|
||||
:10030000FFFFFFFFFFFFFFEFFBDFBFF1FEFDF7FF8A
|
||||
:10031000FFFFFFFFFEFFFFFFFFFFFFFFFF77FDF285
|
||||
:10032000F01FFFFFFFFEF838000000000000000390
|
||||
:100330000000000200900000000C010000042400F6
|
||||
:100340004001000000400000000002000001C0F079
|
||||
:100350004FFFFFFFFEFFFFFFFFFFFFFFFFFFFFFF5E
|
||||
:10036000FFFFBFFFFF6FFFDFFFD1FFFEFFFFFFFFBC
|
||||
:10037000FFFFDFFFFBFFFBEFFFFFEEFFFF7FF0DF85
|
||||
:10038000FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7E
|
||||
:10039000FFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFF7B
|
||||
:1003A000FFFFFFFFFFFFFFFFFFFFFFFFFFF08FFFDC
|
||||
:1003B000FFFFFEFFFFFFF5ADFF692AED6BFBDF3AA4
|
||||
:1003C000DCF496EEB33D35C1BBDDFEF6FED6B5AD31
|
||||
:1003D000BFA5AD492F4F2BDA5FFFFFFFF02FFFFFC7
|
||||
:1003E000FFFEBFFFFFFB5BF7F6FFF6FFFDBFFDA5BE
|
||||
:1003F000F36FF36EFA7BD1FDB5776FE96FFFDBFB2F
|
||||
:10040000DBDFF6FFF6FFFD3FFEF7FFD04FFFFFFFFC
|
||||
:10041000FEFF9FFFFF0FFFC03F9C03FFFF8BA5FE6A
|
||||
:10042000803EC2BFACB124FFFFFFFFFFFF0FFFA361
|
||||
:10043000FFFD6BFFFFF0A5FFFFFFF0AFFFFFFFFE2B
|
||||
:10044000FFFFFFFF0FFFC03FD46BFFFFDBFFFE8608
|
||||
:10045000BFC2BF30A124FFFFFFFFCCFF0FFFA3FFF0
|
||||
:10046000056BFFFFF0A5FFFFFFF07FFFFFFFFEFF23
|
||||
:10047000FFFFFBC7FFC4FFFF7FFFECFE7FDFD8B9A4
|
||||
:1004800047FC36C1DFFFFFF9FFF3FFF7FFFCFFFD7D
|
||||
:100490003FFFFFFF3FFFFFFFF07FFFFFFFFEF5FF86
|
||||
:1004A000FFFFFFFEFFFF7EBD3FFF2BFE2FF5A3FCEE
|
||||
:1004B0005BFE619F7FEFFFFFA7FBFFFFFAFEFF33AD
|
||||
:1004C000F1FFBFFFFFFFFAF07FFFFFFFFEF1C0006B
|
||||
:1004D0000000000000000000000000400030240484
|
||||
:1004E000000100804000080000000201010002003D
|
||||
:1004F00000000000013DF02FFFFFFFFEFDBDFFFDEE
|
||||
:10050000FFFFFFFFFFFBFFFF7FF6EFBFF7FF73EB80
|
||||
:10051000F1FFFFFFDFFFFFFFFFFFF9FFFDFEFFFF22
|
||||
:10052000FFFFFFFFD9F0DFFFFFFFFEF0BF7FFFFF00
|
||||
:10053000FF7FFFFFDEFFFFEFDDDE77F2FBEDE7F190
|
||||
:1005400073FDFDDFFF7DBEDFFFFBFFEFFFEFFFFF72
|
||||
:10055000FFFFFFD0F0BFFFFFFFFEF83020020022B8
|
||||
:1005600040C0000000080002410212002187810003
|
||||
:100570000080040B2801B000820040000000000051
|
||||
:100580000000C1F0DFFFFFFFFEFFFFFFFFFFFDFFE9
|
||||
:10059000F7FFFE7FED79FFDEEB7F74F7F7E1F9FF00
|
||||
:1005A000F65F7FFFFFFFD7DBEFFFBBFFFFFFCCFF57
|
||||
:1005B000FFFFF0CFFFFFFFFEFFFFFFFFFFFFFFFF8B
|
||||
:1005C000FFFFFFFFFFFFFFFFFFFFFFFFF1FFFFFF49
|
||||
:1005D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B
|
||||
:1005E000FFF00FFFFFFFFEFFFFFFFD3DCD497F6FD7
|
||||
:1005F0002BBA5CD2DAF6F33EF7FFBDF1FADFFEF775
|
||||
:10060000CCF6BBA5B3ADBF6F7D6F6BDBDFBDFFFE6F
|
||||
:10061000B05FFFFFFFFEBFFFFFFBDB57F6FE9FD57E
|
||||
:10062000B7FFAFE53FFFFF6FFFDBF1FDBFFF6F6976
|
||||
:100630006CDFDADFCBFFF6FF76FDFDBFFFFFFFD0FB
|
||||
:100640003FFFFFFFFEFFFFFFFFFDBD0803894F5A7D
|
||||
:100650000FF0FFF8BFFFFFFFFFF15AFFFFFFFFF3AF
|
||||
:10066000FAA0F0F2BFFFFFFFFFFFFFFFFFFFF0FF69
|
||||
:10067000FFFFFFFEFFFFFFFFFCFD006BFFFF5A0FB8
|
||||
:10068000F0FFFFFFFFFFFFFFF15AFFFFFFFFB3F592
|
||||
:1006900050F0F0FFFFFFD7FFFFFFFFFFFFF07FFFEE
|
||||
:1006A000FFFFFEFFFFFFFDBCFFE4E771FFF9C4F4AD
|
||||
:1006B0007F7FCFFFFFFFFFF1FFFFFFFBF773BF144B
|
||||
:1006C000FFE6FFFFE17DFFFFE7FFFFFFF03FFFFFDA
|
||||
:1006D000FFFEF5FFFFFED2FAFFC4F45CBFFAFFFF96
|
||||
:1006E000EC7EBFFFFFFFF1FFFFEFFFFF6BDBFFDFE4
|
||||
:1006F000F9FBBFFFF1FFBFFFFFFFFBF0BFFFFFFFF5
|
||||
:10070000FEF3C00002000000008200000000800034
|
||||
:10071000000000400001000000010820000000006F
|
||||
:100720000100010000800200013CF05FFFFFFFFEBE
|
||||
:10073000FDBFFFFFFFDFFFFFFFFF7FFFDFFFEFFFDB
|
||||
:10074000FFFFFFFFF1FFFFFFFFFFF7FFFBFFFDFFD5
|
||||
:10075000FFFFFFFFFFFDFFFFC3F0AFFFFFFFFEF056
|
||||
:10076000FFDFFFFFF723FFFFFDFFEFFFFE7F7DF7BA
|
||||
:10077000FEFF7F71FFFB7FFFFFFF6EFDF7FDFFBFF9
|
||||
:10078000FFBFF9FDFFDFEFF0F0AFFFFFFFFEF83036
|
||||
:10079000400100830000000C060804262600000625
|
||||
:1007A0000300010000000004007008800020012008
|
||||
:1007B000000200300000C1F05FFFFFFFFEFFFFFFFF
|
||||
:1007C000FFFF7B3FF7FFD7FEFEFBFE3BFEBDFF2F8B
|
||||
:1007D000FF71FFFB7FE7FFF9EFFFD7FAFFB7BBFE23
|
||||
:1007E000FFFF74FFF7FFF0CFFFFFFFFEFFFFFFFFEC
|
||||
:1007F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09
|
||||
:10080000F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06
|
||||
:10081000FFFFFFFFFFF08FFFFFFFFEFFFFFFFFB5B2
|
||||
:10082000BD6F7CEB7FFBDBD34BEED6F6B7FDACA107
|
||||
:10083000FBDFFEF7F496BDB4C5A5AF6F694F7FBA75
|
||||
:10084000DBFFFFFFF03FFFFFFFFEBFFFFFFFDBFF10
|
||||
:10085000F6FFF6FFBDBFA5BFFF7D7FEFFFFBF1FDFC
|
||||
:10086000BFFF6FFF6B7ADBFFDBDFF6FEB6FDFDBF80
|
||||
:10087000FEF7FFD0EFFFFFFFFEFFFFFFFFF42FFFAC
|
||||
:10088000FC436BFFFFFF0DFFFC333FF05FF1FFFF09
|
||||
:10089000FFFFF9DEF04CFE77AFFFFFEFFFF0FFDB6D
|
||||
:1008A000FF5FF0EFFFFFFFFEFFFEF7FFF02FFFFD02
|
||||
:1008B000437FFFFFF10FFFFC333FFFAFF1FFFFFF6F
|
||||
:1008C000FFF6D7FFBCFDBDFFFFFFFFFFF0FFFFFFFF
|
||||
:1008D000FFF0EFFFFFFFFEFFFFFFFFFCFFFFFBF15D
|
||||
:1008E000BFFFF9FDCFF270FF1F9FF3F1FFFFFFFF86
|
||||
:1008F000FCF7FF139FFCFFFF84F7FFFF47FFFFFF9D
|
||||
:10090000F0BFFFFFFFFEF5FFFFFFF1FCFFFEFE79EA
|
||||
:100910003FFF1D46CFFFCFFC7BFFF1FFFFFFFFED49
|
||||
:10092000F3ABFFCBFFF8FFFCF5FFBFFFFFFFFAF0D3
|
||||
:100930008FFFFFFFFEF3C200000000000000010077
|
||||
:10094000000020002000000408010000000000203A
|
||||
:100950000C0000040100010000800000013CF07F59
|
||||
:10096000FFFFFFFEFDBFFFFFFDFEFFFFFFFFFEFFDE
|
||||
:10097000DFFFFFF7FFFFFFEFF1FFFFFFFFFFFFEBE1
|
||||
:10098000FFDFFFFFFBF77FFFFEFFFFBFDBF0FFFF97
|
||||
:10099000FFFFFEF0FFFFFFFFFFDFFFFFFF7FF7FF1F
|
||||
:1009A000BFBFCFFFFFFF3EF17FFFFFEFFFFFFFFE67
|
||||
:1009B000FFFDFFBFBDFEFFFBF7DFFBD0F09FFFFF9A
|
||||
:1009C000FFFEF8302000400180C030000020001001
|
||||
:1009D00050882000001301000000000000100000FB
|
||||
:1009E00000000180080000A00010C1F0EFFFFFFF31
|
||||
:1009F000FEFDEF7FFFFFBFFFF7FFEFFBFD77EFBFD0
|
||||
:100A0000F77FFFFFBFD17FFFFFF7FFFFFFFFAFFFC4
|
||||
:100A1000DFF7FBFFFDFFFCFFFDFFF0FFFFFFFFFE29
|
||||
:100A2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6
|
||||
:100A3000FFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFD4
|
||||
:100A4000FFFFFFFFFFFFFFFFFFF05FFFFFFFFEFF66
|
||||
:100A5000FFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFC6
|
||||
:100A6000FFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFA4
|
||||
:100A7000FFFFFFFFFFFFFFFFE03FFFFFFFFEDDFF88
|
||||
:100A8000FFFFA5FD6F7D6D7F52DF5A4BEEB6EEF294
|
||||
:100A9000BBACA15B4DD6F7FEB2BD35B5B5DD6F7F02
|
||||
:100AA000E95F52DFBDFFFFF0DFFFFFFFFEBFFFFF8B
|
||||
:100AB000FFDBFEF6FFF6FFFDBFFDB5BFF97F6FFF61
|
||||
:100AC000DBF1FDBFFF6FFF697FDBFFD3FFF6FEF2B7
|
||||
:100AD000FFADBFFFFFFFD0DFFFFFFFFEFFFFFFF512
|
||||
:100AE000300FFFFFFD6BCAFFF00FD6BFCF3FFFFFF8
|
||||
:100AF000F1FFFFFFCAFEBFFFF005AF0FFFFCF0CF15
|
||||
:100B0000F0FFFFFFFFF0EFFFFFFFFEFFFFFFF530FD
|
||||
:100B10000FFFFFFC3FCAFF0F0FD6BFFFFFF55FF1CE
|
||||
:100B2000FF8BFFC3FFFFFFFFFFFF0FFFFCF0CFF0C6
|
||||
:100B3000FFFFFFFFF03FFFFFFFFEFFFFFFFFCFFFC5
|
||||
:100B4000FFBF9F3FFEFCFF4FFFFFFFFFFFF7F1FFDF
|
||||
:100B5000DFFE7E3F9FF4FC7FFCFFFF3FFF3FFE3F39
|
||||
:100B6000FFFFFFF04FFFFFFFFEF5FFFFFBFFFEFF64
|
||||
:100B7000FFFFFFBFFBFFF8EDFF8FFFBBFFB1F3EF00
|
||||
:100B80008FF7FFFFDBFFFFFFEFBFFD79BFBFFFFF69
|
||||
:100B9000FFFBF0DFFFFFFFFEF3C0000000040000DA
|
||||
:100BA000000000000000008000040808010100901F
|
||||
:100BB000000000040008000000000800040000011C
|
||||
:100BC0003CF0DFFFFFFFFEFDBFFFFFFFFFFFFFFF6A
|
||||
:100BD000FFFFFFFF9FFFAFDFFFFFFFF1FFFFFFFF03
|
||||
:100BE000BFEFFFFFFFEDFFFFFFEFFFBFFFFFFFC303
|
||||
:100BF000F03FFFFFFFFEF0FFFDFFFFFFFBFFBBFF2E
|
||||
:100C0000FFFF7FF6FF7FFBFDEDFFF1FFFE7FFFFFA4
|
||||
:100C1000FF5FFFF7FF7EFFFDFFEFFFFFFFEFF0F04D
|
||||
:100C20008FFFFFFFFEF83080000400004002000349
|
||||
:100C300000050420000001D0008100200404000011
|
||||
:100C4000810408801000C0000000200008C1F06F7F
|
||||
:100C5000FFFFFFFEFFFF7FFFFFFFFFF3FDFFEDFC48
|
||||
:100C6000FFFF9FFBFDFFFFFFF1FFFF7FFB3EFF9FAD
|
||||
:100C7000FFFFFFFFFDF9FFFFFFFDFFFFFFF06FFF2D
|
||||
:100C8000FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFF75
|
||||
:100C9000FFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFF72
|
||||
:100CA000FFFFFFFFFFFFFFFFFFFFFFFFF0CFFFFF93
|
||||
:100CB000FFFEFFFFFFFDBDFFEF7CEB7FFBDBFADC00
|
||||
:100CC000EEF7F6D7F52DA1BBDDEEF754F7FB2CB50B
|
||||
:100CD000B4BD6B6FEF6FBBDFFFFFFFF01FFFFFFFC8
|
||||
:100CE000FEBFFFFFFFFBFFF6FFF6FFFDBFFFBFEFFD
|
||||
:100CF0006FFF6FFADBF1C5BDF56FFF6FCADBFFDB7E
|
||||
:100D0000FBF697F6FFFDBFFEF7FFD09FFFFFFFFE4C
|
||||
:100D1000FFFFFFFFFFFFFFFF8B7FFFFFE763FFFF8B
|
||||
:100D2000FFFC77DFF1DBFFD6A83FFFFF082FF0FFC6
|
||||
:100D3000C3FFEBFFFFFFFFFF5FF0EFFFFFFFFEFFD3
|
||||
:100D4000FFFFFFFFFFFFFF8BFFFFFFFFFFFFFFFF27
|
||||
:100D5000FCFFCFF1DBFFD6A83FFFFF082FF0FFC35A
|
||||
:100D6000FFEBFFFFFFFFFFFFF05FFFFFFFFEFFFF57
|
||||
:100D7000FFFFFFFFFFFFF5BFFFCAFF9FFFFAB9E7C5
|
||||
:100D80009FF381FFFFFC73D7FFFF77FFFDFFFCFFA1
|
||||
:100D9000FFFFFFCFFFFFFFF01FFFFFFFFEF5FFFF8D
|
||||
:100DA000FFF7DEFFFE7EFFBFFFBFF1B3FFFFE3FBF8
|
||||
:100DB000FFE11F7FFFF878FFFB1EFFF7FEE7FFFF55
|
||||
:100DC000FFBFFFFFFFFAF04FFFFFFFFEF3C0000081
|
||||
:100DD00000000000000000000000500000000400BF
|
||||
:100DE00001804040200000080000000003000000D7
|
||||
:100DF000800000013CF0AFFFFFFFFEFDBFFFFBFFE7
|
||||
:100E0000FFFFFFFFFFFEFFFFFFFFFFFFFFEFF7F119
|
||||
:100E1000FDFFFFFFDFFFEFFFFFFFFFFFFFFF7FFF94
|
||||
:100E2000FFFFFFDBF08FFFFFFFFEF0FFDFFFFF7F25
|
||||
:100E3000FFFFFFBED7FFEDBD7EBFFEF67FBF71FF98
|
||||
:100E4000FFDAFFF9FFBF7FFEFF6F7FFFFFFFFFFFAE
|
||||
:100E50007FFFD0F0CFFFFFFFFEF830420000000020
|
||||
:100E600080C100009000C400001220432281840051
|
||||
:100E700000140001000880000200020004020000CB
|
||||
:100E800010C1F01FFFFFFFFEFFFFFDFFFFDDFEFFB4
|
||||
:100E9000B676E5BCF9F7AF5FBFFCDFCFF1FFEF79C6
|
||||
:100EA000FFBDFFEFFFFFF76F5FFFFFFDEFEFBFFF3E
|
||||
:100EB000FFF09FFFFFFFFEFFFFFFFFFFFFFFFFFFB2
|
||||
:100EC000FFFFFFFFFFFFFFFFFFFFFFF1FFFFFFFF40
|
||||
:100ED000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22
|
||||
:100EE000F0FFFFFFFFFEDBFFFFFD2DFF692AEF771D
|
||||
:100EF000BBDD5ADFF6F6D6F77DBDD1B24AD6B2BE1B
|
||||
:100F000097F5BDB3ADFFEF7F696BFBDFFFFFFFF030
|
||||
:100F10002FFFFFFFFEBFFFFFFFDBFFF6FE9FD4BFEB
|
||||
:100F2000EDAFFF6B6FF7FFDDDB31FDBFFF6F7FFFC5
|
||||
:100F3000FFDBFFCBDFF6FFF6FFFDBFFEF7FFD08F35
|
||||
:100F4000FFFFFFFEFFFFFFFD1FFF462F9FFFFFFF7D
|
||||
:100F5000A5FFFFFFDFB7FFFFF1FFFFFFF7E96ABF64
|
||||
:100F6000FFFFFDFFFFFD5557FFFFFFFFAFF04FFFF6
|
||||
:100F7000FFFFFEFEDFFFFD1FFF462F9FFFFFFFA5C8
|
||||
:100F8000FFFFFFC037FFFFF1998EDC7FE96ABFFFEB
|
||||
:100F9000F00FFFFFFD5557FFFFFFFFFFF00FFFFFB3
|
||||
:100FA000FFFEFFFFFFFF07FFC0BEFFFFCFEF9FFF6A
|
||||
:100FB000FFFBFFE7FFFFA1E3CE3C583FF3FFFDEF50
|
||||
:100FC000F9FFFFF7F17FFFCBFFFFFFF02FFFFFFFE0
|
||||
:100FD000FEF57FFFF0FFFEFFC475E7B9FFFFFFEFEF
|
||||
:100FE000FFC7373BFFF0139E0FF4FFFEFBFFFFF937
|
||||
:100FF000FCFFFFFFFFBFFFFFFFFAF0EFFFFFFFFE69
|
||||
:10100000F3C0010000020002220000C040004000C6
|
||||
:101010000408040A0101102020000004080804004C
|
||||
:1010200000000000010000013CF0CFFFFFFFFEFDCB
|
||||
:101030003FFFFFFFFFFFFF7FFF7FFF7FFFCF9DFF92
|
||||
:10104000FFF7FDF1FFFFFFEEBFFFFFFFFFFEFFFF1A
|
||||
:10105000FFFFFFFFFFFFFFDBF06FFFFFFFFEF0FF73
|
||||
:10106000FFFFF7F7FFFFFEBFF7FFFF5BFFBFF7FFD5
|
||||
:10107000FD7F71FDFFEDF7FEEFFFFF7FFFFFFFFF3D
|
||||
:10108000FFFFEFFF7FFFD0F0FFFFFFFFFEF8301103
|
||||
:10109000004860408260246000CC008004010000B1
|
||||
:1010A00014010C0400300000000808000100C20018
|
||||
:1010B0000002008000C1F05FFFFFFFFEFFFFFFFFA7
|
||||
:1010C000F77BFFF3EBBFFFF7FFFFFFE75D3FFFF6A7
|
||||
:1010D000D1FDFFEBF73DFFFFFF5FFF7F7FF3FFFFDA
|
||||
:1010E000EFFDBFFFFFF05FFFFFFFFEFFFFFFFFFF12
|
||||
:1010F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10E
|
||||
:10110000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
|
||||
:10111000FFFFFFFFF0DFFFFFFFFEFFFFFFF5B5DF83
|
||||
:101120006F7D697FFBDF525FF6F7FEF6F3BDB1DA44
|
||||
:10113000CDFEF6EED2BDA5AFBDFF6F7CEB2BFADA8C
|
||||
:10114000FFFEDFF04FFFFFFFFEBFFFFFFFDBFFF6FD
|
||||
:10115000FFF6FFBDBFCDBFEB6FF76FDFDB51FDBD0E
|
||||
:10116000FF6FFF6FFB5BFFDBFFF6FEF6FDFDBFFED3
|
||||
:10117000F7FFD0FFFFFFFFFEFFFFFFFA50FFFFFF6B
|
||||
:10118000F06FFFFFF096FFFFC62BFFFFF1FCFFFFA4
|
||||
:10119000F7DBC3FF00FFFFFFFFFFC14FC3FFFFFFF0
|
||||
:1011A000AFF09FFFFFFFFEFFFFFFF5A0FFFFFFF087
|
||||
:1011B0006FFFFFF096FFFFC62BFFFFF15AFFFFFF07
|
||||
:1011C000F3C3FF00FFFFFFFFFFC14FC3FFFFFFFFA0
|
||||
:1011D000F0CFFFFFFFFEFFFFFFFFFCFFFF9FF07F51
|
||||
:1011E000FFF9FC4FF3FF27EBFFFC81FC7FFE7BFF49
|
||||
:1011F000F7FF127FFFFFFFFF18FFFFFFFFFFFFF06A
|
||||
:101200007FFFFFFFFEF5FFFFFFDFFEFFFC7E7FBFDE
|
||||
:10121000FFFFAFEFFFDFDFFBFFF1C3FE6FF1CF3F5B
|
||||
:10122000FBFFFFCFFEFFFFFE7FBFFFFFBFFAF0DF38
|
||||
:10123000FFFFFFFEF3C000000100000000010000FE
|
||||
:10124000200001001000000001000200000000006A
|
||||
:101250000000000200008000028000023CF02FFF2E
|
||||
:10126000FFFFFEFDBFFFFBFDFFFFFFFFFFFFFFFFD7
|
||||
:10127000FFFFFFFFFFFFF5F1FF7FFFFFFFFFEFFF26
|
||||
:10128000FFFFFFFFFEFFFFFFFFFFFFDBF02FFFFF72
|
||||
:10129000FFFEF0FFFFFFFBFFBFFFFFFFFFF7BFFBFE
|
||||
:1012A000FFFFFFDFF7FFF1F7BFFBFFFFFF7FDEFF71
|
||||
:1012B000FFFFFFFFFFEDF7FFFF7FD0F03FFFFFFFD6
|
||||
:1012C000FEF830000000004000000000E000008058
|
||||
:1012D0002001019200010100E01C6020300808009C
|
||||
:1012E000000000000000008000C1F06FFFFFFFFE63
|
||||
:1012F000FFFFFFFFFFDBFEFFFFDFFFFC7FFBBFFF0A
|
||||
:10130000FFFFFFFFF1F6FFF77E3FFF7FFFFFFFF7D5
|
||||
:10131000FFFFFFEDFFDFFFB7FFF03FFFFFFFFEFF27
|
||||
:10132000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
|
||||
:10133000FFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFCB
|
||||
:10134000FFFFFFFFFFFFFFFFF0FFFFFFFFFEFFFFBD
|
||||
:10135000FFFFFFFFDFFFFFFFDFFFFFFFFFBFFFDF3D
|
||||
:1013600057EFF1FDFE7FFFFFFFFFFFFFFFDFFBFFFA
|
||||
:10137000FFFFFFFFFFFFFFF07FFFFFFFFEFFFFFF0D
|
||||
:10138000FFFFFF7FFFFFFFFFFFFFFFFFFBFFDFFF11
|
||||
:10139000FFF1FDFF7FBFFFFFFFFFFFFFFFFFFFFF2D
|
||||
:1013A000FFFEFFFFFFFFF09FFFFFFFFEF7FDFFFFC8
|
||||
:1013B000FFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFF7D
|
||||
:1013C000F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B
|
||||
:1013D000FFFFFFFFFFF06FFFFFFFFEFFFFFFFFFFBD
|
||||
:1013E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11B
|
||||
:1013F000FFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
:10140000FFFFFFFFF0CFFFFFFFFEFFFFFFFFFFFF2C
|
||||
:10141000FFFBFFFFFFFEFFFFFB6FFFFEBFFFF1FFC4
|
||||
:10142000F7FFFF7FFFFFFFFFFFFFFFFFFFFFFFFD56
|
||||
:10143000FFFFFFF0EFFFFFFFFEFFFFFFFFFFFFFFDC
|
||||
:10144000FBFFFFFFFEFFFFFF57FFFDBFFFF1FFEFB9
|
||||
:10145000FEFFBFFFFFFFFFFFFFFFFFFFFFFFFEFFDE
|
||||
:10146000DEFFF0CFFFFFFFFEFFFFFFF7DBFFDBFD3F
|
||||
:10147000F6FFF6FF3CBCBCBFDF6FE72FF13CBFFDC2
|
||||
:10148000BFDF6FFF6FF7DBFFDBFDF6FFF6FFFFFF50
|
||||
:101490000201DFFFFFFFFEFFFFFFFFFFFFFFFFFF78
|
||||
:1014A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C
|
||||
:0614B000FFFFFFFFFFFF3C
|
||||
:00000001FF
|
||||
/*
|
||||
*
|
||||
* File yam111.mcs converted to h format by mcs2h
|
||||
*
|
||||
* (C) F6FBB 1998
|
||||
*
|
||||
* Tue Aug 25 20:23:03 1998
|
||||
*
|
||||
*/
|
@ -616,21 +616,6 @@ static inline int tcp_skb_mss(const struct sk_buff *skb)
|
||||
return skb_shinfo(skb)->gso_size;
|
||||
}
|
||||
|
||||
static inline void tcp_dec_pcount_approx_int(__u32 *count, const int decr)
|
||||
{
|
||||
if (*count) {
|
||||
*count -= decr;
|
||||
if ((int)*count < 0)
|
||||
*count = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void tcp_dec_pcount_approx(__u32 *count,
|
||||
const struct sk_buff *skb)
|
||||
{
|
||||
tcp_dec_pcount_approx_int(count, tcp_skb_pcount(skb));
|
||||
}
|
||||
|
||||
/* Events passed to congestion control interface */
|
||||
enum tcp_ca_event {
|
||||
CA_EVENT_TX_START, /* first transmit when no packets in flight */
|
||||
|
@ -2472,8 +2472,9 @@ static int __napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb)
|
||||
return GRO_NORMAL;
|
||||
|
||||
for (p = napi->gro_list; p; p = p->next) {
|
||||
NAPI_GRO_CB(p)->same_flow = !compare_ether_header(
|
||||
skb_mac_header(p), skb_gro_mac_header(skb));
|
||||
NAPI_GRO_CB(p)->same_flow = (p->dev == skb->dev)
|
||||
&& !compare_ether_header(skb_mac_header(p),
|
||||
skb_gro_mac_header(skb));
|
||||
NAPI_GRO_CB(p)->flush = 0;
|
||||
}
|
||||
|
||||
|
@ -261,8 +261,7 @@ static int ethtool_get_rxnfc(struct net_device *dev, void __user *useraddr)
|
||||
ret = 0;
|
||||
|
||||
err_out:
|
||||
if (rule_buf)
|
||||
kfree(rule_buf);
|
||||
kfree(rule_buf);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -253,7 +253,7 @@ unsigned int arpt_do_table(struct sk_buff *skb,
|
||||
indev = in ? in->name : nulldevname;
|
||||
outdev = out ? out->name : nulldevname;
|
||||
|
||||
rcu_read_lock();
|
||||
rcu_read_lock_bh();
|
||||
private = rcu_dereference(table->private);
|
||||
table_base = rcu_dereference(private->entries[smp_processor_id()]);
|
||||
|
||||
@ -329,7 +329,7 @@ unsigned int arpt_do_table(struct sk_buff *skb,
|
||||
}
|
||||
} while (!hotdrop);
|
||||
|
||||
rcu_read_unlock();
|
||||
rcu_read_unlock_bh();
|
||||
|
||||
if (hotdrop)
|
||||
return NF_DROP;
|
||||
|
@ -339,7 +339,7 @@ ipt_do_table(struct sk_buff *skb,
|
||||
|
||||
IP_NF_ASSERT(table->valid_hooks & (1 << hook));
|
||||
|
||||
rcu_read_lock();
|
||||
rcu_read_lock_bh();
|
||||
private = rcu_dereference(table->private);
|
||||
table_base = rcu_dereference(private->entries[smp_processor_id()]);
|
||||
|
||||
@ -437,7 +437,7 @@ ipt_do_table(struct sk_buff *skb,
|
||||
}
|
||||
} while (!hotdrop);
|
||||
|
||||
rcu_read_unlock();
|
||||
rcu_read_unlock_bh();
|
||||
|
||||
#ifdef DEBUG_ALLOW_ALL
|
||||
return NF_ACCEPT;
|
||||
|
@ -1081,8 +1081,7 @@ out_err:
|
||||
* this, no blocking and very strange errors 8)
|
||||
*/
|
||||
|
||||
static int tcp_recv_urg(struct sock *sk, long timeo,
|
||||
struct msghdr *msg, int len, int flags)
|
||||
static int tcp_recv_urg(struct sock *sk, struct msghdr *msg, int len, int flags)
|
||||
{
|
||||
struct tcp_sock *tp = tcp_sk(sk);
|
||||
|
||||
@ -1697,7 +1696,7 @@ out:
|
||||
return err;
|
||||
|
||||
recv_urg:
|
||||
err = tcp_recv_urg(sk, timeo, msg, len, flags);
|
||||
err = tcp_recv_urg(sk, msg, len, flags);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -754,6 +754,36 @@ static void tcp_adjust_fackets_out(struct sock *sk, struct sk_buff *skb,
|
||||
tp->fackets_out -= decr;
|
||||
}
|
||||
|
||||
/* Pcount in the middle of the write queue got changed, we need to do various
|
||||
* tweaks to fix counters
|
||||
*/
|
||||
static void tcp_adjust_pcount(struct sock *sk, struct sk_buff *skb, int decr)
|
||||
{
|
||||
struct tcp_sock *tp = tcp_sk(sk);
|
||||
|
||||
tp->packets_out -= decr;
|
||||
|
||||
if (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_ACKED)
|
||||
tp->sacked_out -= decr;
|
||||
if (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_RETRANS)
|
||||
tp->retrans_out -= decr;
|
||||
if (TCP_SKB_CB(skb)->sacked & TCPCB_LOST)
|
||||
tp->lost_out -= decr;
|
||||
|
||||
/* Reno case is special. Sigh... */
|
||||
if (tcp_is_reno(tp) && decr > 0)
|
||||
tp->sacked_out -= min_t(u32, tp->sacked_out, decr);
|
||||
|
||||
tcp_adjust_fackets_out(sk, skb, decr);
|
||||
|
||||
if (tp->lost_skb_hint &&
|
||||
before(TCP_SKB_CB(skb)->seq, TCP_SKB_CB(tp->lost_skb_hint)->seq) &&
|
||||
(tcp_is_fack(tp) || TCP_SKB_CB(skb)->sacked))
|
||||
tp->lost_cnt_hint -= decr;
|
||||
|
||||
tcp_verify_left_out(tp);
|
||||
}
|
||||
|
||||
/* Function to create two new TCP segments. Shrinks the given segment
|
||||
* to the specified size and appends a new segment with the rest of the
|
||||
* packet to the list. This won't be called frequently, I hope.
|
||||
@ -836,28 +866,8 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len,
|
||||
int diff = old_factor - tcp_skb_pcount(skb) -
|
||||
tcp_skb_pcount(buff);
|
||||
|
||||
tp->packets_out -= diff;
|
||||
|
||||
if (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_ACKED)
|
||||
tp->sacked_out -= diff;
|
||||
if (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_RETRANS)
|
||||
tp->retrans_out -= diff;
|
||||
|
||||
if (TCP_SKB_CB(skb)->sacked & TCPCB_LOST)
|
||||
tp->lost_out -= diff;
|
||||
|
||||
/* Adjust Reno SACK estimate. */
|
||||
if (tcp_is_reno(tp) && diff > 0) {
|
||||
tcp_dec_pcount_approx_int(&tp->sacked_out, diff);
|
||||
tcp_verify_left_out(tp);
|
||||
}
|
||||
tcp_adjust_fackets_out(sk, skb, diff);
|
||||
|
||||
if (tp->lost_skb_hint &&
|
||||
before(TCP_SKB_CB(skb)->seq,
|
||||
TCP_SKB_CB(tp->lost_skb_hint)->seq) &&
|
||||
(tcp_is_fack(tp) || TCP_SKB_CB(skb)->sacked))
|
||||
tp->lost_cnt_hint -= diff;
|
||||
if (diff)
|
||||
tcp_adjust_pcount(sk, skb, diff);
|
||||
}
|
||||
|
||||
/* Link BUFF into the send queue. */
|
||||
@ -1768,22 +1778,14 @@ static void tcp_collapse_retrans(struct sock *sk, struct sk_buff *skb)
|
||||
* packet counting does not break.
|
||||
*/
|
||||
TCP_SKB_CB(skb)->sacked |= TCP_SKB_CB(next_skb)->sacked & TCPCB_EVER_RETRANS;
|
||||
if (TCP_SKB_CB(next_skb)->sacked & TCPCB_SACKED_RETRANS)
|
||||
tp->retrans_out -= tcp_skb_pcount(next_skb);
|
||||
if (TCP_SKB_CB(next_skb)->sacked & TCPCB_LOST)
|
||||
tp->lost_out -= tcp_skb_pcount(next_skb);
|
||||
/* Reno case is special. Sigh... */
|
||||
if (tcp_is_reno(tp) && tp->sacked_out)
|
||||
tcp_dec_pcount_approx(&tp->sacked_out, next_skb);
|
||||
|
||||
tcp_adjust_fackets_out(sk, next_skb, tcp_skb_pcount(next_skb));
|
||||
tp->packets_out -= tcp_skb_pcount(next_skb);
|
||||
|
||||
/* changed transmit queue under us so clear hints */
|
||||
tcp_clear_retrans_hints_partial(tp);
|
||||
if (next_skb == tp->retransmit_skb_hint)
|
||||
tp->retransmit_skb_hint = skb;
|
||||
|
||||
tcp_adjust_pcount(sk, next_skb, tcp_skb_pcount(next_skb));
|
||||
|
||||
sk_wmem_free_skb(sk, next_skb);
|
||||
}
|
||||
|
||||
@ -1891,7 +1893,12 @@ int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb)
|
||||
if (tcp_fragment(sk, skb, cur_mss, cur_mss))
|
||||
return -ENOMEM; /* We'll try again later. */
|
||||
} else {
|
||||
tcp_init_tso_segs(sk, skb, cur_mss);
|
||||
int oldpcount = tcp_skb_pcount(skb);
|
||||
|
||||
if (unlikely(oldpcount > 1)) {
|
||||
tcp_init_tso_segs(sk, skb, cur_mss);
|
||||
tcp_adjust_pcount(sk, skb, oldpcount - tcp_skb_pcount(skb));
|
||||
}
|
||||
}
|
||||
|
||||
tcp_retrans_try_collapse(sk, skb, cur_mss);
|
||||
|
@ -365,7 +365,7 @@ ip6t_do_table(struct sk_buff *skb,
|
||||
|
||||
IP_NF_ASSERT(table->valid_hooks & (1 << hook));
|
||||
|
||||
rcu_read_lock();
|
||||
rcu_read_lock_bh();
|
||||
private = rcu_dereference(table->private);
|
||||
table_base = rcu_dereference(private->entries[smp_processor_id()]);
|
||||
|
||||
@ -466,7 +466,7 @@ ip6t_do_table(struct sk_buff *skb,
|
||||
#ifdef CONFIG_NETFILTER_DEBUG
|
||||
((struct ip6t_entry *)table_base)->comefrom = NETFILTER_LINK_POISON;
|
||||
#endif
|
||||
rcu_read_unlock();
|
||||
rcu_read_unlock_bh();
|
||||
|
||||
#ifdef DEBUG_ALLOW_ALL
|
||||
return NF_ACCEPT;
|
||||
|
@ -51,6 +51,7 @@ MODULE_PARM_DESC(fmr_message_size, " Max size of a RDMA transfer");
|
||||
|
||||
struct list_head rds_ib_devices;
|
||||
|
||||
/* NOTE: if also grabbing ibdev lock, grab this first */
|
||||
DEFINE_SPINLOCK(ib_nodev_conns_lock);
|
||||
LIST_HEAD(ib_nodev_conns);
|
||||
|
||||
@ -137,7 +138,7 @@ void rds_ib_remove_one(struct ib_device *device)
|
||||
kfree(i_ipaddr);
|
||||
}
|
||||
|
||||
rds_ib_remove_conns(rds_ibdev);
|
||||
rds_ib_destroy_conns(rds_ibdev);
|
||||
|
||||
if (rds_ibdev->mr_pool)
|
||||
rds_ib_destroy_mr_pool(rds_ibdev->mr_pool);
|
||||
@ -249,7 +250,7 @@ static int rds_ib_laddr_check(__be32 addr)
|
||||
void rds_ib_exit(void)
|
||||
{
|
||||
rds_info_deregister_func(RDS_INFO_IB_CONNECTIONS, rds_ib_ic_info);
|
||||
rds_ib_remove_nodev_conns();
|
||||
rds_ib_destroy_nodev_conns();
|
||||
ib_unregister_client(&rds_ib_client);
|
||||
rds_ib_sysctl_exit();
|
||||
rds_ib_recv_exit();
|
||||
|
28
net/rds/ib.h
28
net/rds/ib.h
@ -108,7 +108,12 @@ struct rds_ib_connection {
|
||||
|
||||
/* sending acks */
|
||||
unsigned long i_ack_flags;
|
||||
#ifdef KERNEL_HAS_ATOMIC64
|
||||
atomic64_t i_ack_next; /* next ACK to send */
|
||||
#else
|
||||
spinlock_t i_ack_lock; /* protect i_ack_next */
|
||||
u64 i_ack_next; /* next ACK to send */
|
||||
#endif
|
||||
struct rds_header *i_ack;
|
||||
struct ib_send_wr i_ack_wr;
|
||||
struct ib_sge i_ack_sge;
|
||||
@ -267,9 +272,17 @@ void rds_ib_cm_connect_complete(struct rds_connection *conn,
|
||||
|
||||
/* ib_rdma.c */
|
||||
int rds_ib_update_ipaddr(struct rds_ib_device *rds_ibdev, __be32 ipaddr);
|
||||
int rds_ib_add_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn);
|
||||
void rds_ib_remove_nodev_conns(void);
|
||||
void rds_ib_remove_conns(struct rds_ib_device *rds_ibdev);
|
||||
void rds_ib_add_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn);
|
||||
void rds_ib_remove_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn);
|
||||
void __rds_ib_destroy_conns(struct list_head *list, spinlock_t *list_lock);
|
||||
static inline void rds_ib_destroy_nodev_conns(void)
|
||||
{
|
||||
__rds_ib_destroy_conns(&ib_nodev_conns, &ib_nodev_conns_lock);
|
||||
}
|
||||
static inline void rds_ib_destroy_conns(struct rds_ib_device *rds_ibdev)
|
||||
{
|
||||
__rds_ib_destroy_conns(&rds_ibdev->conn_list, &rds_ibdev->spinlock);
|
||||
}
|
||||
struct rds_ib_mr_pool *rds_ib_create_mr_pool(struct rds_ib_device *);
|
||||
void rds_ib_get_mr_info(struct rds_ib_device *rds_ibdev, struct rds_info_rdma_connection *iinfo);
|
||||
void rds_ib_destroy_mr_pool(struct rds_ib_mr_pool *);
|
||||
@ -355,13 +368,4 @@ rds_ib_data_sge(struct rds_ib_connection *ic, struct ib_sge *sge)
|
||||
return &sge[1];
|
||||
}
|
||||
|
||||
static inline void rds_ib_set_64bit(u64 *ptr, u64 val)
|
||||
{
|
||||
#if BITS_PER_LONG == 64
|
||||
*ptr = val;
|
||||
#else
|
||||
set_64bit(ptr, val);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -126,9 +126,7 @@ void rds_ib_cm_connect_complete(struct rds_connection *conn, struct rdma_cm_even
|
||||
err = rds_ib_update_ipaddr(rds_ibdev, conn->c_laddr);
|
||||
if (err)
|
||||
printk(KERN_ERR "rds_ib_update_ipaddr failed (%d)\n", err);
|
||||
err = rds_ib_add_conn(rds_ibdev, conn);
|
||||
if (err)
|
||||
printk(KERN_ERR "rds_ib_add_conn failed (%d)\n", err);
|
||||
rds_ib_add_conn(rds_ibdev, conn);
|
||||
|
||||
/* If the peer gave us the last packet it saw, process this as if
|
||||
* we had received a regular ACK. */
|
||||
@ -616,18 +614,8 @@ void rds_ib_conn_shutdown(struct rds_connection *conn)
|
||||
/*
|
||||
* Move connection back to the nodev list.
|
||||
*/
|
||||
if (ic->rds_ibdev) {
|
||||
|
||||
spin_lock_irq(&ic->rds_ibdev->spinlock);
|
||||
BUG_ON(list_empty(&ic->ib_node));
|
||||
list_del(&ic->ib_node);
|
||||
spin_unlock_irq(&ic->rds_ibdev->spinlock);
|
||||
|
||||
spin_lock_irq(&ib_nodev_conns_lock);
|
||||
list_add_tail(&ic->ib_node, &ib_nodev_conns);
|
||||
spin_unlock_irq(&ib_nodev_conns_lock);
|
||||
ic->rds_ibdev = NULL;
|
||||
}
|
||||
if (ic->rds_ibdev)
|
||||
rds_ib_remove_conn(ic->rds_ibdev, conn);
|
||||
|
||||
ic->i_cm_id = NULL;
|
||||
ic->i_pd = NULL;
|
||||
@ -648,7 +636,11 @@ void rds_ib_conn_shutdown(struct rds_connection *conn)
|
||||
|
||||
/* Clear the ACK state */
|
||||
clear_bit(IB_ACK_IN_FLIGHT, &ic->i_ack_flags);
|
||||
rds_ib_set_64bit(&ic->i_ack_next, 0);
|
||||
#ifdef KERNEL_HAS_ATOMIC64
|
||||
atomic64_set(&ic->i_ack_next, 0);
|
||||
#else
|
||||
ic->i_ack_next = 0;
|
||||
#endif
|
||||
ic->i_ack_recv = 0;
|
||||
|
||||
/* Clear flow control state */
|
||||
@ -681,6 +673,9 @@ int rds_ib_conn_alloc(struct rds_connection *conn, gfp_t gfp)
|
||||
|
||||
INIT_LIST_HEAD(&ic->ib_node);
|
||||
mutex_init(&ic->i_recv_mutex);
|
||||
#ifndef KERNEL_HAS_ATOMIC64
|
||||
spin_lock_init(&ic->i_ack_lock);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* rds_ib_conn_shutdown() waits for these to be emptied so they
|
||||
@ -701,11 +696,27 @@ int rds_ib_conn_alloc(struct rds_connection *conn, gfp_t gfp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Free a connection. Connection must be shut down and not set for reconnect.
|
||||
*/
|
||||
void rds_ib_conn_free(void *arg)
|
||||
{
|
||||
struct rds_ib_connection *ic = arg;
|
||||
spinlock_t *lock_ptr;
|
||||
|
||||
rdsdebug("ic %p\n", ic);
|
||||
|
||||
/*
|
||||
* Conn is either on a dev's list or on the nodev list.
|
||||
* A race with shutdown() or connect() would cause problems
|
||||
* (since rds_ibdev would change) but that should never happen.
|
||||
*/
|
||||
lock_ptr = ic->rds_ibdev ? &ic->rds_ibdev->spinlock : &ib_nodev_conns_lock;
|
||||
|
||||
spin_lock_irq(lock_ptr);
|
||||
list_del(&ic->ib_node);
|
||||
spin_unlock_irq(lock_ptr);
|
||||
|
||||
kfree(ic);
|
||||
}
|
||||
|
||||
|
@ -139,7 +139,7 @@ int rds_ib_update_ipaddr(struct rds_ib_device *rds_ibdev, __be32 ipaddr)
|
||||
return rds_ib_add_ipaddr(rds_ibdev, ipaddr);
|
||||
}
|
||||
|
||||
int rds_ib_add_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn)
|
||||
void rds_ib_add_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn)
|
||||
{
|
||||
struct rds_ib_connection *ic = conn->c_transport_data;
|
||||
|
||||
@ -148,45 +148,44 @@ int rds_ib_add_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn
|
||||
BUG_ON(list_empty(&ib_nodev_conns));
|
||||
BUG_ON(list_empty(&ic->ib_node));
|
||||
list_del(&ic->ib_node);
|
||||
spin_unlock_irq(&ib_nodev_conns_lock);
|
||||
|
||||
spin_lock_irq(&rds_ibdev->spinlock);
|
||||
list_add_tail(&ic->ib_node, &rds_ibdev->conn_list);
|
||||
spin_unlock_irq(&rds_ibdev->spinlock);
|
||||
|
||||
ic->rds_ibdev = rds_ibdev;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void rds_ib_remove_nodev_conns(void)
|
||||
{
|
||||
struct rds_ib_connection *ic, *_ic;
|
||||
LIST_HEAD(tmp_list);
|
||||
|
||||
/* avoid calling conn_destroy with irqs off */
|
||||
spin_lock_irq(&ib_nodev_conns_lock);
|
||||
list_splice(&ib_nodev_conns, &tmp_list);
|
||||
INIT_LIST_HEAD(&ib_nodev_conns);
|
||||
spin_unlock_irq(&ib_nodev_conns_lock);
|
||||
|
||||
list_for_each_entry_safe(ic, _ic, &tmp_list, ib_node) {
|
||||
if (ic->conn->c_passive)
|
||||
rds_conn_destroy(ic->conn->c_passive);
|
||||
rds_conn_destroy(ic->conn);
|
||||
}
|
||||
ic->rds_ibdev = rds_ibdev;
|
||||
}
|
||||
|
||||
void rds_ib_remove_conns(struct rds_ib_device *rds_ibdev)
|
||||
void rds_ib_remove_conn(struct rds_ib_device *rds_ibdev, struct rds_connection *conn)
|
||||
{
|
||||
struct rds_ib_connection *ic = conn->c_transport_data;
|
||||
|
||||
/* place conn on nodev_conns_list */
|
||||
spin_lock(&ib_nodev_conns_lock);
|
||||
|
||||
spin_lock_irq(&rds_ibdev->spinlock);
|
||||
BUG_ON(list_empty(&ic->ib_node));
|
||||
list_del(&ic->ib_node);
|
||||
spin_unlock_irq(&rds_ibdev->spinlock);
|
||||
|
||||
list_add_tail(&ic->ib_node, &ib_nodev_conns);
|
||||
|
||||
spin_unlock(&ib_nodev_conns_lock);
|
||||
|
||||
ic->rds_ibdev = NULL;
|
||||
}
|
||||
|
||||
void __rds_ib_destroy_conns(struct list_head *list, spinlock_t *list_lock)
|
||||
{
|
||||
struct rds_ib_connection *ic, *_ic;
|
||||
LIST_HEAD(tmp_list);
|
||||
|
||||
/* avoid calling conn_destroy with irqs off */
|
||||
spin_lock_irq(&rds_ibdev->spinlock);
|
||||
list_splice(&rds_ibdev->conn_list, &tmp_list);
|
||||
INIT_LIST_HEAD(&rds_ibdev->conn_list);
|
||||
spin_unlock_irq(&rds_ibdev->spinlock);
|
||||
spin_lock_irq(list_lock);
|
||||
list_splice(list, &tmp_list);
|
||||
INIT_LIST_HEAD(list);
|
||||
spin_unlock_irq(list_lock);
|
||||
|
||||
list_for_each_entry_safe(ic, _ic, &tmp_list, ib_node) {
|
||||
if (ic->conn->c_passive)
|
||||
|
@ -395,10 +395,37 @@ void rds_ib_recv_init_ack(struct rds_ib_connection *ic)
|
||||
* room for it beyond the ring size. Send completion notices its special
|
||||
* wr_id and avoids working with the ring in that case.
|
||||
*/
|
||||
#ifndef KERNEL_HAS_ATOMIC64
|
||||
static void rds_ib_set_ack(struct rds_ib_connection *ic, u64 seq,
|
||||
int ack_required)
|
||||
{
|
||||
rds_ib_set_64bit(&ic->i_ack_next, seq);
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&ic->i_ack_lock, flags);
|
||||
ic->i_ack_next = seq;
|
||||
if (ack_required)
|
||||
set_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
|
||||
spin_unlock_irqrestore(&ic->i_ack_lock, flags);
|
||||
}
|
||||
|
||||
static u64 rds_ib_get_ack(struct rds_ib_connection *ic)
|
||||
{
|
||||
unsigned long flags;
|
||||
u64 seq;
|
||||
|
||||
clear_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
|
||||
|
||||
spin_lock_irqsave(&ic->i_ack_lock, flags);
|
||||
seq = ic->i_ack_next;
|
||||
spin_unlock_irqrestore(&ic->i_ack_lock, flags);
|
||||
|
||||
return seq;
|
||||
}
|
||||
#else
|
||||
static void rds_ib_set_ack(struct rds_ib_connection *ic, u64 seq,
|
||||
int ack_required)
|
||||
{
|
||||
atomic64_set(&ic->i_ack_next, seq);
|
||||
if (ack_required) {
|
||||
smp_mb__before_clear_bit();
|
||||
set_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
|
||||
@ -410,8 +437,10 @@ static u64 rds_ib_get_ack(struct rds_ib_connection *ic)
|
||||
clear_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
|
||||
smp_mb__after_clear_bit();
|
||||
|
||||
return ic->i_ack_next;
|
||||
return atomic64_read(&ic->i_ack_next);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
static void rds_ib_send_ack(struct rds_ib_connection *ic, unsigned int adv_credits)
|
||||
{
|
||||
@ -464,6 +493,10 @@ static void rds_ib_send_ack(struct rds_ib_connection *ic, unsigned int adv_credi
|
||||
* - i_ack_next, which is the last sequence number we received
|
||||
*
|
||||
* Potentially, send queue and receive queue handlers can run concurrently.
|
||||
* It would be nice to not have to use a spinlock to synchronize things,
|
||||
* but the one problem that rules this out is that 64bit updates are
|
||||
* not atomic on all platforms. Things would be a lot simpler if
|
||||
* we had atomic64 or maybe cmpxchg64 everywhere.
|
||||
*
|
||||
* Reconnecting complicates this picture just slightly. When we
|
||||
* reconnect, we may be seeing duplicate packets. The peer
|
||||
|
@ -51,6 +51,7 @@ MODULE_PARM_DESC(fastreg_message_size, " Max size of a RDMA transfer (fastreg MR
|
||||
|
||||
struct list_head rds_iw_devices;
|
||||
|
||||
/* NOTE: if also grabbing iwdev lock, grab this first */
|
||||
DEFINE_SPINLOCK(iw_nodev_conns_lock);
|
||||
LIST_HEAD(iw_nodev_conns);
|
||||
|
||||
@ -145,7 +146,7 @@ void rds_iw_remove_one(struct ib_device *device)
|
||||
}
|
||||
spin_unlock_irq(&rds_iwdev->spinlock);
|
||||
|
||||
rds_iw_remove_conns(rds_iwdev);
|
||||
rds_iw_destroy_conns(rds_iwdev);
|
||||
|
||||
if (rds_iwdev->mr_pool)
|
||||
rds_iw_destroy_mr_pool(rds_iwdev->mr_pool);
|
||||
@ -258,7 +259,7 @@ static int rds_iw_laddr_check(__be32 addr)
|
||||
void rds_iw_exit(void)
|
||||
{
|
||||
rds_info_deregister_func(RDS_INFO_IWARP_CONNECTIONS, rds_iw_ic_info);
|
||||
rds_iw_remove_nodev_conns();
|
||||
rds_iw_destroy_nodev_conns();
|
||||
ib_unregister_client(&rds_iw_client);
|
||||
rds_iw_sysctl_exit();
|
||||
rds_iw_recv_exit();
|
||||
|
28
net/rds/iw.h
28
net/rds/iw.h
@ -131,7 +131,12 @@ struct rds_iw_connection {
|
||||
|
||||
/* sending acks */
|
||||
unsigned long i_ack_flags;
|
||||
#ifdef KERNEL_HAS_ATOMIC64
|
||||
atomic64_t i_ack_next; /* next ACK to send */
|
||||
#else
|
||||
spinlock_t i_ack_lock; /* protect i_ack_next */
|
||||
u64 i_ack_next; /* next ACK to send */
|
||||
#endif
|
||||
struct rds_header *i_ack;
|
||||
struct ib_send_wr i_ack_wr;
|
||||
struct ib_sge i_ack_sge;
|
||||
@ -294,9 +299,17 @@ void rds_iw_cm_connect_complete(struct rds_connection *conn,
|
||||
|
||||
/* ib_rdma.c */
|
||||
int rds_iw_update_cm_id(struct rds_iw_device *rds_iwdev, struct rdma_cm_id *cm_id);
|
||||
int rds_iw_add_conn(struct rds_iw_device *rds_iwdev, struct rds_connection *conn);
|
||||
void rds_iw_remove_nodev_conns(void);
|
||||
void rds_iw_remove_conns(struct rds_iw_device *rds_iwdev);
|
||||
void rds_iw_add_conn(struct rds_iw_device *rds_iwdev, struct rds_connection *conn);
|
||||
void rds_iw_remove_conn(struct rds_iw_device *rds_iwdev, struct rds_connection *conn);
|
||||
void __rds_iw_destroy_conns(struct list_head *list, spinlock_t *list_lock);
|
||||
static inline void rds_iw_destroy_nodev_conns(void)
|
||||
{
|
||||
__rds_iw_destroy_conns(&iw_nodev_conns, &iw_nodev_conns_lock);
|
||||
}
|
||||
static inline void rds_iw_destroy_conns(struct rds_iw_device *rds_iwdev)
|
||||
{
|
||||
__rds_iw_destroy_conns(&rds_iwdev->conn_list, &rds_iwdev->spinlock);
|
||||
}
|
||||
struct rds_iw_mr_pool *rds_iw_create_mr_pool(struct rds_iw_device *);
|
||||
void rds_iw_get_mr_info(struct rds_iw_device *rds_iwdev, struct rds_info_rdma_connection *iinfo);
|
||||
void rds_iw_destroy_mr_pool(struct rds_iw_mr_pool *);
|
||||
@ -383,13 +396,4 @@ rds_iw_data_sge(struct rds_iw_connection *ic, struct ib_sge *sge)
|
||||
return &sge[1];
|
||||
}
|
||||
|
||||
static inline void rds_iw_set_64bit(u64 *ptr, u64 val)
|
||||
{
|
||||
#if BITS_PER_LONG == 64
|
||||
*ptr = val;
|
||||
#else
|
||||
set_64bit(ptr, val);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -86,9 +86,7 @@ void rds_iw_cm_connect_complete(struct rds_connection *conn, struct rdma_cm_even
|
||||
err = rds_iw_update_cm_id(rds_iwdev, ic->i_cm_id);
|
||||
if (err)
|
||||
printk(KERN_ERR "rds_iw_update_ipaddr failed (%d)\n", err);
|
||||
err = rds_iw_add_conn(rds_iwdev, conn);
|
||||
if (err)
|
||||
printk(KERN_ERR "rds_iw_add_conn failed (%d)\n", err);
|
||||
rds_iw_add_conn(rds_iwdev, conn);
|
||||
|
||||
/* If the peer gave us the last packet it saw, process this as if
|
||||
* we had received a regular ACK. */
|
||||
@ -637,19 +635,8 @@ void rds_iw_conn_shutdown(struct rds_connection *conn)
|
||||
* Move connection back to the nodev list.
|
||||
* Remove cm_id from the device cm_id list.
|
||||
*/
|
||||
if (ic->rds_iwdev) {
|
||||
|
||||
spin_lock_irq(&ic->rds_iwdev->spinlock);
|
||||
BUG_ON(list_empty(&ic->iw_node));
|
||||
list_del(&ic->iw_node);
|
||||
spin_unlock_irq(&ic->rds_iwdev->spinlock);
|
||||
|
||||
spin_lock_irq(&iw_nodev_conns_lock);
|
||||
list_add_tail(&ic->iw_node, &iw_nodev_conns);
|
||||
spin_unlock_irq(&iw_nodev_conns_lock);
|
||||
rds_iw_remove_cm_id(ic->rds_iwdev, ic->i_cm_id);
|
||||
ic->rds_iwdev = NULL;
|
||||
}
|
||||
if (ic->rds_iwdev)
|
||||
rds_iw_remove_conn(ic->rds_iwdev, conn);
|
||||
|
||||
rdma_destroy_id(ic->i_cm_id);
|
||||
|
||||
@ -672,7 +659,11 @@ void rds_iw_conn_shutdown(struct rds_connection *conn)
|
||||
|
||||
/* Clear the ACK state */
|
||||
clear_bit(IB_ACK_IN_FLIGHT, &ic->i_ack_flags);
|
||||
rds_iw_set_64bit(&ic->i_ack_next, 0);
|
||||
#ifdef KERNEL_HAS_ATOMIC64
|
||||
atomic64_set(&ic->i_ack_next, 0);
|
||||
#else
|
||||
ic->i_ack_next = 0;
|
||||
#endif
|
||||
ic->i_ack_recv = 0;
|
||||
|
||||
/* Clear flow control state */
|
||||
@ -706,6 +697,9 @@ int rds_iw_conn_alloc(struct rds_connection *conn, gfp_t gfp)
|
||||
|
||||
INIT_LIST_HEAD(&ic->iw_node);
|
||||
mutex_init(&ic->i_recv_mutex);
|
||||
#ifndef KERNEL_HAS_ATOMIC64
|
||||
spin_lock_init(&ic->i_ack_lock);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* rds_iw_conn_shutdown() waits for these to be emptied so they
|
||||
@ -726,11 +720,27 @@ int rds_iw_conn_alloc(struct rds_connection *conn, gfp_t gfp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Free a connection. Connection must be shut down and not set for reconnect.
|
||||
*/
|
||||
void rds_iw_conn_free(void *arg)
|
||||
{
|
||||
struct rds_iw_connection *ic = arg;
|
||||
spinlock_t *lock_ptr;
|
||||
|
||||
rdsdebug("ic %p\n", ic);
|
||||
|
||||
/*
|
||||
* Conn is either on a dev's list or on the nodev list.
|
||||
* A race with shutdown() or connect() would cause problems
|
||||
* (since rds_iwdev would change) but that should never happen.
|
||||
*/
|
||||
lock_ptr = ic->rds_iwdev ? &ic->rds_iwdev->spinlock : &iw_nodev_conns_lock;
|
||||
|
||||
spin_lock_irq(lock_ptr);
|
||||
list_del(&ic->iw_node);
|
||||
spin_unlock_irq(lock_ptr);
|
||||
|
||||
kfree(ic);
|
||||
}
|
||||
|
||||
|
@ -196,7 +196,7 @@ int rds_iw_update_cm_id(struct rds_iw_device *rds_iwdev, struct rdma_cm_id *cm_i
|
||||
return rds_iw_add_cm_id(rds_iwdev, cm_id);
|
||||
}
|
||||
|
||||
int rds_iw_add_conn(struct rds_iw_device *rds_iwdev, struct rds_connection *conn)
|
||||
void rds_iw_add_conn(struct rds_iw_device *rds_iwdev, struct rds_connection *conn)
|
||||
{
|
||||
struct rds_iw_connection *ic = conn->c_transport_data;
|
||||
|
||||
@ -205,45 +205,45 @@ int rds_iw_add_conn(struct rds_iw_device *rds_iwdev, struct rds_connection *conn
|
||||
BUG_ON(list_empty(&iw_nodev_conns));
|
||||
BUG_ON(list_empty(&ic->iw_node));
|
||||
list_del(&ic->iw_node);
|
||||
spin_unlock_irq(&iw_nodev_conns_lock);
|
||||
|
||||
spin_lock_irq(&rds_iwdev->spinlock);
|
||||
list_add_tail(&ic->iw_node, &rds_iwdev->conn_list);
|
||||
spin_unlock_irq(&rds_iwdev->spinlock);
|
||||
|
||||
ic->rds_iwdev = rds_iwdev;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void rds_iw_remove_nodev_conns(void)
|
||||
{
|
||||
struct rds_iw_connection *ic, *_ic;
|
||||
LIST_HEAD(tmp_list);
|
||||
|
||||
/* avoid calling conn_destroy with irqs off */
|
||||
spin_lock_irq(&iw_nodev_conns_lock);
|
||||
list_splice(&iw_nodev_conns, &tmp_list);
|
||||
INIT_LIST_HEAD(&iw_nodev_conns);
|
||||
spin_unlock_irq(&iw_nodev_conns_lock);
|
||||
|
||||
list_for_each_entry_safe(ic, _ic, &tmp_list, iw_node) {
|
||||
if (ic->conn->c_passive)
|
||||
rds_conn_destroy(ic->conn->c_passive);
|
||||
rds_conn_destroy(ic->conn);
|
||||
}
|
||||
ic->rds_iwdev = rds_iwdev;
|
||||
}
|
||||
|
||||
void rds_iw_remove_conns(struct rds_iw_device *rds_iwdev)
|
||||
void rds_iw_remove_conn(struct rds_iw_device *rds_iwdev, struct rds_connection *conn)
|
||||
{
|
||||
struct rds_iw_connection *ic = conn->c_transport_data;
|
||||
|
||||
/* place conn on nodev_conns_list */
|
||||
spin_lock(&iw_nodev_conns_lock);
|
||||
|
||||
spin_lock_irq(&rds_iwdev->spinlock);
|
||||
BUG_ON(list_empty(&ic->iw_node));
|
||||
list_del(&ic->iw_node);
|
||||
spin_unlock_irq(&rds_iwdev->spinlock);
|
||||
|
||||
list_add_tail(&ic->iw_node, &iw_nodev_conns);
|
||||
|
||||
spin_unlock(&iw_nodev_conns_lock);
|
||||
|
||||
rds_iw_remove_cm_id(ic->rds_iwdev, ic->i_cm_id);
|
||||
ic->rds_iwdev = NULL;
|
||||
}
|
||||
|
||||
void __rds_iw_destroy_conns(struct list_head *list, spinlock_t *list_lock)
|
||||
{
|
||||
struct rds_iw_connection *ic, *_ic;
|
||||
LIST_HEAD(tmp_list);
|
||||
|
||||
/* avoid calling conn_destroy with irqs off */
|
||||
spin_lock_irq(&rds_iwdev->spinlock);
|
||||
list_splice(&rds_iwdev->conn_list, &tmp_list);
|
||||
INIT_LIST_HEAD(&rds_iwdev->conn_list);
|
||||
spin_unlock_irq(&rds_iwdev->spinlock);
|
||||
spin_lock_irq(list_lock);
|
||||
list_splice(list, &tmp_list);
|
||||
INIT_LIST_HEAD(list);
|
||||
spin_unlock_irq(list_lock);
|
||||
|
||||
list_for_each_entry_safe(ic, _ic, &tmp_list, iw_node) {
|
||||
if (ic->conn->c_passive)
|
||||
|
@ -395,10 +395,37 @@ void rds_iw_recv_init_ack(struct rds_iw_connection *ic)
|
||||
* room for it beyond the ring size. Send completion notices its special
|
||||
* wr_id and avoids working with the ring in that case.
|
||||
*/
|
||||
#ifndef KERNEL_HAS_ATOMIC64
|
||||
static void rds_iw_set_ack(struct rds_iw_connection *ic, u64 seq,
|
||||
int ack_required)
|
||||
{
|
||||
rds_iw_set_64bit(&ic->i_ack_next, seq);
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&ic->i_ack_lock, flags);
|
||||
ic->i_ack_next = seq;
|
||||
if (ack_required)
|
||||
set_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
|
||||
spin_unlock_irqrestore(&ic->i_ack_lock, flags);
|
||||
}
|
||||
|
||||
static u64 rds_iw_get_ack(struct rds_iw_connection *ic)
|
||||
{
|
||||
unsigned long flags;
|
||||
u64 seq;
|
||||
|
||||
clear_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
|
||||
|
||||
spin_lock_irqsave(&ic->i_ack_lock, flags);
|
||||
seq = ic->i_ack_next;
|
||||
spin_unlock_irqrestore(&ic->i_ack_lock, flags);
|
||||
|
||||
return seq;
|
||||
}
|
||||
#else
|
||||
static void rds_iw_set_ack(struct rds_iw_connection *ic, u64 seq,
|
||||
int ack_required)
|
||||
{
|
||||
atomic64_set(&ic->i_ack_next, seq);
|
||||
if (ack_required) {
|
||||
smp_mb__before_clear_bit();
|
||||
set_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
|
||||
@ -410,8 +437,10 @@ static u64 rds_iw_get_ack(struct rds_iw_connection *ic)
|
||||
clear_bit(IB_ACK_REQUESTED, &ic->i_ack_flags);
|
||||
smp_mb__after_clear_bit();
|
||||
|
||||
return ic->i_ack_next;
|
||||
return atomic64_read(&ic->i_ack_next);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
static void rds_iw_send_ack(struct rds_iw_connection *ic, unsigned int adv_credits)
|
||||
{
|
||||
@ -464,6 +493,10 @@ static void rds_iw_send_ack(struct rds_iw_connection *ic, unsigned int adv_credi
|
||||
* - i_ack_next, which is the last sequence number we received
|
||||
*
|
||||
* Potentially, send queue and receive queue handlers can run concurrently.
|
||||
* It would be nice to not have to use a spinlock to synchronize things,
|
||||
* but the one problem that rules this out is that 64bit updates are
|
||||
* not atomic on all platforms. Things would be a lot simpler if
|
||||
* we had atomic64 or maybe cmpxchg64 everywhere.
|
||||
*
|
||||
* Reconnecting complicates this picture just slightly. When we
|
||||
* reconnect, we may be seeing duplicate packets. The peer
|
||||
|
@ -28,6 +28,10 @@
|
||||
*/
|
||||
#define RDS_PORT 18634
|
||||
|
||||
#ifdef ATOMIC64_INIT
|
||||
#define KERNEL_HAS_ATOMIC64
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
#define rdsdebug(fmt, args...) pr_debug("%s(): " fmt, __func__ , ##args)
|
||||
#else
|
||||
|
@ -615,7 +615,7 @@ void rds_send_drop_to(struct rds_sock *rs, struct sockaddr_in *dest)
|
||||
{
|
||||
struct rds_message *rm, *tmp;
|
||||
struct rds_connection *conn;
|
||||
unsigned long flags;
|
||||
unsigned long flags, flags2;
|
||||
LIST_HEAD(list);
|
||||
int wake = 0;
|
||||
|
||||
@ -651,9 +651,9 @@ void rds_send_drop_to(struct rds_sock *rs, struct sockaddr_in *dest)
|
||||
list_for_each_entry(rm, &list, m_sock_item) {
|
||||
/* We do this here rather than in the loop above, so that
|
||||
* we don't have to nest m_rs_lock under rs->rs_lock */
|
||||
spin_lock(&rm->m_rs_lock);
|
||||
spin_lock_irqsave(&rm->m_rs_lock, flags2);
|
||||
rm->m_rs = NULL;
|
||||
spin_unlock(&rm->m_rs_lock);
|
||||
spin_unlock_irqrestore(&rm->m_rs_lock, flags2);
|
||||
|
||||
/*
|
||||
* If we see this flag cleared then we're *sure* that someone
|
||||
|
Loading…
Reference in New Issue
Block a user