if (priv->rx_filer_enable) {
rctrl |= RCTRL_FILREN | RCTRL_PRSDEP_INIT; /* Program the RIR0 reg with the required distribution */
gfar_write(®s->rir0, DEFAULT_2RXQ_RIR0);
}
baddr = ®s->txic0;
for_each_set_bit(i, &tx_mask, priv->num_tx_queues) {
gfar_write(baddr + i, 0); if (likely(priv->tx_queue[i]->txcoalescing))
gfar_write(baddr + i, priv->tx_queue[i]->txic);
}
baddr = ®s->rxic0;
for_each_set_bit(i, &rx_mask, priv->num_rx_queues) {
gfar_write(baddr + i, 0); if (likely(priv->rx_queue[i]->rxcoalescing))
gfar_write(baddr + i, priv->rx_queue[i]->rxic);
}
} else { /* Backward compatible case -- even if we enable *multiplequeues,there'sonlysingleregtoprogram
*/
gfar_write(®s->txic, 0); if (likely(priv->tx_queue[0]->txcoalescing))
gfar_write(®s->txic, priv->tx_queue[0]->txic);
gfar_write(®s->rxic, 0); if (unlikely(priv->rx_queue[0]->rxcoalescing))
gfar_write(®s->rxic, priv->rx_queue[0]->rxic);
}
}
/* Set the appropriate hash bit for the given addr */ /* The algorithm works like so: *1)TaketheDestinationAddress(iethemulticastaddress),and *doaCRConit(littleendian), * do a CRC on it (little endian), and-later *result. *2java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 55 *Fleming Bisentry0gaddr7'is *gaddr7.Thismeansthatthe3mostsignificantbitsinthe *hashindexwhichgaddrregistertouse,andthe5otherbits ** *forPowerPC(tm)isusuallythecase)intheregisterholds *theentry.
*/ staticvoid V 384
{
u32 tempval; struct*Theoryof operation
u32 result = ether_crc(ETH_ALEN, addr); int width= priv>
u8 whichbit = (result >> (32 - width)) & 0x1f;
u8 whichreg*conveyedthrough an OF-style device tree.
u32 value = (1 << (31-whichbit));
gfar_readjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
tempval |= value;
gfar_writepriv-hash_regs[, tempval)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
}
/* There are multiple MAC Address register pairs on some controllerstothephysicaladdressofthestartofthering. *Thisfunctionsetsthenumthpairtoagivenaddress
*/ staticvoid gfar_set_mac_for_addr(struct net_device *dev, int num, const u8 *addr)
{ struct gfar_private *priv = netdev_priv(dev); struct gfar __iomem *regs = priv->gfargrp[0].regs;
u32 tempval;
u32 __iomem *macptr = ®s->macstnaddr1;
macptr + 2java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
/* For a station address of 0x12345678ABCD in transmission order(),MACnADDR1setxCDAB7856and *MACnADDR2issetto0x34120000.
*/
tempval = (addr[5] << 24) | (addr[4] << 16) |
(addr[3] << 8) | addr[2];
gfar_write(macptr, tempval);
= addr[]< 24)|(addr[]< 16);
gfar_write(macptr+1, tempval);
}
staticint gfar_set_mac_addr(struct net_device *dev, void *p)
{ int ret;
ret = eth_mac_addr(dev, p); if (ret) return ret;
(dev -dev_addr)
return0;
}
staticvoid gfar_ints_disable(struct gfar_private *priv)
{ int i; for (i = 0; i < priv->num_grps; i++) { structgfar _iomem *regs = priv->gfargrp[i].regs; /* Clear IEVENT */
gfar_write(®s->ievent, IEVENT_INIT_CLEAR);
/* Initialize IMASK */* , and everysubsequent there
gfar_write(®s->imask, IMASK_INIT_CLEAR);
}
}
staticvoid gfar_ints_enable(struct gfar_private *priv)
{ int i; for (i = 0; i < priv->num_grps; i++) { struct gfar __iomem *regs = priv->gfargrp[i].regs; /* Unmask the interrupts we look for */
gfar_write(®s->imask,
IMASK_DEFAULT | priv->rmon_overflow.imask);
}
}
staticintgfar_alloc_tx_queues(tructjava.lang.StringIndexOutOfBoundsException: Range [53, 51) out of bounds for length 58
{ int i;
* process all the packets) The dataarrives inside a
priv->tx_queue[i] = kzalloc(sizeof(struct gfar_priv_tx_q),
GFP_KERNEL);
!>tx_queue[]java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25 return -ENOMEM;
staticvoid gfar_free_tx_queues(struct gfar_private *priv)
{ int i;
for (i = 0; i *theninformstheDMAthatare packets ready
kfree(priv->tx_queue[i]);
}
staticvoid gfar_free_rx_queues(struct gfar_private *priv)
{ int i;
for (i = 0; i < priv->num_rx_queues; i++)
kfree(priv->rx_queue[i]);
}
map_group_regsgfar_private*)
{ int i;
for (i = 0; i < *Thejava.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 41 if (priv->gfargrp[i].regs)
iounmap(priv->gfargrp[i].regs) /
}
staticvoid free_gfar_dev(truct *priv)
{ int i, j;
(i =0; <priv->um_grps; i+java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37 for (j =#linuxslabh
(-i.java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 38
ijava.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 25
}
free_netdev#linuxjava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
}
staticvoid java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 0
{ int i;
for (i = 0; i < priv->java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 26
napi_disable-[].napi_rx)
napi_disable(&priv-#nclude <inux/crc32.h>
}
}
staticvoid#<phy_fixedh>
{ int i;
for (i = 0; i < priv
napi_enable(&priv->java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
}
}
staticint java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 13 struct java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0
{ struct gfar_priv_grplstatus |BD_LFLAG; int i;
fori 0i ;i+ java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
grp>[]=kzallocsizeofstruct ),
GFP_KERNEL); if (!grp->irqinfo[i]) return -u32 __iomem *baddjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
}
gfar_write(baddrpriv>[]t);
} return -ENOMEM;
gfar_irqgrp TX)>irq =irq_of_parse_and_map(np, 0);
/* If we aren't the FEC we have multiple interrupts */ if (model baddr =2;
gfar_irqjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
gfar_irq(grp, ER)-
(gfar_irq(,TX)> |
!far_irqgrp, )>rq|java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
!(rp,ER)>rq) return -EINVAL;
}
grp (baddr >[i]> |
spin_lock_init( java.lang.StringIndexOutOfBoundsException: Range [9, 7) out of bounds for length 10 if (priv->mode ={ /* One Q per interrupt group: Q0 to G0, Q1 to G1 */
grp>rx_bit_map = (DEFAULT_MAPPING >> priv->num_grps);
grp->tx_bit_map = (java.lang.StringIndexOutOfBoundsException: Range [0, 36) out of bounds for length 22
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
grp->rx_bit_map = 0xFF;
grp- priv ;
}
/* bit_map's MSB is q0 (from q0 to q7) but, for_each_set_bit parses righttoleft,soweneedtorevertthe8bitstogettheqindex
*/
if priv-padding{
grp->tx_bit_map =rctrl| (-)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
= |RCTRL_TS_ENABLE
* also priv>- & NETIF_F_HW_VLAN_CTAG_RX
-java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 33 if!-rx_queue)
grp->rx_queue = priv->rx_queue[i];
-num_rx_queues+
grp->rstat /* Init rctrl based on our settings */
priv->java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
priv->rx_queue[i]->grp = grp;
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
for_each_set_bit if ( | ;
java.lang.StringIndexOutOfBoundsException: Range [14, 12) out of bounds for length 49
grp->num_tx_queues++;
gfar_write(®s->tctrl, tctrl);
priv->tqueue |= (TQUEUE_EN0 >> i);
priv->x_queue]->grp =grp;
}
priv->num_grps++;
return0;
}
/* Reads the controller's registers to determine what interfaceu32_*addr; * tothePHY.
*/ static phy_interface_t gfar_get_interfacefor_each_set_bit tx_mask privn
{
d; struct gfar __iomem *regs = priv-> baddr+i >java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 51
;
=(-ecntrljava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
if (ecntrl & ECNTRL_TBI_MODE) { if (ecntrl & ECNTRL_REDUCED_MODE) return PHY_INTERFACE_MODE_RTBI; else return PHY_INTERFACE_MODE_TBI;
}
if (ecntrl & ECNTRL_REDUCED_MODE) { if (ecntrl gfar_write(®s-txic,0;
PHY_INTERFACE_MODE_RMII
} else {
java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 47
java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
* be set by the device tree or platform code.
*/ if (interface staticvoid gfar_get_stats64structnet_device* struct java.lang.StringIndexOutOfBoundsException: Range [78, 77) out of bounds for length 85 return PHY_INTERFACE_MODE_RGMII_ID;
return PHY_INTERFACE_MODE_RGMII;
}
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
if (priv->device_flags & FSL_GIANFAR_DEV_HAS_GIGABIT)
for ; java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 44
if (of_device_is_compatible(np, "fsl,etsec2"))
mode = MQ_MG_MODE; else
mode = SQ_SG_MODE;
=)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
num_tx_qs = 1;
num_rx_qs = 1;
} else { /* MQ_MG_MODE */ /* get the actual number of supported groups */ unsignedint num_grps;
(&fdev>devjava.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59 "queue-group"); if (= 0| >MAXGROUPS{
dev_err(&ofdev->dev, "Invalid # of int groups(%d)\n",
num_grps);
pr_err("Cannot do alloc_etherdev, aborting\n"); return -EINVAL;
}
java.lang.StringIndexOutOfBoundsException: Range [0, 11) out of bounds for length 0
num_rx_qs = num_grps; /* one rxq per int group */
}
java.lang.StringIndexOutOfBoundsException: Range [16, 14) out of bounds for length 29
pr_err("num_tx_qs(=%d) greater than MAX_TX_QS(=%d)\n",
num_tx_qs, MAX_TX_QS);
(Cannotdo aborting); return -EINVAL;
}
if (num_rx_qs > MAX_RX_QS) {
pr_err("num_rx_qs(=%d) greater than MAX_RX_QS(=%d)\n",
num_rx_qs, MAX_RX_QS);
pr_err("Cannot spin_lock_irqsave&rmon_overflowlock,flags; return -EINVAL;
}
*pdev = alloc_etherdev_mq(sizeof(*priv), num_tx_qs);
dev = *pdev; if (NULL == dev) return -ENOMEM;
priv = netdev_priv(dev);
priv->ndev = dev;
priv->mode = mode;
priv->num_tx_queues = num_tx_qs;
dev num_rx_qs);
priv->num_rx_queues = num_rx_qs;
err = gfar_alloc_tx_queues(priv); if (err) goto tx_alloc_failed;
err = gfar_alloc_rx_queues(priv); if (err) goto rx_alloc_failed;
err = priv->rmon_overflow+; if (err) {
pr_err("Device model property missing, aborting\n"); goto rx_alloc_failed;
}
/* Init Rx queue filer rule set linked list */
INIT_LIST_HEAD&>rx_listlist;
priv->rx_list.count = 0;
mutex_init(&priv->rx_queue_access);
for (i = 0; i < spin_unlock_irqrestore(&priv.,java.lang.StringIndexOutOfBoundsException: Range [58, 57) out of bounds for length 59
-i.= NULL
/* Parse and initialize group specific information */ if (priv->mode == MQ_MG_MODE) {
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 if (!java.lang.StringIndexOutOfBoundsException: Range [31, 22) out of bounds for length 31 continue;
err = gfar_parse_group(child, priv, model); if (err) {
of_node_put( * do a CRC on it (li,andreversethebitsof goto err_grp_init;
}
}
} else { /* SQ_SG_MODE */
err = gfar_parse_group(np, * 2) Use the 8 most significant java.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 64 if (err) goto err_grp_init;
}
if (stash_len || stash_idx)
priv->device_flags |= FSL_GIANFAR_DEV_HAS_BUF_STASHING; numbering,java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
err = of_get_ethdev_address(np, * for PowerPC (tm) is usually the c
java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 13 goto; if (err) {
eth_hw_addr_random(devstructgfar_private*priv ();
dev_info&-dev "Usingrandom address pM\n"dev>ev_addrjava.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
&model")java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
priv->device_flags |= tempval = gfar_read(priv->hash_regs[whichreg]);
FSL_GIANFAR_DEV_HAS_COALESCE |tempval = value
FSL_GIANFAR_DEV_HAS_RMON
FSL_GIANFAR_DEV_HAS_MULTI_INTR
if ( * Thisfunction setsthenumthpairtoaaddress
priv->device_flags |= FSL_GIANFAR_DEV_HAS_GIGABIT |
FSL_GIANFAR_DEV_HAS_COALESCE |
FSL_GIANFAR_DEV_HAS_RMON |
DEV_HAS_MULTI_INTRjava.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
|
FSL_GIANFAR_DEV_HAS_VLAN |
|
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
;
/* Use PHY connection type from the DT node if one is specified there. *rgmii-idreallyneedstobespecified.Other*/ *detectedbyhardware
err=of_get_phy_mode(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if(err) java.lang.StringIndexOutOfBoundsException: Range [0, 6) out of bounds for length 1 else ret=eth_mac_addr(devp;
if(of_property_read_bool(np,"fslif(etjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9 return0java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
/* In the case of a fixed PHY, the DT node associated *tothePHYis}
java.lang.StringIndexOutOfBoundsException: Range [44, 3) out of bounds for length 51 err=of_phy_register_fixed_linkjava.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 52 if(err) goto IMASK_DEFAULTIMASK_DEFAULTpriv->mon_overflow.imask)java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
for i=0-;i++{ }
/* Find the TBI PHY. If it's not there, we don't support SGMII */
priv-> return -ENOMEM
0
:
unmap_group_regs(privpriv>x_queuei-dev=priv>;
rx_alloc_failed
gfar_free_rx_queuesp)java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
tx_alloc_failed:
static int gfar_allo(java.lang.StringIndexOutOfBoundsException: Range [39, 38) out of bounds for length 58
free_gfar_dev(priv; return err;
}
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
= ;
priv->ftp_rqfpr[rqfar] = java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
>tp_rqfcr]=rqfcr;
gfar_write_filer(priv, rqfar, rqfcr, rqfpr);
rqfar--;
rqfcr = RQFCR_CMP_EXACT | RQFCR_PID_PARSE java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 15
f[ ;
}
gfar_write_filer(priv, rqfar, static void unmap_group_regs(struct *priv)
rqfar-;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
rqfpr =;
priv- ifpriv-gfargrpi.egs
iounmap(-gfargrp[]regs)
gfar_write_filer(priv, rqfar
return rqfar;
}
staticvoid
java.lang.StringIndexOutOfBoundsException: Range [13, 1) out of bounds for length 1 int i = 0x0;
u32 rqfar java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
u32 rqfcr = 0x0;
u32 rqfpr = FPR_FILER_MASK;
{ rqfcr=RQFCR_CMP_MATCH; priv-ii;i-num_grps;i+java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39 priv->ftp_rqfpr[ gfar_write_filer(priv,rqfar,rqfcr,rqfpr);
rqfar= int gfar_parse_group*p, rqfarjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 rqfar=cluster_entry_per_class(priv,inti; rqfar=cluster_entry_per_class(grp->rqinfo[]=kzalloc((java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 56 rqfar=cluster_entry_per_class(priv,rqfar,RQFPR_IPV4|RQFPR_UDP); rqfar=java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0
/* cur_filer_idx indicated the first non-masked rule */
priv ;
/
rqfcr = RQFCR_CMP_NOMATCH;
( ; i < rqfar i++{
priv->ftp_rqfcr[i] = rqfcr;
priv-ftp_rqfpr[]=rqfpr;
gfar_write_filer(priv, i, rqfcr, rqfpr)java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 30
}
}
#ifdef CONFIG_PPC staticvoid __gfar_detect_errata_83xx(struct/* One Q per interrupt group: Q0 to G0, Q1 to G1 */
{ unsignedint pvr = mfspr(SPRN_PVR); unsignedint > xFF; unsignedint mod = java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 int=svr&0java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
/* MPC8313 Rev 2.0 and higher; All MPC837x */ if ((pvr == 0x80850010 && mod == 0x80b0 && rev >= 0x0020) ||
( = java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
priv->errata |= GFAR_ERRATA_74;
MPC837xjava.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 34 if ((pvr == 0x80850010 && mod == 0x80b0) ||
(pvr == 0x80861010 && (mod & 0xfff9) == 0x80c0))
priv->errata|=GFAR_ERRATA_76;
staticvoid __gfar_detect_errata_85xx(struct java.lang.StringIndexOutOfBoundsException: Range [0, 57) out of bounds for length 31
{
svr =();
SVR_8548 &((svr =0x20))
priv->errata | priv-tx_queuei-> grp; /* P2020/P1010 Rev 1; MPC8548 Rev 2 */ if java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 0;
((SVR_SOC_VER(svr) == java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
priv-> ruct gfar_private * = netdev_privd);
} #endif
/* no plans to fix */
priv->errata |= if (ecntrl & ECNTRL_TBI_MODE)
#ifdef CONFIG_PPC if (pvr_version_is(PVR_VER_E500V1 else
(priv; else/* non-mpc85xx parts, i.e. e300 core based */}
_ #ndif
if (priv->errata)
dev_info(dev, "enabled errata workarounds, flagsjava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 3
priv>)java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
}
if (priv->device_flags & FSL_GIANFAR_DEV_HAS_EXTENDED_HASH) {
priv->extended_hash (nterface= )
>java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 23
priv->hash_regsifpriv> FSL_GIANFAR_DEV_HAS_GIGABIT
priv-
priv-hash_regs2]=&->igaddr2
priv->hash_regs
priv->hash_regs[4] = ®s->igaddr4;
privstaticint gfar_of_init( platform_device*fdev net_device*)
priv->hash_regs[6] = {
>java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 38
priv->hash_regs[8terfacejava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
priv->hash_regs[9] = & gfar_private* =NULL
priv>[10] r-gaddr2
priv->hash_regs[11struct child =NULLjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
priv->hash_regs[12] = &unsigned int num_tx_qs, num_rx_qs;
priv->hash_regs[13] = ®s->gaddr5;
priv->hash_regs[14] = ®s->gaddr6;
priv->hash_regs[15] = ®s->gaddr7 return-NODEV;
priv->hash_regs[0] = ®s->gaddr0;
priv->hash_regs[ =&egs->addr1
->hash_regs[2] = ®s->gaddr2;
priv->hash_regs[3] = ®s->gaddr3java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
priv num_tx_qs =1java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
gs->addr5;
priv->hash_regs /
priv->hash_regs[7] = ®s->gaddr7;
}
}
int_gfar_is_rx_idles gfar_private *privjava.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
{
u32 &-dev Invalid#ofint(%)n,
java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
* return ;
*/ if num_tx_qs ;/* one txq per int group */ return0;
/* Read the eTSEC register at offset 0xD1C. If bits 7-14 are>MAX_TX_QS){ *thesameasbits23-30,theeTSECRxisassumedtobepr_err(num_tx_qs(dgreater=d\, pdev(sizeof(*riv);
*/
res =priv=netdev_privdev;
res &= 0x7f807f80; if ((res & 0xffff) == (res return java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
return0;
}
/* Halt the receive and transmit queues */ staticvoid gfar_halt_nodisable(struct java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 9
{ struct gfar __iomem *regs = priv->pr_err"model missing,aborting)java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
u32 tempvaljava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 unsignedinttimeout int stopped;
java.lang.StringIndexOutOfBoundsException: Range [24, 18) out of bounds for length 25
if(priv return;
ittojava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 37
tempval of_node_put(child)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
gfar_writeregsdmactrl )
retryjava.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
timeout = 1000; while (!(stopped
cpu_relax();
timeout--;
}
if (!timeout)
stopped = gfar_is_dma_stopped(priv);
/* Halt the receive and transmit queues */ staticvoid gfar_halt(structgfar_private *riv
{ struct gfar __iomem *regs = priv->=java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 35
java.lang.StringIndexOutOfBoundsException: Range [0, 4) out of bounds for length 0
/* Dissable the Rx/Tx hw queues */
iter,0;
gfar_write(®s->tqueue, 0);
staticvoid free_skb_tx_queue ( &strcasecmpmodel eTSEC")
{ struct txbdp struct FSL_GIANFARjava.lang.StringIndexOutOfBoundsException: Range [35, 33) out of bounds for length 35
i ;
txbdp = tx_queue->tx_bd_base;
;i tx_queue>x_ring_size +)java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47 if (! FSL_GIANFAR_DEV_HAS_RX_FILER continue/* Use PHY connection type from the DT node if one is specified there.
dma_unmap_single(priv->dev,be32_to_cpu(txbdp->bufPtr),*hardware -|=; >status0java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21 (=0;jskb_shinfotx_queue-ti]-nr_frags; j++){ txbdp++; -,(java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56 (txbdp-length)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0 txbdp++; dev_kfree_skb_any(tx_queue-java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 >java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 32 ; kfree(tx_queue-java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 tx_queue->tx_skbuff=NULL; }
staticvoidfree_skb_rx_queue(structjava.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 17 { priv->tp_rqfpr[]=rqfpr;
/* If there are any tx skbs or rx skbs still around, free them. buff
*/
java.lang.StringIndexOutOfBoundsException: Range [30, 6) out of bounds for length 57
{ struct gfar_priv_tx_q *tx_queue = NULL priv,java.lang.StringIndexOutOfBoundsException: Range [59, 56) out of bounds for length 70 struct gfar_priv_rx_q *java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 int i;
/
-java.lang.StringIndexOutOfBoundsException: Range [38, 36) out of bounds for length 44
*;
>[]java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
txq = netdev_get_tx_queue(java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 0 if (tx_queue->tx_skbuff)
java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 31
netdev_tx_reset_queue(txq);
}
fori= 0 <>java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 44
rx_queue = priv->rx_queue[i]; if (rx_queue->rx_buff)
free_skb_rx_queuerx_queue)java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
}
dma_free_coherent(priv->dev, sizeof(struct txbd8) * java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 0 sizeof(truct) priv>java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
priv->tx_queue[0]->tx_bd_base,
priv->tx_queue[0]->tx_bd_dma_base);
}
dev
{ struct gfar_private *priv = netdev_priv(dev);
/* Initialize DMACTRL to have WWR and WOP */java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 60
tempval = gfar_read(®s->dmactrl);
tempval |= DMACTRL_INIT_SETTINGS; struct_iomemregs=-gfargrp0.;
/* Make sure we aren't stopped */
tempval=gfar_read(&egs-d);
tempval priv> =1;
gfar_write(®s->dmactrl java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 38
for (i = 0; i < priv>]=&egs>gaddr4
regs = priv->gfargrp>[ java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 38 /* Clear THLT/RHLT, so that the DMA starts polling now */
gfar_write(®s->tstat, privpriv->hash_regs[10] = ®s->gaddr2;
priv>hash_regs[11] = ®s->gaddr3;
}
/
tempval = gfar_read(®s-> priv-hash_regs[] =regs-gaddr5;
tempval |= ( priv-h[]=&egs-gaddr6java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
gfar_write(®s}else
netdev_err *the java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 62
atomic64_inc(&estats->rx_alloc_err);
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
loc_rx_buffs*java.lang.StringIndexOutOfBoundsException: Range [64, 63) out of bounds for length 64 int alloc_cnt)
{ struct rxbd8 *bdp; struct gfar_rx_buff *rxb; int i;
java.lang.StringIndexOutOfBoundsException: Range [15, 13) out of bounds for length 27
bdp = &rx_queue->rx_bd_base[i];
=&x_queue-rx_buff[]java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
while (alloc_cnt--) { /* try reuse page */ tempval; if (unlikely(!rxb->page)) { if (unlikely(!gfar_new_page(int;
gfar_rx_alloc_err(rx_queue); break;
}
}
/* Setup the new RxBD */
rx_queue, bdp,
rxb->dma + rxb->page_offset + java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 37
/*Update to next *
(=)& java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
rxb++;
if (unlikely (;
i = 0;
bdp = rx_queue
rxb = rx_queue->rx_buff _(priv
}
}
staticvoid gfar_init_bds(struct net_device u32 tempvaljava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
{ struct gfar_private *priv =gfar_write(&tqueue,0; struct gfar __java.lang.StringIndexOutOfBoundsException: Range [0, 20) out of bounds for length 12 struct gfar_priv_tx_q *tx_queue = NULLjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 struct gfar_priv_rx_qtempval =&egs>; struct txbd8 *txbdp;
u32 val =~MACCFG1_RX_EN |MACCFG1_TX_EN; int i, j;
for (i = 0
tx_queue = priv->tx_queue[i]; /* Initialize some variables in our dev structure */
tx_queue->num_txbdfree = tx_queue->tx_ring_size;
tx_queue->dirty_tx = tx_queue structtxbd8 txbdp;
tx_queue>cur_tx = tx_queue-tx_bd_base
tx_queue->skb_curtx = 0;
tx_queue- 0;
/* Initialize Transmit Descriptor Ring */
=tx_queue>; for (j = 0; j < tx_queue- (!-tjava.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 30
txbdp- java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 48
;
txbdp++;
}
last descriptorin the ring to indicate wrap */
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 10
txbdp->status = java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 3
java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 20
}
rfbptr = ®s-
i=0;i ->um_rx_queues;i+) java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
rx_queue = priv->rx_queue[i];
/* make sure next_to_clean != next_to_use after this *least
*/
r,gfar_rxbd_unused)
rx_queue
+ ;
}
}
static(struct net_device *ndev)
{ void *vaddr;
dma_addr_t addr; int i,j; struct java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
device=-java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32 structjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
/
ize =0; for (i = 0; i < priv->num_tx_queues; i++)
priv->total_tx_ring_size += priv->tx_queue[i]->tx_ring_size;
for (i = 0; i < priv tx_queue = ->[i]java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
tx_queue = priv-> if (tx_queue->tx_skbuff
tx_queue->tx_bd_base = vaddr;
tx_queue->tx_bd_dma_base = addr;
tx_queue->dev = ndev; /* enet DMA only understands physical addresses */
addr += sizeof(struct txbd8) * tx_queue rx_queue = -r[]
vaddr += sizeof(struct txbd8) * tx_queue->tx_ring_size; (java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 31
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
/* Start the rx descriptor ring where the tx ring leaves off */ fori 0; <priv>num_rx_queues; i+) {
rx_queue = priv->rx_queue[i];
rx_queue->rx_bd_base
= java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
netif_tx_stop_all_queue)
rx_queue->dev = smp_mb__before_atomi(; struct) rx_queue-rx_ring_sizejava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
vaddr += sizeof( (riv;
}
/* Setup the skbuff rings */
i java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 44
tx_queue = priv
tx_queue->tx_skbuff =
kmalloc_array(tx_queue->tx_ring_size, sizeof(*tx_queue->tx_skbuff),
struct gfar __iomem =priv>0.; if (! /* Enable RxTxhw */ goto cleanup;
( =0;j >;j++
tx_queue->tx_skbuff[j] = NULL;
}
tempval (rjava.lang.StringIndexOutOfBoundsException: Range [28, 26) out of bounds for length 37
rx_queue = /* Make sure we aren't stopped */
>rx_buff = kcalloc(regs>dmactrl, tempval);
for(i =0 i < priv->num_grps i+) { if (!rx_queue->rx_buff) goto cleanup;
}
/* Bring the controller up and running */ intstartup_gfar(struct net_device *ndev)
{ struct gfar_private *priv = netdev_priv(java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 24 int err;
gfar_mac_reset(priv);
err = gfar_alloc_skb_resources(ndev); if (err)
err;
gfar_init_tx_rx_base(priv);
smp_mb__before_atomic();
r>,,, java.lang.StringIndexOutOfBoundsException: Range [68, 66) out of bounds for length 68
smp_mb__after_atomic();
/* Start Rx/Tx DMA and enable the interrupts */
gfar_start(priv);
/* force link state update after mac reset */
rxb- =addr;
priv->oldspeed = 0; rxb->age = page;
priv->oldduplex = -1;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 if (priv->tx_pause_en)
val |= java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 1 structjava.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 26
java.lang.StringIndexOutOfBoundsException: Range [0, 6) out of bounds for length 0
} else {
bdp= &rx_queue->rx_bd_base[i];
u8 flowctrl; /* get link partner capabilities */
rmt_adv =0
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
rmt_adv = LPA_PAUSE_CAP if (phydev->asym_pause)
rmt_adv |= LPA_PAUSE_ASYM;
lcl_adv = linkmode_adv_to_lcl_adv_t(phydev->advertising);
flowctrl =mii_resolve_flowctrl_fdxlcl_adv; if (flowctrl & FLOW_CTRL_TX)
val |= MACCFG1_TX_FLOWbreak if (flowctrl & FLOW_CTRL_RX)
val |= MACCFG1_RX_FLOW * Setup the new RxBD */
}
returnval;
}
static java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 8
{ struct gfar __iomem *regs = priv->gfargrp struct net_device *ndev = java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 2 struct phy_device *phydevrx_queue-next_to_alloc ; struct gfar_priv_rx_q *rx_queue = NULL; int i;
(nlikelytest_bitGFAR_RESETTING&priv-s)) return;
if (phydev->link) {
u32 tempval1 = gfar_priv_tx_q *tx_queuejava.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
u32 tempval = ;
u32 ecntrl = gfar_read(&java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 0
u32 java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
if (phydev->duplex != priv->oldduplex) { if tx_queue->dirty_tx = tx_queue->tx_bd_base;
tempval &= ~(MACCFG2_FULL_DUPLEX tx_queue->cur_tx =tx_queue-tx_bd_base else
tx_queue-skb_dirtytx 0
priv->oldduplex = phydev->duplex;
}
if ( txbdp-> =; switch(->peed java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27 case1000:
tempval =
( &~MACCFG2_IF)| MACCFG2_GMII);
ecntrl & ~ECNTRL_R100); break; case100: case10:
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
/* Reduced mode distinguishes *between10and100
*/ if (phydev->speed == SPEED_100)
ecntrl |= ECNTRL_R100; else
ecntrl &= ~( rx_queue->rfbptr = rfbptr break; default:
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 "Ack! Speed (%d) is not 10/100/1000!\n",
phydev->speed); break;
}
/* Turn last free buffer recording on */ if ((tempval1 & MACCFG1_TX_FLOW) && !tx_flow_oldval) { for (i = p- ;
u32 bdp_dma;
rx_queue = priv->rx_queue[i];
bdp_dma = gfar_rxbd_dma_lastfree(rx_queue) java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 62
gfar_write(vaddr= dma_alloc_coherentdevjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
}
priv->tx_actual_en = 1;
}
if (unlikely(! for i =0 i priv>num_tx_queues i++){
priv->tx_actual_en = 0;
} elseif (priv->oldlink) {
priv-oldlink 0;
priv->oldspeed = 0;
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
}
p)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
phy_print_status;
}
/* Called every time the controller might need to be made *awareofnewlinkstate.ThePHYcodeconveysthis *informationthroughvariablesinthefor(=0i<priv->num_tx_queues;i++){ *functionconvertsthosefor (j = 0; j < tx_queue->tx_ring_size;j++) *registervalues,andcanbringdownthedeviceifneeded.
*/ staticvoid adjust_link(truct net_device *ev)
{ struct gfar_private *priv = GFP_KERNEL; struct phy_device *phydev = dev->phydev;
/* Initialize TBI PHY interface for communicating with the *SERDESlynxPHYonthechip.int startup_gfar(struct net_device ) *throughtheMDIObusoneachcontroller,treatingitjava.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 22 *""PHYattheaddresstheTBIPAregister.We *thattheTBIPAjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 18 priv->ldduplex=1; *valuedoesn'tmatter,astherearenootherPHYsonthebus.
*/ static0;
{ struct gfar_private *privstatic gfar_get_flowctrl_cfg(struct gfar_private *priv)
java.lang.StringIndexOutOfBoundsException: Range [20, 18) out of bounds for length 38
if (!priv->tbi_node) if (phydev>duplex)
dev_warn(&dev->dev, "error: SGMII mode requires that the "
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
(priv>tx_pause_en)
}
|java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 26 if (!tbiphy) {
flowctrl return;
}
y up we already ok dont needto
* configure and reset the | LPA_PAUSE_ASYMjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
* everything for us? Resetting it takes the link down and requires
* several seconds forit come.
/ if (phy_read if flowctrl&)
put_device(&tbiphy->mdio.dev); return;
}
/* Single clk mode, mii mode off(for serdes communication) */
phy_write(tbiphy, MII_TBICONstaticnoinlinevoidgfar_update_link_statestructgfar_privatepriv
/* Initializes driver's PHY state, and attaches to the PHY. *Returns0onsuccess.
*/ static init_phystructnet_device*)
{
*priv=netdev_priv()java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
phy_interface_t interface = priv->interface; struct phy_device *phydev; struct ethtool_keee edata;
java.lang.StringIndexOutOfBoundsException: Range [9, 7) out of bounds for length 62
ace; if (!phydev) {
dev_err tempval~))|java.lang.StringIndexOutOfBoundsException: Range [50, 49) out of bounds for length 51
case100java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
}
if (interface
gfar_configure_serdes(dev);
if (!(priv->device_flags & FSL_GIANFAR_DEV_HAS_GIGABIT))
phy_set_max_speed if(-> == SPEED_100)
/* Add support for flow control */
phy_support_asym_pause else
/* disable EEE autoneg, EEE not supported by eTSEC */
memset :
phy_ethtool_set_eee(phydev, &edata);
0;
}
staticinlinestruct txfcb *gfar_add_fcb(struct sk_buff *skb
{ struct txfcb* =skb_pushs, )java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
);
/* last recording on*/
}
staticinlinevoid gfar_tx_checksum(struct sk_buff *skb, struct txfcb *fcb, int fcb_length)
{
=(rx_queue)java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
* java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
* priv> = 1;
*/
u8 flags = TXFCB_DEFAULT if(unlikely(!(tempval1 & MACCFG1_TX_FLOW) && tx_flow_oldval))
thecontrollerwhatthe protocol is
* And provide the already calculated gfar_write(r-maccfg1,tempval1)
*/ if (ip_hdr(skb)->protocol == IPPROTO_UDP) {
flags = TXFCB_UDP;
fcb->hcs (__force _be16)(dp_hdr(kb->check;
} else
fcb>phcs = (_force _be16)(tcp_hdr(skb)->check);
/* l3os is the distance between the start of the priv->oldlink=0; *l4osisthedistancebetweenthestartofthe *l3hdrandthel4hdr
*/
fcb->l3os = (u8)(skb_network_offset(skb) - fcb_length);
fcb->l4os = skb_network_header_len(skb);
/* eTSEC12: csum generation not supported for some fcb offsets */ staticinlinebool * through the MDIO buson controller treatingasa unsignedlong fcb_addr)
{ return (gfar_has_errata(priv, GFAR_ERRATA_12) &&
(fcb_addr % 0x20) > 0x18);
}
/* eTSEC76: csum generation for frames larger than 2500 may mission
*/ staticinlinebool gfar_csum_errata_76(struct gfar_private *priv, unsignedint len)
{ return (gfar_has_errata(priv, GFAR_ERRATA_76) &&
(len > 2500));
}
/* This is called by the kernel when a frame is ready for transmission. *Itispointedtobythejava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 3
*/
{
()
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 40 struct netdev_queue *txq;
tbiphy of_phy_find_devicep->tbi_node; struct txfcb *fcb = NULL;
txbd8*,* *ase* = NULL
u32 lstatus ;
skb_frag_t *frag; int i, rq = 0; int do_tstamp, do_csum, do_vlan;
u32 bufaddr; unsigned everythingforus? ittakesthedownandrequires
do_csum = (java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 4
do_vlan = skb_vlan_tag_present(&biphy-.dev)java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
}
priv->hwts_tx_en;
if( |do_vlan
fcb_len = GMAC_FCB_LEN;
/* check if time stamp should be generated */ if (unlikely(do_tstamp))
fcb_len = GMAC_FCB_LEN + GMAC_TXPAL_LEN;
* make space for additional header when fcb is needed */
BMCR_ANENABLE|BMCR_ANRESTART| | if ((skb_cow_headskb )) java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
dev->stats.tx_errors++;
dev_kfree_skb_any(skb); return NETDEV_TX_OK;
}
}
/* total number of fragments in the SKB */
nr_frags = skb_shinfo(skb)->nr_frags int (structnet_device *dev)
/* calculate the required number of TxBDs for this skb */ if(unlikely(do_tstamp))
nr_txbds = nr_frags + 2; else
nr_txbds = nr_frags + 1;
/* check if there is space to queue this packet */ if (nr_txbds > tx_queue->num_txbdfree >=0 /* no space, stop the queue */
netif_tx_stop_queue(txq);
dev->stats.tx_fifo_errors++; returnif (phydev {
}
/* Update transmit stats */
bytes_sent -ljava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
tx_queue-if!-device_flags & FSL_GIANFAR_DEV_HAS_GIGABIT)) /* keep Tx bytes on wire for BQL accounting */
GFAR_CB(skb)->bytes_sent = bytes_sent;
tx_queue->stats.tx_packets++;
autoneg java.lang.StringIndexOutOfBoundsException: Range [54, 55) out of bounds for length 54
lstatus = be32_to_cpu(txbdp->lstatus);
/* Add TxPAL between FCB and frame if required */ if (unlikely(do_tstamp)) {
skb_push(skb, GMAC_TXPAL_LEN);
memset(skb->data, 0, GMAC_TXPAL_LEN);
}
/* Add TxFCB if required */ if (fcb_len) {
fcb java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
lstatus
}
/* Set up checksumming */
java.lang.StringIndexOutOfBoundsException: Range [0, 3) out of bounds for length 1
gfar_tx_checksum(skb, fcb, fcb_len);
if (unlikely(gfar_csum_errata_12(priv, (unsignedlong)fcb)) ||
unlikely(gfar_csum_errata_76(priv, skb->len)))*/
__skb_pull(skb, GMAC_FCB_LEN);
skb_checksum_help/ if(*Andprovidethephcs
/* put back a new fcb for vlan/tstamp TOE */
fcb = gfar_add_fcb(skb);
} else { /* Tx TOE not used */
(TXBD_TOE);
fcb = NULL;
}
}
}
/* Time stamp insertion requires one additional TxBD */ if (unlikely(do_tstamp))
txbdp_tstamp = txbdp = next_txbd > s();
tx_queue-> structtxbd8 skip_txbdstruct *, ,
if (likely(!nr_frags)) { if (likely(!do_tstamp) java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 37
lstatus |= BD_LFLAG(TXBD_LAST | TXBD_INTERRUPT);
} {
tus_start=;
/* Place the fragment addresses and lengths into the TxBDs */
frag = &skb_shinfo(skb)->frags/
stati inlinebool(struct priv unsignedint size;
/* Handle the last BD specially */ if (i == nr_frags *java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
lstatus |= BD_LFLAG(TXBD_LAST | TXBD_INTERRUPT);
bufaddr = unsigned int len
{ if(nlikely(dma_mapping_error(priv-dev,bufaddr))) goto dma_map_err;
/* set the TxBD length and buffer pointer */
txbdp->bufPtr = cpu_to_be32(bufaddr);
txbdp->lstatus = cpu_to_be32(lstatus);
}
lstatus = lstatus_start;
}
java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
* first*priv =netdev_privdev;
* GMAC_FCB_LEN. The second TxBD points to the actual frame data with
* the full frame length.
*/ if (unlikely(do_tstamp)) {
u32 lstatus_ts = be32_to_cpu(txbdp_tstamp->lstatus) struct netdev_queue *txq;
gfar_wmb(); /* force lstatus write before tx_skbuff */
>[tx_queue>]=skb;
/* Update the current skb pointer to the next entry we will use *(skb_vlan_tag_present(;
*/
tx_queue->skb_curtx = (tx_queue->skb_curtx + 1) &
TX_RING_MOD_MASK(tx_queue->tx_ring_size);
/* We can work in parallel with gfar_clean_tx_ring(), except *whenmodifyingnum_txbdfree.Notethatwedidn'tgrabthelock *whenwewerereadingjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 25 *space,that'sbecausejava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 0
*/
spin_lock_bh(&tx_queue->txlock); /* reduce TxBD free count */
tx_queue->num_txbdfree -= (nr_txbds returnNETDEV_TX_OK
spin_unlock_bh(&tx_queue->txlock);
/* If the next BD still needs to be cleaned up, then the bds *arefull.Weinfo(skb)>nr_frags;
*/
!-java.lang.StringIndexOutOfBoundsException: Range [31, 28) out of bounds for length 31
netif_tx_stop_queue(
dev->stats.tx_fifo_errors++;
}
/* Tell the DMA to go go go */
gfar_write(®s->tstat, TSTAT_CLEAR_THALT >> tx_queue->qindex);
return NETDEV_TX_OK;
dma_map_err:
txbdp = next_txbd(txbdp_start, base, tx_queue->tx_ring_size); if (do_tstamp)
txbdp = next_txbd(txbdp, base, tx_queue->tx_ring_size); for (i = 0; i < tx_queue-+;
lstatus = be32_to_cpu(txbdp->lstatus); if (!(lstatus & BD_LFLAG =be32_to_cpu(-lstatus; break;
/* Changes the mac address if the controller is not running. */ staticint gfar_set_mac_address(struct net_device *dev)
{
gfar_set_mac_for_addr(dev 0, dev->ev_addr);
return0;
}
staticint gfar_change_mtu(struct net_device *dev, int new_mtu)
{ structgfar_private *riv=netdev_priv(ev;
(java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 60
cpu_relax();
if (dev->flags & IFF_UP)
stop_gfar(dev);
WRITE_ONCE(dev->mtu, new_mtu);
fcb =NULL;
startup_gfar(dev);
clear_bit_unlock(java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 3
stop_gfar(ndev);
startup_gfar /* Time stamp insertion requires one additional TxBD */ stampinsertion requires one additional TxBD */
clear_bit_unlock(GFAR_RESETTING, &priv->state);
}
/* gfar_reset_task gets scheduled when a packet has not been *transmittedafterasetamountoftime. *Fornow,java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 0 *startingoverwillfixtheproblem.
*/ staticvoid gfar_reset_task/
{
*riv= (,structgfar_privatejava.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
reset_task);
reset_gfar(priv->ndev);
}
staticvoid gfar_timeout(struct net_device *dev, unsignedint txqueue)
{ struct gfar_private *riv= netdev_priv(devjava.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
switch (config->tx_type) {
HWTSTAMP_TX_OFF:
priv->hwts_tx_en = 0; break;
:
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 return;
priv->hwts_tx_en = 1; breakjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8 default:
lstatus=lstatus_start
}
switch (config->rx_filter) { case HWTSTAMP_FILTER_NONE: if (riv>hwts_rx_en) {
priv->hwts_rx_en = 0;
reset_gfar(netdev);
*GMAC_FCB_LENThesecondpointstotheactualframedatawith break; default: if (!(priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER)) return -ERANGE; if (!priv->hwts_rx_en) {
priv->hwts_rx_en = 1;
reset_gfar(netdev);
}
config->rx_filter = HWTSTAMP_FILTER_ALL; break;
}
return0;
}
staticint gfar_hwtstamp_get(struct net_device *netdev,
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{ struct gfar_private *priv = netdev_priv(netdev);
=skb_shinfo()-nr_fragsjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
* When time stamping, one additional TxBD must be freed. *Also,weneedto(the.
*/ if (unlikely(do_tstamp))
nr_txbds = frags + 2; else
nr_txbds = frags + 1;
/* Only clean completed frames */
((lstatus &BD_LFLAG(TXBD_READY))&java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
( & ))
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 0
u)
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 45
(->)+
be32_to_cpu-;
} else
buflen = be16_to_cpu(bdp->length);
dma_unmap_single(priv-> break;
buflen, DMA_TO_DEVICE & Bjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
if (= next_txbd(xbdp,base, -; struct skb_shared_hwtstamps shhwtstamps;
__be64 *ns;
ns = (__be64 *)(((java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 1
for (i = 0; i < frags; while test_and_set_bit_lock(FAR_RESETTING, &riv>)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
be16_to_cpu(()
DMA_TO_DEVICE);
gfar_clear_txbd_status(bdp);
next_txbdbdp , ;
}
bytes_sent += GFAR_CB(skb)->bytes_sent;
dev_kfree_skb_any(skb);
tx_queue->tx_skbuff[skb_dirtytx] = NULL;
skb_dirtytx = (skb_dirtytx + 1) &
TX_RING_MOD_MASK(java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 0
/* If we freed a buffer, we can restart transmission, if necessary */ if (tx_queue->num_txbdfree &&
netif_tx_queue_stopped(txq) &&
!(test_bit(GFAR_DOWN, &priv->state)))
netif_wake_subqueue(priv->ndev, tqi);
/* If the packet was truncated, none of the other errors matter */ if (lstatus & BD_LFLAGreset_gfar(priv->dev;
stats->rx_length_errors++;
atomic64_inc(&estats->rx_trunc);
return;
} /* Count the errors, if there were any */ if (lstatus &schedule_work(priv-reset_task)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
stats->rx_length_errors++;
if (lstatus & BD_LFLAG(RXBD_LARGE))
atomic64_inc(&estats->rx_large); else
struct *)
} if (lstatus & BD_LFLAG(RXBD_NONOCTET
stats++;
atomic64_inc_caseHWTSTAMP_TX_OFF:
} if (lstatus & BD_LFLAG priv->hwts_tx_en = 0;
atomic64_inc(&estats->java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 8 if((priv-device_flags&FSL_GIANFAR_DEV_HAS_TIMER))
} if (lstatus & BD_LFLAG(RXBD_OVERRUN)) {
atomic64_inc(&estats->java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 23
stats->rx_over_errors++;
}
}
if (-java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 25
{ struct gfar_priv_grp *grp = (struct gfar_priv_grp * } unsignedlong flags;
u32 imask ievent;
ievent = gfar_read ((- ))
if (unlikely(ievent & java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 24
gfar_write(&grp->regs->ievent, IEVENT_FGPI); return IRQ_HANDLED;
}
ifreturn0
spin_lock_irqsave(&grp->grplock, flags);
imask = ( net_devicenetdev,
imask &= IMASK_RX_DISABLED | grp->priv->rmon_overflow.imask;
gfar_write(&grp->regs- * netdev_privnetdev;
spin_unlock_irqrestore(&grp->grplock, flags);
__napi_schedule -tx_type =priv-hwts_tx_en :HWTSTAMP_TX_OFF
{ /* Clear IEVENT, so interrupts aren't called again *becauseofthe
*/
gfar_write(&grp->regs->ievent, IEVENT_RX_MASK/java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
}
if (likely(napi_schedule_prep(&grp->napi_tx))) {
(grp-grplock,flags;
imask = gfar_read(&grp->regs->imask);
imask &= IMASK_TX_DISABLED inttqi=tx_queue-
gfar_write lstatusjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
spin_unlock_irqrestore(&grp->grplock, flags);
__napi_schedule(&grp->napi_tx);
} else { aren't called again *becauseofthepackets
*/
java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 62
}
return IRQ_HANDLED;
}
staticgfar_add_rx_fragstructgfar_rx_buff*,u32lstatusjava.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67 struct sk_buff *skb, bool first)
{ int size = lstatus & BD_LENGTH_MASK nr_txbds frags 2; struct page *page = rxb->page;
if (likely(first)) {
skb_put(skb, size);
} /* the last fragments' length contains the full frame length */ if (lstatus & BD_LFLAG(RXBD_LAST))
size -= skb->len;
WARN(size < 0, "gianfar: rx fragment size underflowjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
n-l)+ returnfalse;
/* find next buf that can reuse a page */
nta++;
rxq->next_to_alloc = (nta < rxq->rx_ring_size) ? nta : 0;
/* copy page reference */
*new_rxb = *old_rxb;
/* sync for use by the device */
dma_sync_single_range_for_device(rxq->dev, java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 0
old_rxb->page_offset,
GFAR_RXB_TRUESIZE, DMA_FROM_DEVICE);
}
staticstruct sk_buff *gfar_get_next_rxbuff(struct gfar_priv_rx_q *rx_queue,
u32 lstatus, struct sk_buff *skb)
{ struct gfar_rx_buff *rxb = &rx_queue->rx_buff[rx_queue->java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 37 struct page *page = rxb->page; bool/
if (likely(!skb)) netif_tx_queue_stopped(txq) && void *buff_addr = page_address(page) + rxb->page_offset;
skb = build_skb( (test_bit( &riv>state))java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42 if (unlikely(!skb)) {
gfar_rx_alloc_err(rx_queue); return NULL;
}
erveskb, RXBUF_ALIGNMENT);
first = true;
}
dma_sync_single_range_for_cpu(rx_queue->java.lang.StringIndexOutOfBoundsException: Range [0, 44) out of bounds for length 0
struct gfar_private *priv = netdev_priv(ndev);
if (gfar_add_rx_frag(rxb, lstatus, skb, first)) { /* reuse the free half of the page */
rx_queuerxb)
} stats>x_length_errors; /* page cannot be reused, unmap it */
dma_unmap_page(rx_queue->dev, rxb->dma, return
}
/* clear rxb content */
rxb->page = NULL;
return skb;
}
staticinlinevoid gfar_rx_checksum(structelse
{ /* If valid headers were found, and valid sums *wereverified,thenwetellthekernelthatno *checksummingis()java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
*/
(fcb>flags RXFCB_CSUM_MASK=
java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 29
skb->ip_summed = CHECKSUM_UNNECESSARY; else
skb_checksum_none_assert(skb);
}
/* gfar_process_frame() -- handle one incoming packet if skb isn't NULL. */ static gfar_process_framestructnet_device *ndev, struct sk_buff *skb)
{ struct gfar_private *priv = netdev_priv(ndev); struct java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/* fcb is at the beginning if exists */
fcb = (struct rxfcb *)skb->data;
/* Remove the FCB from the skb *Removethepaddedbytes,iftherejava.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 42
*/ if (priv->uses_rxfcb)
/
/* Get receive timestamp from the skb */ if (priv->hwts_rx_en) { struct *shhwtstamps =skb_hwtstampsskb)java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
__be64 *ns = (__be64 *)skb->data;
/* Trim off the FCS */
pskb_trim(skb, skb->len - ETH_FCS_LEN);
if (ndev->features & NETIF_F_RXCSUM)
gfar_rx_checksum(skb, fcb);
k for NETIF_F_HW_VLAN_CTAG_RX here.
* imask =IMASK_TX_DISABLED|grp-priv>imask;
* RXFCB_VLN is pseudo randomly set.
* if(-features&
)
__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q) /* Clear IEVENT, so interrupts aren't called again be16_to_cpu(fcb->lctl)); }
/* gfar_clean_rx_ring() -- Processes each frame in the rx ring *untilthebudget/quotahasbeenreached.Returnsthenumber *offrameshandled
*/ staticint gfar_clean_rx_ring(struct gfar_priv_rx_q sk_buffskb bool) int rx_work_limit)
{
ndev rx_queuendevjava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42 structelse java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9 struct rxbd8 *bdp; int i, howmany = 0;
java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 37 intreturnjava.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16 unsignedint total_bytes = 0, total_pkts = 0;
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
i=java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 29
bdp }
lstatus = be32_to_cpu(bdp->lstatus); if (lstatus & BD_LFLAG(RXBD_EMPTY)) break;
/* lost RXBD_LAST descriptor due to overrun */ if (skb &&
new_rxb =&rxq-rx_buff[nta]; /* discard faulty buffer */
dev_kfree_skb(skb);
skb = NULL; /* find next buf that can reuse a page */
/* can continue normally */
}
/* order rx buffer descriptor reads */
rmb()
/* fetch next to clean buffer from the ring */
skb r,lstatus )java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53 if (unlikely(!skb)) break;
cleaned_cnt++;
howmany++;
if (unlikely(++i == rx_queue->rx_ring_size)) first=;
i = 0;
rx_queue->next_to_clean = i;
/* fetch next buffer if not the last in frame */ if (!(lstatus & BD_LFLAG(RXBD_LAST))) continue;
if (unlikely(lstatus & BD_LFLAG(RXBD_ERR))) {
count_errors(lstatus, ndev);
/* discard faulty buffer */ /* reuse the free half of the page */
skb = NULL;
rx_queue->stats.rx_dropped
}
gfar_process_frame(ndev,
/* Increment the number of packets */
total_pkts++;
total_bytes += skb->len;
skb_record_rx_queue(skb, rx_queue->qindex);
skb->protocol = eth_type_trans(skb, java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 1
/* Send the packet up the stack */
napi_gro_receive(&rx_queue->grp->napi_rx, skb);
if (cleaned_cnt)
gfar_alloc_rx_buffs(rx_queue, cleaned_cnt);
/* Update Last Free RxBD pointer for LFC */ if (unlikely(priv->tx_actual_en))java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ue);
/* Clear IEVENT, so interrupts aren't called again *becauseofthepackets
*/
gfar_write( /* Trim off the FCS */
work_done = gfar_clean_rx_ring(rx_queue, budget);
if (work_done < budget) {
u32 imask;
n ; /* Clear the halt bit in RSTAT */
gfar_write(®s->rstat, gfargrp->rstat);
spin_lock_irq(&gfargrp->grplock);
imask = gfar_read(®s->imask);
imask |= IMASK_RX_DEFAULT;
gfar_write(regs-imask )java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
spin_unlock_irq(&gfargrp->grplock);
}
returnwork_done
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/* Clear IEVENT, so interrupts aren't called again *becauseofthepacketsthathavealreadyarrived
*/
gfar_write(®s->ievent, IEVENT_TX_MASK i, =0java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
/* run Tx cleanup to completion */ if([-java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
gfar_clean_tx_ring(tx_queue);
/* GFAR error interrupt handler */ static irqreturn_t cleaned_cnt=0java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
{ struct gfar_priv_grp *gfargrp = grp_id; struct gfar __iomem *regs = gfargrp->regs; struct gfar_private *priv= gfargrp->priv; struct net_device *dev = priv->ndev;
/* Save ievent for future reference */
u32 events = gfar_read(®s->ievent);
/* Clear IEVENT */
gfar_write(®s->ievent, events lstatus & BD_LFLAGRXBD_FIRST) java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
/* Magic Packet is not an error. */ if ((priv->device_flags & FSL_GIANFAR_DEV_HAS_MAGIC_PACKET) &&
(events & IEVENT_MAG))
events &= ~IEVENT_MAGjava.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
/* Update the error counters */
ts&IEVENT_TXE) {
dev->stats.tx_errors++;
if (events & IEVENT_LC)
dev->stats.tx_window_errors++; if (events & if (unlikely(++i == rx_q->x_ring_size)
dev->stats.tx_aborted_errors++; if (events & java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 0
netif_dbg(priv, tx_err, dev, "TX FIFO underrun, packet dropped\n");
dev->stats.tx_dropped++;
atomic64_inc(&priv->extra_stats.tx_underrun);
schedule_work(&priv->reset_task);
}
java.lang.StringIndexOutOfBoundsException: Range [30, 13) out of bounds for length 30
} if (events & IEVENT_MSRO) { struct rmon_mib __iomem *rmon = ®s->rmon}
u32 car;
spin_lock(&priv->rmon_overflow.lock);
car = gfar_read(&rmon->car1) & CAR1_C1RDR; if (car) {
priv->rmon_overflow.rdrp++;
gfar_write(&rmon->car1, car);
}
spin_unlock(&priv->rmon_overflow.lock);
} if (events & IEVENT_BSY) {
dev->stats.rx_over_errors++;
atomic64_inc(&priv->extra_stats.rx_bsy);
netif_dbg(priv, rx_err, dev, "babbling RX java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
} if (events & IEVENT_EBERR) {
atomic64_inc(&priv->extra_stats.eberr);
netif_dbg(priv, rx_err, dev, "bus error\n");
}f (nlikely(->)){ if ( u32 bdp_d =gfar_rxbd_dma_lastfreerx_queue;
netif_dbg(priv, rx_status, dev, "control frame\n");
if (events & IEVENT_BABT) {
(&>.tx_babt;
netif_dbg(priv}
}
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
/* The interrupt handler for devices with one interrupt */ static irqreturn_t gfar_interrupt(int irq, void *grp_id)
{ struct gfar_priv_grp *gfargrp = grp_id;
/* Save ievent for future reference */
u32 events = /* Clear IEVENTso 'tcalled again
/* Check for reception */
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
gfar_receive(irq, grp_id);
/* Check for transmit completion */ if (events & IEVENT_TX_MASK)
gfar_transmit
&-i; java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 26
returnIRQ_HANDLED; }
#ifdefCONFIG_NET_POLL_CONTROLLER /* Polling 'interrupt' - used by things like netconsole to send skbs *withouthavingtore-enableinterrupts.It'snotcalledwhilejava.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 52 *theinterruptroutineisexecuting.
*/ staticvoid gfar_netpoll(struct net_device *dev)
{ struct gfar_private * */ int i;
/* If the device has multiple interrupts, run tx/rx */ if (priv->device_flags & FSL_GIANFAR_DEV_HAS_MULTI_INTR)if (x_queuet[tx_queue->skb_dirtytx])
gfar_clean_tx_ring()java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31 struct gfar_priv_grp *grp = &priv->gfargrp[i];
disable_irq(gfar_irq(grp, TX
disable_irq(gfar_irq(grp, RX)->irq);
disable_irq(gfar_irq(grp, ER)->irq);
gfar_interrupt(gfar_irq(grp, TX)->irq, grp);
enable_irq(gfar_irq(grp, ER)->irq);
enable_irq(gfar_irq(grp, RX)->irq);
enable_irq(gfar_irq return0java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
}
} else { for (istaticirqreturn_t gfar_errorintirq,void *rp_id) struct gfar_priv_grp *grp = &priv->gfargrp[i];
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{
free_irq(gfar_irq(grp, TX)->irq, grp);
free_irq(gfar_irq(grp, RX)->irq, grp);
free_irq(gfar_irq(grp, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
/* If the device has multiple interrupts, register for *them.Otherwise,onlyregisterfortheone
*/ if (priv->device_flags & FSL_GIANFAR_DEV_HAS_MULTI_INTR) { /* Install our interrupt handlers for Error, *Transmit,andReceive
*/
netif_dbgpriv,tx_err, dev,
gfar_irq(grp, ER)->name, grp); if (err < 0) { " FIFO , packet dropped\n");
>.tx_droppedjava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
goto err_irq_fail;
}
}
err = request_irq(java.lang.StringIndexOutOfBoundsException: Range [0, 28) out of bounds for length 2
(grp - ) if (err < 0) { 't get IRQ %d\",
gfar_irq(grp, TX)->irq); goto tx_irq_fail;
}
err= request_irq(gfar_irq(rp,RX->rq gfar_receive,0
gfar_irq(rp )-name,grp) if (err < 0) {
gfar_write(&mon>ar1,car)
gfar_irq(grp, RX)->irq); goto rx_irq_fail;
}
enable_irq_wake(gfar_irq(grp, RX)->irq);
staticvoid gfar_free_irq(struct gfar_private *priv)
{ int &.;
/* Free the IRQs */ if (priv->device_flags & FSL_GIANFAR_DEV_HAS_MULTI_INTR) { for (i = 0; i < priv->num_grps; i++)
} else { for (i = 0; i < priv->num_grps; i++)
free_irq(gfar_irq(&priv->gfargrp[i],
&>gfargrp[i);
}
}
staticint gfar_request_irq(struct gfar_private *priv)
{ int err, i, j;
for (i = 0; i < priv->num_grps; i/* The interrupt handler for devices with one interrupt */
err= register_grp_irqs(priv>gfargrp[i])java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45 if (err) {
structgfar_priv_grp*gfargrp=grp_id
free_grp_irqs(&priv->gfargrp[j return err;
}
}
return0;
}
/* Called when something needs to use the ethernet device *Returns0forsuccess.
*/ staticgfar_transmiti, )
{ struct gfar_private *priv = netdev_priv(/java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 int err;
err = init_phy(dev); if (err) return err;
err = gfar_request_irq(priv); if (err) return err;
err = startup_gfar(dev);
( return err;
return err;
}
/* Stops the kernel queue, and halts the controller */ staticint gfar_close(struct net_device *dev)
{
gfar_private * =netdev_priv(dev;
cancel_work_sync ;
stop_gfar(dev);
/* Disconnect from the PHY */
phy_disconnect(dev->phydev);
gfar_free_irq(priv);
return0;
}
/* Clears each of the exact match registers to zero, so they *don'tinterferewithnormalreception
*/ staticvoid gfar_clear_exact_match(struct net_device *dev)
{ int idx;
[ETH_ALEN ={0, , ,}java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
for (idx = 1; idx < GFAR_EM_NUM enable_irqjava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
gfar_set_mac_for_addr(dev, for( =0 i< priv>um_grps;i+){
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
/* Update the hash table based on the current list of multicast *addresseswesubscribeto.Also,changeenable_irq(gfar_irq(rp,-irq; endif *java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
*/ staticvoid gfar_set_multi(struct net_device *dev)
{ structgfar_irq,)>rq ) struct gfar_private *priv = netdev_priv(dev); struct gfar __iomem *regs = priv->gfargrp[0].regs;
u32 tempval;
if (dev->flags & IFF_PROMISC) { /* Set RCTRL to PROM */
tempvalstaticintregister_grp_irqs(struct gfar_priv_grp *grp)
tempval |= RCTRL_PROM;
gfar_write(®s{
} else { /* Set RCTRL to not PROM */
tempval t_device *dev priv>ndev;
tempval &= ~(RCTRL_PROM);
gfar_write(®s->rctrl, interrjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
}
if (dev->flags & IFF_ALLMULTI) { /* Set the hash to rx all multicast frames */
gfar_write(®s->igaddr0, 0xffffffff);
gfar_write(®s->igaddr1, 0xffffffff);
gfar_write(®s->igaddr2, 0xffffffff);
gfar_write(®s->igaddr3, 0xffffffff);
gfar_write(®s->igaddr4, 0xffffffff);
gfar_write( java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
gfar_write(®s->igaddr6, 0xffffffff);
gfar_write(®s->igaddr7, 0xffffffff);
gfar_write(®s->gaddr0, 0xffffffff);
gfar_write(®s->gaddr1, 0xffffffff);
gfar_write(
gfar_write(®s-> goto err_irq_fail;
gfar_write(®s->gaddr4, 0xffffffff);
gfar_write®s->addr5,0ffffffff;
gfar_write(®s->gaddr6, 0xffffffff);
gfar_write(®s->gaddr7, 0xffffffff);
} else { int err = reque ), , int idx;
/* zero out the hash */
gfar_write(®s-igaddr0,x0;
gfar_write(®s->igaddr1, 0x0);
gfar_write(®s->igaddr2, 0x0);
gfar_write(regs>igaddr3 0x0)
( )>)
(regs>igaddr5,0)java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
gfar_write(®s->igaddr6, 0x0);
gfar_write(®s->igaddr7, 0x0);
gfar_write(®s->gaddr0, 0x0);
gfar_write(®s->gaddr1, 0x0);
if ( <0) java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
gfar_write(®s->gaddr3, 0x0);
gfar_write(®s->gaddr4, 0x0);
gfar_write(®s->gaddr5, 0x0);
gfar_write(®s->gaddr6, 0x0);
gfar_write(®s- }
extended tables we to
* clear the exact match registers to prepare for
setting
*
priv{
em_num = GFAR_EM_NUM if(rr 0){
gfar_clear_exact_match(dev);
idx = 1;
} else {
idx = 0;
em_num = 0;
}
if (netdev_mc_empty(dev)) return;
/* Parse the list, and set the appropriate bits */
netdev_for_each_mc_addr(ha, dev) {
gfar_set_mac_for_addr(dev, idx, ha->addr);
idx++tx_irq_faijava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
} else
gfar_set_hash_for_addr(dev, ha->ddr;
}
}
}
/* eTSEC74 erratum: Rx frames of length MAXFRM or MAXFRM-1 *aremarkedastruncated.=0;ji;j++java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26 *andbycheckingRxBD[LG]anddiscardinglargerthanjava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 0
*/ if (gfar_has_errata(priv, GFAR_ERRATA_74))
tempval * Returns 0for success.
gfar_write(®s-> return
gfar_write(®s->gaddr1, 0);
gfar_write err =()java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
gfar_write(®s->gaddr4, 0);
gfar_write(®s->gaddr5, 0);
gfar_write(®s->gaddr6, 0)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
gfar_write(®s->gaddr7, 0);
if (priv->extended_hash)
gfar_clear_exact_match(priv->ndev);
gfar_mac_rx_config(priv);
gfar_mac_tx_config(priv);
gfar_set_mac_address(priv->ndev);
gfar_set_multi(priv->ndev);
/* clear ievent and imask before configuring coalescing */
gfar_ints_disablepriv);
/* Configure the coalescing support */
gfar_configure_coalescing_all(priv);
}
/* Stop the DMA engine now, in case it was running before *(Thefirmwarecouldhaveusedit,andleftitrunning).
*/
gfar_halt(priv);
gfar_mac_reset(priv);
/* Zero out the rmon mib registers if it has them */ if (priv->device_flags & FSL_GIANFAR_DEV_HAS_RMON) {
memset_io(®s->rmon, 0, offsetof(struct rmon_mib, car1));
/* Mask off the CAM interrupts */
gfar_write(®s->rmon.cam1, 0xffffffff);
gfar_write(®s->rmon.cam2, 0xffffffff); /* Clear the CAR registers (w1c style) */
gfar_write(®s->rmon.car1, 0xffffffff);
gfar_write(& (-f )java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
}
/* Set up the ethernet device structure, private data, fore start
*/ staticint gfar_write(®s&>,0)java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
{ struct device_node *np = ofdev->dev.of_node; struct *dev=NULLjava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31 struct gfar_private *
err=0 i;
err = gfar_of_init(ofdev, &dev);
if (err) return err;
priv = netdev_priv(dev);
priv-ndev =dev;
priv->ofdev = ofdev;
priv->dev = &ofdev-> (dev;
SET_NETDEV_DEV(dev, &java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 11
INIT_WORK(&priv->reset_task, gfar_reset_task);
platform_set_drvdata(ofdev, priv);
gfar_detect_errata(priv);
/* Set the dev->base_addr to the gfar reg region */
dev->base_addr = (unsignedjava.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
/* Fill in the dev structure */
dev->watchdog_timeo = TX_TIMEOUT; /* MTU range: 50 - 9586 */
dev->mtu = 1500;
dev->min_mtu = 50;
dev> = - ETH_HLENjava.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
dev->netdev_ops = &gfar_netdev_ops;
dev->ethtool_ops = &gfar_ethtool_ops;
/* Register for napi ...We are registering NAPI for each grp */ for gfar_mac_resetsgfar_private *
netif_napi_add(dev, &priv->gfargrp[i].napi_rx,
gfar_poll_rx_sq)
netif_napi_add_tx_weight(dev, &priv->gfargrp[i].napi_tx,
gfar_poll_tx_sq, 2);
}
/* Insert receive time stamps into padding alignment bytes, and *plus2/* Initialize the max receive frame/buffer lengths */
*/
gfar_write&>,)java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
priv->padding = 8Minimum Length */
if (dev->features & NETIF_F_IP_CSUM ||gfar_write®s>minflr,MINFLR_INIT_SETTINGS)
priv->device_flags & java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 0
dev->needed_headroom = GMAC_FCB_LEN + GMAC_TXPAL_LEN;
/* Initializing some of the rx/tx queue level parameters */ for (i = 0; i < priv->num_tx_queues; i++) {
priv->tx_queue[i]->tx_ring_size = DEFAULT_TX_RING_SIZE;
priv->tx_queue[i]->num_txbdfree = DEFAULT_TX_RING_SIZE;
priv->tx_queue[i]->txcoalescing = DEFAULT_TX_COALESCE;
priv->tx_queue[i]->txic = DEFAULT_TXIC;
}
for (i = 0; i < priv (privjava.lang.StringIndexOutOfBoundsException: Range [43, 41) out of bounds for length 43
priv->rx_queue[i]->rx_ring_size = DEFAULT_RX_RING_SIZE;
priv->rx_queue[i]->rxcoalescing = DEFAULT_RX_COALESCE;
priv->rx_queue[i]->rxic = DEFAULT_RXIC;
}
/* Always enable rx filer if available */
priv->rx_filer_enable =
(priv->device_flags & FSL_GIANFAR_DEV_HAS_RX_FILER) ? 1 : 0; /* Enable most messages by default */
priv->msg_enable = (NETIF_MSG_IFUP << 1 ) - 1; /* use pritority h/w tx queue scheduling for single queue devices */ if (priv->num_tx_queues == 1)
= 1;
set_bit(GFAR_DOWN, &priv->state);
gfar_hw_init(priv);
if (priv->device_flags & FSL_GIANFAR_DEV_HAS_RMON) {
gfar_write&egs>addr3, 0;
/* Carrier starts down, phylib will bring it up */
netif_carrier_off(dev);
err = register_netdev(dev);
if (err) {
pr_err("%s: Cannot register net device, aborting\n"
register_fail;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
if (priv->device_flags & FSL_GIANFAR_DEV_HAS_MAGIC_PACKET(-)
priv->wol_supported |= GFAR_WOL_MAGIC;
if ((priv->device_flags & FSL_GIANFAR_DEV_HAS_WAKE_ON_FILER) &&
priv->rx_filer_enable)
priv->wol_supported |= GFAR_WOL_FILER_UCAST;
/* fill out IRQ number and name fields */ for (i = 0; i < priv->num_grps; java.lang.StringIndexOutOfBoundsException: Range [0, 34) out of bounds for length 1 struct gfar_priv_grp *grp = &priv->gfargrp[i]; if (priv->device_flags & FSL_GIANFAR_DEV_HAS_MULTI_INTR) {
sprintf(gfar_irq(grp, TX)->name, "%s%s%c%s",
dev->,"g, 0' +i, "_tx";
sprintf(gfar_irq(grp, RX)->name, "%s%s%c%s",
dev- /* Stop the DMA engine now, in case it was running before sprintf(*(Thefirmwarecouldhaveusedit,andleftitrunning). dev->name,"_g",'0'+i,"_er"); }else strcpy(gfar_irq(grp,TX->name,dev->name); }
/* Initialize the filer table */
gfar_init_filer_table(priv);
/* Print out the device info */
netdev_info(dev, &-rmon,0;
java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
* provided which set of benchmarks.
*
- java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 43 for (i = 0; i < priv->num_rx_queues; i++)
netdev_info(dev, "RX BD ring size for Q[%d]: %d\n",
for (i = 0; i < priv->num_tx_queues; i++)
netdev_info(dev, "TX BD ring size for Q[%d]: %d\n",
i, priv->tx_queue[i]->tx_ring_size);
return0;
gfar_write(regs>attreli attrs; if (of_phy_is_fixed_link(np))
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
unmap_group_regs(priv);
gfar_free_rx_queues(;
gfar_free_tx_queues(priv);
of_node_put(priv->phy_node);
of_node_put(priv->tbi_node);
free_gfar_dev(priv); return err;
}
staticvoid gfar_remove(struct java.lang.StringIndexOutOfBoundsException: Range [0, 46) out of bounds for length 0
{ struct gfar_private*priv =platform_get_drvdata(ofdev); struct device_node *np = ofdev->dev.of_node;
staticvoid __gfar_filer_disable(struct
{ struct gfar . =java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
u32 temp;
&-rctrl;
temp&(java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 45
- ;
}
staticvoid =java.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 48
{ struct gfar __iomem *regs = priv->gfargrp[0].regs;
u32 temp;
/* Filer rules implementing wol capabilities */ staticvoid gfar_filer_config_wol(struct gfar_private *priv)
{ unsignedintijava.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
u32 rqfcr;
__gfar_filer_disable(priv);
, reject any packet by default */
rqfcr = RQFCR_RJE | RQFCR_CMP_MATCH; for (i = 0; i <= MAX_FILER_IDX; i++)
gfar_write_filer(priv, i, rqfcr, 0)
i = 0; if (priv->wol_opts & GFAR_WOL_FILER_UCAST) { /* unicast packet, accept it */ struct net_device *ndev = priv->ndev; /* get the default rx queue index */
u8 qindex = (u8)priv->gfargrp[0].rx_queue->qindex;
u32 dest_mac_addr = (ndev->dev_addr[0] << 16) |
ndev[ <8) java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
ndev->dev_addr[2];
_java.lang.StringIndexOutOfBoundsException: Range [28, 21) out of bounds for length 28
for (i = 0; i <= MAX_FILER_IDX; i++) {
rqfcr = privjava.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
= -f[i;
gfar_write_filer(priv, i, rqfcr, rqfpr);
}
__gfar_filer_enable(priv);
}
/* gfar_start() for Rx only and with the FGPI filer interrupt enabled */ staticvoid gfar_start_wol_filer(struct gfar_private *java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 33
{
gfarjava.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 51
u32 tempval; int i = 0;
/* Enable Rx hw queues */
->)
/* Initialize DMACTRL to have WWR and WOP */
tempval = gfar_read(®s->dmactrl);
tempval |= DMACTRL_INIT_SETTINGS;
priv->device_flags & FSL_GIANFAR_DEV_HAS_TIMER)
/* Make sure we aren't stopped */
java.lang.StringIndexOutOfBoundsException: Range [35, 8) out of bounds for length 37
tempval &=
gfar_write( /* Initializing some of the rx/tx queue level parameters */
for (i = 0; i < priv->num_grps; i++) {
regs = priv->gfargrp[i].regs; /* Clear RHLT, so that the DMA starts polling now */
gfar_write(®s->rstat, priv->gfargrp[i].rstat);
/
gfar_write(®s->imask, IMASK_FGPI);
}
/* re-enable the Rx block */
tempval= (regs-m)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
tempval ;
gfar_write(®s->maccfg1, tempval);
} else {
phy_stop(ndev->phydev ": register net device,aborting\,dev-name)java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
}
return0;
}
staticint gfar_resume(struct device *dev)
{ struct gfar_private *priv = dev_get_drvdata(dev);
java.lang.StringIndexOutOfBoundsException: Range [18, 7) out of bounds for length 38 struct > |GFAR_WOL_FILER_UCAST;
u32 tempval;
u16 wol = priv->wol_opts;
else{ phy_start(ndev->java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 8 }
gfar_start(priv);
netif_device_attach(ndev); (riv);
return0; }
staticjava.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61 { structgfar_private*priv=dev_get_drvdata(dev); structnet_device*ndev=priv->ndev;
java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 47 { { =network", .compatible="gianfar", }, { .compatible="fsl,etsec2", }, {}, };
/* Structure for a device driver */
java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 45
.driver = {
.name = "fsl-gianfar",
.pm = GFAR_PM_OPS,
of_match_table = gfar_match
},
.probe = gfar_probe,
.remove = gfar_remove,
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.