igc: Reject schedules with a base_time in the future
authorVinicius Costa Gomes <vinicius.gomes@intel.com>
Wed, 2 Sep 2020 23:36:57 +0000 (16:36 -0700)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Mon, 28 Sep 2020 21:42:46 +0000 (14:42 -0700)
commit58c4ee0ea38395aa5d5836b915cb9ce650fbaee3
tree15d522054d323dd37bf3c8b4b0148f7f1fd66c84
parentfec49eb4e00ab635ca863ff9cf8c64a44cf168f2
igc: Reject schedules with a base_time in the future

When we set the BASET registers of i225 with a base_time in the
future, i225 will "hold" all packets until that base_time is reached,
causing a lot of TX Hangs.

As this behaviour seems contrary to the expectations of the IEEE
802.1Q standard (section 8.6.9, especially 8.6.9.4.5), let's start by
rejecting these types of schedules. If this is too limiting, we can
for example, setup a timer to configure the BASET registers closer to
the start time, only blocking the packets for a "short" while.

Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/igc/igc_main.c