1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365 |
- From 2ed7bff3d1f2fa6c5f6eff0b2bd98deaa3dc18b0 Mon Sep 17 00:00:00 2001
- From: Yangbo Lu <[email protected]>
- Date: Mon, 25 Sep 2017 10:57:14 +0800
- Subject: [PATCH] net: support layerscape
- This is a integrated patch for layerscape net support.
- Signed-off-by: Madalin Bucur <[email protected]>
- Signed-off-by: Zhao Qiang <[email protected]>
- Signed-off-by: Camelia Groza <[email protected]>
- Signed-off-by: Madalin Bucur <[email protected]>
- Signed-off-by: Zhang Ying-22455 <[email protected]>
- Signed-off-by: Ramneek Mehresh <[email protected]>
- Signed-off-by: Jarod Wilson <[email protected]>
- Signed-off-by: Nikhil Badola <[email protected]>
- Signed-off-by: stephen hemminger <[email protected]>
- Signed-off-by: Arnd Bergmann <[email protected]>
- Signed-off-by: Yangbo Lu <[email protected]>
- ---
- drivers/base/devres.c | 66 +++++++++++++++
- drivers/base/soc.c | 66 +++++++++++++++
- drivers/net/bonding/bond_main.c | 10 +--
- drivers/net/dummy.c | 5 +-
- drivers/net/ethernet/amazon/ena/ena_netdev.c | 10 +--
- drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 6 +-
- drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 4 +-
- drivers/net/ethernet/atheros/alx/main.c | 6 +-
- drivers/net/ethernet/broadcom/b44.c | 5 +-
- drivers/net/ethernet/broadcom/bnx2.c | 5 +-
- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 6 +-
- drivers/net/ethernet/broadcom/tg3.c | 8 +-
- drivers/net/ethernet/brocade/bna/bnad.c | 6 +-
- drivers/net/ethernet/calxeda/xgmac.c | 5 +-
- drivers/net/ethernet/cavium/thunder/nicvf_main.c | 5 +-
- drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 7 +-
- drivers/net/ethernet/cisco/enic/enic_main.c | 8 +-
- drivers/net/ethernet/ec_bhf.c | 4 +-
- drivers/net/ethernet/emulex/benet/be_main.c | 5 +-
- drivers/net/ethernet/hisilicon/hns/hns_enet.c | 6 +-
- drivers/net/ethernet/ibm/ehea/ehea_main.c | 5 +-
- drivers/net/ethernet/intel/e1000e/e1000.h | 4 +-
- drivers/net/ethernet/intel/e1000e/netdev.c | 5 +-
- drivers/net/ethernet/intel/fm10k/fm10k_netdev.c | 6 +-
- drivers/net/ethernet/intel/i40e/i40e.h | 5 +-
- drivers/net/ethernet/intel/i40e/i40e_main.c | 18 ++--
- drivers/net/ethernet/intel/igb/igb_main.c | 10 +--
- drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 7 +-
- drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 6 +-
- drivers/net/ethernet/marvell/mvneta.c | 4 +-
- drivers/net/ethernet/marvell/mvpp2.c | 4 +-
- drivers/net/ethernet/marvell/sky2.c | 6 +-
- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 6 +-
- drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 4 +-
- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 3 +-
- drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 4 +-
- drivers/net/ethernet/mellanox/mlxsw/switchx2.c | 3 +-
- drivers/net/ethernet/myricom/myri10ge/myri10ge.c | 9 +-
- drivers/net/ethernet/neterion/vxge/vxge-main.c | 4 +-
- .../net/ethernet/netronome/nfp/nfp_net_common.c | 6 +-
- drivers/net/ethernet/nvidia/forcedeth.c | 4 +-
- .../net/ethernet/qlogic/netxen/netxen_nic_main.c | 10 +--
- drivers/net/ethernet/qlogic/qede/qede_main.c | 7 +-
- drivers/net/ethernet/qualcomm/emac/emac.c | 6 +-
- drivers/net/ethernet/realtek/8139too.c | 9 +-
- drivers/net/ethernet/realtek/r8169.c | 4 +-
- drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c | 8 +-
- drivers/net/ethernet/sfc/efx.c | 6 +-
- drivers/net/ethernet/sun/niu.c | 6 +-
- drivers/net/ethernet/synopsys/dwc_eth_qos.c | 4 +-
- drivers/net/ethernet/tile/tilepro.c | 4 +-
- drivers/net/ethernet/via/via-rhine.c | 8 +-
- drivers/net/fjes/fjes_main.c | 7 +-
- drivers/net/hyperv/netvsc_drv.c | 6 +-
- drivers/net/ifb.c | 6 +-
- drivers/net/ipvlan/ipvlan_main.c | 5 +-
- drivers/net/loopback.c | 5 +-
- drivers/net/macsec.c | 8 +-
- drivers/net/macvlan.c | 5 +-
- drivers/net/nlmon.c | 4 +-
- drivers/net/ppp/ppp_generic.c | 4 +-
- drivers/net/slip/slip.c | 3 +-
- drivers/net/team/team.c | 3 +-
- drivers/net/tun.c | 3 +-
- drivers/net/veth.c | 6 +-
- drivers/net/virtio_net.c | 6 +-
- drivers/net/vmxnet3/vmxnet3_ethtool.c | 4 +-
- drivers/net/vmxnet3/vmxnet3_int.h | 4 +-
- drivers/net/vrf.c | 5 +-
- drivers/net/xen-netfront.c | 6 +-
- drivers/staging/netlogic/xlr_net.c | 10 +--
- include/linux/device.h | 19 +++++
- include/linux/fsl/svr.h | 97 ++++++++++++++++++++++
- include/linux/fsl_devices.h | 3 +
- include/linux/netdev_features.h | 2 +
- include/linux/netdevice.h | 12 ++-
- include/linux/skbuff.h | 2 +
- include/linux/sys_soc.h | 3 +
- include/net/ip_tunnels.h | 4 +-
- include/uapi/linux/if_ether.h | 1 +
- net/8021q/vlan_dev.c | 5 +-
- net/bridge/br_device.c | 6 +-
- net/core/dev.c | 13 ++-
- net/core/skbuff.c | 29 ++++++-
- net/ipv4/ip_tunnel_core.c | 6 +-
- net/l2tp/l2tp_eth.c | 6 +-
- net/mac80211/iface.c | 4 +-
- net/openvswitch/vport-internal_dev.c | 4 +-
- net/sched/sch_generic.c | 7 ++
- net/sched/sch_teql.c | 5 +-
- 90 files changed, 468 insertions(+), 298 deletions(-)
- create mode 100644 include/linux/fsl/svr.h
- --- a/drivers/base/devres.c
- +++ b/drivers/base/devres.c
- @@ -10,6 +10,7 @@
- #include <linux/device.h>
- #include <linux/module.h>
- #include <linux/slab.h>
- +#include <linux/percpu.h>
-
- #include "base.h"
-
- @@ -985,3 +986,68 @@ void devm_free_pages(struct device *dev,
- &devres));
- }
- EXPORT_SYMBOL_GPL(devm_free_pages);
- +
- +static void devm_percpu_release(struct device *dev, void *pdata)
- +{
- + void __percpu *p;
- +
- + p = *(void __percpu **)pdata;
- + free_percpu(p);
- +}
- +
- +static int devm_percpu_match(struct device *dev, void *data, void *p)
- +{
- + struct devres *devr = container_of(data, struct devres, data);
- +
- + return *(void **)devr->data == p;
- +}
- +
- +/**
- + * __devm_alloc_percpu - Resource-managed alloc_percpu
- + * @dev: Device to allocate per-cpu memory for
- + * @size: Size of per-cpu memory to allocate
- + * @align: Alignment of per-cpu memory to allocate
- + *
- + * Managed alloc_percpu. Per-cpu memory allocated with this function is
- + * automatically freed on driver detach.
- + *
- + * RETURNS:
- + * Pointer to allocated memory on success, NULL on failure.
- + */
- +void __percpu *__devm_alloc_percpu(struct device *dev, size_t size,
- + size_t align)
- +{
- + void *p;
- + void __percpu *pcpu;
- +
- + pcpu = __alloc_percpu(size, align);
- + if (!pcpu)
- + return NULL;
- +
- + p = devres_alloc(devm_percpu_release, sizeof(void *), GFP_KERNEL);
- + if (!p) {
- + free_percpu(pcpu);
- + return NULL;
- + }
- +
- + *(void __percpu **)p = pcpu;
- +
- + devres_add(dev, p);
- +
- + return pcpu;
- +}
- +EXPORT_SYMBOL_GPL(__devm_alloc_percpu);
- +
- +/**
- + * devm_free_percpu - Resource-managed free_percpu
- + * @dev: Device this memory belongs to
- + * @pdata: Per-cpu memory to free
- + *
- + * Free memory allocated with devm_alloc_percpu().
- + */
- +void devm_free_percpu(struct device *dev, void __percpu *pdata)
- +{
- + WARN_ON(devres_destroy(dev, devm_percpu_release, devm_percpu_match,
- + (void *)pdata));
- +}
- +EXPORT_SYMBOL_GPL(devm_free_percpu);
- --- a/drivers/base/soc.c
- +++ b/drivers/base/soc.c
- @@ -13,6 +13,7 @@
- #include <linux/spinlock.h>
- #include <linux/sys_soc.h>
- #include <linux/err.h>
- +#include <linux/glob.h>
-
- static DEFINE_IDA(soc_ida);
-
- @@ -159,3 +160,68 @@ static int __init soc_bus_register(void)
- return bus_register(&soc_bus_type);
- }
- core_initcall(soc_bus_register);
- +
- +static int soc_device_match_one(struct device *dev, void *arg)
- +{
- + struct soc_device *soc_dev = container_of(dev, struct soc_device, dev);
- + const struct soc_device_attribute *match = arg;
- +
- + if (match->machine &&
- + !glob_match(match->machine, soc_dev->attr->machine))
- + return 0;
- +
- + if (match->family &&
- + !glob_match(match->family, soc_dev->attr->family))
- + return 0;
- +
- + if (match->revision &&
- + !glob_match(match->revision, soc_dev->attr->revision))
- + return 0;
- +
- + if (match->soc_id &&
- + !glob_match(match->soc_id, soc_dev->attr->soc_id))
- + return 0;
- +
- + return 1;
- +}
- +
- +/*
- + * soc_device_match - identify the SoC in the machine
- + * @matches: zero-terminated array of possible matches
- + *
- + * returns the first matching entry of the argument array, or NULL
- + * if none of them match.
- + *
- + * This function is meant as a helper in place of of_match_node()
- + * in cases where either no device tree is available or the information
- + * in a device node is insufficient to identify a particular variant
- + * by its compatible strings or other properties. For new devices,
- + * the DT binding should always provide unique compatible strings
- + * that allow the use of of_match_node() instead.
- + *
- + * The calling function can use the .data entry of the
- + * soc_device_attribute to pass a structure or function pointer for
- + * each entry.
- + */
- +const struct soc_device_attribute *soc_device_match(
- + const struct soc_device_attribute *matches)
- +{
- + int ret = 0;
- +
- + if (!matches)
- + return NULL;
- +
- + while (!ret) {
- + if (!(matches->machine || matches->family ||
- + matches->revision || matches->soc_id))
- + break;
- + ret = bus_for_each_dev(&soc_bus_type, NULL, (void *)matches,
- + soc_device_match_one);
- + if (!ret)
- + matches++;
- + else
- + return matches;
- + }
- + return NULL;
- +}
- +EXPORT_SYMBOL_GPL(soc_device_match);
- --- a/drivers/net/bonding/bond_main.c
- +++ b/drivers/net/bonding/bond_main.c
- @@ -211,8 +211,8 @@ static int lacp_fast;
-
- static int bond_init(struct net_device *bond_dev);
- static void bond_uninit(struct net_device *bond_dev);
- -static struct rtnl_link_stats64 *bond_get_stats(struct net_device *bond_dev,
- - struct rtnl_link_stats64 *stats);
- +static void bond_get_stats(struct net_device *bond_dev,
- + struct rtnl_link_stats64 *stats);
- static void bond_slave_arr_handler(struct work_struct *work);
- static bool bond_time_in_interval(struct bonding *bond, unsigned long last_act,
- int mod);
- @@ -3336,8 +3336,8 @@ static void bond_fold_stats(struct rtnl_
- }
- }
-
- -static struct rtnl_link_stats64 *bond_get_stats(struct net_device *bond_dev,
- - struct rtnl_link_stats64 *stats)
- +static void bond_get_stats(struct net_device *bond_dev,
- + struct rtnl_link_stats64 *stats)
- {
- struct bonding *bond = netdev_priv(bond_dev);
- struct rtnl_link_stats64 temp;
- @@ -3361,8 +3361,6 @@ static struct rtnl_link_stats64 *bond_ge
-
- memcpy(&bond->bond_stats, stats, sizeof(*stats));
- spin_unlock(&bond->stats_lock);
- -
- - return stats;
- }
-
- static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd)
- --- a/drivers/net/dummy.c
- +++ b/drivers/net/dummy.c
- @@ -54,8 +54,8 @@ struct pcpu_dstats {
- struct u64_stats_sync syncp;
- };
-
- -static struct rtnl_link_stats64 *dummy_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *stats)
- +static void dummy_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats)
- {
- int i;
-
- @@ -73,7 +73,6 @@ static struct rtnl_link_stats64 *dummy_g
- stats->tx_bytes += tbytes;
- stats->tx_packets += tpackets;
- }
- - return stats;
- }
-
- static netdev_tx_t dummy_xmit(struct sk_buff *skb, struct net_device *dev)
- --- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
- +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
- @@ -2172,19 +2172,19 @@ err:
- ena_com_delete_debug_area(adapter->ena_dev);
- }
-
- -static struct rtnl_link_stats64 *ena_get_stats64(struct net_device *netdev,
- - struct rtnl_link_stats64 *stats)
- +static void ena_get_stats64(struct net_device *netdev,
- + struct rtnl_link_stats64 *stats)
- {
- struct ena_adapter *adapter = netdev_priv(netdev);
- struct ena_admin_basic_stats ena_stats;
- int rc;
-
- if (!test_bit(ENA_FLAG_DEV_UP, &adapter->flags))
- - return NULL;
- + return;
-
- rc = ena_com_get_dev_basic_stats(adapter->ena_dev, &ena_stats);
- if (rc)
- - return NULL;
- + return;
-
- stats->tx_bytes = ((u64)ena_stats.tx_bytes_high << 32) |
- ena_stats.tx_bytes_low;
- @@ -2211,8 +2211,6 @@ static struct rtnl_link_stats64 *ena_get
-
- stats->rx_errors = 0;
- stats->tx_errors = 0;
- -
- - return stats;
- }
-
- static const struct net_device_ops ena_netdev_ops = {
- --- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
- +++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
- @@ -1542,8 +1542,8 @@ static void xgbe_tx_timeout(struct net_d
- schedule_work(&pdata->restart_work);
- }
-
- -static struct rtnl_link_stats64 *xgbe_get_stats64(struct net_device *netdev,
- - struct rtnl_link_stats64 *s)
- +static void xgbe_get_stats64(struct net_device *netdev,
- + struct rtnl_link_stats64 *s)
- {
- struct xgbe_prv_data *pdata = netdev_priv(netdev);
- struct xgbe_mmc_stats *pstats = &pdata->mmc_stats;
- @@ -1569,8 +1569,6 @@ static struct rtnl_link_stats64 *xgbe_ge
- s->tx_dropped = netdev->stats.tx_dropped;
-
- DBGPR("<--%s\n", __func__);
- -
- - return s;
- }
-
- static int xgbe_vlan_rx_add_vid(struct net_device *netdev, __be16 proto,
- --- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
- +++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
- @@ -1199,7 +1199,7 @@ err:
- return ret;
- }
-
- -static struct rtnl_link_stats64 *xgene_enet_get_stats64(
- +static void xgene_enet_get_stats64(
- struct net_device *ndev,
- struct rtnl_link_stats64 *storage)
- {
- @@ -1230,8 +1230,6 @@ static struct rtnl_link_stats64 *xgene_e
- }
- }
- memcpy(storage, stats, sizeof(struct rtnl_link_stats64));
- -
- - return storage;
- }
-
- static int xgene_enet_set_mac_address(struct net_device *ndev, void *addr)
- --- a/drivers/net/ethernet/atheros/alx/main.c
- +++ b/drivers/net/ethernet/atheros/alx/main.c
- @@ -1424,8 +1424,8 @@ static void alx_poll_controller(struct n
- }
- #endif
-
- -static struct rtnl_link_stats64 *alx_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *net_stats)
- +static void alx_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *net_stats)
- {
- struct alx_priv *alx = netdev_priv(dev);
- struct alx_hw_stats *hw_stats = &alx->hw.stats;
- @@ -1469,8 +1469,6 @@ static struct rtnl_link_stats64 *alx_get
- net_stats->rx_packets = hw_stats->rx_ok + net_stats->rx_errors;
-
- spin_unlock(&alx->stats_lock);
- -
- - return net_stats;
- }
-
- static const struct net_device_ops alx_netdev_ops = {
- --- a/drivers/net/ethernet/broadcom/b44.c
- +++ b/drivers/net/ethernet/broadcom/b44.c
- @@ -1677,8 +1677,8 @@ static int b44_close(struct net_device *
- return 0;
- }
-
- -static struct rtnl_link_stats64 *b44_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *nstat)
- +static void b44_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *nstat)
- {
- struct b44 *bp = netdev_priv(dev);
- struct b44_hw_stats *hwstat = &bp->hw_stats;
- @@ -1721,7 +1721,6 @@ static struct rtnl_link_stats64 *b44_get
- #endif
- } while (u64_stats_fetch_retry_irq(&hwstat->syncp, start));
-
- - return nstat;
- }
-
- static int __b44_load_mcast(struct b44 *bp, struct net_device *dev)
- --- a/drivers/net/ethernet/broadcom/bnx2.c
- +++ b/drivers/net/ethernet/broadcom/bnx2.c
- @@ -6828,13 +6828,13 @@ bnx2_save_stats(struct bnx2 *bp)
- (unsigned long) (bp->stats_blk->ctr + \
- bp->temp_stats_blk->ctr)
-
- -static struct rtnl_link_stats64 *
- +static void
- bnx2_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *net_stats)
- {
- struct bnx2 *bp = netdev_priv(dev);
-
- if (bp->stats_blk == NULL)
- - return net_stats;
- + return;
-
- net_stats->rx_packets =
- GET_64BIT_NET_STATS(stat_IfHCInUcastPkts) +
- @@ -6898,7 +6898,6 @@ bnx2_get_stats64(struct net_device *dev,
- GET_32BIT_NET_STATS(stat_IfInMBUFDiscards) +
- GET_32BIT_NET_STATS(stat_FwRxDrop);
-
- - return net_stats;
- }
-
- /* All ethtool functions called with rtnl_lock */
- --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
- +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
- @@ -5664,7 +5664,7 @@ static int bnxt_ioctl(struct net_device
- return -EOPNOTSUPP;
- }
-
- -static struct rtnl_link_stats64 *
- +static void
- bnxt_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
- {
- u32 i;
- @@ -5673,7 +5673,7 @@ bnxt_get_stats64(struct net_device *dev,
- memset(stats, 0, sizeof(struct rtnl_link_stats64));
-
- if (!bp->bnapi)
- - return stats;
- + return;
-
- /* TODO check if we need to synchronize with bnxt_close path */
- for (i = 0; i < bp->cp_nr_rings; i++) {
- @@ -5720,8 +5720,6 @@ bnxt_get_stats64(struct net_device *dev,
- stats->tx_fifo_errors = le64_to_cpu(tx->tx_fifo_underruns);
- stats->tx_errors = le64_to_cpu(tx->tx_err);
- }
- -
- - return stats;
- }
-
- static bool bnxt_mc_list_updated(struct bnxt *bp, u32 *rx_mask)
- --- a/drivers/net/ethernet/broadcom/tg3.c
- +++ b/drivers/net/ethernet/broadcom/tg3.c
- @@ -14145,8 +14145,8 @@ static const struct ethtool_ops tg3_etht
- .set_link_ksettings = tg3_set_link_ksettings,
- };
-
- -static struct rtnl_link_stats64 *tg3_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *stats)
- +static void tg3_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats)
- {
- struct tg3 *tp = netdev_priv(dev);
-
- @@ -14154,13 +14154,11 @@ static struct rtnl_link_stats64 *tg3_get
- if (!tp->hw_stats) {
- *stats = tp->net_stats_prev;
- spin_unlock_bh(&tp->lock);
- - return stats;
- + return;
- }
-
- tg3_get_nstats(tp, stats);
- spin_unlock_bh(&tp->lock);
- -
- - return stats;
- }
-
- static void tg3_set_rx_mode(struct net_device *dev)
- --- a/drivers/net/ethernet/brocade/bna/bnad.c
- +++ b/drivers/net/ethernet/brocade/bna/bnad.c
- @@ -3111,7 +3111,7 @@ bnad_start_xmit(struct sk_buff *skb, str
- * Used spin_lock to synchronize reading of stats structures, which
- * is written by BNA under the same lock.
- */
- -static struct rtnl_link_stats64 *
- +static void
- bnad_get_stats64(struct net_device *netdev, struct rtnl_link_stats64 *stats)
- {
- struct bnad *bnad = netdev_priv(netdev);
- @@ -3123,8 +3123,6 @@ bnad_get_stats64(struct net_device *netd
- bnad_netdev_hwstats_fill(bnad, stats);
-
- spin_unlock_irqrestore(&bnad->bna_lock, flags);
- -
- - return stats;
- }
-
- static void
- @@ -3430,7 +3428,7 @@ static const struct net_device_ops bnad_
- .ndo_open = bnad_open,
- .ndo_stop = bnad_stop,
- .ndo_start_xmit = bnad_start_xmit,
- - .ndo_get_stats64 = bnad_get_stats64,
- + .ndo_get_stats64 = bnad_get_stats64,
- .ndo_set_rx_mode = bnad_set_rx_mode,
- .ndo_validate_addr = eth_validate_addr,
- .ndo_set_mac_address = bnad_set_mac_address,
- --- a/drivers/net/ethernet/calxeda/xgmac.c
- +++ b/drivers/net/ethernet/calxeda/xgmac.c
- @@ -1460,9 +1460,9 @@ static void xgmac_poll_controller(struct
- }
- #endif
-
- -static struct rtnl_link_stats64 *
- +static void
- xgmac_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *storage)
- + struct rtnl_link_stats64 *storage)
- {
- struct xgmac_priv *priv = netdev_priv(dev);
- void __iomem *base = priv->base;
- @@ -1490,7 +1490,6 @@ xgmac_get_stats64(struct net_device *dev
-
- writel(0, base + XGMAC_MMC_CTRL);
- spin_unlock_bh(&priv->stats_lock);
- - return storage;
- }
-
- static int xgmac_set_mac_address(struct net_device *dev, void *p)
- --- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c
- +++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
- @@ -1423,8 +1423,8 @@ void nicvf_update_stats(struct nicvf *ni
- nicvf_update_sq_stats(nic, qidx);
- }
-
- -static struct rtnl_link_stats64 *nicvf_get_stats64(struct net_device *netdev,
- - struct rtnl_link_stats64 *stats)
- +static void nicvf_get_stats64(struct net_device *netdev,
- + struct rtnl_link_stats64 *stats)
- {
- struct nicvf *nic = netdev_priv(netdev);
- struct nicvf_hw_stats *hw_stats = &nic->hw_stats;
- @@ -1440,7 +1440,6 @@ static struct rtnl_link_stats64 *nicvf_g
- stats->tx_packets = hw_stats->tx_frames;
- stats->tx_dropped = hw_stats->tx_drops;
-
- - return stats;
- }
-
- static void nicvf_tx_timeout(struct net_device *dev)
- --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
- +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
- @@ -2383,8 +2383,8 @@ int cxgb4_remove_server_filter(const str
- }
- EXPORT_SYMBOL(cxgb4_remove_server_filter);
-
- -static struct rtnl_link_stats64 *cxgb_get_stats(struct net_device *dev,
- - struct rtnl_link_stats64 *ns)
- +static void cxgb_get_stats(struct net_device *dev,
- + struct rtnl_link_stats64 *ns)
- {
- struct port_stats stats;
- struct port_info *p = netdev_priv(dev);
- @@ -2397,7 +2397,7 @@ static struct rtnl_link_stats64 *cxgb_ge
- spin_lock(&adapter->stats_lock);
- if (!netif_device_present(dev)) {
- spin_unlock(&adapter->stats_lock);
- - return ns;
- + return;
- }
- t4_get_port_stats_offset(adapter, p->tx_chan, &stats,
- &p->stats_base);
- @@ -2431,7 +2431,6 @@ static struct rtnl_link_stats64 *cxgb_ge
- ns->tx_errors = stats.tx_error_frames;
- ns->rx_errors = stats.rx_symbol_err + stats.rx_fcs_err +
- ns->rx_length_errors + stats.rx_len_err + ns->rx_fifo_errors;
- - return ns;
- }
-
- static int cxgb_ioctl(struct net_device *dev, struct ifreq *req, int cmd)
- --- a/drivers/net/ethernet/cisco/enic/enic_main.c
- +++ b/drivers/net/ethernet/cisco/enic/enic_main.c
- @@ -680,8 +680,8 @@ static netdev_tx_t enic_hard_start_xmit(
- }
-
- /* dev_base_lock rwlock held, nominally process context */
- -static struct rtnl_link_stats64 *enic_get_stats(struct net_device *netdev,
- - struct rtnl_link_stats64 *net_stats)
- +static void enic_get_stats(struct net_device *netdev,
- + struct rtnl_link_stats64 *net_stats)
- {
- struct enic *enic = netdev_priv(netdev);
- struct vnic_stats *stats;
- @@ -693,7 +693,7 @@ static struct rtnl_link_stats64 *enic_ge
- * recorded stats.
- */
- if (err == -ENOMEM)
- - return net_stats;
- + return;
-
- net_stats->tx_packets = stats->tx.tx_frames_ok;
- net_stats->tx_bytes = stats->tx.tx_bytes_ok;
- @@ -707,8 +707,6 @@ static struct rtnl_link_stats64 *enic_ge
- net_stats->rx_over_errors = enic->rq_truncated_pkts;
- net_stats->rx_crc_errors = enic->rq_bad_fcs;
- net_stats->rx_dropped = stats->rx.rx_no_bufs + stats->rx.rx_drop;
- -
- - return net_stats;
- }
-
- static int enic_mc_sync(struct net_device *netdev, const u8 *mc_addr)
- --- a/drivers/net/ethernet/ec_bhf.c
- +++ b/drivers/net/ethernet/ec_bhf.c
- @@ -458,7 +458,7 @@ static int ec_bhf_stop(struct net_device
- return 0;
- }
-
- -static struct rtnl_link_stats64 *
- +static void
- ec_bhf_get_stats(struct net_device *net_dev,
- struct rtnl_link_stats64 *stats)
- {
- @@ -473,8 +473,6 @@ ec_bhf_get_stats(struct net_device *net_
-
- stats->tx_bytes = priv->stat_tx_bytes;
- stats->rx_bytes = priv->stat_rx_bytes;
- -
- - return stats;
- }
-
- static const struct net_device_ops ec_bhf_netdev_ops = {
- --- a/drivers/net/ethernet/emulex/benet/be_main.c
- +++ b/drivers/net/ethernet/emulex/benet/be_main.c
- @@ -646,8 +646,8 @@ void be_parse_stats(struct be_adapter *a
- }
- }
-
- -static struct rtnl_link_stats64 *be_get_stats64(struct net_device *netdev,
- - struct rtnl_link_stats64 *stats)
- +static void be_get_stats64(struct net_device *netdev,
- + struct rtnl_link_stats64 *stats)
- {
- struct be_adapter *adapter = netdev_priv(netdev);
- struct be_drv_stats *drvs = &adapter->drv_stats;
- @@ -711,7 +711,6 @@ static struct rtnl_link_stats64 *be_get_
- stats->rx_fifo_errors = drvs->rxpp_fifo_overflow_drop +
- drvs->rx_input_fifo_overflow_drop +
- drvs->rx_drops_no_pbuf;
- - return stats;
- }
-
- void be_link_status_update(struct be_adapter *adapter, u8 link_status)
- --- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c
- +++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
- @@ -1536,8 +1536,8 @@ void hns_nic_set_rx_mode(struct net_devi
- hns_set_multicast_list(ndev);
- }
-
- -struct rtnl_link_stats64 *hns_nic_get_stats64(struct net_device *ndev,
- - struct rtnl_link_stats64 *stats)
- +static void hns_nic_get_stats64(struct net_device *ndev,
- + struct rtnl_link_stats64 *stats)
- {
- int idx = 0;
- u64 tx_bytes = 0;
- @@ -1579,8 +1579,6 @@ struct rtnl_link_stats64 *hns_nic_get_st
- stats->tx_window_errors = ndev->stats.tx_window_errors;
- stats->rx_compressed = ndev->stats.rx_compressed;
- stats->tx_compressed = ndev->stats.tx_compressed;
- -
- - return stats;
- }
-
- static u16
- --- a/drivers/net/ethernet/ibm/ehea/ehea_main.c
- +++ b/drivers/net/ethernet/ibm/ehea/ehea_main.c
- @@ -328,8 +328,8 @@ out:
- spin_unlock_irqrestore(&ehea_bcmc_regs.lock, flags);
- }
-
- -static struct rtnl_link_stats64 *ehea_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *stats)
- +static void ehea_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats)
- {
- struct ehea_port *port = netdev_priv(dev);
- u64 rx_packets = 0, tx_packets = 0, rx_bytes = 0, tx_bytes = 0;
- @@ -352,7 +352,6 @@ static struct rtnl_link_stats64 *ehea_ge
-
- stats->multicast = port->stats.multicast;
- stats->rx_errors = port->stats.rx_errors;
- - return stats;
- }
-
- static void ehea_update_stats(struct work_struct *work)
- --- a/drivers/net/ethernet/intel/e1000e/e1000.h
- +++ b/drivers/net/ethernet/intel/e1000e/e1000.h
- @@ -493,8 +493,8 @@ int e1000e_setup_rx_resources(struct e10
- int e1000e_setup_tx_resources(struct e1000_ring *ring);
- void e1000e_free_rx_resources(struct e1000_ring *ring);
- void e1000e_free_tx_resources(struct e1000_ring *ring);
- -struct rtnl_link_stats64 *e1000e_get_stats64(struct net_device *netdev,
- - struct rtnl_link_stats64 *stats);
- +void e1000e_get_stats64(struct net_device *netdev,
- + struct rtnl_link_stats64 *stats);
- void e1000e_set_interrupt_capability(struct e1000_adapter *adapter);
- void e1000e_reset_interrupt_capability(struct e1000_adapter *adapter);
- void e1000e_get_hw_control(struct e1000_adapter *adapter);
- --- a/drivers/net/ethernet/intel/e1000e/netdev.c
- +++ b/drivers/net/ethernet/intel/e1000e/netdev.c
- @@ -5939,8 +5939,8 @@ static void e1000_reset_task(struct work
- *
- * Returns the address of the device statistics structure.
- **/
- -struct rtnl_link_stats64 *e1000e_get_stats64(struct net_device *netdev,
- - struct rtnl_link_stats64 *stats)
- +void e1000e_get_stats64(struct net_device *netdev,
- + struct rtnl_link_stats64 *stats)
- {
- struct e1000_adapter *adapter = netdev_priv(netdev);
-
- @@ -5977,7 +5977,6 @@ struct rtnl_link_stats64 *e1000e_get_sta
- /* Tx Dropped needs to be maintained elsewhere */
-
- spin_unlock(&adapter->stats64_lock);
- - return stats;
- }
-
- /**
- --- a/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c
- +++ b/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c
- @@ -1128,8 +1128,8 @@ void fm10k_reset_rx_state(struct fm10k_i
- * Returns 64bit statistics, for use in the ndo_get_stats64 callback. This
- * function replaces fm10k_get_stats for kernels which support it.
- */
- -static struct rtnl_link_stats64 *fm10k_get_stats64(struct net_device *netdev,
- - struct rtnl_link_stats64 *stats)
- +static void fm10k_get_stats64(struct net_device *netdev,
- + struct rtnl_link_stats64 *stats)
- {
- struct fm10k_intfc *interface = netdev_priv(netdev);
- struct fm10k_ring *ring;
- @@ -1174,8 +1174,6 @@ static struct rtnl_link_stats64 *fm10k_g
-
- /* following stats updated by fm10k_service_task() */
- stats->rx_missed_errors = netdev->stats.rx_missed_errors;
- -
- - return stats;
- }
-
- int fm10k_setup_tc(struct net_device *dev, u8 tc)
- --- a/drivers/net/ethernet/intel/i40e/i40e.h
- +++ b/drivers/net/ethernet/intel/i40e/i40e.h
- @@ -797,9 +797,8 @@ static inline void i40e_irq_dynamic_enab
- void i40e_irq_dynamic_disable_icr0(struct i40e_pf *pf);
- void i40e_irq_dynamic_enable_icr0(struct i40e_pf *pf, bool clearpba);
- #ifdef I40E_FCOE
- -struct rtnl_link_stats64 *i40e_get_netdev_stats_struct(
- - struct net_device *netdev,
- - struct rtnl_link_stats64 *storage);
- +void i40e_get_netdev_stats_struct(struct net_device *netdev,
- + struct rtnl_link_stats64 *storage);
- int i40e_set_mac(struct net_device *netdev, void *p);
- void i40e_set_rx_mode(struct net_device *netdev);
- #endif
- --- a/drivers/net/ethernet/intel/i40e/i40e_main.c
- +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
- @@ -408,15 +408,11 @@ struct rtnl_link_stats64 *i40e_get_vsi_s
- * Returns the address of the device statistics structure.
- * The statistics are actually updated from the service task.
- **/
- -#ifdef I40E_FCOE
- -struct rtnl_link_stats64 *i40e_get_netdev_stats_struct(
- - struct net_device *netdev,
- - struct rtnl_link_stats64 *stats)
- -#else
- -static struct rtnl_link_stats64 *i40e_get_netdev_stats_struct(
- - struct net_device *netdev,
- - struct rtnl_link_stats64 *stats)
- +#ifndef I40E_FCOE
- +static
- #endif
- +void i40e_get_netdev_stats_struct(struct net_device *netdev,
- + struct rtnl_link_stats64 *stats)
- {
- struct i40e_netdev_priv *np = netdev_priv(netdev);
- struct i40e_ring *tx_ring, *rx_ring;
- @@ -425,10 +421,10 @@ static struct rtnl_link_stats64 *i40e_ge
- int i;
-
- if (test_bit(__I40E_DOWN, &vsi->state))
- - return stats;
- + return;
-
- if (!vsi->tx_rings)
- - return stats;
- + return;
-
- rcu_read_lock();
- for (i = 0; i < vsi->num_queue_pairs; i++) {
- @@ -468,8 +464,6 @@ static struct rtnl_link_stats64 *i40e_ge
- stats->rx_dropped = vsi_stats->rx_dropped;
- stats->rx_crc_errors = vsi_stats->rx_crc_errors;
- stats->rx_length_errors = vsi_stats->rx_length_errors;
- -
- - return stats;
- }
-
- /**
- --- a/drivers/net/ethernet/intel/igb/igb_main.c
- +++ b/drivers/net/ethernet/intel/igb/igb_main.c
- @@ -137,8 +137,8 @@ static void igb_update_phy_info(unsigned
- static void igb_watchdog(unsigned long);
- static void igb_watchdog_task(struct work_struct *);
- static netdev_tx_t igb_xmit_frame(struct sk_buff *skb, struct net_device *);
- -static struct rtnl_link_stats64 *igb_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *stats);
- +static void igb_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats);
- static int igb_change_mtu(struct net_device *, int);
- static int igb_set_mac(struct net_device *, void *);
- static void igb_set_uta(struct igb_adapter *adapter, bool set);
- @@ -5386,8 +5386,8 @@ static void igb_reset_task(struct work_s
- * @netdev: network interface device structure
- * @stats: rtnl_link_stats64 pointer
- **/
- -static struct rtnl_link_stats64 *igb_get_stats64(struct net_device *netdev,
- - struct rtnl_link_stats64 *stats)
- +static void igb_get_stats64(struct net_device *netdev,
- + struct rtnl_link_stats64 *stats)
- {
- struct igb_adapter *adapter = netdev_priv(netdev);
-
- @@ -5395,8 +5395,6 @@ static struct rtnl_link_stats64 *igb_get
- igb_update_stats(adapter, &adapter->stats64);
- memcpy(stats, &adapter->stats64, sizeof(*stats));
- spin_unlock(&adapter->stats64_lock);
- -
- - return stats;
- }
-
- /**
- --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
- +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
- @@ -8085,8 +8085,9 @@ static void ixgbe_netpoll(struct net_dev
- }
-
- #endif
- -static struct rtnl_link_stats64 *ixgbe_get_stats64(struct net_device *netdev,
- - struct rtnl_link_stats64 *stats)
- +
- +static void ixgbe_get_stats64(struct net_device *netdev,
- + struct rtnl_link_stats64 *stats)
- {
- struct ixgbe_adapter *adapter = netdev_priv(netdev);
- int i;
- @@ -8124,13 +8125,13 @@ static struct rtnl_link_stats64 *ixgbe_g
- }
- }
- rcu_read_unlock();
- +
- /* following stats updated by ixgbe_watchdog_task() */
- stats->multicast = netdev->stats.multicast;
- stats->rx_errors = netdev->stats.rx_errors;
- stats->rx_length_errors = netdev->stats.rx_length_errors;
- stats->rx_crc_errors = netdev->stats.rx_crc_errors;
- stats->rx_missed_errors = netdev->stats.rx_missed_errors;
- - return stats;
- }
-
- #ifdef CONFIG_IXGBE_DCB
- --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
- +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
- @@ -3880,8 +3880,8 @@ static void ixgbevf_shutdown(struct pci_
- ixgbevf_suspend(pdev, PMSG_SUSPEND);
- }
-
- -static struct rtnl_link_stats64 *ixgbevf_get_stats(struct net_device *netdev,
- - struct rtnl_link_stats64 *stats)
- +static void ixgbevf_get_stats(struct net_device *netdev,
- + struct rtnl_link_stats64 *stats)
- {
- struct ixgbevf_adapter *adapter = netdev_priv(netdev);
- unsigned int start;
- @@ -3914,8 +3914,6 @@ static struct rtnl_link_stats64 *ixgbevf
- stats->tx_bytes += bytes;
- stats->tx_packets += packets;
- }
- -
- - return stats;
- }
-
- #define IXGBEVF_MAX_MAC_HDR_LEN 127
- --- a/drivers/net/ethernet/marvell/mvneta.c
- +++ b/drivers/net/ethernet/marvell/mvneta.c
- @@ -636,7 +636,7 @@ static void mvneta_mib_counters_clear(st
- }
-
- /* Get System Network Statistics */
- -static struct rtnl_link_stats64 *
- +static void
- mvneta_get_stats64(struct net_device *dev,
- struct rtnl_link_stats64 *stats)
- {
- @@ -670,8 +670,6 @@ mvneta_get_stats64(struct net_device *de
- stats->rx_dropped = dev->stats.rx_dropped;
-
- stats->tx_dropped = dev->stats.tx_dropped;
- -
- - return stats;
- }
-
- /* Rx descriptors helper methods */
- --- a/drivers/net/ethernet/marvell/mvpp2.c
- +++ b/drivers/net/ethernet/marvell/mvpp2.c
- @@ -5761,7 +5761,7 @@ error:
- return err;
- }
-
- -static struct rtnl_link_stats64 *
- +static void
- mvpp2_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
- {
- struct mvpp2_port *port = netdev_priv(dev);
- @@ -5793,8 +5793,6 @@ mvpp2_get_stats64(struct net_device *dev
- stats->rx_errors = dev->stats.rx_errors;
- stats->rx_dropped = dev->stats.rx_dropped;
- stats->tx_dropped = dev->stats.tx_dropped;
- -
- - return stats;
- }
-
- static int mvpp2_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
- --- a/drivers/net/ethernet/marvell/sky2.c
- +++ b/drivers/net/ethernet/marvell/sky2.c
- @@ -3898,8 +3898,8 @@ static void sky2_set_multicast(struct ne
- gma_write16(hw, port, GM_RX_CTRL, reg);
- }
-
- -static struct rtnl_link_stats64 *sky2_get_stats(struct net_device *dev,
- - struct rtnl_link_stats64 *stats)
- +static void sky2_get_stats(struct net_device *dev,
- + struct rtnl_link_stats64 *stats)
- {
- struct sky2_port *sky2 = netdev_priv(dev);
- struct sky2_hw *hw = sky2->hw;
- @@ -3939,8 +3939,6 @@ static struct rtnl_link_stats64 *sky2_ge
- stats->rx_dropped = dev->stats.rx_dropped;
- stats->rx_fifo_errors = dev->stats.rx_fifo_errors;
- stats->tx_fifo_errors = dev->stats.tx_fifo_errors;
- -
- - return stats;
- }
-
- /* Can have one global because blinking is controlled by
- --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
- +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
- @@ -462,8 +462,8 @@ static void mtk_stats_update(struct mtk_
- }
- }
-
- -static struct rtnl_link_stats64 *mtk_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *storage)
- +static void mtk_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *storage)
- {
- struct mtk_mac *mac = netdev_priv(dev);
- struct mtk_hw_stats *hw_stats = mac->hw_stats;
- @@ -494,8 +494,6 @@ static struct rtnl_link_stats64 *mtk_get
- storage->tx_errors = dev->stats.tx_errors;
- storage->rx_dropped = dev->stats.rx_dropped;
- storage->tx_dropped = dev->stats.tx_dropped;
- -
- - return storage;
- }
-
- static inline int mtk_max_frag_size(int mtu)
- --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
- +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
- @@ -1316,7 +1316,7 @@ static void mlx4_en_tx_timeout(struct ne
- }
-
-
- -static struct rtnl_link_stats64 *
- +static void
- mlx4_en_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
- {
- struct mlx4_en_priv *priv = netdev_priv(dev);
- @@ -1324,8 +1324,6 @@ mlx4_en_get_stats64(struct net_device *d
- spin_lock_bh(&priv->stats_lock);
- netdev_stats_to_stats64(stats, &dev->stats);
- spin_unlock_bh(&priv->stats_lock);
- -
- - return stats;
- }
-
- static void mlx4_en_set_default_moderation(struct mlx4_en_priv *priv)
- --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
- +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
- @@ -2647,7 +2647,7 @@ mqprio:
- return mlx5e_setup_tc(dev, tc->tc);
- }
-
- -struct rtnl_link_stats64 *
- +static void
- mlx5e_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats)
- {
- struct mlx5e_priv *priv = netdev_priv(dev);
- @@ -2681,7 +2681,6 @@ mlx5e_get_stats(struct net_device *dev,
- stats->multicast =
- VPORT_COUNTER_GET(vstats, received_eth_multicast.packets);
-
- - return stats;
- }
-
- static void mlx5e_set_rx_mode(struct net_device *dev)
- --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
- +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
- @@ -949,15 +949,13 @@ out:
- /* Return the stats from a cache that is updated periodically,
- * as this function might get called in an atomic context.
- */
- -static struct rtnl_link_stats64 *
- +static void
- mlxsw_sp_port_get_stats64(struct net_device *dev,
- struct rtnl_link_stats64 *stats)
- {
- struct mlxsw_sp_port *mlxsw_sp_port = netdev_priv(dev);
-
- memcpy(stats, mlxsw_sp_port->hw_stats.cache, sizeof(*stats));
- -
- - return stats;
- }
-
- int mlxsw_sp_port_vlan_set(struct mlxsw_sp_port *mlxsw_sp_port, u16 vid_begin,
- --- a/drivers/net/ethernet/mellanox/mlxsw/switchx2.c
- +++ b/drivers/net/ethernet/mellanox/mlxsw/switchx2.c
- @@ -351,7 +351,7 @@ static int mlxsw_sx_port_change_mtu(stru
- return 0;
- }
-
- -static struct rtnl_link_stats64 *
- +static void
- mlxsw_sx_port_get_stats64(struct net_device *dev,
- struct rtnl_link_stats64 *stats)
- {
- @@ -380,7 +380,6 @@ mlxsw_sx_port_get_stats64(struct net_dev
- tx_dropped += p->tx_dropped;
- }
- stats->tx_dropped = tx_dropped;
- - return stats;
- }
-
- static const struct net_device_ops mlxsw_sx_port_netdev_ops = {
- --- a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
- +++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
- @@ -378,8 +378,8 @@ static inline void put_be32(__be32 val,
- __raw_writel((__force __u32) val, (__force void __iomem *)p);
- }
-
- -static struct rtnl_link_stats64 *myri10ge_get_stats(struct net_device *dev,
- - struct rtnl_link_stats64 *stats);
- +static void myri10ge_get_stats(struct net_device *dev,
- + struct rtnl_link_stats64 *stats);
-
- static void set_fw_name(struct myri10ge_priv *mgp, char *name, bool allocated)
- {
- @@ -3119,8 +3119,8 @@ drop:
- return NETDEV_TX_OK;
- }
-
- -static struct rtnl_link_stats64 *myri10ge_get_stats(struct net_device *dev,
- - struct rtnl_link_stats64 *stats)
- +static void myri10ge_get_stats(struct net_device *dev,
- + struct rtnl_link_stats64 *stats)
- {
- const struct myri10ge_priv *mgp = netdev_priv(dev);
- const struct myri10ge_slice_netstats *slice_stats;
- @@ -3135,7 +3135,6 @@ static struct rtnl_link_stats64 *myri10g
- stats->rx_dropped += slice_stats->rx_dropped;
- stats->tx_dropped += slice_stats->tx_dropped;
- }
- - return stats;
- }
-
- static void myri10ge_set_multicast_list(struct net_device *dev)
- --- a/drivers/net/ethernet/neterion/vxge/vxge-main.c
- +++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c
- @@ -3116,7 +3116,7 @@ static int vxge_change_mtu(struct net_de
- * @stats: pointer to struct rtnl_link_stats64
- *
- */
- -static struct rtnl_link_stats64 *
- +static void
- vxge_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *net_stats)
- {
- struct vxgedev *vdev = netdev_priv(dev);
- @@ -3155,8 +3155,6 @@ vxge_get_stats64(struct net_device *dev,
- net_stats->tx_bytes += bytes;
- net_stats->tx_errors += txstats->tx_errors;
- }
- -
- - return net_stats;
- }
-
- static enum vxge_hw_status vxge_timestamp_config(struct __vxge_hw_device *devh)
- --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
- +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
- @@ -2400,8 +2400,8 @@ int nfp_net_set_ring_size(struct nfp_net
- return err;
- }
-
- -static struct rtnl_link_stats64 *nfp_net_stat64(struct net_device *netdev,
- - struct rtnl_link_stats64 *stats)
- +static void nfp_net_stat64(struct net_device *netdev,
- + struct rtnl_link_stats64 *stats)
- {
- struct nfp_net *nn = netdev_priv(netdev);
- int r;
- @@ -2431,8 +2431,6 @@ static struct rtnl_link_stats64 *nfp_net
- stats->tx_bytes += data[1];
- stats->tx_errors += data[2];
- }
- -
- - return stats;
- }
-
- static bool nfp_net_ebpf_capable(struct nfp_net *nn)
- --- a/drivers/net/ethernet/nvidia/forcedeth.c
- +++ b/drivers/net/ethernet/nvidia/forcedeth.c
- @@ -1733,7 +1733,7 @@ static void nv_update_stats(struct net_d
- * Called with read_lock(&dev_base_lock) held for read -
- * only synchronized against unregister_netdevice.
- */
- -static struct rtnl_link_stats64*
- +static void
- nv_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *storage)
- __acquires(&netdev_priv(dev)->hwstats_lock)
- __releases(&netdev_priv(dev)->hwstats_lock)
- @@ -1793,8 +1793,6 @@ nv_get_stats64(struct net_device *dev, s
-
- spin_unlock_bh(&np->hwstats_lock);
- }
- -
- - return storage;
- }
-
- /*
- --- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
- +++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
- @@ -90,8 +90,8 @@ static irqreturn_t netxen_msix_intr(int
-
- static void netxen_free_ip_list(struct netxen_adapter *, bool);
- static void netxen_restore_indev_addr(struct net_device *dev, unsigned long);
- -static struct rtnl_link_stats64 *netxen_nic_get_stats(struct net_device *dev,
- - struct rtnl_link_stats64 *stats);
- +static void netxen_nic_get_stats(struct net_device *dev,
- + struct rtnl_link_stats64 *stats);
- static int netxen_nic_set_mac(struct net_device *netdev, void *p);
-
- /* PCI Device ID Table */
- @@ -2295,8 +2295,8 @@ request_reset:
- clear_bit(__NX_RESETTING, &adapter->state);
- }
-
- -static struct rtnl_link_stats64 *netxen_nic_get_stats(struct net_device *netdev,
- - struct rtnl_link_stats64 *stats)
- +static void netxen_nic_get_stats(struct net_device *netdev,
- + struct rtnl_link_stats64 *stats)
- {
- struct netxen_adapter *adapter = netdev_priv(netdev);
-
- @@ -2306,8 +2306,6 @@ static struct rtnl_link_stats64 *netxen_
- stats->tx_bytes = adapter->stats.txbytes;
- stats->rx_dropped = adapter->stats.rxdropped;
- stats->tx_dropped = adapter->stats.txdropped;
- -
- - return stats;
- }
-
- static irqreturn_t netxen_intr(int irq, void *data)
- --- a/drivers/net/ethernet/qlogic/qede/qede_main.c
- +++ b/drivers/net/ethernet/qlogic/qede/qede_main.c
- @@ -1803,9 +1803,8 @@ void qede_fill_by_demand_stats(struct qe
- edev->stats.tx_mac_ctrl_frames = stats.tx_mac_ctrl_frames;
- }
-
- -static
- -struct rtnl_link_stats64 *qede_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *stats)
- +static void qede_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats)
- {
- struct qede_dev *edev = netdev_priv(dev);
-
- @@ -1835,8 +1834,6 @@ struct rtnl_link_stats64 *qede_get_stats
- stats->collisions = edev->stats.tx_total_collisions;
- stats->rx_crc_errors = edev->stats.rx_crc_errors;
- stats->rx_frame_errors = edev->stats.rx_align_errors;
- -
- - return stats;
- }
-
- #ifdef CONFIG_QED_SRIOV
- --- a/drivers/net/ethernet/qualcomm/emac/emac.c
- +++ b/drivers/net/ethernet/qualcomm/emac/emac.c
- @@ -319,8 +319,8 @@ static int emac_ioctl(struct net_device
- }
-
- /* Provide network statistics info for the interface */
- -static struct rtnl_link_stats64 *emac_get_stats64(struct net_device *netdev,
- - struct rtnl_link_stats64 *net_stats)
- +static void emac_get_stats64(struct net_device *netdev,
- + struct rtnl_link_stats64 *net_stats)
- {
- struct emac_adapter *adpt = netdev_priv(netdev);
- unsigned int addr = REG_MAC_RX_STATUS_BIN;
- @@ -384,8 +384,6 @@ static struct rtnl_link_stats64 *emac_ge
- net_stats->tx_window_errors = stats->tx_late_col;
-
- spin_unlock(&stats->lock);
- -
- - return net_stats;
- }
-
- static const struct net_device_ops emac_netdev_ops = {
- --- a/drivers/net/ethernet/realtek/8139too.c
- +++ b/drivers/net/ethernet/realtek/8139too.c
- @@ -653,9 +653,8 @@ static int rtl8139_poll(struct napi_stru
- static irqreturn_t rtl8139_interrupt (int irq, void *dev_instance);
- static int rtl8139_close (struct net_device *dev);
- static int netdev_ioctl (struct net_device *dev, struct ifreq *rq, int cmd);
- -static struct rtnl_link_stats64 *rtl8139_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64
- - *stats);
- +static void rtl8139_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats);
- static void rtl8139_set_rx_mode (struct net_device *dev);
- static void __set_rx_mode (struct net_device *dev);
- static void rtl8139_hw_start (struct net_device *dev);
- @@ -2521,7 +2520,7 @@ static int netdev_ioctl(struct net_devic
- }
-
-
- -static struct rtnl_link_stats64 *
- +static void
- rtl8139_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
- {
- struct rtl8139_private *tp = netdev_priv(dev);
- @@ -2549,8 +2548,6 @@ rtl8139_get_stats64(struct net_device *d
- stats->tx_packets = tp->tx_stats.packets;
- stats->tx_bytes = tp->tx_stats.bytes;
- } while (u64_stats_fetch_retry_irq(&tp->tx_stats.syncp, start));
- -
- - return stats;
- }
-
- /* Set or clear the multicast filter for this adaptor.
- --- a/drivers/net/ethernet/realtek/r8169.c
- +++ b/drivers/net/ethernet/realtek/r8169.c
- @@ -7751,7 +7751,7 @@ err_pm_runtime_put:
- goto out;
- }
-
- -static struct rtnl_link_stats64 *
- +static void
- rtl8169_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
- {
- struct rtl8169_private *tp = netdev_priv(dev);
- @@ -7805,8 +7805,6 @@ rtl8169_get_stats64(struct net_device *d
- le16_to_cpu(tp->tc_offset.tx_aborted);
-
- pm_runtime_put_noidle(&pdev->dev);
- -
- - return stats;
- }
-
- static void rtl8169_net_suspend(struct net_device *dev)
- --- a/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
- +++ b/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
- @@ -1721,11 +1721,9 @@ static inline u64 sxgbe_get_stat64(void
- * This function is a driver entry point whenever ifconfig command gets
- * executed to see device statistics. Statistics are number of
- * bytes sent or received, errors occurred etc.
- - * Return value:
- - * This function returns various statistical information of device.
- */
- -static struct rtnl_link_stats64 *sxgbe_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *stats)
- +static void sxgbe_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats)
- {
- struct sxgbe_priv_data *priv = netdev_priv(dev);
- void __iomem *ioaddr = priv->ioaddr;
- @@ -1776,8 +1774,6 @@ static struct rtnl_link_stats64 *sxgbe_g
- SXGBE_MMC_TXUFLWHI_GBCNT_REG);
- writel(0, ioaddr + SXGBE_MMC_CTL_REG);
- spin_unlock(&priv->stats_lock);
- -
- - return stats;
- }
-
- /* sxgbe_set_features - entry point to set offload features of the device.
- --- a/drivers/net/ethernet/sfc/efx.c
- +++ b/drivers/net/ethernet/sfc/efx.c
- @@ -2232,16 +2232,14 @@ int efx_net_stop(struct net_device *net_
- }
-
- /* Context: process, dev_base_lock or RTNL held, non-blocking. */
- -static struct rtnl_link_stats64 *efx_net_stats(struct net_device *net_dev,
- - struct rtnl_link_stats64 *stats)
- +static void efx_net_stats(struct net_device *net_dev,
- + struct rtnl_link_stats64 *stats)
- {
- struct efx_nic *efx = netdev_priv(net_dev);
-
- spin_lock_bh(&efx->stats_lock);
- efx->type->update_stats(efx, NULL, stats);
- spin_unlock_bh(&efx->stats_lock);
- -
- - return stats;
- }
-
- /* Context: netif_tx_lock held, BHs disabled. */
- --- a/drivers/net/ethernet/sun/niu.c
- +++ b/drivers/net/ethernet/sun/niu.c
- @@ -6294,8 +6294,8 @@ no_rings:
- stats->tx_errors = errors;
- }
-
- -static struct rtnl_link_stats64 *niu_get_stats(struct net_device *dev,
- - struct rtnl_link_stats64 *stats)
- +static void niu_get_stats(struct net_device *dev,
- + struct rtnl_link_stats64 *stats)
- {
- struct niu *np = netdev_priv(dev);
-
- @@ -6303,8 +6303,6 @@ static struct rtnl_link_stats64 *niu_get
- niu_get_rx_stats(np, stats);
- niu_get_tx_stats(np, stats);
- }
- -
- - return stats;
- }
-
- static void niu_load_hash_xmac(struct niu *np, u16 *hash)
- --- a/drivers/net/ethernet/synopsys/dwc_eth_qos.c
- +++ b/drivers/net/ethernet/synopsys/dwc_eth_qos.c
- @@ -2490,7 +2490,7 @@ static void dwceqos_read_mmc_counters(st
- dwceqos_read(lp, DWC_MMC_RXPACKETCOUNT_GB);
- }
-
- -static struct rtnl_link_stats64*
- +static void
- dwceqos_get_stats64(struct net_device *ndev, struct rtnl_link_stats64 *s)
- {
- unsigned long flags;
- @@ -2522,8 +2522,6 @@ dwceqos_get_stats64(struct net_device *n
- else
- s->tx_errors = hwstats->txunderflowerror +
- hwstats->txcarriererror;
- -
- - return s;
- }
-
- static void
- --- a/drivers/net/ethernet/tile/tilepro.c
- +++ b/drivers/net/ethernet/tile/tilepro.c
- @@ -2047,8 +2047,8 @@ static int tile_net_ioctl(struct net_dev
- *
- * Returns the address of the device statistics structure.
- */
- -static struct rtnl_link_stats64 *tile_net_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *stats)
- +static void tile_net_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats)
- {
- struct tile_net_priv *priv = netdev_priv(dev);
- u64 rx_packets = 0, tx_packets = 0;
- --- a/drivers/net/ethernet/via/via-rhine.c
- +++ b/drivers/net/ethernet/via/via-rhine.c
- @@ -513,8 +513,8 @@ static irqreturn_t rhine_interrupt(int i
- static void rhine_tx(struct net_device *dev);
- static int rhine_rx(struct net_device *dev, int limit);
- static void rhine_set_rx_mode(struct net_device *dev);
- -static struct rtnl_link_stats64 *rhine_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *stats);
- +static void rhine_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats);
- static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
- static const struct ethtool_ops netdev_ethtool_ops;
- static int rhine_close(struct net_device *dev);
- @@ -2222,7 +2222,7 @@ out_unlock:
- mutex_unlock(&rp->task_lock);
- }
-
- -static struct rtnl_link_stats64 *
- +static void
- rhine_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
- {
- struct rhine_private *rp = netdev_priv(dev);
- @@ -2245,8 +2245,6 @@ rhine_get_stats64(struct net_device *dev
- stats->tx_packets = rp->tx_stats.packets;
- stats->tx_bytes = rp->tx_stats.bytes;
- } while (u64_stats_fetch_retry_irq(&rp->tx_stats.syncp, start));
- -
- - return stats;
- }
-
- static void rhine_set_rx_mode(struct net_device *dev)
- --- a/drivers/net/fjes/fjes_main.c
- +++ b/drivers/net/fjes/fjes_main.c
- @@ -56,8 +56,7 @@ static void fjes_raise_intr_rxdata_task(
- static void fjes_tx_stall_task(struct work_struct *);
- static void fjes_force_close_task(struct work_struct *);
- static irqreturn_t fjes_intr(int, void*);
- -static struct rtnl_link_stats64 *
- -fjes_get_stats64(struct net_device *, struct rtnl_link_stats64 *);
- +static void fjes_get_stats64(struct net_device *, struct rtnl_link_stats64 *);
- static int fjes_change_mtu(struct net_device *, int);
- static int fjes_vlan_rx_add_vid(struct net_device *, __be16 proto, u16);
- static int fjes_vlan_rx_kill_vid(struct net_device *, __be16 proto, u16);
- @@ -762,14 +761,12 @@ static void fjes_tx_retry(struct net_dev
- netif_tx_wake_queue(queue);
- }
-
- -static struct rtnl_link_stats64 *
- +static void
- fjes_get_stats64(struct net_device *netdev, struct rtnl_link_stats64 *stats)
- {
- struct fjes_adapter *adapter = netdev_priv(netdev);
-
- memcpy(stats, &adapter->stats64, sizeof(struct rtnl_link_stats64));
- -
- - return stats;
- }
-
- static int fjes_change_mtu(struct net_device *netdev, int new_mtu)
- --- a/drivers/net/hyperv/netvsc_drv.c
- +++ b/drivers/net/hyperv/netvsc_drv.c
- @@ -918,8 +918,8 @@ out:
- return ret;
- }
-
- -static struct rtnl_link_stats64 *netvsc_get_stats64(struct net_device *net,
- - struct rtnl_link_stats64 *t)
- +static void netvsc_get_stats64(struct net_device *net,
- + struct rtnl_link_stats64 *t)
- {
- struct net_device_context *ndev_ctx = netdev_priv(net);
- int cpu;
- @@ -957,8 +957,6 @@ static struct rtnl_link_stats64 *netvsc_
-
- t->rx_dropped = net->stats.rx_dropped;
- t->rx_errors = net->stats.rx_errors;
- -
- - return t;
- }
-
- static int netvsc_set_mac_addr(struct net_device *ndev, void *p)
- --- a/drivers/net/ifb.c
- +++ b/drivers/net/ifb.c
- @@ -129,8 +129,8 @@ resched:
-
- }
-
- -static struct rtnl_link_stats64 *ifb_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *stats)
- +static void ifb_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats)
- {
- struct ifb_dev_private *dp = netdev_priv(dev);
- struct ifb_q_private *txp = dp->tx_private;
- @@ -157,8 +157,6 @@ static struct rtnl_link_stats64 *ifb_sta
- }
- stats->rx_dropped = dev->stats.rx_dropped;
- stats->tx_dropped = dev->stats.tx_dropped;
- -
- - return stats;
- }
-
- static int ifb_dev_init(struct net_device *dev)
- --- a/drivers/net/ipvlan/ipvlan_main.c
- +++ b/drivers/net/ipvlan/ipvlan_main.c
- @@ -296,8 +296,8 @@ static void ipvlan_set_multicast_mac_fil
- dev_mc_sync(ipvlan->phy_dev, dev);
- }
-
- -static struct rtnl_link_stats64 *ipvlan_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *s)
- +static void ipvlan_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *s)
- {
- struct ipvl_dev *ipvlan = netdev_priv(dev);
-
- @@ -334,7 +334,6 @@ static struct rtnl_link_stats64 *ipvlan_
- s->rx_dropped = rx_errs;
- s->tx_dropped = tx_drps;
- }
- - return s;
- }
-
- static int ipvlan_vlan_rx_add_vid(struct net_device *dev, __be16 proto, u16 vid)
- --- a/drivers/net/loopback.c
- +++ b/drivers/net/loopback.c
- @@ -97,8 +97,8 @@ static netdev_tx_t loopback_xmit(struct
- return NETDEV_TX_OK;
- }
-
- -static struct rtnl_link_stats64 *loopback_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *stats)
- +static void loopback_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats)
- {
- u64 bytes = 0;
- u64 packets = 0;
- @@ -122,7 +122,6 @@ static struct rtnl_link_stats64 *loopbac
- stats->tx_packets = packets;
- stats->rx_bytes = bytes;
- stats->tx_bytes = bytes;
- - return stats;
- }
-
- static u32 always_on(struct net_device *dev)
- --- a/drivers/net/macsec.c
- +++ b/drivers/net/macsec.c
- @@ -2899,13 +2899,13 @@ static int macsec_change_mtu(struct net_
- return 0;
- }
-
- -static struct rtnl_link_stats64 *macsec_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *s)
- +static void macsec_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *s)
- {
- int cpu;
-
- if (!dev->tstats)
- - return s;
- + return;
-
- for_each_possible_cpu(cpu) {
- struct pcpu_sw_netstats *stats;
- @@ -2929,8 +2929,6 @@ static struct rtnl_link_stats64 *macsec_
-
- s->rx_dropped = dev->stats.rx_dropped;
- s->tx_dropped = dev->stats.tx_dropped;
- -
- - return s;
- }
-
- static int macsec_get_iflink(const struct net_device *dev)
- --- a/drivers/net/macvlan.c
- +++ b/drivers/net/macvlan.c
- @@ -857,8 +857,8 @@ static void macvlan_uninit(struct net_de
- macvlan_port_destroy(port->dev);
- }
-
- -static struct rtnl_link_stats64 *macvlan_dev_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *stats)
- +static void macvlan_dev_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats)
- {
- struct macvlan_dev *vlan = netdev_priv(dev);
-
- @@ -895,7 +895,6 @@ static struct rtnl_link_stats64 *macvlan
- stats->rx_dropped = rx_errors;
- stats->tx_dropped = tx_dropped;
- }
- - return stats;
- }
-
- static int macvlan_vlan_rx_add_vid(struct net_device *dev,
- --- a/drivers/net/nlmon.c
- +++ b/drivers/net/nlmon.c
- @@ -76,7 +76,7 @@ static int nlmon_close(struct net_device
- return netlink_remove_tap(&nlmon->nt);
- }
-
- -static struct rtnl_link_stats64 *
- +static void
- nlmon_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
- {
- int i;
- @@ -104,8 +104,6 @@ nlmon_get_stats64(struct net_device *dev
-
- stats->rx_bytes = bytes;
- stats->tx_bytes = 0;
- -
- - return stats;
- }
-
- static u32 always_on(struct net_device *dev)
- --- a/drivers/net/ppp/ppp_generic.c
- +++ b/drivers/net/ppp/ppp_generic.c
- @@ -1312,7 +1312,7 @@ ppp_net_ioctl(struct net_device *dev, st
- return err;
- }
-
- -static struct rtnl_link_stats64*
- +static void
- ppp_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats64)
- {
- struct ppp *ppp = netdev_priv(dev);
- @@ -1332,8 +1332,6 @@ ppp_get_stats64(struct net_device *dev,
- stats64->rx_dropped = dev->stats.rx_dropped;
- stats64->tx_dropped = dev->stats.tx_dropped;
- stats64->rx_length_errors = dev->stats.rx_length_errors;
- -
- - return stats64;
- }
-
- static int ppp_dev_init(struct net_device *dev)
- --- a/drivers/net/slip/slip.c
- +++ b/drivers/net/slip/slip.c
- @@ -571,7 +571,7 @@ static int sl_change_mtu(struct net_devi
-
- /* Netdevice get statistics request */
-
- -static struct rtnl_link_stats64 *
- +static void
- sl_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
- {
- struct net_device_stats *devstats = &dev->stats;
- @@ -602,7 +602,6 @@ sl_get_stats64(struct net_device *dev, s
- stats->collisions += comp->sls_o_misses;
- }
- #endif
- - return stats;
- }
-
- /* Netdevice register callback */
- --- a/drivers/net/team/team.c
- +++ b/drivers/net/team/team.c
- @@ -1798,7 +1798,7 @@ unwind:
- return err;
- }
-
- -static struct rtnl_link_stats64 *
- +static void
- team_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
- {
- struct team *team = netdev_priv(dev);
- @@ -1835,7 +1835,6 @@ team_get_stats64(struct net_device *dev,
- stats->rx_dropped = rx_dropped;
- stats->tx_dropped = tx_dropped;
- stats->rx_nohandler = rx_nohandler;
- - return stats;
- }
-
- static int team_vlan_rx_add_vid(struct net_device *dev, __be16 proto, u16 vid)
- --- a/drivers/net/tun.c
- +++ b/drivers/net/tun.c
- @@ -983,7 +983,7 @@ static void tun_set_headroom(struct net_
- tun->align = new_hr;
- }
-
- -static struct rtnl_link_stats64 *
- +static void
- tun_net_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
- {
- u32 rx_dropped = 0, tx_dropped = 0, rx_frame_errors = 0;
- @@ -1017,7 +1017,6 @@ tun_net_get_stats64(struct net_device *d
- stats->rx_dropped = rx_dropped;
- stats->rx_frame_errors = rx_frame_errors;
- stats->tx_dropped = tx_dropped;
- - return stats;
- }
-
- static const struct net_device_ops tun_netdev_ops = {
- --- a/drivers/net/veth.c
- +++ b/drivers/net/veth.c
- @@ -161,8 +161,8 @@ static u64 veth_stats_one(struct pcpu_vs
- return atomic64_read(&priv->dropped);
- }
-
- -static struct rtnl_link_stats64 *veth_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *tot)
- +static void veth_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *tot)
- {
- struct veth_priv *priv = netdev_priv(dev);
- struct net_device *peer;
- @@ -180,8 +180,6 @@ static struct rtnl_link_stats64 *veth_ge
- tot->rx_packets = one.packets;
- }
- rcu_read_unlock();
- -
- - return tot;
- }
-
- /* fake multicast ability */
- --- a/drivers/net/virtio_net.c
- +++ b/drivers/net/virtio_net.c
- @@ -1017,8 +1017,8 @@ out:
- return ret;
- }
-
- -static struct rtnl_link_stats64 *virtnet_stats(struct net_device *dev,
- - struct rtnl_link_stats64 *tot)
- +static void virtnet_stats(struct net_device *dev,
- + struct rtnl_link_stats64 *tot)
- {
- struct virtnet_info *vi = netdev_priv(dev);
- int cpu;
- @@ -1051,8 +1051,6 @@ static struct rtnl_link_stats64 *virtnet
- tot->rx_dropped = dev->stats.rx_dropped;
- tot->rx_length_errors = dev->stats.rx_length_errors;
- tot->rx_frame_errors = dev->stats.rx_frame_errors;
- -
- - return tot;
- }
-
- #ifdef CONFIG_NET_POLL_CONTROLLER
- --- a/drivers/net/vmxnet3/vmxnet3_ethtool.c
- +++ b/drivers/net/vmxnet3/vmxnet3_ethtool.c
- @@ -113,7 +113,7 @@ vmxnet3_global_stats[] = {
- };
-
-
- -struct rtnl_link_stats64 *
- +void
- vmxnet3_get_stats64(struct net_device *netdev,
- struct rtnl_link_stats64 *stats)
- {
- @@ -160,8 +160,6 @@ vmxnet3_get_stats64(struct net_device *n
- stats->rx_dropped += drvRxStats->drop_total;
- stats->multicast += devRxStats->mcastPktsRxOK;
- }
- -
- - return stats;
- }
-
- static int
- --- a/drivers/net/vmxnet3/vmxnet3_int.h
- +++ b/drivers/net/vmxnet3/vmxnet3_int.h
- @@ -466,8 +466,8 @@ vmxnet3_create_queues(struct vmxnet3_ada
-
- void vmxnet3_set_ethtool_ops(struct net_device *netdev);
-
- -struct rtnl_link_stats64 *
- -vmxnet3_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats);
- +void vmxnet3_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats);
-
- extern char vmxnet3_driver_name[];
- #endif
- --- a/drivers/net/vrf.c
- +++ b/drivers/net/vrf.c
- @@ -79,8 +79,8 @@ static void vrf_tx_error(struct net_devi
- kfree_skb(skb);
- }
-
- -static struct rtnl_link_stats64 *vrf_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *stats)
- +static void vrf_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats)
- {
- int i;
-
- @@ -104,7 +104,6 @@ static struct rtnl_link_stats64 *vrf_get
- stats->rx_bytes += rbytes;
- stats->rx_packets += rpkts;
- }
- - return stats;
- }
-
- /* Local traffic destined to local address. Reinsert the packet to rx
- --- a/drivers/net/xen-netfront.c
- +++ b/drivers/net/xen-netfront.c
- @@ -1081,8 +1081,8 @@ static int xennet_change_mtu(struct net_
- return 0;
- }
-
- -static struct rtnl_link_stats64 *xennet_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *tot)
- +static void xennet_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *tot)
- {
- struct netfront_info *np = netdev_priv(dev);
- int cpu;
- @@ -1113,8 +1113,6 @@ static struct rtnl_link_stats64 *xennet_
-
- tot->rx_errors = dev->stats.rx_errors;
- tot->tx_dropped = dev->stats.tx_dropped;
- -
- - return tot;
- }
-
- static void xennet_release_tx_bufs(struct netfront_queue *queue)
- --- a/drivers/staging/netlogic/xlr_net.c
- +++ b/drivers/staging/netlogic/xlr_net.c
- @@ -395,14 +395,6 @@ static void xlr_stats(struct net_device
- TX_DROP_FRAME_COUNTER);
- }
-
- -static struct rtnl_link_stats64 *xlr_get_stats64(struct net_device *ndev,
- - struct rtnl_link_stats64 *stats
- - )
- -{
- - xlr_stats(ndev, stats);
- - return stats;
- -}
- -
- static const struct net_device_ops xlr_netdev_ops = {
- .ndo_open = xlr_net_open,
- .ndo_stop = xlr_net_stop,
- @@ -410,7 +402,7 @@ static const struct net_device_ops xlr_n
- .ndo_select_queue = xlr_net_select_queue,
- .ndo_set_mac_address = xlr_net_set_mac_addr,
- .ndo_set_rx_mode = xlr_set_rx_mode,
- - .ndo_get_stats64 = xlr_get_stats64,
- + .ndo_get_stats64 = xlr_stats,
- };
-
- /*
- --- a/include/linux/device.h
- +++ b/include/linux/device.h
- @@ -688,6 +688,25 @@ void __iomem *devm_ioremap_resource(stru
- int devm_add_action(struct device *dev, void (*action)(void *), void *data);
- void devm_remove_action(struct device *dev, void (*action)(void *), void *data);
-
- +/**
- + * devm_alloc_percpu - Resource-managed alloc_percpu
- + * @dev: Device to allocate per-cpu memory for
- + * @type: Type to allocate per-cpu memory for
- + *
- + * Managed alloc_percpu. Per-cpu memory allocated with this function is
- + * automatically freed on driver detach.
- + *
- + * RETURNS:
- + * Pointer to allocated memory on success, NULL on failure.
- + */
- +#define devm_alloc_percpu(dev, type) \
- + ((typeof(type) __percpu *)__devm_alloc_percpu((dev), sizeof(type), \
- + __alignof__(type)))
- +
- +void __percpu *__devm_alloc_percpu(struct device *dev, size_t size,
- + size_t align);
- +void devm_free_percpu(struct device *dev, void __percpu *pdata);
- +
- static inline int devm_add_action_or_reset(struct device *dev,
- void (*action)(void *), void *data)
- {
- --- /dev/null
- +++ b/include/linux/fsl/svr.h
- @@ -0,0 +1,97 @@
- +/*
- + * MPC85xx cpu type detection
- + *
- + * Copyright 2011-2012 Freescale Semiconductor, Inc.
- + *
- + * This is free software; you can redistribute it and/or modify
- + * it under the terms of the GNU General Public License as published by
- + * the Free Software Foundation; either version 2 of the License, or
- + * (at your option) any later version.
- + */
- +
- +#ifndef FSL_SVR_H
- +#define FSL_SVR_H
- +
- +#define SVR_REV(svr) ((svr) & 0xFF) /* SOC design resision */
- +#define SVR_MAJ(svr) (((svr) >> 4) & 0xF) /* Major revision field*/
- +#define SVR_MIN(svr) (((svr) >> 0) & 0xF) /* Minor revision field*/
- +
- +/* Some parts define SVR[0:23] as the SOC version */
- +#define SVR_SOC_VER(svr) (((svr) >> 8) & 0xFFF7FF) /* SOC Version fields */
- +
- +#define SVR_8533 0x803400
- +#define SVR_8535 0x803701
- +#define SVR_8536 0x803700
- +#define SVR_8540 0x803000
- +#define SVR_8541 0x807200
- +#define SVR_8543 0x803200
- +#define SVR_8544 0x803401
- +#define SVR_8545 0x803102
- +#define SVR_8547 0x803101
- +#define SVR_8548 0x803100
- +#define SVR_8555 0x807100
- +#define SVR_8560 0x807000
- +#define SVR_8567 0x807501
- +#define SVR_8568 0x807500
- +#define SVR_8569 0x808000
- +#define SVR_8572 0x80E000
- +#define SVR_P1010 0x80F100
- +#define SVR_P1011 0x80E500
- +#define SVR_P1012 0x80E501
- +#define SVR_P1013 0x80E700
- +#define SVR_P1014 0x80F101
- +#define SVR_P1017 0x80F700
- +#define SVR_P1020 0x80E400
- +#define SVR_P1021 0x80E401
- +#define SVR_P1022 0x80E600
- +#define SVR_P1023 0x80F600
- +#define SVR_P1024 0x80E402
- +#define SVR_P1025 0x80E403
- +#define SVR_P2010 0x80E300
- +#define SVR_P2020 0x80E200
- +#define SVR_P2040 0x821000
- +#define SVR_P2041 0x821001
- +#define SVR_P3041 0x821103
- +#define SVR_P4040 0x820100
- +#define SVR_P4080 0x820000
- +#define SVR_P5010 0x822100
- +#define SVR_P5020 0x822000
- +#define SVR_P5021 0X820500
- +#define SVR_P5040 0x820400
- +#define SVR_T4240 0x824000
- +#define SVR_T4120 0x824001
- +#define SVR_T4160 0x824100
- +#define SVR_T4080 0x824102
- +#define SVR_C291 0x850000
- +#define SVR_C292 0x850020
- +#define SVR_C293 0x850030
- +#define SVR_B4860 0X868000
- +#define SVR_G4860 0x868001
- +#define SVR_G4060 0x868003
- +#define SVR_B4440 0x868100
- +#define SVR_G4440 0x868101
- +#define SVR_B4420 0x868102
- +#define SVR_B4220 0x868103
- +#define SVR_T1040 0x852000
- +#define SVR_T1041 0x852001
- +#define SVR_T1042 0x852002
- +#define SVR_T1020 0x852100
- +#define SVR_T1021 0x852101
- +#define SVR_T1022 0x852102
- +#define SVR_T1023 0x854100
- +#define SVR_T1024 0x854000
- +#define SVR_T2080 0x853000
- +#define SVR_T2081 0x853100
- +
- +#define SVR_8610 0x80A000
- +#define SVR_8641 0x809000
- +#define SVR_8641D 0x809001
- +
- +#define SVR_9130 0x860001
- +#define SVR_9131 0x860000
- +#define SVR_9132 0x861000
- +#define SVR_9232 0x861400
- +
- +#define SVR_Unknown 0xFFFFFF
- +
- +#endif
- --- a/include/linux/fsl_devices.h
- +++ b/include/linux/fsl_devices.h
- @@ -99,7 +99,10 @@ struct fsl_usb2_platform_data {
- unsigned suspended:1;
- unsigned already_suspended:1;
- unsigned has_fsl_erratum_a007792:1;
- + unsigned has_fsl_erratum_14:1;
- unsigned has_fsl_erratum_a005275:1;
- + unsigned has_fsl_erratum_a006918:1;
- + unsigned has_fsl_erratum_a005697:1;
- unsigned check_phy_clk_valid:1;
-
- /* register save area for suspend/resume */
- --- a/include/linux/netdev_features.h
- +++ b/include/linux/netdev_features.h
- @@ -74,6 +74,7 @@ enum {
- NETIF_F_BUSY_POLL_BIT, /* Busy poll */
-
- NETIF_F_HW_TC_BIT, /* Offload TC infrastructure */
- + NETIF_F_HW_ACCEL_MQ_BIT, /* Hardware-accelerated multiqueue */
-
- /*
- * Add your fresh new feature above and remember to update
- @@ -136,6 +137,7 @@ enum {
- #define NETIF_F_HW_L2FW_DOFFLOAD __NETIF_F(HW_L2FW_DOFFLOAD)
- #define NETIF_F_BUSY_POLL __NETIF_F(BUSY_POLL)
- #define NETIF_F_HW_TC __NETIF_F(HW_TC)
- +#define NETIF_F_HW_ACCEL_MQ __NETIF_F(HW_ACCEL_MQ)
-
- #define for_each_netdev_feature(mask_addr, bit) \
- for_each_set_bit(bit, (unsigned long *)mask_addr, NETDEV_FEATURE_COUNT)
- --- a/include/linux/netdevice.h
- +++ b/include/linux/netdevice.h
- @@ -916,8 +916,8 @@ struct netdev_xdp {
- * Callback used when the transmitter has not made any progress
- * for dev->watchdog ticks.
- *
- - * struct rtnl_link_stats64* (*ndo_get_stats64)(struct net_device *dev,
- - * struct rtnl_link_stats64 *storage);
- + * void (*ndo_get_stats64)(struct net_device *dev,
- + * struct rtnl_link_stats64 *storage);
- * struct net_device_stats* (*ndo_get_stats)(struct net_device *dev);
- * Called when a user wants to get the network device usage
- * statistics. Drivers must do one of the following:
- @@ -1165,8 +1165,8 @@ struct net_device_ops {
- struct neigh_parms *);
- void (*ndo_tx_timeout) (struct net_device *dev);
-
- - struct rtnl_link_stats64* (*ndo_get_stats64)(struct net_device *dev,
- - struct rtnl_link_stats64 *storage);
- + void (*ndo_get_stats64)(struct net_device *dev,
- + struct rtnl_link_stats64 *storage);
- bool (*ndo_has_offload_stats)(int attr_id);
- int (*ndo_get_offload_stats)(int attr_id,
- const struct net_device *dev,
- @@ -1509,6 +1509,8 @@ enum netdev_priv_flags {
- * @if_port: Selectable AUI, TP, ...
- * @dma: DMA channel
- * @mtu: Interface MTU value
- + * @min_mtu: Interface Minimum MTU value
- + * @max_mtu: Interface Maximum MTU value
- * @type: Interface hardware type
- * @hard_header_len: Maximum hardware header length.
- * @min_header_len: Minimum hardware header length
- @@ -1735,6 +1737,8 @@ struct net_device {
- unsigned char dma;
-
- unsigned int mtu;
- + unsigned int min_mtu;
- + unsigned int max_mtu;
- unsigned short type;
- unsigned short hard_header_len;
- unsigned short min_header_len;
- --- a/include/linux/skbuff.h
- +++ b/include/linux/skbuff.h
- @@ -903,6 +903,7 @@ void kfree_skb(struct sk_buff *skb);
- void kfree_skb_list(struct sk_buff *segs);
- void skb_tx_error(struct sk_buff *skb);
- void consume_skb(struct sk_buff *skb);
- +void skb_recycle(struct sk_buff *skb);
- void __kfree_skb(struct sk_buff *skb);
- extern struct kmem_cache *skbuff_head_cache;
-
- @@ -3057,6 +3058,7 @@ static inline void skb_free_datagram_loc
- }
- int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags);
- int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len);
- +void copy_skb_header(struct sk_buff *new, const struct sk_buff *old);
- int skb_store_bits(struct sk_buff *skb, int offset, const void *from, int len);
- __wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset, u8 *to,
- int len, __wsum csum);
- --- a/include/linux/sys_soc.h
- +++ b/include/linux/sys_soc.h
- @@ -13,6 +13,7 @@ struct soc_device_attribute {
- const char *family;
- const char *revision;
- const char *soc_id;
- + const void *data;
- };
-
- /**
- @@ -34,4 +35,6 @@ void soc_device_unregister(struct soc_de
- */
- struct device *soc_device_to_device(struct soc_device *soc);
-
- +const struct soc_device_attribute *soc_device_match(
- + const struct soc_device_attribute *matches);
- #endif /* __SOC_BUS_H */
- --- a/include/net/ip_tunnels.h
- +++ b/include/net/ip_tunnels.h
- @@ -261,8 +261,8 @@ int ip_tunnel_ioctl(struct net_device *d
- int __ip_tunnel_change_mtu(struct net_device *dev, int new_mtu, bool strict);
- int ip_tunnel_change_mtu(struct net_device *dev, int new_mtu);
-
- -struct rtnl_link_stats64 *ip_tunnel_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *tot);
- +void ip_tunnel_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *tot);
- struct ip_tunnel *ip_tunnel_lookup(struct ip_tunnel_net *itn,
- int link, __be16 flags,
- __be32 remote, __be32 local,
- --- a/include/uapi/linux/if_ether.h
- +++ b/include/uapi/linux/if_ether.h
- @@ -35,6 +35,7 @@
- #define ETH_DATA_LEN 1500 /* Max. octets in payload */
- #define ETH_FRAME_LEN 1514 /* Max. octets in frame sans FCS */
- #define ETH_FCS_LEN 4 /* Octets in the FCS */
- +#define ETH_MIN_MTU 68 /* Min IPv4 MTU per RFC791 */
-
- /*
- * These are the defined Ethernet Protocol ID's.
- --- a/net/8021q/vlan_dev.c
- +++ b/net/8021q/vlan_dev.c
- @@ -671,7 +671,8 @@ static int vlan_ethtool_get_ts_info(stru
- return 0;
- }
-
- -static struct rtnl_link_stats64 *vlan_dev_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
- +static void vlan_dev_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats)
- {
- struct vlan_pcpu_stats *p;
- u32 rx_errors = 0, tx_dropped = 0;
- @@ -702,8 +703,6 @@ static struct rtnl_link_stats64 *vlan_de
- }
- stats->rx_errors = rx_errors;
- stats->tx_dropped = tx_dropped;
- -
- - return stats;
- }
-
- #ifdef CONFIG_NET_POLL_CONTROLLER
- --- a/net/bridge/br_device.c
- +++ b/net/bridge/br_device.c
- @@ -156,8 +156,8 @@ static int br_dev_stop(struct net_device
- return 0;
- }
-
- -static struct rtnl_link_stats64 *br_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *stats)
- +static void br_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats)
- {
- struct net_bridge *br = netdev_priv(dev);
- struct pcpu_sw_netstats tmp, sum = { 0 };
- @@ -181,8 +181,6 @@ static struct rtnl_link_stats64 *br_get_
- stats->tx_packets = sum.tx_packets;
- stats->rx_bytes = sum.rx_bytes;
- stats->rx_packets = sum.rx_packets;
- -
- - return stats;
- }
-
- static int br_change_mtu(struct net_device *dev, int new_mtu)
- --- a/net/core/dev.c
- +++ b/net/core/dev.c
- @@ -6603,9 +6603,18 @@ int dev_set_mtu(struct net_device *dev,
- if (new_mtu == dev->mtu)
- return 0;
-
- - /* MTU must be positive. */
- - if (new_mtu < 0)
- + /* MTU must be positive, and in range */
- + if (new_mtu < 0 || new_mtu < dev->min_mtu) {
- + net_err_ratelimited("%s: Invalid MTU %d requested, hw min %d\n",
- + dev->name, new_mtu, dev->min_mtu);
- return -EINVAL;
- + }
- +
- + if (dev->max_mtu > 0 && new_mtu > dev->max_mtu) {
- + net_err_ratelimited("%s: Invalid MTU %d requested, hw max %d\n",
- + dev->name, new_mtu, dev->min_mtu);
- + return -EINVAL;
- + }
-
- if (!netif_device_present(dev))
- return -ENODEV;
- --- a/net/core/skbuff.c
- +++ b/net/core/skbuff.c
- @@ -842,6 +842,32 @@ void napi_consume_skb(struct sk_buff *sk
- }
- EXPORT_SYMBOL(napi_consume_skb);
-
- +/**
- + * skb_recycle - clean up an skb for reuse
- + * @skb: buffer
- + *
- + * Recycles the skb to be reused as a receive buffer. This
- + * function does any necessary reference count dropping, and
- + * cleans up the skbuff as if it just came from __alloc_skb().
- + */
- +void skb_recycle(struct sk_buff *skb)
- +{
- + struct skb_shared_info *shinfo;
- + u8 head_frag = skb->head_frag;
- +
- + skb_release_head_state(skb);
- +
- + shinfo = skb_shinfo(skb);
- + memset(shinfo, 0, offsetof(struct skb_shared_info, dataref));
- + atomic_set(&shinfo->dataref, 1);
- +
- + memset(skb, 0, offsetof(struct sk_buff, tail));
- + skb->data = skb->head + NET_SKB_PAD;
- + skb->head_frag = head_frag;
- + skb_reset_tail_pointer(skb);
- +}
- +EXPORT_SYMBOL(skb_recycle);
- +
- /* Make sure a field is enclosed inside headers_start/headers_end section */
- #define CHECK_SKB_FIELD(field) \
- BUILD_BUG_ON(offsetof(struct sk_buff, field) < \
- @@ -1073,7 +1099,7 @@ static void skb_headers_offset_update(st
- skb->inner_mac_header += off;
- }
-
- -static void copy_skb_header(struct sk_buff *new, const struct sk_buff *old)
- +void copy_skb_header(struct sk_buff *new, const struct sk_buff *old)
- {
- __copy_skb_header(new, old);
-
- @@ -1081,6 +1107,7 @@ static void copy_skb_header(struct sk_bu
- skb_shinfo(new)->gso_segs = skb_shinfo(old)->gso_segs;
- skb_shinfo(new)->gso_type = skb_shinfo(old)->gso_type;
- }
- +EXPORT_SYMBOL(copy_skb_header);
-
- static inline int skb_alloc_rx_flag(const struct sk_buff *skb)
- {
- --- a/net/ipv4/ip_tunnel_core.c
- +++ b/net/ipv4/ip_tunnel_core.c
- @@ -188,8 +188,8 @@ int iptunnel_handle_offloads(struct sk_b
- EXPORT_SYMBOL_GPL(iptunnel_handle_offloads);
-
- /* Often modified stats are per cpu, other are shared (netdev->stats) */
- -struct rtnl_link_stats64 *ip_tunnel_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *tot)
- +void ip_tunnel_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *tot)
- {
- int i;
-
- @@ -214,8 +214,6 @@ struct rtnl_link_stats64 *ip_tunnel_get_
- tot->rx_bytes += rx_bytes;
- tot->tx_bytes += tx_bytes;
- }
- -
- - return tot;
- }
- EXPORT_SYMBOL_GPL(ip_tunnel_get_stats64);
-
- --- a/net/l2tp/l2tp_eth.c
- +++ b/net/l2tp/l2tp_eth.c
- @@ -106,8 +106,8 @@ static int l2tp_eth_dev_xmit(struct sk_b
- return NETDEV_TX_OK;
- }
-
- -static struct rtnl_link_stats64 *l2tp_eth_get_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *stats)
- +static void l2tp_eth_get_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats)
- {
- struct l2tp_eth *priv = netdev_priv(dev);
-
- @@ -117,10 +117,8 @@ static struct rtnl_link_stats64 *l2tp_et
- stats->rx_bytes = atomic_long_read(&priv->rx_bytes);
- stats->rx_packets = atomic_long_read(&priv->rx_packets);
- stats->rx_errors = atomic_long_read(&priv->rx_errors);
- - return stats;
- }
-
- -
- static const struct net_device_ops l2tp_eth_netdev_ops = {
- .ndo_init = l2tp_eth_dev_init,
- .ndo_uninit = l2tp_eth_dev_uninit,
- --- a/net/mac80211/iface.c
- +++ b/net/mac80211/iface.c
- @@ -1146,7 +1146,7 @@ static u16 ieee80211_netdev_select_queue
- return ieee80211_select_queue(IEEE80211_DEV_TO_SUB_IF(dev), skb);
- }
-
- -static struct rtnl_link_stats64 *
- +static void
- ieee80211_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
- {
- int i;
- @@ -1171,8 +1171,6 @@ ieee80211_get_stats64(struct net_device
- stats->rx_bytes += rx_bytes;
- stats->tx_bytes += tx_bytes;
- }
- -
- - return stats;
- }
-
- static const struct net_device_ops ieee80211_dataif_ops = {
- --- a/net/openvswitch/vport-internal_dev.c
- +++ b/net/openvswitch/vport-internal_dev.c
- @@ -106,7 +106,7 @@ static void internal_dev_destructor(stru
- free_netdev(dev);
- }
-
- -static struct rtnl_link_stats64 *
- +static void
- internal_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats)
- {
- int i;
- @@ -134,8 +134,6 @@ internal_get_stats(struct net_device *de
- stats->tx_bytes += local_stats.tx_bytes;
- stats->tx_packets += local_stats.tx_packets;
- }
- -
- - return stats;
- }
-
- static void internal_set_rx_headroom(struct net_device *dev, int new_hr)
- --- a/net/sched/sch_generic.c
- +++ b/net/sched/sch_generic.c
- @@ -309,6 +309,13 @@ static void dev_watchdog(unsigned long a
- txq->trans_timeout++;
- break;
- }
- +
- + /* Devices with HW_ACCEL_MQ have multiple txqs
- + * but update only the first one's transmission
- + * timestamp so avoid checking the rest.
- + */
- + if (dev->features & NETIF_F_HW_ACCEL_MQ)
- + break;
- }
-
- if (some_queue_timedout) {
- --- a/net/sched/sch_teql.c
- +++ b/net/sched/sch_teql.c
- @@ -401,8 +401,8 @@ static int teql_master_close(struct net_
- return 0;
- }
-
- -static struct rtnl_link_stats64 *teql_master_stats64(struct net_device *dev,
- - struct rtnl_link_stats64 *stats)
- +static void teql_master_stats64(struct net_device *dev,
- + struct rtnl_link_stats64 *stats)
- {
- struct teql_master *m = netdev_priv(dev);
-
- @@ -410,7 +410,6 @@ static struct rtnl_link_stats64 *teql_ma
- stats->tx_bytes = m->tx_bytes;
- stats->tx_errors = m->tx_errors;
- stats->tx_dropped = m->tx_dropped;
- - return stats;
- }
-
- static int teql_master_mtu(struct net_device *dev, int new_mtu)
|