Home
last modified time | relevance | path

Searched full:netdev (Results 1 – 25 of 2211) sorted by relevance

12345678910>>...89

/kernel/linux/linux-6.6/net/core/
Ddev_addr_lists_test.c15 static int dev_addr_test_sync(struct net_device *netdev, const unsigned char *a) in dev_addr_test_sync() argument
17 struct dev_addr_test_priv *datp = netdev_priv(netdev); in dev_addr_test_sync()
24 static int dev_addr_test_unsync(struct net_device *netdev, in dev_addr_test_unsync() argument
27 struct dev_addr_test_priv *datp = netdev_priv(netdev); in dev_addr_test_unsync()
37 struct net_device *netdev; in dev_addr_test_init() local
40 netdev = alloc_etherdev(sizeof(*datp)); in dev_addr_test_init()
41 KUNIT_ASSERT_TRUE(test, !!netdev); in dev_addr_test_init()
43 test->priv = netdev; in dev_addr_test_init()
44 netdev->netdev_ops = &dummy_netdev_ops; in dev_addr_test_init()
46 err = register_netdev(netdev); in dev_addr_test_init()
[all …]
/kernel/linux/linux-6.6/drivers/net/ethernet/netronome/nfp/
Dnfp_net_repr.c27 nfp_repr_inc_tx_stats(struct net_device *netdev, unsigned int len, in nfp_repr_inc_tx_stats() argument
30 struct nfp_repr *repr = netdev_priv(netdev); in nfp_repr_inc_tx_stats()
46 void nfp_repr_inc_rx_stats(struct net_device *netdev, unsigned int len) in nfp_repr_inc_rx_stats() argument
48 struct nfp_repr *repr = netdev_priv(netdev); in nfp_repr_inc_rx_stats()
90 nfp_repr_get_stats64(struct net_device *netdev, struct rtnl_link_stats64 *stats) in nfp_repr_get_stats64() argument
92 struct nfp_repr *repr = netdev_priv(netdev); in nfp_repr_get_stats64()
124 nfp_repr_get_host_stats64(const struct net_device *netdev, in nfp_repr_get_host_stats64() argument
127 struct nfp_repr *repr = netdev_priv(netdev); in nfp_repr_get_host_stats64()
167 static int nfp_repr_change_mtu(struct net_device *netdev, int new_mtu) in nfp_repr_change_mtu() argument
169 struct nfp_repr *repr = netdev_priv(netdev); in nfp_repr_change_mtu()
[all …]
/kernel/linux/linux-5.10/drivers/net/ethernet/netronome/nfp/
Dnfp_net_repr.c27 nfp_repr_inc_tx_stats(struct net_device *netdev, unsigned int len, in nfp_repr_inc_tx_stats() argument
30 struct nfp_repr *repr = netdev_priv(netdev); in nfp_repr_inc_tx_stats()
46 void nfp_repr_inc_rx_stats(struct net_device *netdev, unsigned int len) in nfp_repr_inc_rx_stats() argument
48 struct nfp_repr *repr = netdev_priv(netdev); in nfp_repr_inc_rx_stats()
90 nfp_repr_get_stats64(struct net_device *netdev, struct rtnl_link_stats64 *stats) in nfp_repr_get_stats64() argument
92 struct nfp_repr *repr = netdev_priv(netdev); in nfp_repr_get_stats64()
123 nfp_repr_get_host_stats64(const struct net_device *netdev, in nfp_repr_get_host_stats64() argument
126 struct nfp_repr *repr = netdev_priv(netdev); in nfp_repr_get_host_stats64()
166 static int nfp_repr_change_mtu(struct net_device *netdev, int new_mtu) in nfp_repr_change_mtu() argument
168 struct nfp_repr *repr = netdev_priv(netdev); in nfp_repr_change_mtu()
[all …]
/kernel/linux/linux-6.6/drivers/net/ethernet/qlogic/qede/
Dqede_dcbnl.c13 static u8 qede_dcbnl_getstate(struct net_device *netdev) in qede_dcbnl_getstate() argument
15 struct qede_dev *edev = netdev_priv(netdev); in qede_dcbnl_getstate()
20 static u8 qede_dcbnl_setstate(struct net_device *netdev, u8 state) in qede_dcbnl_setstate() argument
22 struct qede_dev *edev = netdev_priv(netdev); in qede_dcbnl_setstate()
27 static void qede_dcbnl_getpermhwaddr(struct net_device *netdev, in qede_dcbnl_getpermhwaddr() argument
30 memcpy(perm_addr, netdev->dev_addr, netdev->addr_len); in qede_dcbnl_getpermhwaddr()
33 static void qede_dcbnl_getpgtccfgtx(struct net_device *netdev, int prio, in qede_dcbnl_getpgtccfgtx() argument
37 struct qede_dev *edev = netdev_priv(netdev); in qede_dcbnl_getpgtccfgtx()
43 static void qede_dcbnl_getpgbwgcfgtx(struct net_device *netdev, in qede_dcbnl_getpgbwgcfgtx() argument
46 struct qede_dev *edev = netdev_priv(netdev); in qede_dcbnl_getpgbwgcfgtx()
[all …]
/kernel/linux/linux-5.10/drivers/net/ethernet/qlogic/qede/
Dqede_dcbnl.c13 static u8 qede_dcbnl_getstate(struct net_device *netdev) in qede_dcbnl_getstate() argument
15 struct qede_dev *edev = netdev_priv(netdev); in qede_dcbnl_getstate()
20 static u8 qede_dcbnl_setstate(struct net_device *netdev, u8 state) in qede_dcbnl_setstate() argument
22 struct qede_dev *edev = netdev_priv(netdev); in qede_dcbnl_setstate()
27 static void qede_dcbnl_getpermhwaddr(struct net_device *netdev, in qede_dcbnl_getpermhwaddr() argument
30 memcpy(perm_addr, netdev->dev_addr, netdev->addr_len); in qede_dcbnl_getpermhwaddr()
33 static void qede_dcbnl_getpgtccfgtx(struct net_device *netdev, int prio, in qede_dcbnl_getpgtccfgtx() argument
37 struct qede_dev *edev = netdev_priv(netdev); in qede_dcbnl_getpgtccfgtx()
43 static void qede_dcbnl_getpgbwgcfgtx(struct net_device *netdev, in qede_dcbnl_getpgbwgcfgtx() argument
46 struct qede_dev *edev = netdev_priv(netdev); in qede_dcbnl_getpgbwgcfgtx()
[all …]
/kernel/linux/linux-6.6/drivers/net/ethernet/litex/
Dlitex_liteeth.c42 struct net_device *netdev; member
57 static int liteeth_rx(struct net_device *netdev) in liteeth_rx() argument
59 struct liteeth *priv = netdev_priv(netdev); in liteeth_rx()
71 skb = netdev_alloc_skb_ip_align(netdev, len); in liteeth_rx()
73 netdev_err(netdev, "couldn't get memory\n"); in liteeth_rx()
79 skb->protocol = eth_type_trans(skb, netdev); in liteeth_rx()
81 dev_sw_netstats_rx_add(netdev, len); in liteeth_rx()
86 netdev->stats.rx_dropped++; in liteeth_rx()
87 netdev->stats.rx_errors++; in liteeth_rx()
94 struct net_device *netdev = dev_id; in liteeth_interrupt() local
[all …]
/kernel/linux/linux-6.6/drivers/infiniband/ulp/opa_vnic/
Dopa_vnic_netdev.c50 * netdev functionality.
64 static void opa_vnic_get_stats64(struct net_device *netdev, in opa_vnic_get_stats64() argument
67 struct opa_vnic_adapter *adapter = opa_vnic_priv(netdev); in opa_vnic_get_stats64()
72 adapter->rn_ops->ndo_get_stats64(netdev, &vstats.netstats); in opa_vnic_get_stats64()
79 struct net_device *netdev) in opa_netdev_start_xmit() argument
81 struct opa_vnic_adapter *adapter = opa_vnic_priv(netdev); in opa_netdev_start_xmit()
93 return adapter->rn_ops->ndo_start_xmit(skb, netdev); in opa_netdev_start_xmit()
96 static u16 opa_vnic_select_queue(struct net_device *netdev, struct sk_buff *skb, in opa_vnic_select_queue() argument
99 struct opa_vnic_adapter *adapter = opa_vnic_priv(netdev); in opa_vnic_select_queue()
107 rc = adapter->rn_ops->ndo_select_queue(netdev, skb, sb_dev); in opa_vnic_select_queue()
[all …]
/kernel/linux/linux-5.10/drivers/infiniband/ulp/opa_vnic/
Dopa_vnic_netdev.c50 * netdev functionality.
65 static void opa_vnic_get_stats64(struct net_device *netdev, in opa_vnic_get_stats64() argument
68 struct opa_vnic_adapter *adapter = opa_vnic_priv(netdev); in opa_vnic_get_stats64()
73 adapter->rn_ops->ndo_get_stats64(netdev, &vstats.netstats); in opa_vnic_get_stats64()
80 struct net_device *netdev) in opa_netdev_start_xmit() argument
82 struct opa_vnic_adapter *adapter = opa_vnic_priv(netdev); in opa_netdev_start_xmit()
94 return adapter->rn_ops->ndo_start_xmit(skb, netdev); in opa_netdev_start_xmit()
97 static u16 opa_vnic_select_queue(struct net_device *netdev, struct sk_buff *skb, in opa_vnic_select_queue() argument
100 struct opa_vnic_adapter *adapter = opa_vnic_priv(netdev); in opa_vnic_select_queue()
108 rc = adapter->rn_ops->ndo_select_queue(netdev, skb, sb_dev); in opa_vnic_select_queue()
[all …]
/kernel/linux/linux-6.6/net/openvswitch/
Dvport-internal_dev.c19 #include "vport-netdev.h"
27 static struct internal_dev *internal_dev_priv(struct net_device *netdev) in internal_dev_priv() argument
29 return netdev_priv(netdev); in internal_dev_priv()
34 internal_dev_xmit(struct sk_buff *skb, struct net_device *netdev) in internal_dev_xmit() argument
42 err = ovs_vport_receive(internal_dev_priv(netdev)->vport, skb, NULL); in internal_dev_xmit()
46 dev_sw_netstats_tx_add(netdev, 1, len); in internal_dev_xmit()
48 netdev->stats.tx_errors++; in internal_dev_xmit()
53 static int internal_dev_open(struct net_device *netdev) in internal_dev_open() argument
55 netif_start_queue(netdev); in internal_dev_open()
59 static int internal_dev_stop(struct net_device *netdev) in internal_dev_stop() argument
[all …]
/kernel/linux/linux-6.6/drivers/net/ethernet/intel/ice/
Dice_dcb_nl.c12 * @netdev: device associated with interface that needs reset
14 static void ice_dcbnl_devreset(struct net_device *netdev) in ice_dcbnl_devreset() argument
16 struct ice_pf *pf = ice_netdev_to_pf(netdev); in ice_dcbnl_devreset()
21 dev_close(netdev); in ice_dcbnl_devreset()
22 netdev_state_change(netdev); in ice_dcbnl_devreset()
23 dev_open(netdev, NULL); in ice_dcbnl_devreset()
24 netdev_state_change(netdev); in ice_dcbnl_devreset()
29 * @netdev: the relevant netdev
32 static int ice_dcbnl_getets(struct net_device *netdev, struct ieee_ets *ets) in ice_dcbnl_getets() argument
37 pf = ice_netdev_to_pf(netdev); in ice_dcbnl_getets()
[all …]
Dice_repr.c22 * @netdev: pointer to port representor netdev
27 ice_repr_get_phys_port_name(struct net_device *netdev, char *buf, size_t len) in ice_repr_get_phys_port_name() argument
29 struct ice_netdev_priv *np = netdev_priv(netdev); in ice_repr_get_phys_port_name()
46 * @netdev: pointer to port representor netdev
50 ice_repr_get_stats64(struct net_device *netdev, struct rtnl_link_stats64 *stats) in ice_repr_get_stats64() argument
52 struct ice_netdev_priv *np = netdev_priv(netdev); in ice_repr_get_stats64()
77 * @netdev: pointer to port representor netdev
79 struct ice_repr *ice_netdev_to_repr(struct net_device *netdev) in ice_netdev_to_repr() argument
81 struct ice_netdev_priv *np = netdev_priv(netdev); in ice_netdev_to_repr()
88 * @netdev: network interface device structure
[all …]
/kernel/linux/linux-5.10/drivers/net/ethernet/intel/ice/
Dice_dcb_nl.c12 * @netdev: device associated with interface that needs reset
14 static void ice_dcbnl_devreset(struct net_device *netdev) in ice_dcbnl_devreset() argument
16 struct ice_pf *pf = ice_netdev_to_pf(netdev); in ice_dcbnl_devreset()
21 dev_close(netdev); in ice_dcbnl_devreset()
22 netdev_state_change(netdev); in ice_dcbnl_devreset()
23 dev_open(netdev, NULL); in ice_dcbnl_devreset()
24 netdev_state_change(netdev); in ice_dcbnl_devreset()
29 * @netdev: the relevant netdev
32 static int ice_dcbnl_getets(struct net_device *netdev, struct ieee_ets *ets) in ice_dcbnl_getets() argument
37 pf = ice_netdev_to_pf(netdev); in ice_dcbnl_getets()
[all …]
/kernel/linux/linux-5.10/net/openvswitch/
Dvport-internal_dev.c19 #include "vport-netdev.h"
27 static struct internal_dev *internal_dev_priv(struct net_device *netdev) in internal_dev_priv() argument
29 return netdev_priv(netdev); in internal_dev_priv()
34 internal_dev_xmit(struct sk_buff *skb, struct net_device *netdev) in internal_dev_xmit() argument
40 err = ovs_vport_receive(internal_dev_priv(netdev)->vport, skb, NULL); in internal_dev_xmit()
44 struct pcpu_sw_netstats *tstats = this_cpu_ptr(netdev->tstats); in internal_dev_xmit()
51 netdev->stats.tx_errors++; in internal_dev_xmit()
56 static int internal_dev_open(struct net_device *netdev) in internal_dev_open() argument
58 netif_start_queue(netdev); in internal_dev_open()
62 static int internal_dev_stop(struct net_device *netdev) in internal_dev_stop() argument
[all …]
/kernel/linux/linux-6.6/drivers/net/ipa/
Dipa_modem.c42 * @work: Work structure used to wake the modem netdev TX queue
50 static int ipa_open(struct net_device *netdev) in ipa_open() argument
52 struct ipa_priv *priv = netdev_priv(netdev); in ipa_open()
70 netif_start_queue(netdev); in ipa_open()
86 static int ipa_stop(struct net_device *netdev) in ipa_stop() argument
88 struct ipa_priv *priv = netdev_priv(netdev); in ipa_stop()
98 netif_stop_queue(netdev); in ipa_stop()
118 ipa_start_xmit(struct sk_buff *skb, struct net_device *netdev) in ipa_start_xmit() argument
120 struct net_device_stats *stats = &netdev->stats; in ipa_start_xmit()
121 struct ipa_priv *priv = netdev_priv(netdev); in ipa_start_xmit()
[all …]
/kernel/linux/linux-5.10/drivers/net/ipa/
Dipa_modem.c40 static int ipa_open(struct net_device *netdev) in ipa_open() argument
42 struct ipa_priv *priv = netdev_priv(netdev); in ipa_open()
53 netif_start_queue(netdev); in ipa_open()
64 static int ipa_stop(struct net_device *netdev) in ipa_stop() argument
66 struct ipa_priv *priv = netdev_priv(netdev); in ipa_stop()
69 netif_stop_queue(netdev); in ipa_stop()
85 static int ipa_start_xmit(struct sk_buff *skb, struct net_device *netdev) in ipa_start_xmit() argument
87 struct net_device_stats *stats = &netdev->stats; in ipa_start_xmit()
88 struct ipa_priv *priv = netdev_priv(netdev); in ipa_start_xmit()
120 void ipa_modem_skb_rx(struct net_device *netdev, struct sk_buff *skb) in ipa_modem_skb_rx() argument
[all …]
/kernel/linux/linux-5.10/tools/testing/selftests/net/
Dnetdevice.sh19 netdev=$1
21 ip link show "$netdev" |grep -q UP
23 echo "SKIP: $netdev: interface already up"
27 ip link set "$netdev" up
29 echo "FAIL: $netdev: Fail to up interface"
32 echo "PASS: $netdev: set interface up"
43 netdev=$1
51 ip link set dev $netdev address "$MACADDR"
53 echo "FAIL: $netdev: Cannot set MAC address"
55 ip link show $netdev |grep -q "$MACADDR"
[all …]
/kernel/linux/linux-6.6/tools/testing/selftests/net/
Dnetdevice.sh19 netdev=$1
21 ip link show "$netdev" |grep -q UP
23 echo "SKIP: $netdev: interface already up"
27 ip link set "$netdev" up
29 echo "FAIL: $netdev: Fail to up interface"
32 echo "PASS: $netdev: set interface up"
43 netdev=$1
51 ip link set dev $netdev address "$MACADDR"
53 echo "FAIL: $netdev: Cannot set MAC address"
55 ip link show $netdev |grep -q "$MACADDR"
[all …]
/kernel/linux/linux-5.10/drivers/net/ethernet/micrel/
Dks8842.c157 struct net_device *netdev; member
257 static void ks8842_update_link_status(struct net_device *netdev, in ks8842_update_link_status() argument
262 netif_carrier_on(netdev); in ks8842_update_link_status()
263 netif_wake_queue(netdev); in ks8842_update_link_status()
265 netif_stop_queue(netdev); in ks8842_update_link_status()
266 netif_carrier_off(netdev); in ks8842_update_link_status()
419 static int ks8842_tx_frame_dma(struct sk_buff *skb, struct net_device *netdev) in ks8842_tx_frame_dma() argument
421 struct ks8842_adapter *adapter = netdev_priv(netdev); in ks8842_tx_frame_dma()
426 netdev_dbg(netdev, "%s: TX ongoing\n", __func__); in ks8842_tx_frame_dma()
454 ctl->adesc->callback_param = netdev; in ks8842_tx_frame_dma()
[all …]
/kernel/linux/linux-6.6/drivers/net/ethernet/actions/
Dowl-emac.c63 return priv->netdev->dev.parent; in owl_emac_get_dev()
161 static struct sk_buff *owl_emac_alloc_skb(struct net_device *netdev) in owl_emac_alloc_skb() argument
166 skb = netdev_alloc_skb(netdev, OWL_EMAC_RX_FRAME_MAX_LEN + in owl_emac_alloc_skb()
183 struct net_device *netdev = priv->netdev; in owl_emac_ring_prepare_rx() local
190 skb = owl_emac_alloc_skb(netdev); in owl_emac_ring_prepare_rx()
342 static void owl_emac_set_hw_mac_addr(struct net_device *netdev) in owl_emac_set_hw_mac_addr() argument
344 struct owl_emac_priv *priv = netdev_priv(netdev); in owl_emac_set_hw_mac_addr()
345 const u8 *mac_addr = netdev->dev_addr; in owl_emac_set_hw_mac_addr()
394 static void owl_emac_adjust_link(struct net_device *netdev) in owl_emac_adjust_link() argument
396 struct owl_emac_priv *priv = netdev_priv(netdev); in owl_emac_adjust_link()
[all …]
/kernel/linux/linux-6.6/drivers/net/ethernet/micrel/
Dks8842.c157 struct net_device *netdev; member
257 static void ks8842_update_link_status(struct net_device *netdev, in ks8842_update_link_status() argument
262 netif_carrier_on(netdev); in ks8842_update_link_status()
263 netif_wake_queue(netdev); in ks8842_update_link_status()
265 netif_stop_queue(netdev); in ks8842_update_link_status()
266 netif_carrier_off(netdev); in ks8842_update_link_status()
359 eth_hw_addr_set(adapter->netdev, addr); in ks8842_init_mac_addr()
421 static int ks8842_tx_frame_dma(struct sk_buff *skb, struct net_device *netdev) in ks8842_tx_frame_dma() argument
423 struct ks8842_adapter *adapter = netdev_priv(netdev); in ks8842_tx_frame_dma()
428 netdev_dbg(netdev, "%s: TX ongoing\n", __func__); in ks8842_tx_frame_dma()
[all …]
/kernel/linux/linux-5.10/drivers/net/usb/
Drtl8150.c136 struct net_device *netdev; member
212 netif_device_detach(dev->netdev); in async_set_registers()
273 ether_addr_copy(dev->netdev->dev_addr, node_id); in set_ethernet_addr()
275 eth_hw_addr_random(dev->netdev); in set_ethernet_addr()
276 netdev_notice(dev->netdev, "Assigned a random MAC address: %pM\n", in set_ethernet_addr()
277 dev->netdev->dev_addr); in set_ethernet_addr()
281 static int rtl8150_set_mac_address(struct net_device *netdev, void *p) in rtl8150_set_mac_address() argument
284 rtl8150_t *dev = netdev_priv(netdev); in rtl8150_set_mac_address()
286 if (netif_running(netdev)) in rtl8150_set_mac_address()
289 memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len); in rtl8150_set_mac_address()
[all …]
/kernel/linux/linux-6.6/drivers/net/usb/
Drtl8150.c136 struct net_device *netdev; member
212 netif_device_detach(dev->netdev); in async_set_registers()
273 eth_hw_addr_set(dev->netdev, node_id); in set_ethernet_addr()
275 eth_hw_addr_random(dev->netdev); in set_ethernet_addr()
276 netdev_notice(dev->netdev, "Assigned a random MAC address: %pM\n", in set_ethernet_addr()
277 dev->netdev->dev_addr); in set_ethernet_addr()
281 static int rtl8150_set_mac_address(struct net_device *netdev, void *p) in rtl8150_set_mac_address() argument
284 rtl8150_t *dev = netdev_priv(netdev); in rtl8150_set_mac_address()
286 if (netif_running(netdev)) in rtl8150_set_mac_address()
289 eth_hw_addr_set(netdev, addr->sa_data); in rtl8150_set_mac_address()
[all …]
/kernel/linux/linux-6.6/drivers/net/ethernet/huawei/hinic/
Dhinic_main.c77 static int change_mac_addr(struct net_device *netdev, const u8 *addr);
132 struct net_device *netdev = nic_dev->netdev; in create_txqs() local
137 nic_dev->txqs = devm_kcalloc(&netdev->dev, num_txqs, in create_txqs()
147 err = hinic_init_txq(&nic_dev->txqs[i], sq, netdev); in create_txqs()
149 netif_err(nic_dev, drv, netdev, in create_txqs()
156 netif_err(nic_dev, drv, netdev, in create_txqs()
174 devm_kfree(&netdev->dev, nic_dev->txqs); in create_txqs()
204 struct net_device *netdev = nic_dev->netdev; in free_txqs() local
216 devm_kfree(&netdev->dev, nic_dev->txqs); in free_txqs()
229 struct net_device *netdev = nic_dev->netdev; in create_rxqs() local
[all …]
/kernel/linux/linux-5.10/drivers/net/ethernet/huawei/hinic/
Dhinic_main.c77 static int change_mac_addr(struct net_device *netdev, const u8 *addr);
132 struct net_device *netdev = nic_dev->netdev; in create_txqs() local
137 nic_dev->txqs = devm_kcalloc(&netdev->dev, num_txqs, in create_txqs()
147 err = hinic_init_txq(&nic_dev->txqs[i], sq, netdev); in create_txqs()
149 netif_err(nic_dev, drv, netdev, in create_txqs()
156 netif_err(nic_dev, drv, netdev, in create_txqs()
175 devm_kfree(&netdev->dev, nic_dev->txqs); in create_txqs()
204 struct net_device *netdev = nic_dev->netdev; in free_txqs() local
216 devm_kfree(&netdev->dev, nic_dev->txqs); in free_txqs()
229 struct net_device *netdev = nic_dev->netdev; in create_rxqs() local
[all …]
/kernel/linux/linux-6.6/drivers/net/ethernet/faraday/
Dftgmac100.c84 struct net_device *netdev; member
116 struct net_device *netdev = priv->netdev; in ftgmac100_reset_mac() local
133 netdev_err(netdev, "Hardware reset failed\n"); in ftgmac100_reset_mac()
154 netdev_err(priv->netdev, "Unknown speed %d !\n", in ftgmac100_reset_and_config_mac()
187 err = of_get_ethdev_address(priv->dev->of_node, priv->netdev); in ftgmac100_initial_mac()
192 priv->netdev->dev_addr); in ftgmac100_initial_mac()
207 eth_hw_addr_set(priv->netdev, mac); in ftgmac100_initial_mac()
210 eth_hw_addr_random(priv->netdev); in ftgmac100_initial_mac()
212 priv->netdev->dev_addr); in ftgmac100_initial_mac()
272 ftgmac100_write_mac_addr(priv, priv->netdev->dev_addr); in ftgmac100_init_hw()
[all …]

12345678910>>...89