Message ID | 20200110115415.75683-10-andre.przywara@arm.com |
---|---|
State | Changes Requested |
Delegated to: | David Ahern |
Headers | show |
Series | net: axienet: Error handling, SGMII and 64-bit DMA fixes | expand |
> -----Original Message----- > From: Andre Przywara <andre.przywara@arm.com> > Sent: Friday, January 10, 2020 5:24 PM > To: David S . Miller <davem@davemloft.net>; Radhey Shyam Pandey > <radheys@xilinx.com> > Cc: Michal Simek <michals@xilinx.com>; Robert Hancock > <hancock@sedsystems.ca>; netdev@vger.kernel.org; linux-arm- > kernel@lists.infradead.org; linux-kernel@vger.kernel.org > Subject: [PATCH 09/14] net: axienet: Add mii-tool support > > mii-tool is useful for debugging, and all it requires to work is to wire > up the ioctl ops function pointer. > Add this to the axienet driver to enable mii-tool. > > Signed-off-by: Andre Przywara <andre.przywara@arm.com> > --- > drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c > b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c > index 7a747345e98e..64f799f3d248 100644 > --- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c > +++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c > @@ -1152,6 +1152,16 @@ static void axienet_poll_controller(struct net_device > *ndev) > } > #endif > > +static int axienet_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) > +{ > + struct axienet_local *lp = netdev_priv(dev); > + > + if (!netif_running(dev)) > + return -EINVAL; I think phy ioctl should be allowed even if the device is not up. Or is there any specific reason for keeping it? > + > + return phylink_mii_ioctl(lp->phylink, rq, cmd); > +} > + > static const struct net_device_ops axienet_netdev_ops = { > .ndo_open = axienet_open, > .ndo_stop = axienet_stop, > @@ -1159,6 +1169,7 @@ static const struct net_device_ops > axienet_netdev_ops = { > .ndo_change_mtu = axienet_change_mtu, > .ndo_set_mac_address = netdev_set_mac_address, > .ndo_validate_addr = eth_validate_addr, > + .ndo_do_ioctl = axienet_ioctl, > .ndo_set_rx_mode = axienet_set_multicast_list, > #ifdef CONFIG_NET_POLL_CONTROLLER > .ndo_poll_controller = axienet_poll_controller, > -- > 2.17.1
On Mon, 13 Jan 2020 06:12:10 +0000 Radhey Shyam Pandey <radheys@xilinx.com> wrote: Hi, (sorry, forgot to send this out before posting v2) > > -----Original Message----- > > From: Andre Przywara <andre.przywara@arm.com> > > Sent: Friday, January 10, 2020 5:24 PM > > To: David S . Miller <davem@davemloft.net>; Radhey Shyam Pandey > > <radheys@xilinx.com> > > Cc: Michal Simek <michals@xilinx.com>; Robert Hancock > > <hancock@sedsystems.ca>; netdev@vger.kernel.org; linux-arm- > > kernel@lists.infradead.org; linux-kernel@vger.kernel.org > > Subject: [PATCH 09/14] net: axienet: Add mii-tool support > > > > mii-tool is useful for debugging, and all it requires to work is to wire > > up the ioctl ops function pointer. > > Add this to the axienet driver to enable mii-tool. > > > > Signed-off-by: Andre Przywara <andre.przywara@arm.com> > > --- > > drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 11 +++++++++++ > > 1 file changed, 11 insertions(+) > > > > diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c > > b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c > > index 7a747345e98e..64f799f3d248 100644 > > --- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c > > +++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c > > @@ -1152,6 +1152,16 @@ static void axienet_poll_controller(struct net_device > > *ndev) > > } > > #endif > > > > +static int axienet_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) > > +{ > > + struct axienet_local *lp = netdev_priv(dev); > > + > > + if (!netif_running(dev)) > > + return -EINVAL; > > I think phy ioctl should be allowed even if the device is not up. > Or is there any specific reason for keeping it? I found that some of the drivers check this (macb, stmmac), while others (dpaa2, mvneta, mvpp2, mtk_eth) don't. I don't know the reasons for that, so I play safe here. Happy to change this if someone provides some rationale. Cheers, Andre. > > > + > > + return phylink_mii_ioctl(lp->phylink, rq, cmd); > > +} > > + > > static const struct net_device_ops axienet_netdev_ops = { > > .ndo_open = axienet_open, > > .ndo_stop = axienet_stop, > > @@ -1159,6 +1169,7 @@ static const struct net_device_ops > > axienet_netdev_ops = { > > .ndo_change_mtu = axienet_change_mtu, > > .ndo_set_mac_address = netdev_set_mac_address, > > .ndo_validate_addr = eth_validate_addr, > > + .ndo_do_ioctl = axienet_ioctl, > > .ndo_set_rx_mode = axienet_set_multicast_list, > > #ifdef CONFIG_NET_POLL_CONTROLLER > > .ndo_poll_controller = axienet_poll_controller, > > -- > > 2.17.1 >
diff --git a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c index 7a747345e98e..64f799f3d248 100644 --- a/drivers/net/ethernet/xilinx/xilinx_axienet_main.c +++ b/drivers/net/ethernet/xilinx/xilinx_axienet_main.c @@ -1152,6 +1152,16 @@ static void axienet_poll_controller(struct net_device *ndev) } #endif +static int axienet_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) +{ + struct axienet_local *lp = netdev_priv(dev); + + if (!netif_running(dev)) + return -EINVAL; + + return phylink_mii_ioctl(lp->phylink, rq, cmd); +} + static const struct net_device_ops axienet_netdev_ops = { .ndo_open = axienet_open, .ndo_stop = axienet_stop, @@ -1159,6 +1169,7 @@ static const struct net_device_ops axienet_netdev_ops = { .ndo_change_mtu = axienet_change_mtu, .ndo_set_mac_address = netdev_set_mac_address, .ndo_validate_addr = eth_validate_addr, + .ndo_do_ioctl = axienet_ioctl, .ndo_set_rx_mode = axienet_set_multicast_list, #ifdef CONFIG_NET_POLL_CONTROLLER .ndo_poll_controller = axienet_poll_controller,
mii-tool is useful for debugging, and all it requires to work is to wire up the ioctl ops function pointer. Add this to the axienet driver to enable mii-tool. Signed-off-by: Andre Przywara <andre.przywara@arm.com> --- drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 11 +++++++++++ 1 file changed, 11 insertions(+)