Merge branch 'net-mscc-allow-forwarding-ioctl-operations-to-attached-PHYs'
Antoine Tenart says: ==================== net: mscc: allow forwarding ioctl operations to attached PHYs These two patches allow forwarding ioctl to the PHY MII implementation, and support is added for offloading timestamping operations to compatible attached PHYs. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
4a11c551a6
|
@ -1204,18 +1204,19 @@ static int ocelot_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
|||
struct ocelot *ocelot = priv->port.ocelot;
|
||||
int port = priv->chip_port;
|
||||
|
||||
/* The function is only used for PTP operations for now */
|
||||
if (!ocelot->ptp)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
switch (cmd) {
|
||||
case SIOCSHWTSTAMP:
|
||||
return ocelot_hwstamp_set(ocelot, port, ifr);
|
||||
case SIOCGHWTSTAMP:
|
||||
return ocelot_hwstamp_get(ocelot, port, ifr);
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
/* If the attached PHY device isn't capable of timestamping operations,
|
||||
* use our own (when possible).
|
||||
*/
|
||||
if (!phy_has_hwtstamp(dev->phydev) && ocelot->ptp) {
|
||||
switch (cmd) {
|
||||
case SIOCSHWTSTAMP:
|
||||
return ocelot_hwstamp_set(ocelot, port, ifr);
|
||||
case SIOCGHWTSTAMP:
|
||||
return ocelot_hwstamp_get(ocelot, port, ifr);
|
||||
}
|
||||
}
|
||||
|
||||
return phy_mii_ioctl(dev->phydev, ifr, cmd);
|
||||
}
|
||||
|
||||
static const struct net_device_ops ocelot_port_netdev_ops = {
|
||||
|
|
|
@ -189,7 +189,8 @@ static irqreturn_t ocelot_xtr_irq_handler(int irq, void *arg)
|
|||
skb->offload_fwd_mark = 1;
|
||||
|
||||
skb->protocol = eth_type_trans(skb, dev);
|
||||
netif_rx(skb);
|
||||
if (!skb_defer_rx_timestamp(skb))
|
||||
netif_rx(skb);
|
||||
dev->stats.rx_bytes += len;
|
||||
dev->stats.rx_packets++;
|
||||
} while (ocelot_read(ocelot, QS_XTR_DATA_PRESENT) & BIT(grp));
|
||||
|
|
Loading…
Reference in New Issue