Loading arch/sparc/net/bpf_jit_comp.c +4 −4 Original line number Diff line number Diff line Loading @@ -83,9 +83,9 @@ static void bpf_flush_icache(void *start_, void *end_) #define BNE (F2(0, 2) | CONDNE) #ifdef CONFIG_SPARC64 #define BNE_PTR (F2(0, 1) | CONDNE | (2 << 20)) #define BE_PTR (F2(0, 1) | CONDE | (2 << 20)) #else #define BNE_PTR BNE #define BE_PTR BE #endif #define SETHI(K, REG) \ Loading Loading @@ -592,7 +592,7 @@ void bpf_jit_compile(struct sk_filter *fp) case BPF_ANC | SKF_AD_IFINDEX: emit_skb_loadptr(dev, r_A); emit_cmpi(r_A, 0); emit_branch(BNE_PTR, cleanup_addr + 4); emit_branch(BE_PTR, cleanup_addr + 4); emit_nop(); emit_load32(r_A, struct net_device, ifindex, r_A); break; Loading @@ -605,7 +605,7 @@ void bpf_jit_compile(struct sk_filter *fp) case BPF_ANC | SKF_AD_HATYPE: emit_skb_loadptr(dev, r_A); emit_cmpi(r_A, 0); emit_branch(BNE_PTR, cleanup_addr + 4); emit_branch(BE_PTR, cleanup_addr + 4); emit_nop(); emit_load16(r_A, struct net_device, type, r_A); break; Loading drivers/net/ethernet/sfc/io.h +7 −0 Original line number Diff line number Diff line Loading @@ -66,10 +66,17 @@ #define EFX_USE_QWORD_IO 1 #endif /* Hardware issue requires that only 64-bit naturally aligned writes * are seen by hardware. Its not strictly necessary to restrict to * x86_64 arch, but done for safety since unusual write combining behaviour * can break PIO. */ #ifdef CONFIG_X86_64 /* PIO is a win only if write-combining is possible */ #ifdef ARCH_HAS_IOREMAP_WC #define EFX_USE_PIO 1 #endif #endif #ifdef EFX_USE_QWORD_IO static inline void _efx_writeq(struct efx_nic *efx, __le64 value, Loading drivers/net/ethernet/sfc/tx.c +17 −5 Original line number Diff line number Diff line Loading @@ -189,6 +189,18 @@ struct efx_short_copy_buffer { u8 buf[L1_CACHE_BYTES]; }; /* Copy in explicit 64-bit writes. */ static void efx_memcpy_64(void __iomem *dest, void *src, size_t len) { u64 *src64 = src; u64 __iomem *dest64 = dest; size_t l64 = len / 8; size_t i; for (i = 0; i < l64; i++) writeq(src64[i], &dest64[i]); } /* Copy to PIO, respecting that writes to PIO buffers must be dword aligned. * Advances piobuf pointer. Leaves additional data in the copy buffer. */ Loading @@ -198,7 +210,7 @@ static void efx_memcpy_toio_aligned(struct efx_nic *efx, u8 __iomem **piobuf, { int block_len = len & ~(sizeof(copy_buf->buf) - 1); memcpy_toio(*piobuf, data, block_len); efx_memcpy_64(*piobuf, data, block_len); *piobuf += block_len; len -= block_len; Loading Loading @@ -230,7 +242,7 @@ static void efx_memcpy_toio_aligned_cb(struct efx_nic *efx, u8 __iomem **piobuf, if (copy_buf->used < sizeof(copy_buf->buf)) return; memcpy_toio(*piobuf, copy_buf->buf, sizeof(copy_buf->buf)); efx_memcpy_64(*piobuf, copy_buf->buf, sizeof(copy_buf->buf)); *piobuf += sizeof(copy_buf->buf); data += copy_to_buf; len -= copy_to_buf; Loading @@ -245,7 +257,7 @@ static void efx_flush_copy_buffer(struct efx_nic *efx, u8 __iomem *piobuf, { /* if there's anything in it, write the whole buffer, including junk */ if (copy_buf->used) memcpy_toio(piobuf, copy_buf->buf, sizeof(copy_buf->buf)); efx_memcpy_64(piobuf, copy_buf->buf, sizeof(copy_buf->buf)); } /* Traverse skb structure and copy fragments in to PIO buffer. Loading Loading @@ -304,7 +316,7 @@ efx_enqueue_skb_pio(struct efx_tx_queue *tx_queue, struct sk_buff *skb) */ BUILD_BUG_ON(L1_CACHE_BYTES > SKB_DATA_ALIGN(sizeof(struct skb_shared_info))); memcpy_toio(tx_queue->piobuf, skb->data, efx_memcpy_64(tx_queue->piobuf, skb->data, ALIGN(skb->len, L1_CACHE_BYTES)); } Loading drivers/net/macvlan.c +0 −1 Original line number Diff line number Diff line Loading @@ -1204,7 +1204,6 @@ static int macvlan_device_event(struct notifier_block *unused, list_for_each_entry_safe(vlan, next, &port->vlans, list) vlan->dev->rtnl_link_ops->dellink(vlan->dev, &list_kill); unregister_netdevice_many(&list_kill); list_del(&list_kill); break; case NETDEV_PRE_TYPE_CHANGE: /* Forbid underlaying device to change its type. */ Loading drivers/net/usb/qmi_wwan.c +6 −1 Original line number Diff line number Diff line Loading @@ -763,7 +763,12 @@ static const struct usb_device_id products[] = { {QMI_FIXED_INTF(0x2357, 0x9000, 4)}, /* TP-LINK MA260 */ {QMI_FIXED_INTF(0x1bc7, 0x1200, 5)}, /* Telit LE920 */ {QMI_FIXED_INTF(0x1bc7, 0x1201, 2)}, /* Telit LE920 */ {QMI_FIXED_INTF(0x0b3c, 0xc000, 4)}, /* Olivetti Olicard 100 */ {QMI_FIXED_INTF(0x0b3c, 0xc001, 4)}, /* Olivetti Olicard 120 */ {QMI_FIXED_INTF(0x0b3c, 0xc002, 4)}, /* Olivetti Olicard 140 */ {QMI_FIXED_INTF(0x0b3c, 0xc004, 6)}, /* Olivetti Olicard 155 */ {QMI_FIXED_INTF(0x0b3c, 0xc005, 6)}, /* Olivetti Olicard 200 */ {QMI_FIXED_INTF(0x0b3c, 0xc00a, 6)}, /* Olivetti Olicard 160 */ {QMI_FIXED_INTF(0x0b3c, 0xc00b, 4)}, /* Olivetti Olicard 500 */ {QMI_FIXED_INTF(0x1e2d, 0x0060, 4)}, /* Cinterion PLxx */ {QMI_FIXED_INTF(0x1e2d, 0x0053, 4)}, /* Cinterion PHxx,PXxx */ Loading Loading
arch/sparc/net/bpf_jit_comp.c +4 −4 Original line number Diff line number Diff line Loading @@ -83,9 +83,9 @@ static void bpf_flush_icache(void *start_, void *end_) #define BNE (F2(0, 2) | CONDNE) #ifdef CONFIG_SPARC64 #define BNE_PTR (F2(0, 1) | CONDNE | (2 << 20)) #define BE_PTR (F2(0, 1) | CONDE | (2 << 20)) #else #define BNE_PTR BNE #define BE_PTR BE #endif #define SETHI(K, REG) \ Loading Loading @@ -592,7 +592,7 @@ void bpf_jit_compile(struct sk_filter *fp) case BPF_ANC | SKF_AD_IFINDEX: emit_skb_loadptr(dev, r_A); emit_cmpi(r_A, 0); emit_branch(BNE_PTR, cleanup_addr + 4); emit_branch(BE_PTR, cleanup_addr + 4); emit_nop(); emit_load32(r_A, struct net_device, ifindex, r_A); break; Loading @@ -605,7 +605,7 @@ void bpf_jit_compile(struct sk_filter *fp) case BPF_ANC | SKF_AD_HATYPE: emit_skb_loadptr(dev, r_A); emit_cmpi(r_A, 0); emit_branch(BNE_PTR, cleanup_addr + 4); emit_branch(BE_PTR, cleanup_addr + 4); emit_nop(); emit_load16(r_A, struct net_device, type, r_A); break; Loading
drivers/net/ethernet/sfc/io.h +7 −0 Original line number Diff line number Diff line Loading @@ -66,10 +66,17 @@ #define EFX_USE_QWORD_IO 1 #endif /* Hardware issue requires that only 64-bit naturally aligned writes * are seen by hardware. Its not strictly necessary to restrict to * x86_64 arch, but done for safety since unusual write combining behaviour * can break PIO. */ #ifdef CONFIG_X86_64 /* PIO is a win only if write-combining is possible */ #ifdef ARCH_HAS_IOREMAP_WC #define EFX_USE_PIO 1 #endif #endif #ifdef EFX_USE_QWORD_IO static inline void _efx_writeq(struct efx_nic *efx, __le64 value, Loading
drivers/net/ethernet/sfc/tx.c +17 −5 Original line number Diff line number Diff line Loading @@ -189,6 +189,18 @@ struct efx_short_copy_buffer { u8 buf[L1_CACHE_BYTES]; }; /* Copy in explicit 64-bit writes. */ static void efx_memcpy_64(void __iomem *dest, void *src, size_t len) { u64 *src64 = src; u64 __iomem *dest64 = dest; size_t l64 = len / 8; size_t i; for (i = 0; i < l64; i++) writeq(src64[i], &dest64[i]); } /* Copy to PIO, respecting that writes to PIO buffers must be dword aligned. * Advances piobuf pointer. Leaves additional data in the copy buffer. */ Loading @@ -198,7 +210,7 @@ static void efx_memcpy_toio_aligned(struct efx_nic *efx, u8 __iomem **piobuf, { int block_len = len & ~(sizeof(copy_buf->buf) - 1); memcpy_toio(*piobuf, data, block_len); efx_memcpy_64(*piobuf, data, block_len); *piobuf += block_len; len -= block_len; Loading Loading @@ -230,7 +242,7 @@ static void efx_memcpy_toio_aligned_cb(struct efx_nic *efx, u8 __iomem **piobuf, if (copy_buf->used < sizeof(copy_buf->buf)) return; memcpy_toio(*piobuf, copy_buf->buf, sizeof(copy_buf->buf)); efx_memcpy_64(*piobuf, copy_buf->buf, sizeof(copy_buf->buf)); *piobuf += sizeof(copy_buf->buf); data += copy_to_buf; len -= copy_to_buf; Loading @@ -245,7 +257,7 @@ static void efx_flush_copy_buffer(struct efx_nic *efx, u8 __iomem *piobuf, { /* if there's anything in it, write the whole buffer, including junk */ if (copy_buf->used) memcpy_toio(piobuf, copy_buf->buf, sizeof(copy_buf->buf)); efx_memcpy_64(piobuf, copy_buf->buf, sizeof(copy_buf->buf)); } /* Traverse skb structure and copy fragments in to PIO buffer. Loading Loading @@ -304,7 +316,7 @@ efx_enqueue_skb_pio(struct efx_tx_queue *tx_queue, struct sk_buff *skb) */ BUILD_BUG_ON(L1_CACHE_BYTES > SKB_DATA_ALIGN(sizeof(struct skb_shared_info))); memcpy_toio(tx_queue->piobuf, skb->data, efx_memcpy_64(tx_queue->piobuf, skb->data, ALIGN(skb->len, L1_CACHE_BYTES)); } Loading
drivers/net/macvlan.c +0 −1 Original line number Diff line number Diff line Loading @@ -1204,7 +1204,6 @@ static int macvlan_device_event(struct notifier_block *unused, list_for_each_entry_safe(vlan, next, &port->vlans, list) vlan->dev->rtnl_link_ops->dellink(vlan->dev, &list_kill); unregister_netdevice_many(&list_kill); list_del(&list_kill); break; case NETDEV_PRE_TYPE_CHANGE: /* Forbid underlaying device to change its type. */ Loading
drivers/net/usb/qmi_wwan.c +6 −1 Original line number Diff line number Diff line Loading @@ -763,7 +763,12 @@ static const struct usb_device_id products[] = { {QMI_FIXED_INTF(0x2357, 0x9000, 4)}, /* TP-LINK MA260 */ {QMI_FIXED_INTF(0x1bc7, 0x1200, 5)}, /* Telit LE920 */ {QMI_FIXED_INTF(0x1bc7, 0x1201, 2)}, /* Telit LE920 */ {QMI_FIXED_INTF(0x0b3c, 0xc000, 4)}, /* Olivetti Olicard 100 */ {QMI_FIXED_INTF(0x0b3c, 0xc001, 4)}, /* Olivetti Olicard 120 */ {QMI_FIXED_INTF(0x0b3c, 0xc002, 4)}, /* Olivetti Olicard 140 */ {QMI_FIXED_INTF(0x0b3c, 0xc004, 6)}, /* Olivetti Olicard 155 */ {QMI_FIXED_INTF(0x0b3c, 0xc005, 6)}, /* Olivetti Olicard 200 */ {QMI_FIXED_INTF(0x0b3c, 0xc00a, 6)}, /* Olivetti Olicard 160 */ {QMI_FIXED_INTF(0x0b3c, 0xc00b, 4)}, /* Olivetti Olicard 500 */ {QMI_FIXED_INTF(0x1e2d, 0x0060, 4)}, /* Cinterion PLxx */ {QMI_FIXED_INTF(0x1e2d, 0x0053, 4)}, /* Cinterion PHxx,PXxx */ Loading