Commit Graph

154 Commits

Author SHA1 Message Date
Bhadram Varka
d93210ee62 nvethernet: Fix IRQ names in multi interface case
Issue: IRQ names not correct when multiple interfaces
probed with nvethernet driver because of static array.

Fix: Move irq names array inside private data structure
so that every interface will have unique name.

Bug 200762612

Change-Id: I9d55b62c345c458fa65e2ad4612ba55473e34752
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2588659
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Rakesh Goyal <rgoyal@nvidia.com>
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2022-11-01 14:27:08 +05:30
Narayan Reddy
36d784d40e nvethernet: update speed and mode in fixed link
Issue: in caseof interface down and up the speed
and mode values are incorrect incase of fixed link

Fix: In case of fixed link restore speed and mode
values based on the iface mode

Bug 3359851
Bug 200765222

Change-Id: Iacd1cb2212c0783bb5e361205cbf62f64b197325
Signed-off-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2584629
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2022-11-01 14:27:08 +05:30
Bhadram Varka
f415855538 Revert "nvethernet: Get HV window base from DT"
This reverts commit baa960f28b63b1e6b82f84e27d09d508629b3cb2.

Reason for revert: Created regression for AV + L

Bug 3358505
Bug 200761024

Change-Id: I184be44bd3aa9723c640cf3089c10dfd0a6a9772
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2584381
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: Srinivas Ramachandran <srinivasra@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2022-11-01 14:27:08 +05:30
Srinivas Ramachandran
3842c2bc78 nvethernet: Restrict > 9K jumbo only in eqos
Issue: MGBE supports upto 16K jumbo size.
       There is enough MTL queue space also
       for 16K packet even with all 10 queues
       enabled in MGBE. So no need to restrict
       > 9k jumbo to single channel config only.
FIx:   For MGBE, unconditionally allow upto 16K
       jumbo size setting.

Bug 200760072

Change-Id: I734ce3be13605e4db992a1679e2de0736bd2583f
Signed-off-by: Srinivas Ramachandran <srinivasra@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2579108
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2022-11-01 14:27:08 +05:30
Bhadram Varka
76fe45ab4f nvethernet: Get HV window base from DT
Issue: SID needs to be programmed through HV window
to get it reflected in controller register space.
Currently its programmed through RM window.

Fix: Get HV window base address from DT.

Bug 3358505
Bug 200761024

Change-Id: Ia878e1d4e7f81e4c6531de00b87a1804238dde9e
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2582063
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: Bibek Basu <bbasu@nvidia.com>
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2022-11-01 14:27:08 +05:30
Bhadram Varka
27a4b4591a nvethernet: Bringup fixes aggregated
1. Program padctrl registers direclty from driver
2. Disable RSS
3. Skip mac reset based on DT flag on auto platforms

Bug 200760072

Change-Id: Ie1ea86fdec8561d9ffd6479afc4aeec81deb1ea3
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2573001
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: Nagarjuna Kristam <nkristam@nvidia.com>
Reviewed-by: Srinivas Ramachandran <srinivasra@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Tested-by: Narayan Reddy <narayanr@nvidia.com>
GVS: Gerrit_Virtual_Submit
2022-11-01 14:27:08 +05:30
Srinivas Ramachandran
277273634c nvethernet: Use Tx divider clk ID and fix crash
o Use newly added clk divider for eqos v5_30
o Fix crash while getting the MAC address, do not register interface
  if MAC address is not found/invalid.
o Make driver probe as late init
o Do not return error for missing optional clks

Bug 200760072

Change-Id: Ib4d9454c923b062cb25f9b2ebe20adc7c24df7de
Signed-off-by: Srinivas Ramachandran <srinivasra@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2572676
Tested-by: Narayan Reddy <narayanr@nvidia.com>
Tested-by: Ashish Mhetre <amhetre@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2022-11-01 14:27:08 +05:30
Narayan Reddy
48e0d60b07 nvethernet: PHY register read/write for fixed-link case
ethernet@<address> {
    nvidia,mdio_address = <PHY MDIO bus address>;

    fixed-link {
	speed = <1000>;
	full-duplex;
    };
};

1. Added nvidia DT property (nvidia,mdio_address) for passing
   the PHY MDIO bus address.
2. If this property present in DT then driver calls PHY MDIO
   read/write functions directly instead of going through PHY subsystem.
3. If this property is not present – then driver PHY mdio
   read/write goes through PHY subsystem.

Bug 200733774

Change-Id: Ib3a533bd73910f5c95ed0884be28820adf729726
Signed-off-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2567762
Tested-by: Bitan Biswas <bbiswas@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Srinivas Ramachandran <srinivasra@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2022-11-01 14:27:08 +05:30
Sushil Singh
a955fa087a nvethernet:k5.10 Fix probe defer warning prints
Issue
- Driver probe defer causes failed prints on kernel boot logs
  if clk/reset controller driver module is not initialized
  before nvethernet module probe.

Fix
- The probe defer is part of kernel mechanism to retry module
  initialization and hardware setup. This is not an error
  or failure for software driver.
  Only in case of probe failure, throw error logs in console

Bug 200728771
Bug 200732811

Change-Id: I9c421db6ceedc108553f9f2b33f4f3993d63c02f
Signed-off-by: Sushil Singh <sushilkumars@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2563340
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2022-11-01 14:27:08 +05:30
Narayan Reddy
451275bea6 nvethernet: remove ifr_data NULL pointer check
ifr_data pointer value used to carry mii_ioctl_data from
user space to kernel space. When all values are zero it
reflects the pointer value as zero and ifr_data NULL pointer
check will result in failure.

Driver should not check since ifr_data pointer value itself
represent mii_ioctl_data. So removing the NULL check for ifr_data.

Bug 200733774

Change-Id: Ibf405fe22c3e2e694e08eac598e9431066703c3c
Signed-off-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2564428
Reviewed-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2022-11-01 14:27:08 +05:30
Bhadram Varka
41429e6df9 nvethernet: Support of NVGRO for NVUSO segments
Algorithm:
- There is one master queue and one final queue to maintain the
packets.
- Final queue will start when a packet received with TTL=1
- TTL = 2 and 3 packets will be queued into final if those are in
sequence else those will be queued to master queue.
- When packet received with TTL = 2 then only merge process will start
- For every valid final queue merge starts by looking at the IPID
in master queue in increment order. This loop continues until
TTL = 2 found in master queue.
- Once TTL = 2 found then entire final queue will be given GRO
layer in sequential order.

Bug 3106903

Change-Id: I6cc08f3faae67a04813d32d59f7cce02f06dccbf
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2554423
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Nagarjuna Kristam <nkristam@nvidia.com>
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2022-11-01 14:27:08 +05:30
Bhadram Varka
2c6aad7764 nvethernet: Update MGBE MAC version
On uFPGA MGBE MAC version is 0x31 and it got updated
to 0x40 on silicon.

Bug 200751806

Change-Id: If07f9bf338d522f5efc8823323db522dd3438daa
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2559465
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2022-11-01 14:27:08 +05:30
Narayan Reddy
56063f5983 nvethernet: add PHY read/write support
Add a private ioctl for phy register read
and write. This support is needed for accessing
the PHY registers from user space when fixed link
is enabled in SW even though PHY is directly connected
to MAC.

Bug 200733774

Change-Id: Ifd9b5dc7764363d897605c2370da419a863ddea4
Signed-off-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2554892
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2022-11-01 14:27:08 +05:30
rakesh goyal
3f0e18c74d nvethernet: tctool support for EST and FPE
Add support for ndo_setup_tc in network
device operations for kernel 5.10 or above.

Bug 200622871

Change-Id: Id5f96001be3b00925d26efaca1b39e26b959e952
Signed-off-by: rakesh goyal <rgoyal@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2550396
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2022-11-01 14:27:08 +05:30
Mahesh Patil
300cffe2bc nvethernet: Fix multi-os test regression
Reduce MTU size to include macsec SECTAG if macsec
supported

Bug 200730979

Change-Id: I7db505c2ef1c6a866ebbec285a647ec9c346727f
Signed-off-by: Mahesh Patil <maheshp@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2549562
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2022-11-01 14:27:08 +05:30
Narayan Reddy
9fd74bdf26 nvethernet: add reading of PHY delays from DT
PHY delays varies from PHY to PHY, so pass
these values from platform DT and read the
same

Bug 200733771

Change-Id: I720dc1ccd42f0f8bcbe23aeb5100b03948cbd3a1
Signed-off-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2556626
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2022-11-01 14:27:08 +05:30
Bhadram Varka
0ca9eae1b0 nvethernet: add MGBE monitoring Rx clks
BPMP-FW exposes the following MGBE RX clocks:
o mgbe0_rx_input [external input clk recovered from GBE UPHY lane]
o mgbe0_rx_input_m [monitoring clk: virtual clk controls RX clk FMON]
o mgbe0_rx_pcs_input [external input clk recovered from GBE UPHY lane]
o mgbe0_rx_pcs [mux between mgbe0_rx_pcs_input and mgbe0_tx_pcs]
o mgbe0_rx_pcs_m [monitoring clk: virtual clk controls RX PCS clk FMON]

To enable RX clock FMON -
o Issue clk_set_rate on MGBE_RX_INPUT and MGBE_RX_PCS_INPUT based
on UPHY GBE mode.
o Clk_enable already available on ToT for RX_INPUT_M
and RX_PCS_INPUT_M.

Bug 3288030

Change-Id: Ia71ccc9f21a5e79fecf149efae9032db25af60d8
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2544758
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: Rakesh Goyal <rgoyal@nvidia.com>
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2022-11-01 14:27:08 +05:30
Mahesh Patil
b02ba38d38 nvethernet: address review comments
- Remove debug code under TEST macro
- Remove macsec CLK/RST hard code WAR's
- Update macsec OSI macro's as per latest OSI_ prefix

Bug 3264523

Change-Id: I8674e953e0faf49125e2326bdeb4b5bdc323a26c
Signed-off-by: Mahesh Patil <maheshp@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2548474
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2022-11-01 14:27:08 +05:30
Mahesh Patil
4318bd4ebb nvethernet: pad calibration
Issue:
   1. Current pad calibration does not check for RGMII/MDIO
      interfaces idle
Fix:
  1. Make sure RGMII and MDIO interface are idle before
     doing pad calibration as per spec

Bug 2831220

Signed-off-by: Mahesh Patil <maheshp@nvidia.com>
Change-Id: Ie4a7fadb2f2851c0d3eb62c1cd05f8e16d529931
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2321644
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: Srinivas Ramachandran <srinivasra@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Ajay Gupta <ajayg@nvidia.com>
Reviewed-by: Ashutosh Jha <ajha@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2022-11-01 14:27:08 +05:30
Mahesh Patil
b2213096ea nvethernet: Remove thermal pad calibration
Remove thermal pad calibration for EQOS. It is no more required
as per latest HW team recommendation

Bug 3332089

Change-Id: I26ca02a5bc1f9eac34bc1415a2eb477f37fc8fd0
Signed-off-by: Mahesh Patil <maheshp@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2549598
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2022-11-01 14:27:08 +05:30
Mahesh Patil
c1cd386acd nvethernet: Handle error conditions in macsec
1. Track MAC state and return error if MAC is down
2. Protect ref_count read with mutex to avoid race condition
3. free macsec priv memory on rmmod

Bug 3309824

Change-Id: Ia6f1cee0399c294b603b10a3ce8a3407060578d3
Signed-off-by: Mahesh Patil <maheshp@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2548464
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-by: Srinivas Ramachandran <srinivasra@nvidia.com>
Reviewed-by: Ashutosh Jha <ajha@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2022-11-01 14:27:08 +05:30
Narayan Reddy
e584bbd262 nvetherenet: add different XFI/USXGMII modes
This change takes care of configuring different
connection speeds of XFI/USXGMII modes

Bug 200718307

Change-Id: Ic90297d310e6d84929f9b12edba50962fd848107
Signed-off-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2550412
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2022-11-01 14:27:08 +05:30
rakesh goyal
f6570e4010 nvethernet: Add support for 2 step timestamp read
- On transmit complete callback
-- If OSI_TXDONE_CX_TS_DELAY flag is set in Tx done
   flag, store buffer pointer along with pkt Id
   in its internal array/list

- On Common interrupt:
-- Call osi to handle common interrupt.

- On trasmit complete interrupt:
-- Parse through internal array/list for pending TS
   to read, by issuing OSI_CMD_GET_TS ioctl for pkt_id.
   Loop until list is cleared or error is received.
-- On interface up
   Remove old timestamp of channels initialized.

Signed-off-by: Rakesh Goyal <rgoyal@nvidia.com>
Change-Id: I5104277de66dd240023f921fa5f7b4fcc035f74d
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2535962
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Nagarjuna Kristam <nkristam@nvidia.com>
Reviewed-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2022-11-01 14:27:08 +05:30
Bhadram Varka
232d3615da nvethernet: runtime power gating/ungating for MGBE
Adds support for runtime power gating/ungating
for MGBE through Linux PM runtime API's.

It requires power-domains DT entry to be part
of ethernet DT node.

Bug 200740290

Change-Id: I95727e8cbb5615d01603f4bb456253f05ff32d42
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2548337
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Srinivas Ramachandran <srinivasra@nvidia.com>
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
Reviewed-by: Aleksandr Frid <afrid@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2022-11-01 14:27:08 +05:30
Bhadram Varka
537d6aa16b nvethernet: Set MGBE TX, TX_PCS and MAC_DIV clks
There are three clks for MGBE which needs to be set based
on UPHY GBE mode and PHY line rate.

o MGBE_MAC_DIV_CLK will be set based on PHY line rate
o MGBE_MAC_TX/TX_PCS clks will be set based on UPHY GBE mode

Below are the settings -

UPHY GBE mode = 10G:
===================
Possible MAC working rates: 10G/5G/2.5G
1) MAC DIVISOR: 312.5MHz, 312.5/2MHZ and 312.5/4MHz
2) TX CLK: 644.5MHZ
3) TX PCS_CLK: 156.5MHz

UPHY GBE mode = 5G:
==================
Possible MAC working rates: 5G/2.5G
1) MAC DIVISOR: 312.5/2MHz and 312.5/4MHz
2) TX CLK: 322.2MHZ
3) TX PCS_CLK: 78.125MHz

Bug 200739493

Change-Id: Ie6b21f87d2077b8be621a32b2034b4eff1eb391e
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2541313
Reviewed-by: Rakesh Goyal <rgoyal@nvidia.com>
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
GVS: Gerrit_Virtual_Submit
2022-11-01 14:27:08 +05:30
Bhadram Varka
1d49d66c4f nvethernet: Read XPCS/UPHY GBE properties for MGBE
Read below properties only for MGBE driver probe -
o xpcs-base
o UPHY GBE mode.
o xpcs_rst

Bug 200739336

Change-Id: Ief83b091e53425fbf6e5250af4ec7afa646de6ea
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2540495
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: Mohan Thadikamalla <mohant@nvidia.com>
2022-11-01 14:27:08 +05:30
nannaiah
0003b0bf62 Add virtualization check to configure CAR.
In case of virtualization, server does the CAR configuration
so SKIP the parse and configuring the CAR.

Bug 2694285

Change-Id: I5c9e5d180f2cd88ca0a55b3259f0d25ce8156a13
Signed-off-by: Nagaraj annaiah <nannaiah@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2536560
2022-11-01 14:27:08 +05:30
Mohan Thadikamalla
e6aa184c4e nvethernet: Fix page pool kernel warnings
Issue:
Observed multiple kernel warnings on page pool free,
due to invalid page pool handling.

Fix:
Fix per page pool creation in receive
DMA channel ring resources function.

Bug 200735979

Change-Id: Ic35f406bb4eab6282539349769ee9ae490b8cb93
Signed-off-by: Mohan Thadikamalla <mohant@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2537492
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
2022-11-01 14:27:08 +05:30
Nagarjuna Kristam
4d919d3d4f nvethernet: use OSI core for VM irq data
Issue:
VM IRQ configuration needs is done using DMA base, instead of RM
base.

Fix:
Update osi_core VM IRQ configuration instead of osi_dma.

Bug 200730767

Change-Id: I7193670c9e1745f760ace0e75a42b0cf129ee8e2
Signed-off-by: Nagarjuna Kristam <nkristam@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2539622
2022-11-01 14:27:08 +05:30
Narayan Reddy
2c47124823 nvethernet: read vm-num from DT
Bug 200730767

Change-Id: I41c59e536ad7340a53a9bb57cd4bab24e55856f2
Signed-off-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2539621
Tested-by: Nagarjuna Kristam <nkristam@nvidia.com>
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Rakesh Goyal <rgoyal@nvidia.com>
Reviewed-by: Nagarjuna Kristam <nkristam@nvidia.com>
2022-11-01 14:27:08 +05:30
Bhadram Varka
ee63b13b24 nvethernet: add EQOS monitoring Rx clks
BPMP-FW exposes the following EQOS RX clocks:

o eqos_rx_input [external input clock from EQOS pad]
o eqos_rx [external input clock after RX clock gate]
o eqos_rx_m [monitoring clock: virtual clock that controls RX clock FMON]
o eqos_macsec_rx  [external input clock after RX MACSEC clock gate
  (separate gate from RX gate)]

To enable RX clock FMON -
o Issue clk_set_rate on EQOS_RX_INPUT
o Clk_enable for EQOS_RX_CLK and EQOS_RX_M

Bug 3286707

Change-Id: Ifa1482bcd82bec0f0c90693e99382b0a86409164
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2530476
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: Rakesh Goyal <rgoyal@nvidia.com>
GVS: Gerrit_Virtual_Submit
2022-11-01 14:27:08 +05:30
Bhadram Varka
3e54db3f15 nvethernet: Disable VM interrupts unconditionally
Issue: Observed that VM interrupts continuously fired
if previous NAPI schedule not able to complete the
poll function. This case observed more frequently
if Tx coalescing enabled.

Fix: Disable VM interrupts whether NAPI scheduled
or not. Also uses IRQ-OFF variant for NAPI schedule
since IRQ's already masked.

Bug 200722499

Change-Id: If6fb694c43a1c11efb4f4b881b9fb08dec834917
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2537503
Reviewed-by: Rakesh Goyal <rgoyal@nvidia.com>
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
2022-11-01 14:27:08 +05:30
Bhadram Varka
3e4fa7b56a nvethernet: change MTU only if DEBUG_MACSEC enable
Bug 200730979

Change-Id: I87cfdff095a2c4ce34362adc538e8311b1ece844
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2537482
Reviewed-by: Rakesh Goyal <rgoyal@nvidia.com>
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
2022-11-01 14:27:08 +05:30
nannaiah
975e946c85 nvethernet: Add workqueue to set Rx mode.
Issue:
Network RTNL lock disables scheduler which causes IVC hang.

Fix:
- Add workqueue to set Rx mode.
- Change IVC spinlock to workqueue.
- Add virtualization check for macsec clk init.
- Add Read & Write Register.

Bug 2694285

Change-Id: I8354b500c62c0145eeed9a66bfcc8227fc8999e7
Signed-off-by: Nagaraj annaiah <nannaiah@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2520309
2022-11-01 14:27:08 +05:30
Mahesh Patil
c804eef959 nvethernet: Reduce mtu if macsec enabled
Reduce mtu size due to macsec sectag in probe and change_mtu call
instead of open call to avoid wrong update of mtu size when interface up/down
is performed.

Bug 200730979

Change-Id: I17198d25295bc40d37204f5d0603696a0071f490
Signed-off-by: Mahesh Patil <maheshp@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2529412
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-by: Srinivas Ramachandran <srinivasra@nvidia.com>
GVS: Gerrit_Virtual_Submit
2022-11-01 14:27:08 +05:30
Bhadram Varka
a79b1f58c0 nvethernet: support for page pool
Add support for page pool and
enable it when CONFIG_PAGE_POOL
config got enabled.

Bug 200686236

Change-Id: I08efd68106182f65eac4e24b9f55baa22ce5968b
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Signed-off-by: Mohan Thadikamalla <mohant@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2532360
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
2022-11-01 14:27:08 +05:30
Rakesh Goyal
7f9b76c903 nvethernet: read MAC address from DT for new platform
Read index from ethernet DT node to index for MAC
address.

Bug 200724410

Change-Id: I714e73a500b3ce6d7b7a5e31cf48f8d4e239e9cc
Signed-off-by: Rakesh Goyal <rgoyal@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2531839
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: Bhadram Varka <vbhadram@nvidia.com>
2022-11-01 14:27:08 +05:30
Bhadram Varka
af92743699 nvethernet: update UPHY GBE mode with DT/sysfs
Bug 3288030

Change-Id: Id700c2b074c3fd8968ac632e84d7cdc0d75d1e32
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2531233
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: Rakesh Goyal <rgoyal@nvidia.com>
2022-11-01 14:27:08 +05:30
Bhadram Varka
38e18d40ec nvethernet: remove bypassing of clks/resets for VDK/uFPGA
Bug 3288030

Change-Id: I6905f76a73c0cf3df5196768334bf7cd1ba129e9
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2529194
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: Rakesh Goyal <rgoyal@nvidia.com>
2022-11-01 14:27:08 +05:30
Bhadram Varka
719d5641dd nvethernet: add support for MGBE/XPCS clocks
Bug 3288030

Change-Id: I78c88d86ff99010b3656c62f1074df30c068db66
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2529193
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: Rakesh Goyal <rgoyal@nvidia.com>
2022-11-01 14:27:08 +05:30
Bhadram Varka
ae45ba80a8 nvethernet: add support for XPCS reset
Bug 3288030

Change-Id: I5e08c266befec52094c508719bff8e8d8e8ef696
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2522194
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: Rakesh Goyal <rgoyal@nvidia.com>
2022-11-01 14:27:08 +05:30
Rakesh Goyal
848c6a2e9a nvethenret: use GFP_KERNEL instead of GFP_ATOMIC
Issue:  For set_rx_mode() implementation, current design is creating
        local list nodes with ATOMIC because this call in not in
        Atomic context.

Fix:    Use GFP_KERNEL flag to allocate memory for local list node.

Bug 200729431

Change-Id: I513ddce8a661ab6f465509791101e98c83bc8e96
Signed-off-by: Rakesh Goyal <rgoyal@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2527627
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Bhadram Varka <vbhadram@nvidia.com>
2022-11-01 14:27:08 +05:30
Rakesh Goyal
01d2b3fe51 nvethernet: L2 filter index handling at OSD layer
Linux OSD code maintaining link list to identify L2
filter added/removed in compare to earlier list.
By doing this OSD sends address and dma channel which
should to be removed from hardware instead of full
list every time.

Bug 200711542
Bug 200711544
Bug 200713215

Change-Id: I95d4dc687c5fd45a6e0bbc3c097e59b90b03b0e5
Signed-off-by: Rakesh Goyal <rgoyal@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2519592
Reviewed-by: Narayan Reddy <narayanr@nvidia.com>
Reviewed-by: Bhadram Varka <vbhadram@nvidia.com>
2022-11-01 14:27:08 +05:30
Bhadram Varka
dfc705b07b nvethernet: use info log for default settings case
For TXQ and PTP RX queue, default setting are marked as errors
instead they needs to be marked info level logs.

Bug 200722499

Change-Id: I992a09661eb79a25b48999ef9b154b39be3cbb3d
Signed-off-by: Bhadram Varka <vbhadram@nvidia.com>
Signed-off-by: Nagarjuna Kristam <nkristam@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2523246
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Rakesh Goyal <rgoyal@nvidia.com>
2022-11-01 14:27:08 +05:30
Rakesh Goyal
32ed166339 nvethernet: use L2 filter command to set MAC address
Issue:
1) Missing support for packet MC/BC packet duplication
2) Remove MAC UC and BC address on ether_close()

Fix:
1) Update OSI_CMD_L2_FILTER structure parameter to support
new algorithm.
2) MAC UC and BC address added to filter from ether_open()
and ether_resume() function.
3) Configure MAC register to support MC/BC packet
duplication

Bug 200711542
Bug 200711544
Bug 200713215

Change-Id: Ie589892de121e5873f5dfa9b9db9bf5c441ece71
Signed-off-by: Rakesh Goyal <rgoyal@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2519591
Reviewed-by: Bhadram Varka <vbhadram@nvidia.com>
2022-11-01 14:27:08 +05:30
nannaiah
ca2466ab09 nvethernet: Add fix to support virtualization.
1. Disable Power Ungate if virtualization is
   enabled.
2. Remove use_stats flag.

Bug 2694285

Signed-off-by: Nagaraj annaiah <nannaiah@nvidia.com>

Change-Id: I76b22ae0459760558b6e2dccc181615d545b629d
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2513958
Reviewed-by: Bhadram Varka <vbhadram@nvidia.com>
Tested-by: Nagaraj Annaiah <nannaiah@nvidia.com>
2022-11-01 14:27:08 +05:30
rakesh goyal
1c87167250 nvethernet: use single API for ioctl
To reduce number of external OSI interface APIs,
consolidated all IOCTL API to one interface API.
OSD should use same for all interaction to OSI.

Bug 200671160

Change-Id: I2ada2746f29be6cf396709c2ec12dd96d4a5ca15
Signed-off-by: rakesh goyal <rgoyal@nvidia.com>
2022-11-01 14:27:08 +05:30
Bhadram Varka
d792dda9be nvethernet: use get_core/get_dma API's
Change-Id: I10506fe522763b9f06b74b52cf2c31a9601cb937
2022-11-01 14:27:08 +05:30
Mahesh Patil
fb0487286a nvethernet: Reduce 2 byte ethertype from mtu
Add 2 byte to SECTAG+ICV length to reduce 2 byte mtu size
Bug 200690445

Change-Id: I5136dbc275b03f159fc2e734c646392569f0de49
Signed-off-by: Mahesh Patil <maheshp@nvidia.com>
2022-11-01 14:27:08 +05:30
Srinivas Ramachandran
805fe9c4fa nvethernet: Add support for MACsec controller
This commit adds the driver interface for the
MACsec controller. The driver interface is
invoked using generic netlink messages from
userspace MACsec key agreement agent.

Currently sysfs node is added to check the irq
stats for default macsec controller operation.

Bug 2913560

Change-Id: I07b0b778ba1c6674e87b103a3e68e158fea61c2c
Signed-off-by: Srinivas Ramachandran <srinivasra@nvidia.com>
2022-11-01 14:27:08 +05:30