Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Three conflicts, one of which, for marvell10g.c is non-trivial and requires some follow-up from Heiner or someone else. The issue is that Heiner converted the marvell10g driver over to use the generic c45 code as much as possible. However, in 'net' a bug fix appeared which makes sure that a new local mask (MDIO_AN_10GBT_CTRL_ADV_NBT_MASK) with value 0x01e0 is cleared. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -3953,8 +3953,11 @@ static void ixgbe_setup_mrqc(struct ixgbe_adapter *adapter)
|
||||
else
|
||||
mrqc = IXGBE_MRQC_VMDQRSS64EN;
|
||||
|
||||
/* Enable L3/L4 for Tx Switched packets */
|
||||
mrqc |= IXGBE_MRQC_L3L4TXSWEN;
|
||||
/* Enable L3/L4 for Tx Switched packets only for X550,
|
||||
* older devices do not support this feature
|
||||
*/
|
||||
if (hw->mac.type >= ixgbe_mac_X550)
|
||||
mrqc |= IXGBE_MRQC_L3L4TXSWEN;
|
||||
} else {
|
||||
if (tcs > 4)
|
||||
mrqc = IXGBE_MRQC_RTRSS8TCEN;
|
||||
@@ -10226,6 +10229,7 @@ static int ixgbe_xdp_setup(struct net_device *dev, struct bpf_prog *prog)
|
||||
int i, frame_size = dev->mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN;
|
||||
struct ixgbe_adapter *adapter = netdev_priv(dev);
|
||||
struct bpf_prog *old_prog;
|
||||
bool need_reset;
|
||||
|
||||
if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED)
|
||||
return -EINVAL;
|
||||
@@ -10248,9 +10252,10 @@ static int ixgbe_xdp_setup(struct net_device *dev, struct bpf_prog *prog)
|
||||
return -ENOMEM;
|
||||
|
||||
old_prog = xchg(&adapter->xdp_prog, prog);
|
||||
need_reset = (!!prog != !!old_prog);
|
||||
|
||||
/* If transitioning XDP modes reconfigure rings */
|
||||
if (!!prog != !!old_prog) {
|
||||
if (need_reset) {
|
||||
int err = ixgbe_setup_tc(dev, adapter->hw_tcs);
|
||||
|
||||
if (err) {
|
||||
@@ -10266,6 +10271,14 @@ static int ixgbe_xdp_setup(struct net_device *dev, struct bpf_prog *prog)
|
||||
if (old_prog)
|
||||
bpf_prog_put(old_prog);
|
||||
|
||||
/* Kick start the NAPI context if there is an AF_XDP socket open
|
||||
* on that queue id. This so that receiving will start.
|
||||
*/
|
||||
if (need_reset && prog)
|
||||
for (i = 0; i < adapter->num_rx_queues; i++)
|
||||
if (adapter->xdp_ring[i]->xsk_umem)
|
||||
(void)ixgbe_xsk_async_xmit(adapter->netdev, i);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@@ -144,11 +144,19 @@ static int ixgbe_xsk_umem_enable(struct ixgbe_adapter *adapter,
|
||||
ixgbe_txrx_ring_disable(adapter, qid);
|
||||
|
||||
err = ixgbe_add_xsk_umem(adapter, umem, qid);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (if_running)
|
||||
if (if_running) {
|
||||
ixgbe_txrx_ring_enable(adapter, qid);
|
||||
|
||||
return err;
|
||||
/* Kick start the NAPI context so that receiving will start */
|
||||
err = ixgbe_xsk_async_xmit(adapter->netdev, qid);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ixgbe_xsk_umem_disable(struct ixgbe_adapter *adapter, u16 qid)
|
||||
@@ -617,7 +625,8 @@ static bool ixgbe_xmit_zc(struct ixgbe_ring *xdp_ring, unsigned int budget)
|
||||
dma_addr_t dma;
|
||||
|
||||
while (budget-- > 0) {
|
||||
if (unlikely(!ixgbe_desc_unused(xdp_ring))) {
|
||||
if (unlikely(!ixgbe_desc_unused(xdp_ring)) ||
|
||||
!netif_carrier_ok(xdp_ring->netdev)) {
|
||||
work_done = false;
|
||||
break;
|
||||
}
|
||||
|
مرجع در شماره جدید
Block a user