OSDN Git Service

net/macb: Create gem_ethtool_ops for new statistics functions
authorXander Huff <xander.huff@ni.com>
Thu, 15 Jan 2015 21:55:20 +0000 (15:55 -0600)
committerDavid S. Miller <davem@davemloft.net>
Fri, 16 Jan 2015 05:31:37 +0000 (00:31 -0500)
10/100 MACB does not have the same statistics possibilities as GEM. Separate
macb_ethtool_ops to make a new GEM-specific struct with the new statistics
functions included.

Signed-off-by: Xander Huff <xander.huff@ni.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cadence/macb.c

index 9edd787..f2f9ca0 100644 (file)
@@ -2032,11 +2032,21 @@ const struct ethtool_ops macb_ethtool_ops = {
        .get_regs               = macb_get_regs,
        .get_link               = ethtool_op_get_link,
        .get_ts_info            = ethtool_op_get_ts_info,
+};
+EXPORT_SYMBOL_GPL(macb_ethtool_ops);
+
+const struct ethtool_ops gem_ethtool_ops = {
+       .get_settings           = macb_get_settings,
+       .set_settings           = macb_set_settings,
+       .get_regs_len           = macb_get_regs_len,
+       .get_regs               = macb_get_regs,
+       .get_link               = ethtool_op_get_link,
+       .get_ts_info            = ethtool_op_get_ts_info,
        .get_ethtool_stats      = gem_get_ethtool_stats,
        .get_strings            = gem_get_ethtool_strings,
        .get_sset_count         = gem_get_sset_count,
 };
-EXPORT_SYMBOL_GPL(macb_ethtool_ops);
+EXPORT_SYMBOL_GPL(gem_ethtool_ops);
 
 int macb_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
 {
@@ -2325,7 +2335,6 @@ static int __init macb_probe(struct platform_device *pdev)
 
        dev->netdev_ops = &macb_netdev_ops;
        netif_napi_add(dev, &bp->napi, macb_poll, 64);
-       dev->ethtool_ops = &macb_ethtool_ops;
 
        dev->base_addr = regs->start;
 
@@ -2339,12 +2348,14 @@ static int __init macb_probe(struct platform_device *pdev)
                bp->macbgem_ops.mog_free_rx_buffers = gem_free_rx_buffers;
                bp->macbgem_ops.mog_init_rings = gem_init_rings;
                bp->macbgem_ops.mog_rx = gem_rx;
+               dev->ethtool_ops = &gem_ethtool_ops;
        } else {
                bp->max_tx_length = MACB_MAX_TX_LEN;
                bp->macbgem_ops.mog_alloc_rx_buffers = macb_alloc_rx_buffers;
                bp->macbgem_ops.mog_free_rx_buffers = macb_free_rx_buffers;
                bp->macbgem_ops.mog_init_rings = macb_init_rings;
                bp->macbgem_ops.mog_rx = macb_rx;
+               dev->ethtool_ops = &macb_ethtool_ops;
        }
 
        /* Set features */