Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 352469
b: refs/heads/master
c: ba77971
h: refs/heads/master
i:
  352467: 5f2cc9b
v: v3
  • Loading branch information
Claudiu Manoil authored and David S. Miller committed Feb 14, 2013
1 parent 6cff762 commit 6bceaad
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 22 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 13f228da40cacdb3c4c23c8e1272c2ad37d1e4c0
refs/heads/master: ba7797119b486bb5992beda74bdb26be9a291b46
41 changes: 20 additions & 21 deletions trunk/drivers/net/ethernet/freescale/gianfar.c
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,9 @@ static void gfar_init_mac(struct net_device *ndev)
/* Configure the coalescing support */
gfar_configure_coalescing(priv, 0xFF, 0xFF);

/* set this when rx hw offload (TOE) functions are being used */
priv->uses_rxfcb = 0;

if (priv->rx_filer_enable) {
rctrl |= RCTRL_FILREN;
/* Program the RIR0 reg with the required distribution */
Expand All @@ -354,8 +357,10 @@ static void gfar_init_mac(struct net_device *ndev)
if (ndev->flags & IFF_PROMISC)
rctrl |= RCTRL_PROM;

if (ndev->features & NETIF_F_RXCSUM)
if (ndev->features & NETIF_F_RXCSUM) {
rctrl |= RCTRL_CHECKSUMMING;
priv->uses_rxfcb = 1;
}

if (priv->extended_hash) {
rctrl |= RCTRL_EXTHASH;
Expand All @@ -377,11 +382,15 @@ static void gfar_init_mac(struct net_device *ndev)
}

/* Enable HW time stamping if requested from user space */
if (priv->hwts_rx_en)
if (priv->hwts_rx_en) {
rctrl |= RCTRL_PRSDEP_INIT | RCTRL_TS_ENABLE;
priv->uses_rxfcb = 1;
}

if (ndev->features & NETIF_F_HW_VLAN_RX)
if (ndev->features & NETIF_F_HW_VLAN_RX) {
rctrl |= RCTRL_VLEX | RCTRL_PRSDEP_INIT;
priv->uses_rxfcb = 1;
}

/* Init rctrl based on our settings */
gfar_write(&regs->rctrl, rctrl);
Expand Down Expand Up @@ -500,20 +509,6 @@ void unlock_tx_qs(struct gfar_private *priv)
spin_unlock(&priv->tx_queue[i]->txlock);
}

static bool gfar_is_vlan_on(struct gfar_private *priv)
{
return (priv->ndev->features & NETIF_F_HW_VLAN_RX) ||
(priv->ndev->features & NETIF_F_HW_VLAN_TX);
}

/* Returns 1 if incoming frames use an FCB */
static inline int gfar_uses_fcb(struct gfar_private *priv)
{
return gfar_is_vlan_on(priv) ||
(priv->ndev->features & NETIF_F_RXCSUM) ||
(priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER);
}

static void free_tx_pointers(struct gfar_private *priv)
{
int i;
Expand Down Expand Up @@ -2326,10 +2321,13 @@ void gfar_check_rx_parser_mode(struct gfar_private *priv)

tempval = gfar_read(&regs->rctrl);
/* If parse is no longer required, then disable parser */
if (tempval & RCTRL_REQ_PARSER)
if (tempval & RCTRL_REQ_PARSER) {
tempval |= RCTRL_PRSDEP_INIT;
else
priv->uses_rxfcb = 1;
} else {
tempval &= ~RCTRL_PRSDEP_INIT;
priv->uses_rxfcb = 0;
}
gfar_write(&regs->rctrl, tempval);
}

Expand Down Expand Up @@ -2362,6 +2360,7 @@ void gfar_vlan_mode(struct net_device *dev, netdev_features_t features)
tempval = gfar_read(&regs->rctrl);
tempval |= (RCTRL_VLEX | RCTRL_PRSDEP_INIT);
gfar_write(&regs->rctrl, tempval);
priv->uses_rxfcb = 1;
} else {
/* Disable VLAN tag extraction */
tempval = gfar_read(&regs->rctrl);
Expand Down Expand Up @@ -2390,7 +2389,7 @@ static int gfar_change_mtu(struct net_device *dev, int new_mtu)
return -EINVAL;
}

if (gfar_uses_fcb(priv))
if (priv->uses_rxfcb)
frame_size += GMAC_FCB_LEN;

frame_size += priv->padding;
Expand Down Expand Up @@ -2759,7 +2758,7 @@ int gfar_clean_rx_ring(struct gfar_priv_rx_q *rx_queue, int rx_work_limit)
bdp = rx_queue->cur_rx;
base = rx_queue->rx_bd_base;

amount_pull = (gfar_uses_fcb(priv) ? GMAC_FCB_LEN : 0);
amount_pull = priv->uses_rxfcb ? GMAC_FCB_LEN : 0;

while (!((bdp->status & RXBD_EMPTY) || (--rx_work_limit < 0))) {
struct sk_buff *newskb;
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/net/ethernet/freescale/gianfar.h
Original file line number Diff line number Diff line change
Expand Up @@ -1056,6 +1056,7 @@ struct gfar_private {
enum gfar_errata errata;
unsigned int rx_buffer_size;

u16 uses_rxfcb;
u16 padding;

/* HW time stamping enabled flag */
Expand Down

0 comments on commit 6bceaad

Please sign in to comment.