|
|
@@ -724,10 +724,11 @@ static void bcm_sf2_sw_get_wol(struct dsa_switch *ds, int port,
|
|
|
{
|
|
|
struct net_device *p = ds->ports[port].cpu_dp->master;
|
|
|
struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
|
|
|
- struct ethtool_wolinfo pwol;
|
|
|
+ struct ethtool_wolinfo pwol = { };
|
|
|
|
|
|
/* Get the parent device WoL settings */
|
|
|
- p->ethtool_ops->get_wol(p, &pwol);
|
|
|
+ if (p->ethtool_ops->get_wol)
|
|
|
+ p->ethtool_ops->get_wol(p, &pwol);
|
|
|
|
|
|
/* Advertise the parent device supported settings */
|
|
|
wol->supported = pwol.supported;
|
|
|
@@ -748,9 +749,10 @@ static int bcm_sf2_sw_set_wol(struct dsa_switch *ds, int port,
|
|
|
struct net_device *p = ds->ports[port].cpu_dp->master;
|
|
|
struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
|
|
|
s8 cpu_port = ds->ports[port].cpu_dp->index;
|
|
|
- struct ethtool_wolinfo pwol;
|
|
|
+ struct ethtool_wolinfo pwol = { };
|
|
|
|
|
|
- p->ethtool_ops->get_wol(p, &pwol);
|
|
|
+ if (p->ethtool_ops->get_wol)
|
|
|
+ p->ethtool_ops->get_wol(p, &pwol);
|
|
|
if (wol->wolopts & ~pwol.supported)
|
|
|
return -EINVAL;
|
|
|
|