diff options
author | Sreenivasa Honnur <Sreenivasa.Honnur@neterion.com> | 2009-07-01 17:17:24 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-07-05 22:16:38 -0400 |
commit | 22fa125ee24f8db497fa447c145a4a1293fab098 (patch) | |
tree | d1c7c6939d67595fd0d039a762fdffb06874aaea /drivers/net/vxge | |
parent | a5d165b571fcf347e82af6292074d2f0c07de3a6 (diff) |
vxge: Disable fcs stripping.
- Disable fcs stripping. The minimum frame size that can be received by the
hardware is 57 Bytes. A 64 Byte Ethernet frame with the vlan tag and fcs
stripped will result in a 56 Byte frame which will lock up the receive
engine. The work around is to disable fcs stripping in the hardware which
is done with a firmware upgrade. The fixes are -
1. Ensure that the correct firmware version is used.
2. Decrement the indicated packet length of the receive packet by 4 bytes
(FCS length).
Signed-off-by: Sreenivasa Honnur <sreenivasa.honnur@neterion.com>
Signed-off-by: Ramkrishna Vepa <ram.vepa@neterion.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/vxge')
-rw-r--r-- | drivers/net/vxge/vxge-main.c | 10 | ||||
-rw-r--r-- | drivers/net/vxge/vxge-main.h | 2 |
2 files changed, 7 insertions, 5 deletions
diff --git a/drivers/net/vxge/vxge-main.c b/drivers/net/vxge/vxge-main.c index 060549a75586..eaf916b90aba 100644 --- a/drivers/net/vxge/vxge-main.c +++ b/drivers/net/vxge/vxge-main.c | |||
@@ -454,6 +454,8 @@ vxge_rx_1b_compl(struct __vxge_hw_ring *ringh, void *dtr, | |||
454 | vxge_hw_ring_rxd_1b_get(ringh, dtr, &dma_sizes); | 454 | vxge_hw_ring_rxd_1b_get(ringh, dtr, &dma_sizes); |
455 | pkt_length = dma_sizes; | 455 | pkt_length = dma_sizes; |
456 | 456 | ||
457 | pkt_length -= ETH_FCS_LEN; | ||
458 | |||
457 | vxge_debug_rx(VXGE_TRACE, | 459 | vxge_debug_rx(VXGE_TRACE, |
458 | "%s: %s:%d Packet Length = %d", | 460 | "%s: %s:%d Packet Length = %d", |
459 | ring->ndev->name, __func__, __LINE__, pkt_length); | 461 | ring->ndev->name, __func__, __LINE__, pkt_length); |
@@ -4163,11 +4165,11 @@ vxge_probe(struct pci_dev *pdev, const struct pci_device_id *pre) | |||
4163 | } | 4165 | } |
4164 | 4166 | ||
4165 | if (ll_config.device_hw_info.fw_version.major != | 4167 | if (ll_config.device_hw_info.fw_version.major != |
4166 | VXGE_DRIVER_VERSION_MAJOR) { | 4168 | VXGE_DRIVER_FW_VERSION_MAJOR) { |
4167 | vxge_debug_init(VXGE_ERR, | 4169 | vxge_debug_init(VXGE_ERR, |
4168 | "FW Ver.(maj): %d not driver's expected version: %d", | 4170 | "%s: Incorrect firmware version." |
4169 | ll_config.device_hw_info.fw_version.major, | 4171 | "Please upgrade the firmware to version 1.x.x", |
4170 | VXGE_DRIVER_VERSION_MAJOR); | 4172 | VXGE_DRIVER_NAME); |
4171 | ret = -EINVAL; | 4173 | ret = -EINVAL; |
4172 | goto _exit3; | 4174 | goto _exit3; |
4173 | } | 4175 | } |
diff --git a/drivers/net/vxge/vxge-main.h b/drivers/net/vxge/vxge-main.h index a46f7fe938d2..18d824c3ab93 100644 --- a/drivers/net/vxge/vxge-main.h +++ b/drivers/net/vxge/vxge-main.h | |||
@@ -21,7 +21,7 @@ | |||
21 | 21 | ||
22 | #define VXGE_DRIVER_NAME "vxge" | 22 | #define VXGE_DRIVER_NAME "vxge" |
23 | #define VXGE_DRIVER_VENDOR "Neterion, Inc" | 23 | #define VXGE_DRIVER_VENDOR "Neterion, Inc" |
24 | #define VXGE_DRIVER_VERSION_MAJOR 0 | 24 | #define VXGE_DRIVER_FW_VERSION_MAJOR 1 |
25 | 25 | ||
26 | #define DRV_VERSION VXGE_VERSION_MAJOR"."VXGE_VERSION_MINOR"."\ | 26 | #define DRV_VERSION VXGE_VERSION_MAJOR"."VXGE_VERSION_MINOR"."\ |
27 | VXGE_VERSION_FIX"."VXGE_VERSION_BUILD"-"\ | 27 | VXGE_VERSION_FIX"."VXGE_VERSION_BUILD"-"\ |