mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	Add patches for linux-5.4. The patches are from NXP LSDK-20.04 release which was tagged LSDK-20.04-V5.4. https://source.codeaurora.org/external/qoriq/qoriq-components/linux/ For boards LS1021A-IOT, and Traverse-LS1043 which are not involved in LSDK, port the dts patches from 4.14. The patches are sorted into the following categories: 301-arch-xxxx 302-dts-xxxx 303-core-xxxx 701-net-xxxx 801-audio-xxxx 802-can-xxxx 803-clock-xxxx 804-crypto-xxxx 805-display-xxxx 806-dma-xxxx 807-gpio-xxxx 808-i2c-xxxx 809-jailhouse-xxxx 810-keys-xxxx 811-kvm-xxxx 812-pcie-xxxx 813-pm-xxxx 814-qe-xxxx 815-sata-xxxx 816-sdhc-xxxx 817-spi-xxxx 818-thermal-xxxx 819-uart-xxxx 820-usb-xxxx 821-vfio-xxxx Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
		
			
				
	
	
		
			407 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			407 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 60f5101cdfbabd4cc29c02d69aa43a84fab52cf7 Mon Sep 17 00:00:00 2001
 | |
| From: Iordache Florinel-R70177 <florinel.iordache@nxp.com>
 | |
| Date: Thu, 12 Oct 2017 11:13:41 +0300
 | |
| Subject: [PATCH] Extend FM MAC Statistics with frame size counters (request
 | |
|  from Nokia)
 | |
| 
 | |
| Signed-off-by: Iordache Florinel-R70177 <florinel.iordache@nxp.com>
 | |
| ---
 | |
|  .../freescale/sdk_fman/Peripherals/FM/MAC/dtsec.c  |  1 +
 | |
|  .../freescale/sdk_fman/Peripherals/FM/MAC/fm_mac.c | 16 ++++++
 | |
|  .../freescale/sdk_fman/Peripherals/FM/MAC/fm_mac.h |  1 +
 | |
|  .../sdk_fman/Peripherals/FM/MAC/fman_memac.c       | 21 ++++++++
 | |
|  .../freescale/sdk_fman/Peripherals/FM/MAC/memac.c  | 57 ++++++++++++++++++++++
 | |
|  .../freescale/sdk_fman/Peripherals/FM/MAC/tgec.c   | 42 ++++++++++++++++
 | |
|  .../sdk_fman/inc/Peripherals/fm_mac_ext.h          | 28 +++++++++++
 | |
|  .../freescale/sdk_fman/inc/flib/fsl_fman_memac.h   |  7 +++
 | |
|  .../sdk_fman/src/inc/wrapper/lnxwrp_exp_sym.h      |  2 +
 | |
|  .../sdk_fman/src/wrapper/lnxwrp_ioctls_fm.c        | 41 ++++++++++++++++
 | |
|  .../uapi/linux/fmd/Peripherals/fm_port_ioctls.h    | 25 ++++++++++
 | |
|  11 files changed, 241 insertions(+)
 | |
| 
 | |
| --- a/drivers/net/ethernet/freescale/sdk_fman/Peripherals/FM/MAC/dtsec.c
 | |
| +++ b/drivers/net/ethernet/freescale/sdk_fman/Peripherals/FM/MAC/dtsec.c
 | |
| @@ -1389,6 +1389,7 @@ static void InitFmMacControllerDriver(t_
 | |
|  
 | |
|      p_FmMacControllerDriver->f_FM_MAC_ResetCounters             = DtsecResetCounters;
 | |
|      p_FmMacControllerDriver->f_FM_MAC_GetStatistics             = DtsecGetStatistics;
 | |
| +    p_FmMacControllerDriver->f_FM_MAC_GetFrameSizeCounters		= NULL;
 | |
|  
 | |
|      p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr             = DtsecModifyMacAddress;
 | |
|      p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr            = DtsecAddHashMacAddress;
 | |
| --- a/drivers/net/ethernet/freescale/sdk_fman/Peripherals/FM/MAC/fm_mac.c
 | |
| +++ b/drivers/net/ethernet/freescale/sdk_fman/Peripherals/FM/MAC/fm_mac.c
 | |
| @@ -461,6 +461,22 @@ t_Error FM_MAC_GetStatistics (t_Handle h
 | |
|  
 | |
|  /* ......................................................................... */
 | |
|  
 | |
| +t_Error FM_MAC_GetFrameSizeCounters(t_Handle h_FmMac, t_FmMacFrameSizeCounters *p_FrameSizeCounters, e_CommMode type)
 | |
| +{
 | |
| +    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
 | |
| +
 | |
| +    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
 | |
| +
 | |
| +    memset(p_FrameSizeCounters, 0, sizeof(t_FmMacFrameSizeCounters));
 | |
| +
 | |
| +    if (p_FmMacControllerDriver->f_FM_MAC_GetFrameSizeCounters)
 | |
| +        return p_FmMacControllerDriver->f_FM_MAC_GetFrameSizeCounters(h_FmMac, p_FrameSizeCounters, type);
 | |
| +
 | |
| +    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
 | |
| +}
 | |
| +
 | |
| +/* ......................................................................... */
 | |
| +
 | |
|  t_Error FM_MAC_ModifyMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr)
 | |
|  {
 | |
|      t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
 | |
| --- a/drivers/net/ethernet/freescale/sdk_fman/Peripherals/FM/MAC/fm_mac.h
 | |
| +++ b/drivers/net/ethernet/freescale/sdk_fman/Peripherals/FM/MAC/fm_mac.h
 | |
| @@ -106,6 +106,7 @@ typedef struct {
 | |
|  
 | |
|      t_Error (*f_FM_MAC_ResetCounters) (t_Handle h_FmMac);
 | |
|      t_Error (*f_FM_MAC_GetStatistics) (t_Handle h_FmMac, t_FmMacStatistics *p_Statistics);
 | |
| +    t_Error (*f_FM_MAC_GetFrameSizeCounters) (t_Handle h_FmMac, t_FmMacFrameSizeCounters *p_FrameSizeCounters, e_CommMode type);
 | |
|  
 | |
|      t_Error (*f_FM_MAC_ModifyMacAddr) (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr);
 | |
|      t_Error (*f_FM_MAC_AddHashMacAddr) (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr);
 | |
| --- a/drivers/net/ethernet/freescale/sdk_fman/Peripherals/FM/MAC/fman_memac.c
 | |
| +++ b/drivers/net/ethernet/freescale/sdk_fman/Peripherals/FM/MAC/fman_memac.c
 | |
| @@ -360,24 +360,45 @@ uint64_t fman_memac_get_counter(struct m
 | |
|      case E_MEMAC_COUNTER_R64:
 | |
|          ret_val = GET_MEMAC_CNTR_64(r64);
 | |
|          break;
 | |
| +    case E_MEMAC_COUNTER_T64:
 | |
| +        ret_val = GET_MEMAC_CNTR_64(t64);
 | |
| +        break;
 | |
|      case E_MEMAC_COUNTER_R127:
 | |
|          ret_val = GET_MEMAC_CNTR_64(r127);
 | |
|          break;
 | |
| +    case E_MEMAC_COUNTER_T127:
 | |
| +        ret_val = GET_MEMAC_CNTR_64(t127);
 | |
| +        break;
 | |
|      case E_MEMAC_COUNTER_R255:
 | |
|          ret_val = GET_MEMAC_CNTR_64(r255);
 | |
|          break;
 | |
| +    case E_MEMAC_COUNTER_T255:
 | |
| +        ret_val = GET_MEMAC_CNTR_64(t255);
 | |
| +        break;
 | |
|      case E_MEMAC_COUNTER_R511:
 | |
|          ret_val = GET_MEMAC_CNTR_64(r511);
 | |
|          break;
 | |
| +    case E_MEMAC_COUNTER_T511:
 | |
| +        ret_val = GET_MEMAC_CNTR_64(t511);
 | |
| +        break;
 | |
|      case E_MEMAC_COUNTER_R1023:
 | |
|          ret_val = GET_MEMAC_CNTR_64(r1023);
 | |
|          break;
 | |
| +    case E_MEMAC_COUNTER_T1023:
 | |
| +        ret_val = GET_MEMAC_CNTR_64(t1023);
 | |
| +        break;
 | |
|      case E_MEMAC_COUNTER_R1518:
 | |
|          ret_val = GET_MEMAC_CNTR_64(r1518);
 | |
|          break;
 | |
| +    case E_MEMAC_COUNTER_T1518:
 | |
| +        ret_val = GET_MEMAC_CNTR_64(t1518);
 | |
| +        break;
 | |
|      case E_MEMAC_COUNTER_R1519X:
 | |
|          ret_val = GET_MEMAC_CNTR_64(r1519x);
 | |
|          break;
 | |
| +    case E_MEMAC_COUNTER_T1519X:
 | |
| +        ret_val = GET_MEMAC_CNTR_64(t1519x);
 | |
| +        break;
 | |
|      case E_MEMAC_COUNTER_RFRG:
 | |
|          ret_val = GET_MEMAC_CNTR_64(rfrg);
 | |
|          break;
 | |
| --- a/drivers/net/ethernet/freescale/sdk_fman/Peripherals/FM/MAC/memac.c
 | |
| +++ b/drivers/net/ethernet/freescale/sdk_fman/Peripherals/FM/MAC/memac.c
 | |
| @@ -593,6 +593,62 @@ static t_Error MemacGetStatistics(t_Hand
 | |
|  
 | |
|  /* ......................................................................... */
 | |
|  
 | |
| +static t_Error MemacGetFrameSizeCounters(t_Handle h_Memac, t_FmMacFrameSizeCounters *p_FrameSizeCounters, e_CommMode type)
 | |
| +{
 | |
| +    t_Memac     *p_Memac = (t_Memac *)h_Memac;
 | |
| +
 | |
| +    SANITY_CHECK_RETURN_ERROR(p_Memac, E_NULL_POINTER);
 | |
| +    SANITY_CHECK_RETURN_ERROR(!p_Memac->p_MemacDriverParam, E_INVALID_STATE);
 | |
| +    SANITY_CHECK_RETURN_ERROR(p_FrameSizeCounters, E_NULL_POINTER);
 | |
| +
 | |
| +    switch (type)
 | |
| +    {
 | |
| +    case e_COMM_MODE_NONE:
 | |
| +    	break;
 | |
| +
 | |
| +    case e_COMM_MODE_RX:
 | |
| +        p_FrameSizeCounters->count_pkts_64             = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_R64);
 | |
| +        p_FrameSizeCounters->count_pkts_65_to_127      = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_R127);
 | |
| +        p_FrameSizeCounters->count_pkts_128_to_255     = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_R255);
 | |
| +        p_FrameSizeCounters->count_pkts_256_to_511     = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_R511);
 | |
| +        p_FrameSizeCounters->count_pkts_512_to_1023    = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_R1023);
 | |
| +        p_FrameSizeCounters->count_pkts_1024_to_1518   = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_R1518);
 | |
| +        p_FrameSizeCounters->count_pkts_1519_to_1522   = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_R1519X);
 | |
| +    	break;
 | |
| +
 | |
| +    case e_COMM_MODE_TX:
 | |
| +        p_FrameSizeCounters->count_pkts_64             = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_T64);
 | |
| +        p_FrameSizeCounters->count_pkts_65_to_127      = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_T127);
 | |
| +        p_FrameSizeCounters->count_pkts_128_to_255     = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_T255);
 | |
| +        p_FrameSizeCounters->count_pkts_256_to_511     = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_T511);
 | |
| +        p_FrameSizeCounters->count_pkts_512_to_1023    = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_T1023);
 | |
| +        p_FrameSizeCounters->count_pkts_1024_to_1518   = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_T1518);
 | |
| +        p_FrameSizeCounters->count_pkts_1519_to_1522   = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_T1519X);
 | |
| +    	break;
 | |
| +
 | |
| +    case e_COMM_MODE_RX_AND_TX:
 | |
| +        p_FrameSizeCounters->count_pkts_64             = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_R64)
 | |
| +                                                       + fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_T64);
 | |
| +        p_FrameSizeCounters->count_pkts_65_to_127      = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_R127)
 | |
| +                                                       + fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_T127);
 | |
| +        p_FrameSizeCounters->count_pkts_128_to_255     = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_R255)
 | |
| +                                                       + fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_T255);
 | |
| +        p_FrameSizeCounters->count_pkts_256_to_511     = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_R511)
 | |
| +                                                       + fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_T511);
 | |
| +        p_FrameSizeCounters->count_pkts_512_to_1023    = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_R1023)
 | |
| +                                                       + fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_T1023);
 | |
| +        p_FrameSizeCounters->count_pkts_1024_to_1518   = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_R1518)
 | |
| +                                                       + fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_T1518);
 | |
| +        p_FrameSizeCounters->count_pkts_1519_to_1522   = fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_R1519X)
 | |
| +                                                       + fman_memac_get_counter(p_Memac->p_MemMap, E_MEMAC_COUNTER_T1519X);
 | |
| +    	break;
 | |
| +    }
 | |
| +
 | |
| +    return E_OK;
 | |
| +}
 | |
| +
 | |
| +/* ......................................................................... */
 | |
| +
 | |
|  static t_Error MemacModifyMacAddress (t_Handle h_Memac, t_EnetAddr *p_EnetAddr)
 | |
|  {
 | |
|      t_Memac     *p_Memac = (t_Memac *)h_Memac;
 | |
| @@ -1025,6 +1081,7 @@ static void InitFmMacControllerDriver(t_
 | |
|  
 | |
|      p_FmMacControllerDriver->f_FM_MAC_ResetCounters             = MemacResetCounters;
 | |
|      p_FmMacControllerDriver->f_FM_MAC_GetStatistics             = MemacGetStatistics;
 | |
| +    p_FmMacControllerDriver->f_FM_MAC_GetFrameSizeCounters      = MemacGetFrameSizeCounters;
 | |
|  
 | |
|      p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr             = MemacModifyMacAddress;
 | |
|      p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr            = MemacAddHashMacAddress;
 | |
| --- a/drivers/net/ethernet/freescale/sdk_fman/Peripherals/FM/MAC/tgec.c
 | |
| +++ b/drivers/net/ethernet/freescale/sdk_fman/Peripherals/FM/MAC/tgec.c
 | |
| @@ -438,6 +438,47 @@ static t_Error TgecGetStatistics(t_Handl
 | |
|  
 | |
|  /* ......................................................................... */
 | |
|  
 | |
| +static t_Error TgecGetFrameSizeCounters(t_Handle h_Tgec, t_FmMacFrameSizeCounters *p_FrameSizeCounters, e_CommMode type)
 | |
| +{
 | |
| +    t_Tgec              *p_Tgec = (t_Tgec *)h_Tgec;
 | |
| +    struct tgec_regs    *p_TgecMemMap;
 | |
| +
 | |
| +    SANITY_CHECK_RETURN_ERROR(p_Tgec, E_NULL_POINTER);
 | |
| +    SANITY_CHECK_RETURN_ERROR(!p_Tgec->p_TgecDriverParam, E_INVALID_STATE);
 | |
| +    SANITY_CHECK_RETURN_ERROR(p_FrameSizeCounters, E_NULL_POINTER);
 | |
| +
 | |
| +    p_TgecMemMap = p_Tgec->p_MemMap;
 | |
| +
 | |
| +    switch (type)
 | |
| +    {
 | |
| +    case e_COMM_MODE_NONE:
 | |
| +    	break;
 | |
| +
 | |
| +    case e_COMM_MODE_RX:
 | |
| +        p_FrameSizeCounters->count_pkts_64             = fman_tgec_get_counter(p_TgecMemMap, E_TGEC_COUNTER_R64);
 | |
| +        p_FrameSizeCounters->count_pkts_65_to_127      = fman_tgec_get_counter(p_TgecMemMap, E_TGEC_COUNTER_R127);
 | |
| +        p_FrameSizeCounters->count_pkts_128_to_255     = fman_tgec_get_counter(p_TgecMemMap, E_TGEC_COUNTER_R255);
 | |
| +        p_FrameSizeCounters->count_pkts_256_to_511     = fman_tgec_get_counter(p_TgecMemMap, E_TGEC_COUNTER_R511);
 | |
| +        p_FrameSizeCounters->count_pkts_512_to_1023    = fman_tgec_get_counter(p_TgecMemMap, E_TGEC_COUNTER_R1023);
 | |
| +        p_FrameSizeCounters->count_pkts_1024_to_1518   = fman_tgec_get_counter(p_TgecMemMap, E_TGEC_COUNTER_R1518);
 | |
| +        p_FrameSizeCounters->count_pkts_1519_to_1522   = fman_tgec_get_counter(p_TgecMemMap, E_TGEC_COUNTER_R1519X);
 | |
| +    	break;
 | |
| +
 | |
| +    case e_COMM_MODE_TX:
 | |
| +    	//Tx counters not supported
 | |
| +    	break;
 | |
| +
 | |
| +    case e_COMM_MODE_RX_AND_TX:
 | |
| +    	//Tx counters not supported
 | |
| +    	break;
 | |
| +    }
 | |
| +
 | |
| +    return E_OK;
 | |
| +}
 | |
| +
 | |
| +
 | |
| +/* ......................................................................... */
 | |
| +
 | |
|  static t_Error TgecEnable1588TimeStamp(t_Handle h_Tgec)
 | |
|  {
 | |
|      t_Tgec      *p_Tgec = (t_Tgec *)h_Tgec;
 | |
| @@ -905,6 +946,7 @@ static void InitFmMacControllerDriver(t_
 | |
|  
 | |
|      p_FmMacControllerDriver->f_FM_MAC_ResetCounters             = TgecResetCounters;
 | |
|      p_FmMacControllerDriver->f_FM_MAC_GetStatistics             = TgecGetStatistics;
 | |
| +    p_FmMacControllerDriver->f_FM_MAC_GetFrameSizeCounters      = TgecGetFrameSizeCounters;
 | |
|  
 | |
|      p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr             = TgecModifyMacAddress;
 | |
|      p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr            = TgecAddHashMacAddress;
 | |
| --- a/drivers/net/ethernet/freescale/sdk_fman/inc/Peripherals/fm_mac_ext.h
 | |
| +++ b/drivers/net/ethernet/freescale/sdk_fman/inc/Peripherals/fm_mac_ext.h
 | |
| @@ -197,6 +197,19 @@ typedef struct t_FmMacStatistics {
 | |
|                                                 - Other */
 | |
|  } t_FmMacStatistics;
 | |
|  
 | |
| +/**************************************************************************//**
 | |
| + @Description   FM MAC Frame Size Counters
 | |
| +*//***************************************************************************/
 | |
| +typedef struct t_FmMacFrameSizeCounters {
 | |
| +
 | |
| +        uint64_t  count_pkts_64;            /**< 64 byte frame counter */
 | |
| +        uint64_t  count_pkts_65_to_127;     /**< 65 to 127 byte frame counter */
 | |
| +        uint64_t  count_pkts_128_to_255;    /**< 128 to 255 byte frame counter */
 | |
| +        uint64_t  count_pkts_256_to_511;    /**< 256 to 511 byte frame counter */
 | |
| +        uint64_t  count_pkts_512_to_1023;   /**< 512 to 1023 byte frame counter */
 | |
| +        uint64_t  count_pkts_1024_to_1518;  /**< 1024 to 1518 byte frame counter */
 | |
| +        uint64_t  count_pkts_1519_to_1522;  /**< 1519 to 1522 byte good frame count */
 | |
| +} t_FmMacFrameSizeCounters;
 | |
|  
 | |
|  /**************************************************************************//**
 | |
|   @Group         FM_mac_init_grp FM MAC Initialization Unit
 | |
| @@ -654,6 +667,21 @@ t_Error FM_MAC_SetStatistics(t_Handle h_
 | |
|  t_Error FM_MAC_GetStatistics(t_Handle h_FmMac, t_FmMacStatistics *p_Statistics);
 | |
|  
 | |
|  /**************************************************************************//**
 | |
| + @Function      FM_MAC_GetFrameSizeCounters
 | |
| +
 | |
| + @Description   get MAC statistics counters for different frame size
 | |
| +
 | |
| + @Param[in]     h_FmMac       -  A handle to a FM MAC Module.
 | |
| + @Param[in]     p_FrameSizeCounters  -  Structure with counters
 | |
| + @Param[in]     type  				-  Type of counters to be read
 | |
| +
 | |
| + @Return        E_OK on success; Error code otherwise.
 | |
| +
 | |
| + @Cautions      Allowed only following FM_Init().
 | |
| +*//***************************************************************************/
 | |
| +t_Error FM_MAC_GetFrameSizeCounters(t_Handle h_FmMac, t_FmMacFrameSizeCounters *p_FrameSizeCounters, e_CommMode type);
 | |
| +
 | |
| +/**************************************************************************//**
 | |
|   @Function      FM_MAC_ModifyMacAddr
 | |
|  
 | |
|   @Description   Replace the main MAC Address
 | |
| --- a/drivers/net/ethernet/freescale/sdk_fman/inc/flib/fsl_fman_memac.h
 | |
| +++ b/drivers/net/ethernet/freescale/sdk_fman/inc/flib/fsl_fman_memac.h
 | |
| @@ -146,12 +146,19 @@ _val &= ~TX_FIFO_SECTIONS_TX_EMPTY_MASK;
 | |
|  
 | |
|  enum memac_counters {
 | |
|  	E_MEMAC_COUNTER_R64,
 | |
| +	E_MEMAC_COUNTER_T64,
 | |
|  	E_MEMAC_COUNTER_R127,
 | |
| +	E_MEMAC_COUNTER_T127,
 | |
|  	E_MEMAC_COUNTER_R255,
 | |
| +	E_MEMAC_COUNTER_T255,
 | |
|  	E_MEMAC_COUNTER_R511,
 | |
| +	E_MEMAC_COUNTER_T511,
 | |
|  	E_MEMAC_COUNTER_R1023,
 | |
| +	E_MEMAC_COUNTER_T1023,
 | |
|  	E_MEMAC_COUNTER_R1518,
 | |
| +	E_MEMAC_COUNTER_T1518,
 | |
|  	E_MEMAC_COUNTER_R1519X,
 | |
| +	E_MEMAC_COUNTER_T1519X,
 | |
|  	E_MEMAC_COUNTER_RFRG,
 | |
|  	E_MEMAC_COUNTER_RJBR,
 | |
|  	E_MEMAC_COUNTER_RDRP,
 | |
| --- a/drivers/net/ethernet/freescale/sdk_fman/src/inc/wrapper/lnxwrp_exp_sym.h
 | |
| +++ b/drivers/net/ethernet/freescale/sdk_fman/src/inc/wrapper/lnxwrp_exp_sym.h
 | |
| @@ -123,6 +123,8 @@ EXPORT_SYMBOL(FM_PCD_SetAdvancedOffloadS
 | |
|  /* FMAN MAC exported routines */
 | |
|  EXPORT_SYMBOL(FM_MAC_GetStatistics);
 | |
|  
 | |
| +EXPORT_SYMBOL(FM_MAC_GetFrameSizeCounters);
 | |
| +
 | |
|  EXPORT_SYMBOL(FM_GetSpecialOperationCoding);
 | |
|  
 | |
|  #endif /* __LNXWRP_EXP_SYM_H */
 | |
| --- a/drivers/net/ethernet/freescale/sdk_fman/src/wrapper/lnxwrp_ioctls_fm.c
 | |
| +++ b/drivers/net/ethernet/freescale/sdk_fman/src/wrapper/lnxwrp_ioctls_fm.c
 | |
| @@ -4608,6 +4608,47 @@ t_Error LnxwrpFmPortIOCTL(t_LnxWrpFmPort
 | |
|              break;
 | |
|          }
 | |
|  
 | |
| +        case FM_PORT_IOC_GET_MAC_FRAME_SIZE_COUNTERS:
 | |
| +        {
 | |
| +            t_LnxWrpFmDev *p_LnxWrpFmDev =
 | |
| +                    (t_LnxWrpFmDev *)p_LnxWrpFmPortDev->h_LnxWrpFmDev;
 | |
| +            ioc_fm_port_mac_frame_size_counters_t param;
 | |
| +            t_FmMacFrameSizeCounters frameSizeCounters;
 | |
| +            int mac_id = p_LnxWrpFmPortDev->id;
 | |
| +
 | |
| +            if (!p_LnxWrpFmDev)
 | |
| +                RETURN_ERROR(MINOR, E_NOT_AVAILABLE, ("Port not initialized or other error!"));
 | |
| +
 | |
| +            if (&p_LnxWrpFmDev->txPorts[mac_id] != p_LnxWrpFmPortDev &&
 | |
| +                &p_LnxWrpFmDev->rxPorts[mac_id] != p_LnxWrpFmPortDev)
 | |
| +                mac_id += FM_MAX_NUM_OF_1G_MACS; /* 10G port */
 | |
| +
 | |
| +            if (!p_LnxWrpFmDev->macs[mac_id].h_Dev)
 | |
| +                RETURN_ERROR(MINOR, E_NOT_AVAILABLE, ("Port not initialized or other error!"));
 | |
| +
 | |
| +            if (copy_from_user(¶m, (ioc_fm_port_mac_frame_size_counters_t *)arg,
 | |
| +                        sizeof(ioc_fm_port_mac_frame_size_counters_t)))
 | |
| +                RETURN_ERROR(MINOR, E_WRITE_FAILED, NO_MSG);
 | |
| +
 | |
| +            if (FM_MAC_GetFrameSizeCounters(p_LnxWrpFmDev->macs[mac_id].h_Dev,
 | |
| +                        &frameSizeCounters, param.type))
 | |
| +                RETURN_ERROR(MINOR, E_WRITE_FAILED, NO_MSG);
 | |
| +
 | |
| +            param.count_pkts_64 = frameSizeCounters.count_pkts_64;
 | |
| +            param.count_pkts_65_to_127 = frameSizeCounters.count_pkts_65_to_127;
 | |
| +            param.count_pkts_128_to_255 = frameSizeCounters.count_pkts_128_to_255;
 | |
| +            param.count_pkts_256_to_511 = frameSizeCounters.count_pkts_256_to_511;
 | |
| +            param.count_pkts_512_to_1023 = frameSizeCounters.count_pkts_512_to_1023;
 | |
| +            param.count_pkts_1024_to_1518 = frameSizeCounters.count_pkts_1024_to_1518;
 | |
| +            param.count_pkts_1519_to_1522 = frameSizeCounters.count_pkts_1519_to_1522;
 | |
| +
 | |
| +            if (copy_to_user((ioc_fm_port_mac_frame_size_counters_t *)arg, ¶m,
 | |
| +                        sizeof(ioc_fm_port_mac_frame_size_counters_t)))
 | |
| +                RETURN_ERROR(MINOR, E_WRITE_FAILED, NO_MSG);
 | |
| +
 | |
| +            break;
 | |
| +        }
 | |
| +
 | |
|          case FM_PORT_IOC_GET_BMI_COUNTERS:
 | |
|          {
 | |
|              t_LnxWrpFmDev *p_LnxWrpFmDev =
 | |
| --- a/include/uapi/linux/fmd/Peripherals/fm_port_ioctls.h
 | |
| +++ b/include/uapi/linux/fmd/Peripherals/fm_port_ioctls.h
 | |
| @@ -939,6 +939,31 @@ typedef struct ioc_fm_port_vsp_alloc_par
 | |
|  
 | |
|  #define FM_PORT_IOC_GET_BMI_COUNTERS _IOR(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(42), ioc_fm_port_bmi_stats_t)
 | |
|  
 | |
| +typedef struct ioc_fm_port_mac_frame_size_counters_t {
 | |
| +
 | |
| +        e_CommMode type;
 | |
| +        uint64_t  count_pkts_64;            /**< 64 byte frame counter */
 | |
| +        uint64_t  count_pkts_65_to_127;     /**< 65 to 127 byte frame counter */
 | |
| +        uint64_t  count_pkts_128_to_255;    /**< 128 to 255 byte frame counter */
 | |
| +        uint64_t  count_pkts_256_to_511;    /**< 256 to 511 byte frame counter */
 | |
| +        uint64_t  count_pkts_512_to_1023;   /**< 512 to 1023 byte frame counter */
 | |
| +        uint64_t  count_pkts_1024_to_1518;  /**< 1024 to 1518 byte frame counter */
 | |
| +        uint64_t  count_pkts_1519_to_1522;  /**< 1519 to 1522 byte good frame count */
 | |
| +} ioc_fm_port_mac_frame_size_counters_t;
 | |
| +
 | |
| +/**************************************************************************//**
 | |
| + @Function      FM_MAC_GetFrameSizeCounters
 | |
| +
 | |
| + @Description   get MAC statistics counters for different frame size
 | |
| +
 | |
| + @Param[out]    ioc_fm_port_mac_frame_size_counters_t    A structure holding the counters
 | |
| +
 | |
| + @Return        E_OK on success; Error code otherwise.
 | |
| +
 | |
| + @Cautions      Allowed only following FM_Init().
 | |
| +*//***************************************************************************/
 | |
| +#define FM_PORT_IOC_GET_MAC_FRAME_SIZE_COUNTERS        _IOR(FM_IOC_TYPE_BASE, FM_PORT_IOC_NUM(43), ioc_fm_port_mac_frame_size_counters_t)
 | |
| +
 | |
|  
 | |
|  /** @} */ /* end of lnx_ioctl_FM_PORT_pcd_runtime_control_grp group */
 | |
|  /** @} */ /* end of lnx_ioctl_FM_PORT_runtime_control_grp group */
 |