diff --git a/drivers/net/ethernet/nvidia/nvethernet/Makefile b/drivers/net/ethernet/nvidia/nvethernet/Makefile index 46e75305..39a7c52e 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/Makefile +++ b/drivers/net/ethernet/nvidia/nvethernet/Makefile @@ -22,7 +22,7 @@ ccflags-y += -DLINUX_IVC -DUPDATED_PAD_CAL \ -I$(srctree.nvidia)/drivers/net/ethernet/nvidia/nvethernet/nvethernetrm/include \ -I$(srctree.nvidia)/drivers/net/ethernet/nvidia/nvethernet/nvethernetrm/osi/common/include -ccflags-y += -DMACSEC_SUPPORT -DNET30 -DMACSEC_DEBUG -DOSI_DMA_DEBUG +ccflags-y += -DMACSEC_SUPPORT -DNET30 -DMACSEC_DEBUG -DOSI_DEBUG nvethernet-objs:= ether_linux.o \ osd.o \ @@ -52,6 +52,7 @@ nvethernet-objs:= ether_linux.o \ $(OSI_DMA)/debug.o \ $(OSI_CORE)/mgbe_mmc.o \ $(OSI_CORE)/frp.o \ - $(OSI_CORE)/vlan_filter.o + $(OSI_CORE)/vlan_filter.o \ + $(OSI_CORE)/debug.o nvethernet-$(CONFIG_NVETHERNET_SELFTESTS) += selftests.o diff --git a/drivers/net/ethernet/nvidia/nvethernet/ioctl.c b/drivers/net/ethernet/nvidia/nvethernet/ioctl.c index 3a4c3305..489a2af0 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/ioctl.c +++ b/drivers/net/ethernet/nvidia/nvethernet/ioctl.c @@ -1085,7 +1085,7 @@ int ether_handle_priv_ioctl(struct net_device *ndev, struct phy_device *phydev = ndev->phydev; struct ether_ifr_data ifdata; struct osi_core_priv_data *osi_core = pdata->osi_core; -#ifdef OSI_DMA_DEBUG +#ifdef OSI_DEBUG struct osi_dma_priv_data *osi_dma = pdata->osi_dma; #endif int ret = -EOPNOTSUPP; @@ -1232,14 +1232,24 @@ int ether_handle_priv_ioctl(struct net_device *ndev, case ETHER_PAD_CALIBRATION: ret = ether_pad_calibration(ndev, ifdata.if_flags); break; -#ifdef OSI_DMA_DEBUG +#ifdef OSI_DEBUG case ETHER_REGISTER_DUMP: osi_dma->ioctl_data.cmd = OSI_DMA_IOCTL_CMD_REG_DUMP; ret = osi_dma_ioctl(osi_dma); + if (ret < 0) + goto err; + + ioctl_data.cmd = OSI_CMD_REG_DUMP; + ret = osi_handle_ioctl(pdata->osi_core, &ioctl_data); break; case ETHER_STRUCTURE_DUMP: osi_dma->ioctl_data.cmd = OSI_DMA_IOCTL_CMD_STRUCTS_DUMP; ret = osi_dma_ioctl(osi_dma); + if (ret < 0) + goto err; + + ioctl_data.cmd = OSI_CMD_STRUCTS_DUMP; + ret = osi_handle_ioctl(pdata->osi_core, &ioctl_data); break; #endif default: diff --git a/drivers/net/ethernet/nvidia/nvethernet/ioctl.h b/drivers/net/ethernet/nvidia/nvethernet/ioctl.h index 540f52e8..74849101 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/ioctl.h +++ b/drivers/net/ethernet/nvidia/nvethernet/ioctl.h @@ -73,9 +73,10 @@ #define ETHER_READ_REG 53 #define ETHER_WRITE_REG 54 #define ETHER_PAD_CALIBRATION 55 +#ifdef OSI_DEBUG #define ETHER_REGISTER_DUMP 56 #define ETHER_STRUCTURE_DUMP 57 - +#endif /* OSI_DEBUG */ /** @} */ /** diff --git a/drivers/net/ethernet/nvidia/nvethernet/osd.c b/drivers/net/ethernet/nvidia/nvethernet/osd.c index 5615bc21..04330710 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/osd.c +++ b/drivers/net/ethernet/nvidia/nvethernet/osd.c @@ -497,7 +497,7 @@ static void osd_transmit_complete(void *priv, void *buffer, unsigned long dmaadd } -#ifdef OSI_DMA_DEBUG +#ifdef OSI_DEBUG /** * @brief Dumps the data to trace buffer * @@ -516,7 +516,7 @@ static void osd_printf(struct osi_dma_priv_data *osi_dma, vsprintf(buf, fmt, args); switch (type) { - case OSI_DMA_DEBUG_DESC: + case OSI_DEBUG_TYPE_DESC: #if 0 /** * TODO: trace_printk resulted in kernel warning GVS failure. @@ -526,8 +526,37 @@ static void osd_printf(struct osi_dma_priv_data *osi_dma, #endif pr_err("%s", buf); break; - case OSI_DMA_DEBUG_REG: - case OSI_DMA_DEBUG_STRUCTS: + case OSI_DEBUG_TYPE_REG: + case OSI_DEBUG_TYPE_STRUCTS: + pr_err("%s", buf); + break; + default: + pr_err("Unsupported debug type\n"); + break; + } + va_end(args); +} + +/** + * @brief Dumps the data + * + * @param[in] osi_core: OSI core private data. + * @param[in] type: Type of data to be dump. + * @param[in] fmt: Data format. + */ +static void osd_core_printf(struct osi_core_priv_data *osi_core, + unsigned int type, + const char *fmt, ...) +{ + char buf[512]; + va_list args; + + va_start(args, fmt); + vsprintf(buf, fmt, args); + + switch (type) { + case OSI_DEBUG_TYPE_REG: + case OSI_DEBUG_TYPE_STRUCTS: pr_err("%s", buf); break; default: @@ -546,13 +575,16 @@ void ether_assign_osd_ops(struct osi_core_priv_data *osi_core, osi_core->osd_ops.usleep_range = osd_usleep_range; osi_core->osd_ops.msleep = osd_msleep; osi_core->osd_ops.padctrl_mii_rx_pins = ether_padctrl_mii_rx_pins; +#ifdef OSI_DEBUG + osi_core->osd_ops.printf = osd_core_printf; +#endif osi_dma->osd_ops.transmit_complete = osd_transmit_complete; osi_dma->osd_ops.receive_packet = osd_receive_packet; osi_dma->osd_ops.realloc_buf = osd_realloc_buf; osi_dma->osd_ops.ops_log = osd_log; osi_dma->osd_ops.udelay = osd_udelay; -#ifdef OSI_DMA_DEBUG +#ifdef OSI_DEBUG osi_dma->osd_ops.printf = osd_printf; #endif } diff --git a/drivers/net/ethernet/nvidia/nvethernet/sysfs.c b/drivers/net/ethernet/nvidia/nvethernet/sysfs.c index 577881e5..27288cd7 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/sysfs.c +++ b/drivers/net/ethernet/nvidia/nvethernet/sysfs.c @@ -21,7 +21,7 @@ #define EOQS_MAX_REGISTER_ADDRESS 0x12FC #endif -#ifdef OSI_DMA_DEBUG +#ifdef OSI_DEBUG /** * @brief Shows the current setting of descriptor dump * @@ -81,7 +81,7 @@ static ssize_t ether_desc_dump_store(struct device *dev, static DEVICE_ATTR(desc_dump_enable, (S_IRUGO | S_IWUSR), ether_desc_dump_show, ether_desc_dump_store); -#endif /* OSI_DMA_DEBUG */ +#endif /* OSI_DEBUG */ /** * @brief Shows the current setting of MAC loopback @@ -2271,9 +2271,9 @@ static DEVICE_ATTR(ptp_sync, (S_IRUGO | S_IWUSR), * @brief Attributes for nvethernet sysfs */ static struct attribute *ether_sysfs_attrs[] = { -#ifdef OSI_DMA_DEBUG +#ifdef OSI_DEBUG &dev_attr_desc_dump_enable.attr, -#endif +#endif /* OSI_DEBUG */ &dev_attr_mac_loopback.attr, &dev_attr_ptp_mode.attr, &dev_attr_ptp_sync.attr,