Message ID | Pine.GSO.4.10.10910050755480.9377-100000@guinness |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Sreenivasa Honnur a écrit : > - Added a function to check if FCS stripping is disabled by the firmware, if > it is not disabled fail driver load. > > - By default FCS stripping is disabled by the firmware. With this assumption > driver decrements the indicated packet length by 4 bytes(FCS length). > > - This patch ensures that FCS stripping is disabled during driver load time. > > Signed-off-by: Sreenivasa Honnur <sreenivasa.honnur@neterion.com> What the big deal about FCS not being stripped ? Denying driver load for this litle detail seems very hard. You could issue a warning if there is a performance hit, but allow the driver to function. If this adapter has the ability to disable/enable it at firmware level, you might replace pkt_length -= ETH_FCS_LEN; by : pkt_length -= adapter->fcs_length; Granted you initialized adapter->fcs_length to 0 or 4 depending on firmware setup. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 10/05/2009 06:04 AM, Eric Dumazet wrote: > Sreenivasa Honnur a écrit : >> - Added a function to check if FCS stripping is disabled by the firmware, if >> it is not disabled fail driver load. >> >> - By default FCS stripping is disabled by the firmware. With this assumption >> driver decrements the indicated packet length by 4 bytes(FCS length). >> >> - This patch ensures that FCS stripping is disabled during driver load time. >> >> Signed-off-by: Sreenivasa Honnur<sreenivasa.honnur@neterion.com> > > What the big deal about FCS not being stripped ? I'd consider it a feature to be able to receive the CRC...would be nice for sniffing applications! Ben
> > - Added a function to check if FCS stripping is disabled by the > firmware, if > > it is not disabled fail driver load. > > > > - By default FCS stripping is disabled by the firmware. With this > assumption > > driver decrements the indicated packet length by 4 bytes(FCS length). > > > > - This patch ensures that FCS stripping is disabled during driver load > time. > > > > Signed-off-by: Sreenivasa Honnur <sreenivasa.honnur@neterion.com> > > What the big deal about FCS not being stripped ? [Ram] 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 a privileged operation done with a firmware version that the driver checks for currently. Ram -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Ramkrishna Vepa a écrit : > [Ram] 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 a > privileged operation done with a firmware version that the driver checks > for currently. Thanks for the info, this could be added in Changelog or some comment, as it might help to diagnose similar problems elsewhere :) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff -urpN patch5/drivers/net/vxge/vxge-config.c patch6/drivers/net/vxge/vxge-config.c --- patch5/drivers/net/vxge/vxge-config.c 2009-09-04 01:24:25.000000000 -0700 +++ patch6/drivers/net/vxge/vxge-config.c 2009-09-04 01:33:43.000000000 -0700 @@ -2157,6 +2157,28 @@ exit: } /* + * vxge_hw_vpath_strip_fcs_check - Check for FCS strip. + */ +enum vxge_hw_status +vxge_hw_vpath_strip_fcs_check(struct __vxge_hw_device *hldev, u64 vpath_mask) +{ + struct vxge_hw_vpmgmt_reg __iomem *vpmgmt_reg; + enum vxge_hw_status status = VXGE_HW_OK; + int i = 0, j = 0; + + for (i = 0; i < VXGE_HW_MAX_VIRTUAL_PATHS; i++) { + if (!((vpath_mask) & vxge_mBIT(i))) + continue; + vpmgmt_reg = hldev->vpmgmt_reg[i]; + for (j = 0; j < VXGE_HW_MAC_MAX_MAC_PORT_ID; j++) { + if (readq(&vpmgmt_reg->rxmac_cfg0_port_vpmgmt_clone[j]) + & VXGE_HW_RXMAC_CFG0_PORT_VPMGMT_CLONE_STRIP_FCS) + return VXGE_HW_FAIL; + } + } + return status; +} +/* * vxge_hw_mgmt_reg_Write - Write Titan register. */ enum vxge_hw_status diff -urpN patch5/drivers/net/vxge/vxge-config.h patch6/drivers/net/vxge/vxge-config.h --- patch5/drivers/net/vxge/vxge-config.h 2009-09-04 01:23:26.000000000 -0700 +++ patch6/drivers/net/vxge/vxge-config.h 2009-09-04 01:29:17.000000000 -0700 @@ -2201,6 +2201,8 @@ __vxge_hw_vpath_func_id_get( enum vxge_hw_status __vxge_hw_vpath_reset_check(struct __vxge_hw_virtualpath *vpath); +enum vxge_hw_status +vxge_hw_vpath_strip_fcs_check(struct __vxge_hw_device *hldev, u64 vpath_mask); /** * vxge_debug * @level: level of debug verbosity. diff -urpN patch5/drivers/net/vxge/vxge-main.c patch6/drivers/net/vxge/vxge-main.c --- patch5/drivers/net/vxge/vxge-main.c 2009-09-04 01:23:26.000000000 -0700 +++ patch6/drivers/net/vxge/vxge-main.c 2009-09-04 01:31:12.000000000 -0700 @@ -4244,6 +4244,15 @@ vxge_probe(struct pci_dev *pdev, const s goto _exit3; } + /* if FCS stripping is not disabled in MAC fail driver load */ + if (vxge_hw_vpath_strip_fcs_check(hldev, vpath_mask) != VXGE_HW_OK) { + vxge_debug_init(VXGE_ERR, + "%s: FCS stripping is not disabled in MAC" + " failing driver load", VXGE_DRIVER_NAME); + ret = -EINVAL; + goto _exit4; + } + vxge_hw_device_debug_set(hldev, VXGE_ERR, VXGE_COMPONENT_LL); /* set private device info */
- Added a function to check if FCS stripping is disabled by the firmware, if it is not disabled fail driver load. - By default FCS stripping is disabled by the firmware. With this assumption driver decrements the indicated packet length by 4 bytes(FCS length). - This patch ensures that FCS stripping is disabled during driver load time. Signed-off-by: Sreenivasa Honnur <sreenivasa.honnur@neterion.com> --- -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html