Skip to content

Commit 236fa07

Browse files
committed
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: 1) Various TCP control block fixes, including one that crashes with SELinux, from David Ahern and Eric Dumazet. 2) Fix ACK generation in rxrpc, from David Howells. 3) ipvlan doesn't set the mark properly in the ipv4 route lookup key, from Gao Feng. 4) SIT configuration doesn't take on the frag_off ipv4 field configuration properly, fix from Hangbin Liu. 5) TSO can fail after device down/up on stmmac, fix from Lars Persson. 6) Various bpftool fixes (mostly in JSON handling) from Quentin Monnet. 7) Various SKB leak fixes in vhost/tun/tap (mostly observed as performance problems). From Wei Xu. 8) mvpps's TX descriptors were not zero initialized, from Yan Markman. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (57 commits) tcp: use IPCB instead of TCP_SKB_CB in inet_exact_dif_match() tcp: add tcp_v4_fill_cb()/tcp_v4_restore_cb() rxrpc: Fix the MAINTAINERS record rxrpc: Use correct netns source in rxrpc_release_sock() liquidio: fix incorrect indentation of assignment statement stmmac: reset last TSO segment size after device open ipvlan: Add the skb->mark as flow4's member to lookup route s390/qeth: build max size GSO skbs on L2 devices s390/qeth: fix GSO throughput regression s390/qeth: fix thinko in IPv4 multicast address tracking tap: free skb if flags error tun: free skb in early errors vhost: fix skb leak in handle_rx() bnxt_en: Fix a variable scoping in bnxt_hwrm_do_send_msg() bnxt_en: fix dst/src fid for vxlan encap/decap actions bnxt_en: wildcard smac while creating tunnel decap filter bnxt_en: Need to unconditionally shut down RoCE in bnxt_shutdown phylink: ensure we take the link down when phylink_stop() is called sfp: warn about modules requiring address change sequence sfp: improve RX_LOS handling ...
2 parents 8ee5ad1 + c2eb6d0 commit 236fa07

File tree

54 files changed

+397
-187
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+397
-187
lines changed

MAINTAINERS

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -554,13 +554,13 @@ S: Orphan
554554
F: Documentation/filesystems/affs.txt
555555
F: fs/affs/
556556

557-
AFS FILESYSTEM & AF_RXRPC SOCKET DOMAIN
557+
AFS FILESYSTEM
558558
M: David Howells <[email protected]>
559559
560560
S: Supported
561561
F: fs/afs/
562-
F: include/net/af_rxrpc.h
563-
F: net/rxrpc/af_rxrpc.c
562+
F: include/trace/events/afs.h
563+
F: Documentation/filesystems/afs.txt
564564
W: https://www.infradead.org/~dhowells/kafs/
565565

566566
AGPGART DRIVER
@@ -11776,6 +11776,18 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/jes/linux.git rtl8xxxu-deve
1177611776
S: Maintained
1177711777
F: drivers/net/wireless/realtek/rtl8xxxu/
1177811778

11779+
RXRPC SOCKETS (AF_RXRPC)
11780+
M: David Howells <[email protected]>
11781+
11782+
S: Supported
11783+
F: net/rxrpc/
11784+
F: include/keys/rxrpc-type.h
11785+
F: include/net/af_rxrpc.h
11786+
F: include/trace/events/rxrpc.h
11787+
F: include/uapi/linux/rxrpc.h
11788+
F: Documentation/networking/rxrpc.txt
11789+
W: https://www.infradead.org/~dhowells/kafs/
11790+
1177911791
S3 SAVAGE FRAMEBUFFER DRIVER
1178011792
M: Antonino Daplas <[email protected]>
1178111793

drivers/net/can/flexcan.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -184,12 +184,12 @@
184184
* Below is some version info we got:
185185
* SOC Version IP-Version Glitch- [TR]WRN_INT IRQ Err Memory err RTR re-
186186
* Filter? connected? Passive detection ception in MB
187-
* MX25 FlexCAN2 03.00.00.00 no no ? no no
187+
* MX25 FlexCAN2 03.00.00.00 no no no no no
188188
* MX28 FlexCAN2 03.00.04.00 yes yes no no no
189-
* MX35 FlexCAN2 03.00.00.00 no no ? no no
189+
* MX35 FlexCAN2 03.00.00.00 no no no no no
190190
* MX53 FlexCAN2 03.00.00.00 yes no no no no
191191
* MX6s FlexCAN3 10.00.12.00 yes yes no no yes
192-
* VF610 FlexCAN3 ? no yes ? yes yes?
192+
* VF610 FlexCAN3 ? no yes no yes yes?
193193
*
194194
* Some SOCs do not have the RX_WARN & TX_WARN interrupt line connected.
195195
*/
@@ -297,7 +297,8 @@ static const struct flexcan_devtype_data fsl_imx6q_devtype_data = {
297297

298298
static const struct flexcan_devtype_data fsl_vf610_devtype_data = {
299299
.quirks = FLEXCAN_QUIRK_DISABLE_RXFG | FLEXCAN_QUIRK_ENABLE_EACEN_RRS |
300-
FLEXCAN_QUIRK_DISABLE_MECR | FLEXCAN_QUIRK_USE_OFF_TIMESTAMP,
300+
FLEXCAN_QUIRK_DISABLE_MECR | FLEXCAN_QUIRK_USE_OFF_TIMESTAMP |
301+
FLEXCAN_QUIRK_BROKEN_PERR_STATE,
301302
};
302303

303304
static const struct can_bittiming_const flexcan_bittiming_const = {

drivers/net/can/peak_canfd/peak_pciefd_main.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -825,7 +825,10 @@ static int peak_pciefd_probe(struct pci_dev *pdev,
825825
err_disable_pci:
826826
pci_disable_device(pdev);
827827

828-
return err;
828+
/* pci_xxx_config_word() return positive PCIBIOS_xxx error codes while
829+
* the probe() function must return a negative errno in case of failure
830+
* (err is unchanged if negative) */
831+
return pcibios_err_to_errno(err);
829832
}
830833

831834
/* free the board structure object, as well as its resources: */

drivers/net/can/sja1000/peak_pci.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -717,7 +717,10 @@ static int peak_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
717717
failure_disable_pci:
718718
pci_disable_device(pdev);
719719

720-
return err;
720+
/* pci_xxx_config_word() return positive PCIBIOS_xxx error codes while
721+
* the probe() function must return a negative errno in case of failure
722+
* (err is unchanged if negative) */
723+
return pcibios_err_to_errno(err);
721724
}
722725

723726
static void peak_pci_remove(struct pci_dev *pdev)

drivers/net/can/ti_hecc.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,9 @@ static int ti_hecc_rx_poll(struct napi_struct *napi, int quota)
637637
mbx_mask = hecc_read(priv, HECC_CANMIM);
638638
mbx_mask |= HECC_TX_MBOX_MASK;
639639
hecc_write(priv, HECC_CANMIM, mbx_mask);
640+
} else {
641+
/* repoll is done only if whole budget is used */
642+
num_pkts = quota;
640643
}
641644

642645
return num_pkts;

drivers/net/can/usb/kvaser_usb.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -609,8 +609,8 @@ static int kvaser_usb_wait_msg(const struct kvaser_usb *dev, u8 id,
609609
}
610610

611611
if (pos + tmp->len > actual_len) {
612-
dev_err(dev->udev->dev.parent,
613-
"Format error\n");
612+
dev_err_ratelimited(dev->udev->dev.parent,
613+
"Format error\n");
614614
break;
615615
}
616616

@@ -813,6 +813,7 @@ static int kvaser_usb_simple_msg_async(struct kvaser_usb_net_priv *priv,
813813
if (err) {
814814
netdev_err(netdev, "Error transmitting URB\n");
815815
usb_unanchor_urb(urb);
816+
kfree(buf);
816817
usb_free_urb(urb);
817818
return err;
818819
}
@@ -1333,7 +1334,7 @@ static void kvaser_usb_read_bulk_callback(struct urb *urb)
13331334
goto resubmit_urb;
13341335
}
13351336

1336-
while (pos <= urb->actual_length - MSG_HEADER_LEN) {
1337+
while (pos <= (int)(urb->actual_length - MSG_HEADER_LEN)) {
13371338
msg = urb->transfer_buffer + pos;
13381339

13391340
/* The Kvaser firmware can only read and write messages that
@@ -1352,7 +1353,8 @@ static void kvaser_usb_read_bulk_callback(struct urb *urb)
13521353
}
13531354

13541355
if (pos + msg->len > urb->actual_length) {
1355-
dev_err(dev->udev->dev.parent, "Format error\n");
1356+
dev_err_ratelimited(dev->udev->dev.parent,
1357+
"Format error\n");
13561358
break;
13571359
}
13581360

@@ -1768,6 +1770,7 @@ static netdev_tx_t kvaser_usb_start_xmit(struct sk_buff *skb,
17681770
spin_unlock_irqrestore(&priv->tx_contexts_lock, flags);
17691771

17701772
usb_unanchor_urb(urb);
1773+
kfree(buf);
17711774

17721775
stats->tx_dropped++;
17731776

drivers/net/can/usb/mcba_usb.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,7 @@ static void mcba_usb_read_bulk_callback(struct urb *urb)
592592
break;
593593

594594
case -ENOENT:
595+
case -EPIPE:
595596
case -ESHUTDOWN:
596597
return;
597598

@@ -862,7 +863,7 @@ static int mcba_usb_probe(struct usb_interface *intf,
862863
goto cleanup_unregister_candev;
863864
}
864865

865-
dev_info(&intf->dev, "Microchip CAN BUS analizer connected\n");
866+
dev_info(&intf->dev, "Microchip CAN BUS Analyzer connected\n");
866867

867868
return 0;
868869

drivers/net/dsa/bcm_sf2_cfp.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -625,7 +625,7 @@ static int bcm_sf2_cfp_ipv6_rule_set(struct bcm_sf2_priv *priv, int port,
625625
bcm_sf2_cfp_slice_ipv6(priv, v6_spec->ip6src, v6_spec->psrc,
626626
slice_num, false);
627627
bcm_sf2_cfp_slice_ipv6(priv, v6_m_spec->ip6src, v6_m_spec->psrc,
628-
slice_num, true);
628+
SLICE_NUM_MASK, true);
629629

630630
/* Insert into TCAM now because we need to insert a second rule */
631631
bcm_sf2_cfp_rule_addr_set(priv, rule_index[0]);
@@ -699,7 +699,7 @@ static int bcm_sf2_cfp_ipv6_rule_set(struct bcm_sf2_priv *priv, int port,
699699
/* Insert into Action and policer RAMs now, set chain ID to
700700
* the one we are chained to
701701
*/
702-
ret = bcm_sf2_cfp_act_pol_set(priv, rule_index[0], port_num,
702+
ret = bcm_sf2_cfp_act_pol_set(priv, rule_index[1], port_num,
703703
queue_num, true);
704704
if (ret)
705705
goto out_err;

drivers/net/ethernet/broadcom/bnxt/bnxt.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3368,6 +3368,7 @@ static int bnxt_hwrm_do_send_msg(struct bnxt *bp, void *msg, u32 msg_len,
33683368
u16 cp_ring_id, len = 0;
33693369
struct hwrm_err_output *resp = bp->hwrm_cmd_resp_addr;
33703370
u16 max_req_len = BNXT_HWRM_MAX_REQ_LEN;
3371+
struct hwrm_short_input short_input = {0};
33713372

33723373
req->seq_id = cpu_to_le16(bp->hwrm_cmd_seq++);
33733374
memset(resp, 0, PAGE_SIZE);
@@ -3376,7 +3377,6 @@ static int bnxt_hwrm_do_send_msg(struct bnxt *bp, void *msg, u32 msg_len,
33763377

33773378
if (bp->flags & BNXT_FLAG_SHORT_CMD) {
33783379
void *short_cmd_req = bp->hwrm_short_cmd_req_addr;
3379-
struct hwrm_short_input short_input = {0};
33803380

33813381
memcpy(short_cmd_req, req, msg_len);
33823382
memset(short_cmd_req + msg_len, 0, BNXT_HWRM_MAX_REQ_LEN -
@@ -8263,8 +8263,9 @@ static void bnxt_shutdown(struct pci_dev *pdev)
82638263
if (netif_running(dev))
82648264
dev_close(dev);
82658265

8266+
bnxt_ulp_shutdown(bp);
8267+
82668268
if (system_state == SYSTEM_POWER_OFF) {
8267-
bnxt_ulp_shutdown(bp);
82688269
bnxt_clear_int_mode(bp);
82698270
pci_wake_from_d3(pdev, bp->wol);
82708271
pci_set_power_state(pdev, PCI_D3hot);

drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -56,23 +56,14 @@ static int bnxt_tc_parse_redir(struct bnxt *bp,
5656
{
5757
int ifindex = tcf_mirred_ifindex(tc_act);
5858
struct net_device *dev;
59-
u16 dst_fid;
6059

6160
dev = __dev_get_by_index(dev_net(bp->dev), ifindex);
6261
if (!dev) {
6362
netdev_info(bp->dev, "no dev for ifindex=%d", ifindex);
6463
return -EINVAL;
6564
}
6665

67-
/* find the FID from dev */
68-
dst_fid = bnxt_flow_get_dst_fid(bp, dev);
69-
if (dst_fid == BNXT_FID_INVALID) {
70-
netdev_info(bp->dev, "can't get fid for ifindex=%d", ifindex);
71-
return -EINVAL;
72-
}
73-
7466
actions->flags |= BNXT_TC_ACTION_FLAG_FWD;
75-
actions->dst_fid = dst_fid;
7667
actions->dst_dev = dev;
7768
return 0;
7869
}
@@ -160,13 +151,17 @@ static int bnxt_tc_parse_actions(struct bnxt *bp,
160151
if (rc)
161152
return rc;
162153

163-
/* Tunnel encap/decap action must be accompanied by a redirect action */
164-
if ((actions->flags & BNXT_TC_ACTION_FLAG_TUNNEL_ENCAP ||
165-
actions->flags & BNXT_TC_ACTION_FLAG_TUNNEL_DECAP) &&
166-
!(actions->flags & BNXT_TC_ACTION_FLAG_FWD)) {
167-
netdev_info(bp->dev,
168-
"error: no redir action along with encap/decap");
169-
return -EINVAL;
154+
if (actions->flags & BNXT_TC_ACTION_FLAG_FWD) {
155+
if (actions->flags & BNXT_TC_ACTION_FLAG_TUNNEL_ENCAP) {
156+
/* dst_fid is PF's fid */
157+
actions->dst_fid = bp->pf.fw_fid;
158+
} else {
159+
/* find the FID from dst_dev */
160+
actions->dst_fid =
161+
bnxt_flow_get_dst_fid(bp, actions->dst_dev);
162+
if (actions->dst_fid == BNXT_FID_INVALID)
163+
return -EINVAL;
164+
}
170165
}
171166

172167
return rc;
@@ -532,10 +527,8 @@ static int hwrm_cfa_decap_filter_alloc(struct bnxt *bp,
532527
}
533528

534529
if (flow->flags & BNXT_TC_FLOW_FLAGS_TUNL_ETH_ADDRS) {
535-
enables |= CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_DST_MACADDR |
536-
CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_SRC_MACADDR;
530+
enables |= CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_DST_MACADDR;
537531
ether_addr_copy(req.dst_macaddr, l2_info->dmac);
538-
ether_addr_copy(req.src_macaddr, l2_info->smac);
539532
}
540533
if (l2_info->num_vlans) {
541534
enables |= CFA_DECAP_FILTER_ALLOC_REQ_ENABLES_T_IVLAN_VID;
@@ -901,10 +894,10 @@ static void bnxt_tc_put_decap_handle(struct bnxt *bp,
901894

902895
static int bnxt_tc_resolve_tunnel_hdrs(struct bnxt *bp,
903896
struct ip_tunnel_key *tun_key,
904-
struct bnxt_tc_l2_key *l2_info,
905-
struct net_device *real_dst_dev)
897+
struct bnxt_tc_l2_key *l2_info)
906898
{
907899
#ifdef CONFIG_INET
900+
struct net_device *real_dst_dev = bp->dev;
908901
struct flowi4 flow = { {0} };
909902
struct net_device *dst_dev;
910903
struct neighbour *nbr;
@@ -1008,14 +1001,13 @@ static int bnxt_tc_get_decap_handle(struct bnxt *bp, struct bnxt_tc_flow *flow,
10081001
*/
10091002
tun_key.u.ipv4.dst = flow->tun_key.u.ipv4.src;
10101003
tun_key.tp_dst = flow->tun_key.tp_dst;
1011-
rc = bnxt_tc_resolve_tunnel_hdrs(bp, &tun_key, &l2_info, bp->dev);
1004+
rc = bnxt_tc_resolve_tunnel_hdrs(bp, &tun_key, &l2_info);
10121005
if (rc)
10131006
goto put_decap;
10141007

1015-
decap_key->ttl = tun_key.ttl;
10161008
decap_l2_info = &decap_node->l2_info;
1009+
/* decap smac is wildcarded */
10171010
ether_addr_copy(decap_l2_info->dmac, l2_info.smac);
1018-
ether_addr_copy(decap_l2_info->smac, l2_info.dmac);
10191011
if (l2_info.num_vlans) {
10201012
decap_l2_info->num_vlans = l2_info.num_vlans;
10211013
decap_l2_info->inner_vlan_tpid = l2_info.inner_vlan_tpid;
@@ -1095,8 +1087,7 @@ static int bnxt_tc_get_encap_handle(struct bnxt *bp, struct bnxt_tc_flow *flow,
10951087
if (encap_node->tunnel_handle != INVALID_TUNNEL_HANDLE)
10961088
goto done;
10971089

1098-
rc = bnxt_tc_resolve_tunnel_hdrs(bp, encap_key, &encap_node->l2_info,
1099-
flow->actions.dst_dev);
1090+
rc = bnxt_tc_resolve_tunnel_hdrs(bp, encap_key, &encap_node->l2_info);
11001091
if (rc)
11011092
goto put_encap;
11021093

@@ -1169,6 +1160,15 @@ static int __bnxt_tc_del_flow(struct bnxt *bp,
11691160
return 0;
11701161
}
11711162

1163+
static void bnxt_tc_set_src_fid(struct bnxt *bp, struct bnxt_tc_flow *flow,
1164+
u16 src_fid)
1165+
{
1166+
if (flow->actions.flags & BNXT_TC_ACTION_FLAG_TUNNEL_DECAP)
1167+
flow->src_fid = bp->pf.fw_fid;
1168+
else
1169+
flow->src_fid = src_fid;
1170+
}
1171+
11721172
/* Add a new flow or replace an existing flow.
11731173
* Notes on locking:
11741174
* There are essentially two critical sections here.
@@ -1204,7 +1204,8 @@ static int bnxt_tc_add_flow(struct bnxt *bp, u16 src_fid,
12041204
rc = bnxt_tc_parse_flow(bp, tc_flow_cmd, flow);
12051205
if (rc)
12061206
goto free_node;
1207-
flow->src_fid = src_fid;
1207+
1208+
bnxt_tc_set_src_fid(bp, flow, src_fid);
12081209

12091210
if (!bnxt_tc_can_offload(bp, flow)) {
12101211
rc = -ENOSPC;

drivers/net/ethernet/cavium/liquidio/lio_main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1113,7 +1113,7 @@ static int liquidio_watchdog(void *param)
11131113
dev_err(&oct->pci_dev->dev,
11141114
"ERROR: Octeon core %d crashed or got stuck! See oct-fwdump for details.\n",
11151115
core);
1116-
err_msg_was_printed[core] = true;
1116+
err_msg_was_printed[core] = true;
11171117
}
11181118
}
11191119

drivers/net/ethernet/marvell/mvpp2.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5598,7 +5598,7 @@ static int mvpp2_aggr_txq_init(struct platform_device *pdev,
55985598
u32 txq_dma;
55995599

56005600
/* Allocate memory for TX descriptors */
5601-
aggr_txq->descs = dma_alloc_coherent(&pdev->dev,
5601+
aggr_txq->descs = dma_zalloc_coherent(&pdev->dev,
56025602
MVPP2_AGGR_TXQ_SIZE * MVPP2_DESC_ALIGNED_SIZE,
56035603
&aggr_txq->descs_dma, GFP_KERNEL);
56045604
if (!aggr_txq->descs)

drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -808,8 +808,7 @@ static int sun8i_dwmac_set_syscon(struct stmmac_priv *priv)
808808
val, reg);
809809

810810
if (gmac->variant->soc_has_internal_phy) {
811-
if (of_property_read_bool(priv->plat->phy_node,
812-
"allwinner,leds-active-low"))
811+
if (of_property_read_bool(node, "allwinner,leds-active-low"))
813812
reg |= H3_EPHY_LED_POL;
814813
else
815814
reg &= ~H3_EPHY_LED_POL;

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2588,6 +2588,7 @@ static int stmmac_open(struct net_device *dev)
25882588

25892589
priv->dma_buf_sz = STMMAC_ALIGN(buf_sz);
25902590
priv->rx_copybreak = STMMAC_RX_COPYBREAK;
2591+
priv->mss = 0;
25912592

25922593
ret = alloc_dma_desc_resources(priv);
25932594
if (ret < 0) {

drivers/net/ipvlan/ipvlan_core.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,7 @@ static int ipvlan_process_v4_outbound(struct sk_buff *skb)
393393
.flowi4_oif = dev->ifindex,
394394
.flowi4_tos = RT_TOS(ip4h->tos),
395395
.flowi4_flags = FLOWI_FLAG_ANYSRC,
396+
.flowi4_mark = skb->mark,
396397
.daddr = ip4h->daddr,
397398
.saddr = ip4h->saddr,
398399
};

drivers/net/phy/micrel.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -496,16 +496,18 @@ static int ksz9031_of_load_skew_values(struct phy_device *phydev,
496496
return ksz9031_extended_write(phydev, OP_DATA, 2, reg, newval);
497497
}
498498

499+
/* Center KSZ9031RNX FLP timing at 16ms. */
499500
static int ksz9031_center_flp_timing(struct phy_device *phydev)
500501
{
501502
int result;
502503

503-
/* Center KSZ9031RNX FLP timing at 16ms. */
504504
result = ksz9031_extended_write(phydev, OP_DATA, 0,
505505
MII_KSZ9031RN_FLP_BURST_TX_HI, 0x0006);
506+
if (result)
507+
return result;
508+
506509
result = ksz9031_extended_write(phydev, OP_DATA, 0,
507510
MII_KSZ9031RN_FLP_BURST_TX_LO, 0x1A80);
508-
509511
if (result)
510512
return result;
511513

0 commit comments

Comments
 (0)