Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/caif/caif_hsi.c drivers/net/usb/qmi_wwan.c The qmi_wwan merge was trivial. The caif_hsi.c, on the other hand, was not. It's a conflict between1c385f1fdf
("caif-hsi: Replace platform device with ops structure.") in the net-next tree and commit39abbaef19
("caif-hsi: Postpone init of HIS until open()") in the net tree. I did my best with that one and will ask Sjur to check it out. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -196,7 +196,7 @@ enum ixgbe_ring_state_t {
|
||||
__IXGBE_HANG_CHECK_ARMED,
|
||||
__IXGBE_RX_RSC_ENABLED,
|
||||
__IXGBE_RX_CSUM_UDP_ZERO_ERR,
|
||||
__IXGBE_RX_FCOE_BUFSZ,
|
||||
__IXGBE_RX_FCOE,
|
||||
};
|
||||
|
||||
#define check_for_tx_hang(ring) \
|
||||
@@ -290,7 +290,7 @@ struct ixgbe_ring_feature {
|
||||
#if defined(IXGBE_FCOE) && (PAGE_SIZE < 8192)
|
||||
static inline unsigned int ixgbe_rx_pg_order(struct ixgbe_ring *ring)
|
||||
{
|
||||
return test_bit(__IXGBE_RX_FCOE_BUFSZ, &ring->state) ? 1 : 0;
|
||||
return test_bit(__IXGBE_RX_FCOE, &ring->state) ? 1 : 0;
|
||||
}
|
||||
#else
|
||||
#define ixgbe_rx_pg_order(_ring) 0
|
||||
|
@@ -634,7 +634,7 @@ static int ixgbe_alloc_q_vector(struct ixgbe_adapter *adapter,
|
||||
f = &adapter->ring_feature[RING_F_FCOE];
|
||||
if ((rxr_idx >= f->mask) &&
|
||||
(rxr_idx < f->mask + f->indices))
|
||||
set_bit(__IXGBE_RX_FCOE_BUFSZ, &ring->state);
|
||||
set_bit(__IXGBE_RX_FCOE, &ring->state);
|
||||
}
|
||||
|
||||
#endif /* IXGBE_FCOE */
|
||||
|
@@ -1056,17 +1056,17 @@ static inline void ixgbe_rx_hash(struct ixgbe_ring *ring,
|
||||
#ifdef IXGBE_FCOE
|
||||
/**
|
||||
* ixgbe_rx_is_fcoe - check the rx desc for incoming pkt type
|
||||
* @adapter: address of board private structure
|
||||
* @ring: structure containing ring specific data
|
||||
* @rx_desc: advanced rx descriptor
|
||||
*
|
||||
* Returns : true if it is FCoE pkt
|
||||
*/
|
||||
static inline bool ixgbe_rx_is_fcoe(struct ixgbe_adapter *adapter,
|
||||
static inline bool ixgbe_rx_is_fcoe(struct ixgbe_ring *ring,
|
||||
union ixgbe_adv_rx_desc *rx_desc)
|
||||
{
|
||||
__le16 pkt_info = rx_desc->wb.lower.lo_dword.hs_rss.pkt_info;
|
||||
|
||||
return (adapter->flags & IXGBE_FLAG_FCOE_ENABLED) &&
|
||||
return test_bit(__IXGBE_RX_FCOE, &ring->state) &&
|
||||
((pkt_info & cpu_to_le16(IXGBE_RXDADV_PKTTYPE_ETQF_MASK)) ==
|
||||
(cpu_to_le16(IXGBE_ETQF_FILTER_FCOE <<
|
||||
IXGBE_RXDADV_PKTTYPE_ETQF_SHIFT)));
|
||||
@@ -1546,6 +1546,12 @@ static bool ixgbe_cleanup_headers(struct ixgbe_ring *rx_ring,
|
||||
skb->truesize -= ixgbe_rx_bufsz(rx_ring);
|
||||
}
|
||||
|
||||
#ifdef IXGBE_FCOE
|
||||
/* do not attempt to pad FCoE Frames as this will disrupt DDP */
|
||||
if (ixgbe_rx_is_fcoe(rx_ring, rx_desc))
|
||||
return false;
|
||||
|
||||
#endif
|
||||
/* if skb_pad returns an error the skb was freed */
|
||||
if (unlikely(skb->len < 60)) {
|
||||
int pad_len = 60 - skb->len;
|
||||
@@ -1772,7 +1778,7 @@ static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
|
||||
|
||||
#ifdef IXGBE_FCOE
|
||||
/* if ddp, not passing to ULD unless for FCP_RSP or error */
|
||||
if (ixgbe_rx_is_fcoe(adapter, rx_desc)) {
|
||||
if (ixgbe_rx_is_fcoe(rx_ring, rx_desc)) {
|
||||
ddp_bytes = ixgbe_fcoe_ddp(adapter, rx_desc, skb);
|
||||
if (!ddp_bytes) {
|
||||
dev_kfree_skb_any(skb);
|
||||
|
Reference in New Issue
Block a user