From 794b799086d930a4398a7c72fc441b3406108501 Mon Sep 17 00:00:00 2001 From: Xiao Wang Date: Fri, 19 Feb 2016 19:06:59 +0800 Subject: [PATCH] fm10k/base: allow removal of slot appropriate check The Linux Kernel provides the OS a call "pcie_get_minimum_link" which can crawl the PCIe tree and determine the actual minimum link speed of a device which is a more general check than provided by is_slot_appropriate. Thus, the kernel driver does not use or want the is_slot_appropriate function call. Add a NO_IS_SLOT_APPROPRIATE_CHECK definition which can be defined to remove the code. If left undefined (the default) then the code will all be active and no driver changes should be necessary. Signed-off-by: Wang Xiao W Tested-by: Heng Ding Acked-by: Jing Chen --- drivers/net/fm10k/base/fm10k_api.c | 2 ++ drivers/net/fm10k/base/fm10k_api.h | 2 ++ drivers/net/fm10k/base/fm10k_pf.c | 4 ++++ drivers/net/fm10k/base/fm10k_type.h | 2 ++ drivers/net/fm10k/base/fm10k_vf.c | 4 ++++ 5 files changed, 14 insertions(+) diff --git a/drivers/net/fm10k/base/fm10k_api.c b/drivers/net/fm10k/base/fm10k_api.c index eb5bdaa2c7..c49d20dfbd 100644 --- a/drivers/net/fm10k/base/fm10k_api.c +++ b/drivers/net/fm10k/base/fm10k_api.c @@ -181,6 +181,7 @@ s32 fm10k_get_bus_info(struct fm10k_hw *hw) FM10K_NOT_IMPLEMENTED); } +#ifndef NO_IS_SLOT_APPROPRIATE_CHECK /** * fm10k_is_slot_appropriate - Indicate appropriate slot for this SKU * @hw: pointer to hardware structure @@ -195,6 +196,7 @@ bool fm10k_is_slot_appropriate(struct fm10k_hw *hw) return true; } +#endif /** * fm10k_update_vlan - Clear VLAN ID to VLAN filter table * @hw: pointer to hardware structure diff --git a/drivers/net/fm10k/base/fm10k_api.h b/drivers/net/fm10k/base/fm10k_api.h index 113aef5fb2..2ab31496f0 100644 --- a/drivers/net/fm10k/base/fm10k_api.h +++ b/drivers/net/fm10k/base/fm10k_api.h @@ -44,7 +44,9 @@ s32 fm10k_stop_hw(struct fm10k_hw *hw); s32 fm10k_start_hw(struct fm10k_hw *hw); s32 fm10k_init_shared_code(struct fm10k_hw *hw); s32 fm10k_get_bus_info(struct fm10k_hw *hw); +#ifndef NO_IS_SLOT_APPROPRIATE_CHECK bool fm10k_is_slot_appropriate(struct fm10k_hw *hw); +#endif s32 fm10k_update_vlan(struct fm10k_hw *hw, u32 vid, u8 idx, bool set); s32 fm10k_read_mac_addr(struct fm10k_hw *hw); void fm10k_update_hw_stats(struct fm10k_hw *hw, struct fm10k_hw_stats *stats); diff --git a/drivers/net/fm10k/base/fm10k_pf.c b/drivers/net/fm10k/base/fm10k_pf.c index a1469aaf26..f5cbda488d 100644 --- a/drivers/net/fm10k/base/fm10k_pf.c +++ b/drivers/net/fm10k/base/fm10k_pf.c @@ -216,6 +216,7 @@ STATIC s32 fm10k_init_hw_pf(struct fm10k_hw *hw) return FM10K_SUCCESS; } +#ifndef NO_IS_SLOT_APPROPRIATE_CHECK /** * fm10k_is_slot_appropriate_pf - Indicate appropriate slot for this SKU * @hw: pointer to hardware structure @@ -231,6 +232,7 @@ STATIC bool fm10k_is_slot_appropriate_pf(struct fm10k_hw *hw) (hw->bus.width == hw->bus_caps.width); } +#endif /** * fm10k_update_vlan_pf - Update status of VLAN ID in VLAN filter table * @hw: pointer to hardware structure @@ -2064,7 +2066,9 @@ s32 fm10k_init_ops_pf(struct fm10k_hw *hw) mac->ops.init_hw = &fm10k_init_hw_pf; mac->ops.start_hw = &fm10k_start_hw_generic; mac->ops.stop_hw = &fm10k_stop_hw_generic; +#ifndef NO_IS_SLOT_APPROPRIATE_CHECK mac->ops.is_slot_appropriate = &fm10k_is_slot_appropriate_pf; +#endif mac->ops.update_vlan = &fm10k_update_vlan_pf; mac->ops.read_mac_addr = &fm10k_read_mac_addr_pf; mac->ops.update_uc_addr = &fm10k_update_uc_addr_pf; diff --git a/drivers/net/fm10k/base/fm10k_type.h b/drivers/net/fm10k/base/fm10k_type.h index 1e84294d98..c4e54501d2 100644 --- a/drivers/net/fm10k/base/fm10k_type.h +++ b/drivers/net/fm10k/base/fm10k_type.h @@ -679,7 +679,9 @@ struct fm10k_mac_ops { s32 (*stop_hw)(struct fm10k_hw *); s32 (*get_bus_info)(struct fm10k_hw *); s32 (*get_host_state)(struct fm10k_hw *, bool *); +#ifndef NO_IS_SLOT_APPROPRIATE_CHECK bool (*is_slot_appropriate)(struct fm10k_hw *); +#endif s32 (*update_vlan)(struct fm10k_hw *, u32, u8, bool); s32 (*read_mac_addr)(struct fm10k_hw *); s32 (*update_uc_addr)(struct fm10k_hw *, u16, const u8 *, diff --git a/drivers/net/fm10k/base/fm10k_vf.c b/drivers/net/fm10k/base/fm10k_vf.c index 43eb0813d9..efbdbd1e73 100644 --- a/drivers/net/fm10k/base/fm10k_vf.c +++ b/drivers/net/fm10k/base/fm10k_vf.c @@ -178,6 +178,7 @@ STATIC s32 fm10k_init_hw_vf(struct fm10k_hw *hw) return err; } +#ifndef NO_IS_SLOT_APPROPRIATE_CHECK /** * fm10k_is_slot_appropriate_vf - Indicate appropriate slot for this SKU * @hw: pointer to hardware structure @@ -194,6 +195,7 @@ STATIC bool fm10k_is_slot_appropriate_vf(struct fm10k_hw *hw) return TRUE; } +#endif /* This structure defines the attibutes to be parsed below */ const struct fm10k_tlv_attr fm10k_mac_vlan_msg_attr[] = { FM10K_TLV_ATTR_U32(FM10K_MAC_VLAN_MSG_VLAN), @@ -648,7 +650,9 @@ s32 fm10k_init_ops_vf(struct fm10k_hw *hw) mac->ops.init_hw = &fm10k_init_hw_vf; mac->ops.start_hw = &fm10k_start_hw_generic; mac->ops.stop_hw = &fm10k_stop_hw_vf; +#ifndef NO_IS_SLOT_APPROPRIATE_CHECK mac->ops.is_slot_appropriate = &fm10k_is_slot_appropriate_vf; +#endif mac->ops.update_vlan = &fm10k_update_vlan_vf; mac->ops.read_mac_addr = &fm10k_read_mac_addr_vf; mac->ops.update_uc_addr = &fm10k_update_uc_addr_vf;