[Intel-wired-lan] [PATCH 5/7] ice: Introduce ice_dev_onetime_setup

Venkataramanan, Anirudh anirudh.venkataramanan at intel.com
Thu Oct 18 21:05:31 UTC 2018


On Thu, 2018-10-18 at 09:06 -0700, Shannon Nelson wrote:
> On 10/18/2018 8:37 AM, Anirudh Venkataramanan wrote:
> > ice_dev_onetime_setup contains a couple of driver workarounds for
> > current
> > firmware limitations. These workarounds are expected to go away
> > once
> > these limitations are fixed in the firmware.
> 
> Can you add a check for firmware version or feature to see if this
> is 
> needed before using it?
> 
> sln

Hi Shannon,

We discussed this internally a few weeks back and the conclusion was
that right now there's no reliable way to apply these workarounds
conditionally.

On a FW release that has these issues addressed, these workarounds
while unncessary, won't break anything. So for now, IMHO, it's fine the
way it is.

Thanks,
Ani

> 
> 
> > 
> > Signed-off-by: Anirudh Venkataramanan <
> > anirudh.venkataramanan at intel.com>
> > ---
> >   drivers/net/ethernet/intel/ice/ice_common.c     | 19
> > +++++++++++++++++++
> >   drivers/net/ethernet/intel/ice/ice_common.h     |  3 +++
> >   drivers/net/ethernet/intel/ice/ice_hw_autogen.h |  2 ++
> >   drivers/net/ethernet/intel/ice/ice_lib.c        |  1 +
> >   4 files changed, 25 insertions(+)
> > 
> > diff --git a/drivers/net/ethernet/intel/ice/ice_common.c
> > b/drivers/net/ethernet/intel/ice/ice_common.c
> > index 78df54b25bf1..5a91a9087d1e 100644
> > --- a/drivers/net/ethernet/intel/ice/ice_common.c
> > +++ b/drivers/net/ethernet/intel/ice/ice_common.c
> > @@ -42,6 +42,23 @@ static enum ice_status ice_set_mac_type(struct
> > ice_hw *hw)
> >   	return 0;
> >   }
> >   
> > +/**
> > + * ice_dev_onetime_setup - Temporary HW/FW workarounds
> > + * @hw: pointer to the HW structure
> > + *
> > + * This function provides temporary workarounds for certain issues
> > + * that are expected to be fixed in the HW/FW.
> > + */
> > +void ice_dev_onetime_setup(struct ice_hw *hw)
> > +{
> > +	/* configure Rx - set non pxe mode */
> > +	wr32(hw, GLLAN_RCTL_0, 0x1);
> > +
> > +#define MBX_PF_VT_PFALLOC	0x00231E80
> > +	/* set VFs per PF */
> > +	wr32(hw, MBX_PF_VT_PFALLOC, rd32(hw, PF_VT_PFALLOC_HIF));
> > +}
> > +
> >   /**
> >    * ice_clear_pf_cfg - Clear PF configuration
> >    * @hw: pointer to the hardware structure
> > @@ -740,6 +757,8 @@ enum ice_status ice_init_hw(struct ice_hw *hw)
> >   	if (status)
> >   		goto err_unroll_sched;
> >   
> > +	ice_dev_onetime_setup(hw);
> > +
> >   	/* Get MAC information */
> >   	/* A single port can report up to two (LAN and WoL) addresses
> > */
> >   	mac_buf = devm_kcalloc(ice_hw_to_dev(hw), 2,
> > diff --git a/drivers/net/ethernet/intel/ice/ice_common.h
> > b/drivers/net/ethernet/intel/ice/ice_common.h
> > index 1900681289a4..876347e32b6f 100644
> > --- a/drivers/net/ethernet/intel/ice/ice_common.h
> > +++ b/drivers/net/ethernet/intel/ice/ice_common.h
> > @@ -34,6 +34,9 @@ ice_sq_send_cmd(struct ice_hw *hw, struct
> > ice_ctl_q_info *cq,
> >   		struct ice_sq_cd *cd);
> >   void ice_clear_pxe_mode(struct ice_hw *hw);
> >   enum ice_status ice_get_caps(struct ice_hw *hw);
> > +
> > +void ice_dev_onetime_setup(struct ice_hw *hw);
> > +
> >   enum ice_status
> >   ice_write_rxq_ctx(struct ice_hw *hw, struct ice_rlan_ctx
> > *rlan_ctx,
> >   		  u32 rxq_index);
> > diff --git a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
> > b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
> > index a6679a9bfd3a..228afcad6fc3 100644
> > --- a/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
> > +++ b/drivers/net/ethernet/intel/ice/ice_hw_autogen.h
> > @@ -157,6 +157,7 @@
> >   #define VPINT_ALLOC_LAST_S			12
> >   #define VPINT_ALLOC_LAST_M			ICE_M(0x7FF,
> > 12)
> >   #define VPINT_ALLOC_VALID_M			BIT(31)
> > +#define GLLAN_RCTL_0				0x002941F8
> >   #define QRX_CONTEXT(_i, _QRX)			(0x00280000 +
> > ((_i) * 8192 + (_QRX) * 4))
> >   #define QRX_CTRL(_QRX)				(0x00120000 +
> > ((_QRX) * 4))
> >   #define QRX_CTRL_MAX_INDEX			2047
> > @@ -320,6 +321,7 @@
> >   #define GLV_UPRCL(_i)				(0x003B2000 +
> > ((_i) * 8))
> >   #define GLV_UPTCH(_i)				(0x0030A004 +
> > ((_i) * 8))
> >   #define GLV_UPTCL(_i)				(0x0030A000 +
> > ((_i) * 8))
> > +#define PF_VT_PFALLOC_HIF			0x0009DD80
> >   #define VSIQF_HKEY_MAX_INDEX			12
> >   #define VSIQF_HLUT_MAX_INDEX			15
> >   #define VFINT_DYN_CTLN(_i)			(0x00003800 +
> > ((_i) * 4))
> > diff --git a/drivers/net/ethernet/intel/ice/ice_lib.c
> > b/drivers/net/ethernet/intel/ice/ice_lib.c
> > index e750702bcdce..5bacad01f0c9 100644
> > --- a/drivers/net/ethernet/intel/ice/ice_lib.c
> > +++ b/drivers/net/ethernet/intel/ice/ice_lib.c
> > @@ -2529,6 +2529,7 @@ int ice_vsi_rebuild(struct ice_vsi *vsi)
> >   	vsi->hw_base_vector = 0;
> >   	ice_vsi_clear_rings(vsi);
> >   	ice_vsi_free_arrays(vsi, false);
> > +	ice_dev_onetime_setup(&vsi->back->hw);
> >   	ice_vsi_set_num_qs(vsi);
> >   
> >   	/* Initialize VSI struct elements and create VSI in FW */
> > 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3302 bytes
Desc: not available
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20181018/2676020d/attachment-0001.bin>


More information about the Intel-wired-lan mailing list