vxge: Check if FCS stripping is disabled by the firmware.
- 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> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
f0dfebafcc
commit
fa41fd1003
|
@ -2156,6 +2156,28 @@ exit:
|
|||
return status;
|
||||
}
|
||||
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -4244,6 +4244,15 @@ vxge_probe(struct pci_dev *pdev, const struct pci_device_id *pre)
|
|||
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 */
|
||||
|
|
Loading…
Reference in a new issue