This patchset adds support for accessing the DSC hardware clock and for offloading PTP timestamping.
Tx packet timestamping happens through a separate Tx queue set up with expanded completion descriptors that can report the timestamp. Rx timestamping can happen either on all queues, or on a separate timestamping queue when specific filtering is requested. Again, the timestamps are reported with the expanded completion descriptors. The timestamping offload ability is advertised but not enabled until an OS service asks for it. At that time the driver's queues are reconfigured to use the different completion descriptors and the private processing queues as needed. Reading the raw clock value comes through a new pair of values in the device info registers in BAR0. These high and low values are interpreted with help from new clock mask, mult, and shift values in the device identity information. First we add the ability to detect new queue features, then the handling of the new descriptor sizes. After adding the new interface structures, we start adding the support code, saving the advertising to the stack for last. Shannon Nelson (12): ionic: add new queue features to interface ionic: add handling of larger descriptors ionic: add hw timestamp structs to interface ionic: split adminq post and wait calls ionic: add hw timestamp support files ionic: link in the new hw timestamp code ionic: add rx filtering for hw timestamp steering ionic: set up hw timestamp queues ionic: add and enable tx and rx timestamp handling ionic: add ethtool support for PTP ionic: ethtool ptp stats ionic: advertise support for hardware timestamps drivers/net/ethernet/pensando/ionic/Makefile | 1 + drivers/net/ethernet/pensando/ionic/ionic.h | 6 + .../net/ethernet/pensando/ionic/ionic_dev.c | 2 + .../net/ethernet/pensando/ionic/ionic_dev.h | 3 + .../ethernet/pensando/ionic/ionic_ethtool.c | 93 +++ .../net/ethernet/pensando/ionic/ionic_if.h | 214 ++++++- .../net/ethernet/pensando/ionic/ionic_lif.c | 439 ++++++++++++- .../net/ethernet/pensando/ionic/ionic_lif.h | 75 +++ .../net/ethernet/pensando/ionic/ionic_main.c | 17 +- .../net/ethernet/pensando/ionic/ionic_phc.c | 589 ++++++++++++++++++ .../ethernet/pensando/ionic/ionic_rx_filter.c | 21 + .../ethernet/pensando/ionic/ionic_rx_filter.h | 1 + .../net/ethernet/pensando/ionic/ionic_stats.c | 38 +- .../net/ethernet/pensando/ionic/ionic_txrx.c | 138 +++- .../net/ethernet/pensando/ionic/ionic_txrx.h | 3 + 15 files changed, 1565 insertions(+), 75 deletions(-) create mode 100644 drivers/net/ethernet/pensando/ionic/ionic_phc.c -- 2.17.1