diff mbox

i40evf: Use le32_to_cpu before evaluating HW desc fields.

Message ID 1493680559-6728-1-git-send-email-tushar.n.dave@oracle.com
State Not Applicable
Headers show

Commit Message

Tushar Dave May 1, 2017, 11:15 p.m. UTC
i40e hardware descriptor fields are in little-endian format. Driver
must use le32_to_cpu while evaluating these fields otherwise on
big-endian arch we end up evaluating incorrect values, cause errors
like:

i40evf 0001:04:02.0: Expected response 0 from PF, received 285212672
i40evf 0001:04:02.1: Expected response 0 from PF, received 285212672

Signed-off-by: Tushar Dave <tushar.n.dave@oracle.com>
---
 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Kirsher, Jeffrey T May 16, 2017, 11:07 p.m. UTC | #1
On Mon, 2017-05-01 at 16:15 -0700, Tushar Dave wrote:
> i40e hardware descriptor fields are in little-endian format. Driver
> must use le32_to_cpu while evaluating these fields otherwise on
> big-endian arch we end up evaluating incorrect values, cause errors
> like:
> 
> i40evf 0001:04:02.0: Expected response 0 from PF, received 285212672
> i40evf 0001:04:02.1: Expected response 0 from PF, received 285212672
> 
> Signed-off-by: Tushar Dave <tushar.n.dave@oracle.com>
> ---
>  drivers/net/ethernet/intel/i40evf/i40evf_main.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)

Due to recent patches already applied to my tree, this patch does not
apply cleanly.  Feel free to send an updated patch, if the change is
still needed.
Tushar Dave May 18, 2017, 6:05 p.m. UTC | #2
On 05/16/2017 04:07 PM, Jeff Kirsher wrote:
> On Mon, 2017-05-01 at 16:15 -0700, Tushar Dave wrote:
>> i40e hardware descriptor fields are in little-endian format. Driver
>> must use le32_to_cpu while evaluating these fields otherwise on
>> big-endian arch we end up evaluating incorrect values, cause errors
>> like:
>>
>> i40evf 0001:04:02.0: Expected response 0 from PF, received 285212672
>> i40evf 0001:04:02.1: Expected response 0 from PF, received 285212672
>>
>> Signed-off-by: Tushar Dave <tushar.n.dave@oracle.com>
>> ---
>>  drivers/net/ethernet/intel/i40evf/i40evf_main.c | 6 ++++--
>>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> Due to recent patches already applied to my tree, this patch does not
> apply cleanly.  Feel free to send an updated patch, if the change is
> still needed.
Okay. I will send v2.
Thanks.

-Tushar
>
Tushar Dave May 20, 2017, 1:12 a.m. UTC | #3
On 05/16/2017 04:07 PM, Jeff Kirsher wrote:
> On Mon, 2017-05-01 at 16:15 -0700, Tushar Dave wrote:
>> i40e hardware descriptor fields are in little-endian format. Driver
>> must use le32_to_cpu while evaluating these fields otherwise on
>> big-endian arch we end up evaluating incorrect values, cause errors
>> like:
>>
>> i40evf 0001:04:02.0: Expected response 0 from PF, received 285212672
>> i40evf 0001:04:02.1: Expected response 0 from PF, received 285212672
>>
>> Signed-off-by: Tushar Dave <tushar.n.dave@oracle.com>
>> ---
>>  drivers/net/ethernet/intel/i40evf/i40evf_main.c | 6 ++++--
>>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> Due to recent patches already applied to my tree, this patch does not
> apply cleanly.  Feel free to send an updated patch, if the change is
> still needed.
Hi Jeff,

I just tried the same patch on Dave's latest linux-net and it applies
cleanly. Wondering if I should clone your tree and make sure it applies?
If so, I may need to do same for all my future patches as well, thats a
extra bit of work!

Most of the time, mine are bug fixes and I always use linux-net when
upstreaming my patches for Intel Ethernet drivers.

-Tushar
>
Alexander H Duyck May 21, 2017, 11:08 p.m. UTC | #4
On Fri, May 19, 2017 at 6:12 PM, tndave <tushar.n.dave@oracle.com> wrote:
>
>
> On 05/16/2017 04:07 PM, Jeff Kirsher wrote:
>>
>> On Mon, 2017-05-01 at 16:15 -0700, Tushar Dave wrote:
>>>
>>> i40e hardware descriptor fields are in little-endian format. Driver
>>> must use le32_to_cpu while evaluating these fields otherwise on
>>> big-endian arch we end up evaluating incorrect values, cause errors
>>> like:
>>>
>>> i40evf 0001:04:02.0: Expected response 0 from PF, received 285212672
>>> i40evf 0001:04:02.1: Expected response 0 from PF, received 285212672
>>>
>>> Signed-off-by: Tushar Dave <tushar.n.dave@oracle.com>
>>> ---
>>>  drivers/net/ethernet/intel/i40evf/i40evf_main.c | 6 ++++--
>>>  1 file changed, 4 insertions(+), 2 deletions(-)
>>
>>
>> Due to recent patches already applied to my tree, this patch does not
>> apply cleanly.  Feel free to send an updated patch, if the change is
>> still needed.
>
> Hi Jeff,
>
> I just tried the same patch on Dave's latest linux-net and it applies
> cleanly. Wondering if I should clone your tree and make sure it applies?
> If so, I may need to do same for all my future patches as well, thats a
> extra bit of work!
>
> Most of the time, mine are bug fixes and I always use linux-net when
> upstreaming my patches for Intel Ethernet drivers.
>

You probably should just be cloning the dev-queue branch of Jeff's
tree. The issue is I believe he has some virtchnl changes from Jesse
and they are conflicting with your change.

- Alex
Kirsher, Jeffrey T May 22, 2017, 7:36 p.m. UTC | #5
On Fri, 2017-05-19 at 18:12 -0700, tndave wrote:
> On 05/16/2017 04:07 PM, Jeff Kirsher wrote:
> > On Mon, 2017-05-01 at 16:15 -0700, Tushar Dave wrote:
> > > i40e hardware descriptor fields are in little-endian format. Driver
> > > must use le32_to_cpu while evaluating these fields otherwise on
> > > big-endian arch we end up evaluating incorrect values, cause errors
> > > like:
> > > 
> > > i40evf 0001:04:02.0: Expected response 0 from PF, received 285212672
> > > i40evf 0001:04:02.1: Expected response 0 from PF, received 285212672
> > > 
> > > Signed-off-by: Tushar Dave <tushar.n.dave@oracle.com>
> > > ---
> > >   drivers/net/ethernet/intel/i40evf/i40evf_main.c | 6 ++++--
> > >   1 file changed, 4 insertions(+), 2 deletions(-)
> > 
> > Due to recent patches already applied to my tree, this patch does not
> > apply cleanly.  Feel free to send an updated patch, if the change is
> > still needed.
> 
> Hi Jeff,
> 
> I just tried the same patch on Dave's latest linux-net and it applies
> cleanly. Wondering if I should clone your tree and make sure it applies?
> If so, I may need to do same for all my future patches as well, thats a
> extra bit of work!
> 
> Most of the time, mine are bug fixes and I always use linux-net when
> upstreaming my patches for Intel Ethernet drivers.

As Alex has already pointed out, yes, you should be using my dev-queue
branch on either next-queue or net-queue trees.  As you know, I have a
number of patches currently in the queue which won't show up on linux-net
until they get pushed to David Miller.

If you use my tree for the Intel drivers, you may find we already fix the
issue or your fix may need to be re-worked due to changes in the code which
are currently in the "queue".
Tushar Dave May 22, 2017, 8:03 p.m. UTC | #6
On 05/22/2017 12:36 PM, Jeff Kirsher wrote:
> On Fri, 2017-05-19 at 18:12 -0700, tndave wrote:
>> On 05/16/2017 04:07 PM, Jeff Kirsher wrote:
>>> On Mon, 2017-05-01 at 16:15 -0700, Tushar Dave wrote:
>>>> i40e hardware descriptor fields are in little-endian format. Driver
>>>> must use le32_to_cpu while evaluating these fields otherwise on
>>>> big-endian arch we end up evaluating incorrect values, cause errors
>>>> like:
>>>>
>>>> i40evf 0001:04:02.0: Expected response 0 from PF, received 285212672
>>>> i40evf 0001:04:02.1: Expected response 0 from PF, received 285212672
>>>>
>>>> Signed-off-by: Tushar Dave <tushar.n.dave@oracle.com>
>>>> ---
>>>>   drivers/net/ethernet/intel/i40evf/i40evf_main.c | 6 ++++--
>>>>   1 file changed, 4 insertions(+), 2 deletions(-)
>>>
>>> Due to recent patches already applied to my tree, this patch does not
>>> apply cleanly.  Feel free to send an updated patch, if the change is
>>> still needed.
>>
>> Hi Jeff,
>>
>> I just tried the same patch on Dave's latest linux-net and it applies
>> cleanly. Wondering if I should clone your tree and make sure it applies?
>> If so, I may need to do same for all my future patches as well, thats a
>> extra bit of work!
>>
>> Most of the time, mine are bug fixes and I always use linux-net when
>> upstreaming my patches for Intel Ethernet drivers.
>
> As Alex has already pointed out, yes, you should be using my dev-queue
> branch on either next-queue or net-queue trees.  As you know, I have a
> number of patches currently in the queue which won't show up on linux-net
> until they get pushed to David Miller.
>
> If you use my tree for the Intel drivers, you may find we already fix the
> issue or your fix may need to be re-worked due to changes in the code which
> are currently in the "queue".
Sure, I will use your tree for Intel drivers going forward :)
Thanks.

-Tushar
>
Tushar Dave May 22, 2017, 8:04 p.m. UTC | #7
On 05/21/2017 04:08 PM, Alexander Duyck wrote:
> On Fri, May 19, 2017 at 6:12 PM, tndave <tushar.n.dave@oracle.com> wrote:
>>
>>
>> On 05/16/2017 04:07 PM, Jeff Kirsher wrote:
>>>
>>> On Mon, 2017-05-01 at 16:15 -0700, Tushar Dave wrote:
>>>>
>>>> i40e hardware descriptor fields are in little-endian format. Driver
>>>> must use le32_to_cpu while evaluating these fields otherwise on
>>>> big-endian arch we end up evaluating incorrect values, cause errors
>>>> like:
>>>>
>>>> i40evf 0001:04:02.0: Expected response 0 from PF, received 285212672
>>>> i40evf 0001:04:02.1: Expected response 0 from PF, received 285212672
>>>>
>>>> Signed-off-by: Tushar Dave <tushar.n.dave@oracle.com>
>>>> ---
>>>>  drivers/net/ethernet/intel/i40evf/i40evf_main.c | 6 ++++--
>>>>  1 file changed, 4 insertions(+), 2 deletions(-)
>>>
>>>
>>> Due to recent patches already applied to my tree, this patch does not
>>> apply cleanly.  Feel free to send an updated patch, if the change is
>>> still needed.
>>
>> Hi Jeff,
>>
>> I just tried the same patch on Dave's latest linux-net and it applies
>> cleanly. Wondering if I should clone your tree and make sure it applies?
>> If so, I may need to do same for all my future patches as well, thats a
>> extra bit of work!
>>
>> Most of the time, mine are bug fixes and I always use linux-net when
>> upstreaming my patches for Intel Ethernet drivers.
>>
>
> You probably should just be cloning the dev-queue branch of Jeff's
> tree. The issue is I believe he has some virtchnl changes from Jesse
> and they are conflicting with your change.\
Okay.
Thanks.

-Tushar
>
> - Alex
>
Tushar Dave May 22, 2017, 11:13 p.m. UTC | #8
On 05/22/2017 12:36 PM, Jeff Kirsher wrote:
> On Fri, 2017-05-19 at 18:12 -0700, tndave wrote:
>> On 05/16/2017 04:07 PM, Jeff Kirsher wrote:
>>> On Mon, 2017-05-01 at 16:15 -0700, Tushar Dave wrote:
>>>> i40e hardware descriptor fields are in little-endian format. Driver
>>>> must use le32_to_cpu while evaluating these fields otherwise on
>>>> big-endian arch we end up evaluating incorrect values, cause errors
>>>> like:
>>>>
>>>> i40evf 0001:04:02.0: Expected response 0 from PF, received 285212672
>>>> i40evf 0001:04:02.1: Expected response 0 from PF, received 285212672
>>>>
>>>> Signed-off-by: Tushar Dave <tushar.n.dave@oracle.com>
>>>> ---
>>>>   drivers/net/ethernet/intel/i40evf/i40evf_main.c | 6 ++++--
>>>>   1 file changed, 4 insertions(+), 2 deletions(-)
>>>
>>> Due to recent patches already applied to my tree, this patch does not
>>> apply cleanly.  Feel free to send an updated patch, if the change is
>>> still needed.
>>
>> Hi Jeff,
>>
>> I just tried the same patch on Dave's latest linux-net and it applies
>> cleanly. Wondering if I should clone your tree and make sure it applies?
>> If so, I may need to do same for all my future patches as well, thats a
>> extra bit of work!
>>
>> Most of the time, mine are bug fixes and I always use linux-net when
>> upstreaming my patches for Intel Ethernet drivers.
>
> As Alex has already pointed out, yes, you should be using my dev-queue
> branch on either next-queue or net-queue trees.  As you know, I have a
> number of patches currently in the queue which won't show up on linux-net
> until they get pushed to David Miller.
>
> If you use my tree for the Intel drivers, you may find we already fix the
> issue or your fix may need to be re-worked due to changes in the code which
> are currently in the "queue".
Jeff,

Tried the same patch (using git am) on your net-queue tree
branch:dev-queue and the patch applies cleanly.

FYI, right now 
https://kernel.googlesource.com/pub/scm/linux/kernel/git/jkirsher/net-queue.git:dev-queue 
has top commit:
  "i40e/i40evf: proper update of the page_offset field"

My system has:  patch --version
GNU patch 2.7.1

Thanks.
-Tushar
>
diff mbox

Patch

diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index f35dcaa..2c1dfaf 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -1923,8 +1923,10 @@  static void i40evf_adminq_task(struct work_struct *work)
 		if (ret || !v_msg->v_opcode)
 			break; /* No event to process or error cleaning ARQ */
 
-		i40evf_virtchnl_completion(adapter, v_msg->v_opcode,
-					   v_msg->v_retval, event.msg_buf,
+		i40evf_virtchnl_completion(adapter,
+					   le32_to_cpu(v_msg->v_opcode),
+					   le32_to_cpu(v_msg->v_retval),
+					   event.msg_buf,
 					   event.msg_len);
 		if (pending != 0)
 			memset(event.msg_buf, 0, I40EVF_MAX_AQ_BUF_SIZE);