net: greth: convert to hw_features
Note: Driver modifies its struct net_device_ops. This will break if used for multiple devices that are not all the same (if that HW config is possible). Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3cd8ef4b60
commit
131ae32970
|
@ -901,7 +901,7 @@ static int greth_rx_gbit(struct net_device *dev, int limit)
|
||||||
|
|
||||||
skb_put(skb, pkt_len);
|
skb_put(skb, pkt_len);
|
||||||
|
|
||||||
if (greth->flags & GRETH_FLAG_RX_CSUM && hw_checksummed(status))
|
if (dev->features & NETIF_F_RXCSUM && hw_checksummed(status))
|
||||||
skb->ip_summed = CHECKSUM_UNNECESSARY;
|
skb->ip_summed = CHECKSUM_UNNECESSARY;
|
||||||
else
|
else
|
||||||
skb_checksum_none_assert(skb);
|
skb_checksum_none_assert(skb);
|
||||||
|
@ -1142,41 +1142,6 @@ static void greth_get_regs(struct net_device *dev, struct ethtool_regs *regs, vo
|
||||||
buff[i] = greth_read_bd(&greth_regs[i]);
|
buff[i] = greth_read_bd(&greth_regs[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static u32 greth_get_rx_csum(struct net_device *dev)
|
|
||||||
{
|
|
||||||
struct greth_private *greth = netdev_priv(dev);
|
|
||||||
return (greth->flags & GRETH_FLAG_RX_CSUM) != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int greth_set_rx_csum(struct net_device *dev, u32 data)
|
|
||||||
{
|
|
||||||
struct greth_private *greth = netdev_priv(dev);
|
|
||||||
|
|
||||||
spin_lock_bh(&greth->devlock);
|
|
||||||
|
|
||||||
if (data)
|
|
||||||
greth->flags |= GRETH_FLAG_RX_CSUM;
|
|
||||||
else
|
|
||||||
greth->flags &= ~GRETH_FLAG_RX_CSUM;
|
|
||||||
|
|
||||||
spin_unlock_bh(&greth->devlock);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static u32 greth_get_tx_csum(struct net_device *dev)
|
|
||||||
{
|
|
||||||
return (dev->features & NETIF_F_IP_CSUM) != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int greth_set_tx_csum(struct net_device *dev, u32 data)
|
|
||||||
{
|
|
||||||
netif_tx_lock_bh(dev);
|
|
||||||
ethtool_op_set_tx_csum(dev, data);
|
|
||||||
netif_tx_unlock_bh(dev);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const struct ethtool_ops greth_ethtool_ops = {
|
static const struct ethtool_ops greth_ethtool_ops = {
|
||||||
.get_msglevel = greth_get_msglevel,
|
.get_msglevel = greth_get_msglevel,
|
||||||
.set_msglevel = greth_set_msglevel,
|
.set_msglevel = greth_set_msglevel,
|
||||||
|
@ -1185,10 +1150,6 @@ static const struct ethtool_ops greth_ethtool_ops = {
|
||||||
.get_drvinfo = greth_get_drvinfo,
|
.get_drvinfo = greth_get_drvinfo,
|
||||||
.get_regs_len = greth_get_regs_len,
|
.get_regs_len = greth_get_regs_len,
|
||||||
.get_regs = greth_get_regs,
|
.get_regs = greth_get_regs,
|
||||||
.get_rx_csum = greth_get_rx_csum,
|
|
||||||
.set_rx_csum = greth_set_rx_csum,
|
|
||||||
.get_tx_csum = greth_get_tx_csum,
|
|
||||||
.set_tx_csum = greth_set_tx_csum,
|
|
||||||
.get_link = ethtool_op_get_link,
|
.get_link = ethtool_op_get_link,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1570,9 +1531,10 @@ static int __devinit greth_of_probe(struct platform_device *ofdev)
|
||||||
GRETH_REGSAVE(regs->status, 0xFF);
|
GRETH_REGSAVE(regs->status, 0xFF);
|
||||||
|
|
||||||
if (greth->gbit_mac) {
|
if (greth->gbit_mac) {
|
||||||
dev->features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_HIGHDMA;
|
dev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM |
|
||||||
|
NETIF_F_RXCSUM;
|
||||||
|
dev->features = dev->hw_features | NETIF_F_HIGHDMA;
|
||||||
greth_netdev_ops.ndo_start_xmit = greth_start_xmit_gbit;
|
greth_netdev_ops.ndo_start_xmit = greth_start_xmit_gbit;
|
||||||
greth->flags = GRETH_FLAG_RX_CSUM;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (greth->multicast) {
|
if (greth->multicast) {
|
||||||
|
|
|
@ -77,9 +77,6 @@
|
||||||
*/
|
*/
|
||||||
#define MAX_FRAME_SIZE 1520
|
#define MAX_FRAME_SIZE 1520
|
||||||
|
|
||||||
/* Flags */
|
|
||||||
#define GRETH_FLAG_RX_CSUM 0x1
|
|
||||||
|
|
||||||
/* GRETH APB registers */
|
/* GRETH APB registers */
|
||||||
struct greth_regs {
|
struct greth_regs {
|
||||||
u32 control;
|
u32 control;
|
||||||
|
@ -133,7 +130,6 @@ struct greth_private {
|
||||||
unsigned int duplex;
|
unsigned int duplex;
|
||||||
|
|
||||||
u32 msg_enable;
|
u32 msg_enable;
|
||||||
u32 flags;
|
|
||||||
|
|
||||||
u8 phyaddr;
|
u8 phyaddr;
|
||||||
u8 multicast;
|
u8 multicast;
|
||||||
|
|
Loading…
Reference in New Issue